CHƯƠNG I YÊU CẦU PHẦN MỀM
Thu nhận yêu cầu
1
TNYC
Nội dung
Thu nhận yêu cầu
1. Tầm quan trọng của xác định yêu cầu 2. Yêu cầu phần mềm (software requirement) là gì? 3. Phân loại yêu cầu 4. Kỹ thuật yêu cầu (Requirements Engineering - RE) là gì? 5. Lợi ích từ quy trình xác định yêu cầu chất lượng cao 6. Vai trò của người phân tích yêu cầu
2
1. Tầm quan trọng trong XĐ yêu cầu?
Thu nhận yêu cầu
(cid:153) Công nghệ và xã hội không ngừng thay đổi một cách nhanh chóng, và ảnh hưởng to lớn của hệ thống thông tin trong một môi trường vô cùng phức tạp (cid:131) Kỹ thuật yêu cầu (requirements engineering - RE)
đóng một vai trò vô cùng quan trọng
(cid:131) 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
Hệ thống nghiệp vụ - Hệ thống thông tin – Phần mềm
3
Một số đặc trưng
Thu nhận yêu cầu
(cid:153) Sản phẩm phát triển với tốc độ chóng mặt. Ngày
4
nay khách hàng thường đòi hỏi phiên bản mới của sản phẩm trong khoảng thời gian dưới 1 năm (cid:131) 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ẩmcó tuổi <5.
5
Một số đặc trưng
Thu nhận yêu cầu
(cid:153) Thay đổi không ngừng của công nghệ
(cid:131) Các kỹ sư không thể sống cả đời với nghề nghiệp
của mình trong 1 công ty nào đó
6
Một số đặc trưng
Thu nhận yêu cầu
(cid:153) Gia công phần mềm đóng một vai trò vô cùng
7
quan trọng có tính toàn cầu (cid:131) Vai trò quan trọng của đặc tả. VD: Đặc tả cho máy giặt cho đội ngũ xây dựng nó chưa từng nhìn thấy máy giặt lần nào
Một số đặc trưng
Thu nhận yêu cầu
8
(cid:153) Việc phát triển phần mềm thường liên kết chặt chẽ với nghiệp vụ mà nghiệp vụ thì biến đổi không ngừng nên các phiên bản mới của sản phẩm thường được tạo bằng cách thay đổi phần mềm nhằm hạ thấp chi phí biến đổi
Tại sao yêu cầu là quan trọng?
Thu nhận yêu cầu
(cid:153) Nguyên nhân thất bại của dự án (RE-62%)
(cid:131) 1. Những yêu cầu không đầy đủ - Incomplete
requirements (13.1%)
(cid:131) 2. Lack of user involvement (12.4%) (cid:131) 3. Lack of resources (10.6%) (cid:131) 4. Unrealistic expectations (9.9%) (cid:131) 5. Lack of executive support (9.3%) (cid:131) 6. Changing requirements and specifications
(8.7%)
(cid:131) 7. Lack of planning (8.1%) (cid:131) 8. System no longer needed (7.5%)
Ai thành công ???
Thu nhận yêu cầu
(cid:153) For the first half of the 20th century, the Indian and Harley Davidson motorcycle manufactures were fierce competitors.
(cid:153) In WWII the U. S. Army asked for a 500 cc
motorcycle.
(cid:153) Indian made one for them. (cid:153) Harley Davidson built a 750 cc motorcycle. (cid:153) Have any of you heard of a Indian motorcycle?
10
2. Yêu cầu (requirement)
Thu nhận yêu cầu
(cid:153) Một yêu cầu là một đặc trưng của hệ thống, hay
11
là sự mô tả những việc, mà hệ thống có khả năng thực hiện để hoàn thành mục tiêu của hệ thống
Theo IEEE 1990
Thu nhận yêu cầu
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
12
capability as in 1 or 2.
Yêu cầu?
Thu nhận yêu cầu
“Tôi không có thời gian để viết yêu cầu!
Bạn không thấy tôi đang
13
bận gỡ lỗi?”
Yêu cầu
Thu nhận yêu cầu
(cid:153) Yêu cầu có thể được ràng buộc bởi hợp đồng hay
văn bản
(cid:153) Có những yêu cầu ngầm định (implicit) (cid:153) Một yêu cầu có thể được nhận biết (known, spoken)/ không nhận biết (forgotten, unspoken…)
Đặc trưng của yêu cầu
Thu nhận yêu cầu
15
(cid:153) Khả thi - Feasible (cid:153) Có giá trị - Valid (cid:153) Không nhập nhằng - Unambiguous (cid:153) Dễ kiểm chứng - Verifiable (cid:153) Dễ biến đổi - Modifiable (cid:153) Toàn vẹn - Consistent (cid:153) Đầy đủ - Complete (cid:153) Lần vết được - Traceable
16
3. Phân loại yêu cầu
Thu nhận yêu cầu
…….
17
Yêu cầu hệ thống
Thu nhận yêu cầu
(cid:153) Yêu cầu chức năng: chức năng dịch vụ hệ thống
cung cấp
(cid:153) Yêu cầu phi chức năng: những ràng buộc về tiêu chuẩn, thời gian, qui trình phát triển…, chủ yếu là những yêu cầu về chất lượng
18
(cid:153) Ràng buộc: phản ảnh những đặc trưng của miền ứng dụng. Chúng có thể là những yêu cầu chức năng hay yêu cầu phi chức năng.
Yêu cầu chức năng
Thu nhận yêu cầu
(cid:153) Một số yêu cầu chức năng (cid:131) Chức năng tính toán (cid:131) Chức năng lưu trữ (cid:131) Chức năng tìm kiếm (cid:131) Chức năng kết xuất (cid:131) Chức năng backup, restore (cid:131) Chức năng đa người dùng (cid:131) Chức năng đa phương tiện…
(cid:153) Yêu cầu chức năng chỉ ra những gì hệ thống làm, chúng thường quan hệ các use-case hay những qui tắc nghiệp vụ (business rule)
Ví dụ
Thu nhận yêu cầu
(cid:153) Trong hệ thống quản lý thư viện
(cid:131) Người dùng có thể tìm kiếm, download, in những bài
báo
(cid:131) Người dùng được cấp một vùng lưu trữ riêng để có
thể copy để lưu trữ tài liệu lâu dài…
20
Yêu cầu phi chức năng
Thu nhận yêu cầu
(cid:131) Độ tin cậy, thời gian đáp ứng, các yêu cầu về lưu trữ… (cid:131) Các chuẩn được sử dụng, các công cụ CASE, ngôn ngữ
lập trình…
(cid:131) Yêu cầu của người sử dụng: dễ sử dụng, thân thiện (cid:131) Ràng buộc về ngân sách (cid:131) Phù hợp với các chính sách của tổ chức sử dụng hệ
thống
(cid:131) Yêu cầu tương thích giữa phần cứng và phần mềm (cid:131) Các yêu cầu từ các tác nhân ngoài khác…
(cid:153) Một số yêu cầu phi chức năng
Yêu cầu phi chức năng
Thu nhận yêu cầu
22
CNPM/NN
Ví dụ
Thu nhận yêu cầu
Trong hệ thống quản lý thư viện (cid:153) Yêu cầu sản phẩm: giao diện người dùng không
chứa frame và applet java
(cid:153) Yêu cầu tổ chức: qui trình phát triển hệ thống và tài liệu phân phối phải phù hợp theo tiêu chuẩn “STAN-07” (sử dụng ngôn ngữ, phương pháp thiết kế…)
(cid:153) Yêu cầu ngoài: hệ thống không được lộ thông tin
23
của khách hàng (tên, số tham chiếu…)
Các mức yêu cầu
Thu nhận yêu cầu
24
(cid:153) Yêu cầu nghiệp vụ (Business requirements) (cid:153) Yêu cầu người dùng (User requirements) (cid:153) Yêu cầu chức năng (Functional requirements)
Yêu cầu nghiệp vụ
Thu nhận yêu cầu
(cid:153) Biễu diễn các mục tiêu của tổ chức hay khách
hàng yêu cầu hệ thống phải có
(cid:153) 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 tiếp thị (maketing)…
25
(cid:153) Thường được ghi nhận trong phần đặc tả (vision) và phạm vi (scope) của tài liệu, đôi khi còn được gọi là tuyên bố dự án (project charter) hay tài liệu yêu cầu thị trường (market requirements document)
Yêu cầu người dùng
Thu nhận yêu cầu
(cid:153) Mô tả mục tiêu (goal) hay tác vụ (task) của
người dùng đối với hệ thống.
(cid:153) Các cách để biểu diễn yêu cầu người dùng:
(cid:131) use cases, scenario (cid:131) Bảng event-response.
(cid:153) Yêu cầu người dùng mô tả cái (what) mà người
26
dùng có thể làm đối với hệ thống. (cid:131) 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.
Yêu cầu chức năng
Thu nhận yêu cầu
(cid:153) 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ụ.
(cid:153) Đôi khi còn được gọi là yêu cầu về hành vi
(behavioral requirements)
(cid:153) Ví dụ: Hệ thống sẽ gởi một xác nhận giữ chỗ cho
27
khách hàng…
Mối liên hệ giữa các mức yêu cầu
Thu nhận yêu cầu
Các mức yêu cầu
Thu nhận yêu cầu
29
Các loại yêu cầu
Thu nhận yêu cầu
(cid:153) Môi trường vật lý (cid:153) Giao tiếp (cid:153) Người dùng và nhân tố con người (cid:153) Chức năng (cid:153) Lập tài liệu (cid:153) Dữ liệu (cid:153) Tài nguyên (cid:153) An ninh (cid:153) Bảo đảm chất lượng
4. Kỹ thuật yêu cầu (RE)
Thu nhận yêu cầu
(cid:153) Nhấn mạnh tới tính cộng tác và lặp lại
(cid:131) Tạo tài liệu cho những kết quả quan sát (cid:131) Kiểm tra
(cid:153) Nó còn nhấn mạnh tới vai trò của kinh nghiệm và
31
tính xã hội
Quy trình phát triển yêu cầu
Thu nhận yêu cầu
32
Sơ đồ kỹ thuật yêu cầu
Thu nhận yêu cầu
33
Ranh giới yêu cầu
Thu nhận yêu cầu
34
Kỹ thuật yêu cầu
Thu nhận yêu cầu
35
5. Lợi ích khi thu thập yêu cầu hiệu quả
Thu nhận yêu cầu
Lợi ích của việc tạo yêu cầu có chất lượng thường không dễ thấy nên nhiều người thường 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
36
(cid:153) Giảm việc phải làm lại (cid:153) Thu thập yêu cầu cho phép đội phát triển hiểu rõ về người dùng và thị trường, một nhân tố quan trọng cho sự thành công của bất kỳ dự án nào
Lợi ích
Thu nhận yêu cầu
(cid:153) Khi người dùng cùng tham gia 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
37
(cid:153) Đội phát triển 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 (cid:153) Sự quan tâm của khách hàng giảm được khoảng cách giữa cái người dùng cần và cái người phát triển tạo ra.
Những lợi ích không định lượng
Thu nhận yêu cầu
1. Lỗi liên quan đến yêu cầu ít hơn 2. Giảm được việc phải làm lại trong bước phát triển 3. Ít hơn trong việc tạo tính năng không cần thiết 4. Giảm chi phí mở rộng 5. Quá trình phát triển hệ thống sẽ nhanh hơn 6. Giảm bớt các giao tiếp sai lầm với khách hàng 7. Hạn chế phạm vi hệ thống bị phình rộng 8. Hạn chế được những hỗn độn dự án 9. Các ước lượng về hệ thống chính xác hơn 10. Mức độ thỏa mãn khách hàng và thành viên của
đội sẽ cao hơn
38
6. Nhà phân tích yêu cầu
Thu nhận yêu cầu
39
(cid:153) Nhà phân tích yêu cầu (Requirements analyst) (cid:153) Nhà phân tích hệ thống (Systems analyst) (cid:153) Kỹ sư yêu cầu (Requirements engineer) (cid:153) Nhà quản lý yêu cầu (Requirements manager) (cid:153) Nhà phân tích (Analyst)
Vai trò của nhà phân tích
Thu nhận yêu cầu
(cid:153) Nhà phân tích là người chuyển các ý tưởng thành
những đặc tả yêu cầu.
(cid:153) Nhà phân tích là người có quan hệ truyền thông
với 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
40
(cid:153) 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 các stakeholder
Vai trò của nhà phân tích
Thu nhận yêu cầu
(cid:153) Họ như là một cầu nối giữa cộng đồng khách
hàng và đội phát triển phần mềm.
(cid:153) Nhà phân tích đóng vai trò trung tâm trong việc
41
thu thập và phổ biến thông tin, còn người quản lý dự án (project manager) giữ vai trò lãnh đạo trong việc truyền đạt thông tin dự án
Các mối quan hệ
Thu nhận yêu cầu
42
Nhiệm vụ tổng quát
Thu nhận yêu cầu
43
(cid:153) Nhà phân tích 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 xây dựng các ước lượng; người phát triển (developer) thiết kế, xây dựng và kiểm định sản phẩm.
Nhiệm vụ
Thu nhận yêu cầu
44
(cid:153) Xác định yêu cầu nghiệp vụ. (cid:153) Xác định các stakeholder và các lớp người dùng (cid:153) Rút ra những yêu cầu (Elicit) (cid:153) Viết đặc tả yêu cầu (cid:153) Mô hình hóa yêu cầu (cid:153) Điều hành việc đánh giá yêu cầu (cid:153) Phân loại ưu tiên các yêu cầu (cid:153) Quản lý yêu cầu
Kỹ năng của nhà phân tích
Thu nhận yêu cầu
(cid:153) Kỹ năng lắng nghe (cid:153) Kỹ năng phỏng vấn (cid:153) Kỹ năng phân tích (cid:153) Kỹ năng điều khiển (họp) (cid:153) Kỹ năng quan sát (cid:153) Kỹ năng viết (cid:153) Kỹ năng tổ chức (cid:153) Kỹ năng mô hình hóa (cid:153) Kỹ năng giao tiếp (cid:153) Tính sáng tạo
Thu nhận yêu cầu
46
Nhập nhằng
Requirement:
Create a means to transport a single individual from home to place of work.
Management Interpretation
I T Interpretation
User Interpretation
Những rủi ro
Thu nhận yêu cầu
(cid:153) Không gồm người dùng không đầy đủ (cid:153) Yêu cầu người dùng phình ra (Creeping UR)
Requirements
(cid:153) Yêu cầu nhập nhằng (cid:153) Yêu cầu mạ vàng (Gold Plating): khi người phát
triển cộng thêm chức năng không có trong đặc tả
48
(cid:153) Yêu cầu tối tiểu (cid:153) Bỏ qua lớp người dùng (cid:153) Hoạch định không chính xác
Dư thừa thông tin,
rối rắm cho người sử dụng.
Phù hợp yêu cầu người dùng
Thu nhận yêu cầu
51
CNPM/NN
Thực hành
Thu nhận yêu cầu
(cid:153) Dưới vai trò của người phân tích hệ thống hãy
52
đưa một dự án CNTT và đưa ra các yêu cầu của hệ thống, cách thức xác định các yêu cầu đó