Chapter 1: The Essential Software Requirement

advertisement



"Hello, Phil? This is Maria in Human
Resources. We're having a problem with the
employee system you programmed for us. An
employee just changed her name to Sparkle
Starlight, and we can't get the system to
accept the name change. Can you help?"
"She married some guy named Starlight?"
"No, she didn't get married, just changed her
name," Maria replied. "That's the problem. It
looks like we can change a name only if
someone's marital status changes."

"Well, yeah, I never thought someone might
just change her name. I don't remember you
telling me about this possibility when we
talked about the system. That's why you can
get to the Change Name dialog box only
from the Change Marital Status dialog box,"
Phil said.


"I assumed you knew that people could
legally change their name anytime they like,"
responded Maria. "We have to straighten this
out by Friday or Sparkle won't be able to cash
her paycheck. Can you fix the bug by then?"
"It's not a bug!" Phil retorted. "I never knew
you needed this capability. I'm busy on the
new performance evaluation system. I think I
have some other change requests for the
employee system here, too." [sound of
rustling paper]


"Yeah, here's another one. I can probably fix
it by the end of the month, but not within a
week. Sorry about that. Next time, tell me
these things earlier and please write them
down.“
"What am I supposed to tell Sparkle?"
demanded Maria. "She's really going to be
ticked if she can't cash her check."


"Hey, Maria, it's not my fault," Phil protested.
"If you'd told me in the first place that you
had to be able to change someone's name at
any time, this wouldn't have happened. You
can't blame me for not reading your mind."
Angry and resigned, Maria snapped, "Yeah,
well, this is the kind of thing that makes me
hate computer systems. Call me as soon as
you get it fixed, will you?"

Nhiều vấn đề về phần mềm xuất hiện do thiếu
sót trong lúc thu thập, thỏa thuận, và chỉnh
sửa yêu cầu.
◦ Lỗi xảy ra trong giai đoạn thu thập yêu
cầu chiếm từ 40 – 60% tổng lỗi trong 1 dự
án phấn mềm.
◦ Có sự khác nhau giữa cái mà các
developer nghĩ và xây dựng vớ̀i cái mà
khách hàng thực sự cần.







Tầm quan trọng của Yêu cầu phần mềm
Yêu cầu phần mềm là gì?
Kỹ thuật thu thập yêu cầu là gì?
Phát triển và quản lý yêu cầu?
Lợi ích từ quy trình xác định yêu cầu chất
lượng cao
Yêu cầu theo quan điểm khách hàng
Vai trò của người phân tích yêu cầu
(requirement analyst)
Trước đây, nhiều sản phẩm thành công mà
không cần có sự tham gia của các chuyên gia
trong việc thu nhận và quản lý yêu cầu.
 Nhưng ngày nay thì requirements
engineering (RE) lại trở nên vô cùng quan
trọng.
 Tại sao?
Vì công nghệ và xã hội không ngừng thay đổi.



Sản phẩm phát triển với tốc độ chóng mặt.
Ngày nay khách hàng luôn đòi hỏi phiên bản
(version) mới của sản phẩm phải dưới 1 năm.
Ví dụ: theo Siemens thì 20 năm trước, 55%
hàng bán là từ sản phẩm tuổi <5. Ngày nay,
75% hàng bán được là từ sản phẩm có tuổi
<5.


Thay đổi không ngừng của công nghệ và
chuyển giao đã ảnh hưởng nhiểu đến mức độ
thành thạo của chuyên gia. Vài năm trước,
các kỹ sư có thể sống cả đời với nghề nghiệp
của mình trong 1 công ty nào đó, nhưng
ngày nay việc thay đổi công việc rất thường
xuyên.


Gia công phẩn mềm đã làm thay đổi nhanh
chóng chu kỳ phát triển phần mềm.
Đặc tả được tạo ra để thực thi hay sản xuất
bởi các tổ chức khác nhau nên bị nhiều hạn
chế và không có chuyên môn nghiệp vụ.
Tương tự như phải tạo đặc tả cho máy giặt
mà người thiết kế chưa từng nhìn thấy máy
giặt lần nào. Để thành công, đặc tả cần phải
chính xác và chi tiết.


Việc phát triển phần mềm thường liên kết
chặt chẽ với nghiệp vụ. e.g., phân mềm cell
phone và phần mềm về hàng không thường
được thiết kế xây dựng chặt chẽ phù hợp với
nghiệp vụ.
Công nghiệp bắt đầu dùng phần mềm để tạo
các phiên bản mới cho sản phẩm. Các sáng
kiến có thể dễ thực thi bằng phần mềm hơn
là phần cứng vì ít đầu tư kỹ thuật hơn và chi
phí sửa đổi rẻ hơn.



Misconception 1: Any Subject Matter Expert
Can Become a Requirements Engineer after a
Week or Two of Training
Misconception 2: Nonfunctional and
Functional Requirements can Be Elicited Using
Separate Teams and Processes
Misconception 3: Processes That Work for a
Small Number of Requirements Will Scale
 Assignment: nhóm??
Theo IEEE 1990, yêu cầu phần mềm là:
1. A condition or capability needed by a user to
solve a problem or achieve an objective.
2. A condition or capability that must be met or
possessed by a system or system component
to satisfy a contract, standard, specification,
or other formally imposed document.
3. A documented representation of a condition
or capability as in 1 or 2.


Requirements là đặc tả của cái gì cần được
thực thi, mô tả hệ thống sẽ hoạt động như
thế nào hay hệ thống có thuộc tính gì.
Yêu cầu cũng có thể là các ràng buộc trong
quá trình phát triển hệ thống.








Feasible
Valid
Unambiguous
Verifiable
Modifiable
Consistent
Complete
Traceable

SR bao gồm 3 mức phân biệt:
◦ business requirements,
◦ user requirements,
◦ functional requirements.



Biễu diễn các mục tiêu của tổ chức hay người
dùng yêu cầu hệ thống phải thực thi.
Yêu cầu nghiệp vụ thường do người tài trợ
cho dự án, khách mua phần mềm, người
quản lý các người dùng, bộ phận marketing.
Thường được ghi nhận trong phần vision và
scope của tài liệu, đôi khi còn được gọi là
project charter hay market requirements
document.


Mô tả mục tiêu (goal) hay nhiệm vụ (task) của
người dùng đối với hệ thống.
Các cách để biểu diễn yêu cầu người dùng:
◦ use cases, scenario descriptions,
◦ Bảng event-response.

Yêu cầu người dùng mô tả cái (what) mà
người dùng có thể làm đối với hệ thống.
◦ Ví dụ: use case "Make a Reservation" dùng trong các
website của hàng không, thuê xe, hay khách sạn.



Xác định chức năng của phần mềm mà các
nhà phát triển phải xây dựng để giúp người
dùng hoàn thành nhiệm vụ của họ, thỏa mãn
được yêu cầu nghiệp vụ.
Đôi khi còn được gọi là behavioral
requirements
Ví dụ: "The system shall e-mail a reservation
confirmation to the user.”



Mô tả yêu cầu mức cao đối 1 sản phẩm, nó
chứa các hệ thống con (subsystem) nào.
Một hệ thống có thễ là toàn bộ phần mềm
hay bao gồm các hệ thống con của phần mềm
cũng như phần cứng.
Con người cũng là 1 phần hệ thống, vì vậy
các chức năng hệ thống cũng có thể chỉ định
cả vai trò của con người.

Đội được giao nhiệm vụ viết 1 phần mềm
quản lý dụng cụ phòng thí nghiệm, tự động
bổ sung thêm 1 lượng chính xác các hóa chất
vào 1 dãy các chén thủy tinh (beaker)

Kỹ thuật thu thập yêu cầu liên quan
đến tất cả các hoạt động có chu kỳ :
◦ Xác định yêu cầu của người dùng,
◦ Phân tích yêu cầu để suy diễn thêm các
yêu cầu khác
◦ Đặc tả yêu cầu
◦ Kiểm tra xem yêu cầu vừa đặc tả có phù
hợp với nhu cầu người dùng không


Hậu quả do xác định yêu cầu không đúng là
phải rework (làm lại ) —doing over something
that you thought was already done.
Rework có thể mất 30 – 50% tổng chi phí phát
triển dự án và lỗi do yêu cầu chiếm tới 70 –
85% chi phí làm lại.
Nhận xét???

Imagine how different your life would be if
you could cut the rework effort in half! You
could build products faster, build more and
better products in the same amount of time,
and perhaps even go home occasionally.







Insufficient User Involvement
Creeping User Requirements
Ambiguous Requirements
Gold Plating
Minimal Specification
Overlooked User Classes
Inaccurate Planning
 assignment của 2 nhóm: nhóm? Nhóm ?


Giảm rework không cần thiết
Hiệu quả của yêu cầu có chất lượng thường
không hiển nhiên và nhiều người tin một
cách nhầm lẫn là tiêu tốn thời gian khi bàn
luận về yêu cầu sẽ dẫn đến làm chậm trễ việc
hoàn thành sản phẩm.



Thu thập yêu cầu cho phép đội phát triển
hiểu tốt hơn người dùng và thị trường, một
thừa số thành công quan trọng cho bất kỳ dự
án nào.
Lôi cuốn người dùng tham gia cùng trong
giai đoạn thu thập yêu cầu sẽ xây dựng được
niềm tin và lòng trung thành của khách hàng
Đội có thể tránh viết những đoạn mã thừa khi
nắm vững nhiệm vụ của người dùng.

Sự quan tâm của khách hàng giảm được
khoảng cách (expectation gap) giữa cái người
dùng cần và cái developer tạo ra.










Lỗi về yêu cầu ít hơn
Giảm được việc phải làm lại trong bước phát triển
Ít hơn các tính năng không cần thiết
Hạ thấp chi phí mở rộng
Quá trình phát triển hệ thống sẽ nhanh hơn
Giảm bớt các giao tiếp sai lầm với khách hàng
Hạn chế phạm vi hệ thống bị phình rộng
Hạn chế được những hỗn độn dự án
Các ước tính về hệ thống chính xác hơn
Mức độ thỏa mãn khách hàng và thành viên của đội
sẽ cao hơn



Phân tích thông tin thị trường, stakeholder,
và nhu cầu của người dùng để suy dẫn các
yêu cầu chức năng và phi chức năng.
Hiểu được ảnh hưởng của các yêu cầu đến
nghiệp vụ
Hợp nhất các yêu cầu này lại để hoàn thành
các đặc tả yêu cầu và hệ thống


Khách hàng (customer) là một cá nhân hay 1
tổ chức mong muốn hoặc trực tiếp hoặc gián
tiếp có lợi từ sản phẩm.
Hai loại khách hàng phần mềm (Software
customer) :
◦ Khách hàng dạng quản lý (Customer at
management level)
◦ End user


Là loại khách hàng trả tiền hay tài trợ dự án
phần mềm.
Có nhiệm vụ xác định yêu cầu nghiệp vụ
(business requirement)
◦ Mô tả mục tiêu nghiệp vụ mà khách hàng, công ty
hay các stakeholders khách muốn hoàn thành.
◦ Xác lập các thành phần chính cho phần còn lại
của dự án


Tất cả các tính chất và yêu cầu khác phải đáp
ứng theo các yêu cầu nghiệp vụ.
Nhưng các yêu cầu nghiệp vụ không đủ chi
tiết để giúp các nhà phát triển biết phải xây
dựng cụ thể cái gì


Bao gồm tầt cả những ai sẽ thực sự sử dụng
sản phẩm dù trực tiếp hay gián tiềp.
Users có thể mô tả nhiệm vụ mà họ cần thực
thi với sản phẩm và chất lượng mà họ mong
đợi từ sản phẩm

Thường cả hai loại khách hàng này đều
không tin là họ có thời gian đển làm việc với
các nhà phân tích yêu cầu. Đôi lúc họ nghĩ là
nhà phân tích sẽ hình dung ra được cái người
dùng cần mà không cần phải thảo luận cùng
nhau.


Thường xung đột (conflict) có thể xuất hiện
giữa yêu cầu nghiệp vụ và yêu cầu người
dùng.
Yêu cầu nghiệp vụ phản ánh chiến lược của
tổ chức và các hạn chề về tài chính mà người
dùng có thể không nhìn thấy được  người
dùng thất vọng về hệ thống mới, họ nghĩ
mình như “con tốt” của 1 tương lai không
như ý..


Việc giao tiếp rõ ràng về mục tiêu và các ràng
buộc của dự án có thể làm dịu đi các căng
thẳng bức xúc của người dùng.
Nhà phân tích (analyst) nên làm việc với các
đại diện chính của người dùng (key user
representative) và các nhà tài trợ để hòa giải
các xung đột.



Yêu cầu chất lượng cao có được từ sự quan
hệ giao tiếp hiệu quả giữa nhà phát triển và
khách hàng.
Thường mối quan hệ giữa người phát triển
và customers hay trở nên đối kháng
(adversarial)
Managers thường vượt quá các yêu cầu do
người dùng cung cấp để phù hợp với lịch làm
viêc̣ của chính họ.

Bảng tuyên ngôn quyền dành cho khách
hàng (Requirements Bill of Rights for
Software Customers) liệt kê 10 điều mong
đợi mà khách hàng có quyền khi tiếp xúc
với và phát triển dự án.
Assignment?

Bảng trách nhiệm dành cho khách hàng
phần mềm (Requirements Bill of
Responsibilities for Software Customers) liệt
kê 10 trách nhiệm mà khách hàng phải thực
hiện trong suốt quá trình thu thập yêu cầu
của nhà phân tích.
Assignment?
•
•
•
•
•
•
•
•
•
•
Customers
Users
Requirements analysts
Developers
Testers
Documentation writers
Project managers
Legal staff
Manufacturing people
Sales, marketing, field support, help desk, …
Assignment???
You are a product manager for a machine tool
company. The directors have asked you to
develop a new cutting machine to cut cloth
for fashionable dresses of all sizes and
patterns. The machine will be sold to clothing
makers around the world:
a. Who are your key stakeholders?
b. How will you analyse and validate your
stakeholder list?

Bốn hoạt động này có thể xen vào nhau
(interleaved), tăng tiến (incremental), và lặp
lại (iterative)

Các từ đồng nghĩa:
◦
◦
◦
◦
Systems analyst
Requirements engineer
Requirements manager
Analyst.


Analyst là người chuyển (translator) các suy
nghĩ của người nào đó thành đặc tả yêu cầu.
Analyst là người phản ánh (reflector) thông
tin đến các stakeholder, giúp các stakeholder
tìm thấy sự khác nhau giữa cái họ muốn và
cái họ thực sự cần.



Là người có nhiệm vụ cơ bản là thu thập,
phân tích, ghi chép và kiểm tra nhu cầu của
stakeholders.
Analyst như 1 cầu nối giữa cộng đồng khách
hàng và đội phát triển phần mềm.
Analyst đóng vai trò trung tâm trong việc thu
thập và phổ biến thông tin, còn project
manager giữ vai trò lãnh đạo trong việc
truyên đạt thông tin dự án.

Analyst trước tiên phải hiểu mục tiêu của
người dùng, sau đó xác định các yêu cầu
chức năng, cho phép người quản lý dự án
làm các ước tính, các developers thiết kế, xây
dựng và kiểm định sản phẩm.








Define business requirements.
Identify project stakeholders and user
classes.
Elicit requirements
Write requirements specifications
Model the requirements
Lead requirements validation
Facilitate requirements prioritization
Manage requirements
Assignment ??










Listening skill
Interviewing and questioning skill
Analytical skill,
Facilitation skills.
Observational skills.
Writing skills
Organizational skills
Modeling skills
Interpersonal skills
Creativity

Assignment ??
Download