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 đó