Bài giảng Thu nhận yêu cầu - Chương 1: Tổng quan về kỹ thuật yêu cầu - Trần Thị Kim Chi

 Khái quát về phần mềm  Tầm quan trọng của việc xác định cầu  Kỹ thuật yêu cầu  Yêu cầu theo quan điểm khách hàng  Nhà phân tích yêu cầu Khái Quát Về Phần Mềm  Software = Program  Software product = Program + Document + Support  Loại sản phẩm phần mềm Generic Product: là sản phẩm đóng gói và bán rộng rãi trên thị trường. Bespoke Product: là sản phẩm được phát triển theo yêu cầu đặc thù của từng khách hàng

pdf99 trang | Chia sẻ: candy98 | Lượt xem: 478 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Thu nhận yêu cầu - Chương 1: Tổng quan về kỹ thuật yêu cầu - Trần Thị Kim Chi, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1 TỔNG QUAN VỀ KỸ THUẬT YÊU CẦU REQUIREMENT ENGINEERING Giảng viên: Trần Thị Kim Chi 2 Nội dung  Khái quát về phần mềm  Tầm quan trọng của việc xác định cầu  Kỹ thuật yêu cầu  Yêu cầu theo quan điểm khách hàng  Nhà phân tích yêu cầu 3 Khái Quát Về Phần Mềm  Software = Program  Software product = Program + Document + Support  Loại sản phẩm phần mềm Generic Product: là sản phẩm đóng gói và bán rộng rãi trên thị trường. Bespoke Product: là sản phẩm được phát triển theo yêu cầu đặc thù của từng khách hàng. 4 Khái Quát Về Phần Mềm Các đặc tính quan trọng của sản phẩm phần mềm  Maintainability: phần mềm có thể thay đổi thuận tiện theo yêu cầu của người dùng  Dependability: tính ổn định, bảo mật và an toàn của phần mềm. Không gây tổn hại về vật chất hay kinh tế cho hệ thống.  Efficiency: Sử dụng hiệu quả tài nguyên của hệ thống cho công việc  Usability: giao diện và phương thức phải phù hợp với người dùng đồng thời đáp ứng đúng yêu cầu của người dùng 5 Phần Mềm – Đủ hay Thiếu  Phần mềm được viết ngay từ khi có những máy tính programable đầu tiên. Được quan tâm và phát triền từ rất sớm  Có rất nhiều phần mềm đã được viết Không thiếu phần mềm  Thực tế việc sản xuất phần mềm không đáp ứng kịp yêu cầu của người sử dụng:  Không đủ về số lượng  Thiếu về chất lượng  Không kịp về thời gian  Phần mềm không đáp ứng đủ cho người dùng 6 Nguyên nhân khách quan  Số lượng phần mềm phải được hiểu là số đầu/loại phần mềm được sử dụng cho từng mục tiêu ứng dụng.  Nhu cầu sử dụng phần mềm là rất lớn  Nhiều ngành nghề cần dùng phần mềm máy tính  Mỗi ngành nghề cần nhiều loại phần mềm khác nhau  Mội loại phần mềm cần nhiều cấp độ khác nhau theo trình độ người dùng 7 Nguyên nhân khách quan  Chất lượng phần mềm cũng chưa đáp ứng tốt hoàn toàn người sử dụng:  Tính customize rất cao của sản phẩm phần mềm.  Trình độ sử dụng khác nhau và điều kiện hạ tầng ứng dụng khác nhau  Nhu cầu phần mềm thường rất cấp bách  Tầm nhìn và chiến lược chưa đầy đủ của người sử dụng  Không có kế hoạch lâu dài  Phải thay đổi theo từng đối tượng người dùng 8 Nguyên nhân chủ quan  Tính chuyên nghiệp trong sản xuất phần mềm chưa cao.  Các dữ liệu quan sát được  Cứ 6 đề án triển khai thì có 2 bị huỷ bỏ  Trung bình thời gian thực hiện thực tế bị kéo dài 50 % (cá biệt 200-300%)  Các đề án lớn dễ thất bại  3/4 các hệ thống lớn có lỗi khi thực thi  Quá trình phân tích yêu cầu (5 % công sức): để lại 55 % lỗi, có 18 % phát hiện được  Quá trình thiết kế (25 % công sức): để lại 30 % lỗi, có 10 % phát hiện được  Quá trình mã hoá, kiểm tra và bảo trì: để lại 15 % lỗi, có 72 % phát hiện được 9 Nguyên nhân chủ quan  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 một dự án phần mềm.  Có sự khác biệt giữa cái mà người phát triển phần mềm (developer) nghĩ và xây dựng với cái mà khách hàng thật sự cần.  "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." Tại sao xác định yêu cầu là quan trọng A story 10  "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. A story 11  "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] A story 12  "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." A story 13  "Hey, Maria, it's not my fault," Phil protested (phản kháng). "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?" A story 14 15 Tầm quan trọng trong XĐ yêu cầu?  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  Kỹ thuật yêu cầu (requirements engineering - RE) đóng một vai trò vô cùng quan trọ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 Hệ thống nghiệp vụ - Hệ thống thông tin – Phần mềm Vậy tầm quan trọng của thu nhận yêu cầu là gì? 16 Tầm quan trọng trong XĐ yêu cầu? Lý do 1:  Sản phẩm phát triển với tốc độ chóng mặt. Ngày 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  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. 17 Tầm quan trọng trong XĐ yêu cầu? 18 Tầm quan trọng trong XĐ yêu cầu? 19 Tầm quan trọng trong XĐ yêu cầu? Lý do 2:  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 một công ty nào đó, nhưng ngày nay việc thay đổi công việc rất thường xuyên. 20 Tầm quan trọng trong XĐ yêu cầu? Lý do 3:  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ả sản phẩm để thực thi hay sản xuất bởi nhiều bộ phận 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ế có thể 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. 21 Tầm quan trọng trong XĐ yêu cầu? Lý do 4:  Việc phát triển phần mềm thường liên kết chặt chẽ với nghiệp vụ. Ví dụ: phần mềm cellphone 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ể thực hiện hiện dễ dàng 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 22 Tầm quan trọng trong XĐ yêu cầu? Nguyên nhân thất bại của dự án (RE-62%)  Những yêu cầu không đầy đủ - Incomplete requirements (13.1%)  Lack of user involvement – không cuốn hút người dùng(12.4%)  Lack of resources – thiếu nguồn tài nguyên(10.6%)  Unrealistic expectations – thiếu thực tế(9.9%)  Lack of executive support (9.3%)  Changing requirements and specifications (8.7%)  Lack of planning (8.1%)  System no longer needed (7.5%) 23 Tầm quan trọng trong XĐ yêu cầu? 24 25  Một yêu cầu là một đặc trưng của hệ thống, hay 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  Yêu cũng có là các ràng buộc trong quá trình phát triển hệ thống.  Requirements described the “what” of a system, not the “how”  Yêu cầu có thể được ràng buộc bởi hợp đồng hay văn bản  Có những yêu cầu ngầm định (implicit)  Một yêu cầu có thể được nhận biết (known, spoken)/ không nhận biết (forgotten, unspoken) Yêu cầu (requirement) 26  “Tôi không có thời gian để viết yêu cầu!  Bạn không thấy tôi đang bận gỡ lỗi?” Yêu cầu (requirement) Theo IEEE 1990, yêu u n m : 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. Software Requirements (SR)? 27  Yêu cầu quan trọng vì nó cung cấp các cơ sở cho tất cả công việc phát triển hệ thống sau đó.  Ngay khi yêu cầu được xác định, nhà phát triển khởi đầu các công việc kỹ thuật khác như: thiết kế hệ thống, phát triển, kiểm thử, thực thi và vận hành. Vai trò của yêu cầu 28  Yêu cầu được phát biểu (stated requirement)  Yêu cầu thực (real requirement) Phân loại yêu cầu 29  Là các yêu cầu được cung cấp bởi khách hàng khi bắt đầu phát triển hệ thống.  Các dạng yêu cầu:  Yêu cầu về thông tin  Dự toán  Bảng báo giá  Phát biểu công việc (statement of work – SOW) Stated Requirements 30  Là các yêu cầu phản ánh nhu cầu xác thực của người dùng.  Thường khác nhau rất lớn giữa yêu cầu phát biểu và yêu cầu thực.  Việc phân tích các yêu cầu khách hàng (stated requirements) được dùng để xác định và tinh chỉnh các nhu cầu thực sự của khách hàng. Real Requirements 31  Là hệ thống các phương thức có liên quan với nhau chỉ định cái mà khách hàng muốn hệ thống làm gì.  There are two majors tasks in the requirements engineering:  Analysis  Modeling Requirements Engineering 32  Analysis is the process of determining what the customer wishes the system to do and formally creating a list of requirements that the customer can understand and agree to do.  Modeling is a process of interpreting the customer requirements into something that software engineers can understand. Requirements Engineering 33 Phân i yêu u 34 Gồm hai loại chính: • Yêu cầu chức năng (Function requirements) • Yêu cầu phi chức năng (Non Functional Requirements) Yêu cầu chức năng (Functional requirements) 35  Yêu cầu chức năng (Functional requirements): chức năng dịch vụ hệ thống cung cấp.  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 confrimation the user” Yêu cầu chức năng (Functional requirements) 36  Yêu cầu chức năng (Functional requirements): 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) • Một số yêu cầu chức năng • Chức năng tính toán • Chức năng lưu trữ • Chức năng tìm kiếm • Chức năng kết xuất • Chức năng backup, restore • Chức năng đa người dùng • Chức năng đa phương tiện Yêu cầu chức năng (Functional requirements) 37 Thí dụ: Trong hệ thống quản lý thư viện • Người dùng có thể tìm kiếm, download, in những bài báo • 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 Yêu cầu phi chức năng (Non-functional requirements 38  Yêu cầu phi chức năng (Non-functional requirements): Không tập trung vào các chức năng của hệ thống mà chỉ tập trung vào các ràng buộc của hệ thố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.  Sáu loại chính của yêu cầu phi chức năng: security, privacy, usability, reliability, availability, and performance.  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 phi chức năng (Non-functional requirements 39 Một số yêu cầu phi chức năng • Độ tin cậy, thời gian đáp ứng, các yêu cầu về lưu trữ • Các chuẩn được sử dụng, các công cụ CASE, ngôn ngữ lập trình • Yêu cầu của người sử dụng: dễ sử dụng, thân thiện • Ràng buộc về ngân sách • Phù hợp với các chính sách của tổ chức sử dụng hệ thống • Yêu cầu tương thích giữa phần cứng và phần mềm • Các yêu cầu từ các tác nhân ngoài khác Yêu cầu phi chức năng (Non-functional requirements 40 Yêu cầu phi chức năng (Non-functional requirements 41 Ví dụ Trong hệ thống quản lý thư viện • Yêu cầu sản phẩm: giao diện người dùng không chứa frame và applet java • 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ế) • Yêu cầu ngoài: hệ thống không được lộ thông tin của khách hàng (tên, số tham chiếu) Phân i yêu u 42  Khả thi - Feasible  Có giá trị - Valid  Không nhập nhằng - Unambiguous  Dễ kiểm chứng - Verifiable  Dễ biến đổi - Modifiable  Toàn vẹn - Consistent  Đầy đủ - Complete  Lần vết được - Traceable Đặc trưng của yêu cầu 43 Software Requirement bao m 3 c phân t:  Yêu cầu nghiệp vụ (Business requirements)  Yêu cầu người dùng (User requirements)  Yêu cầu chức năng (Functional requirements) c c yêu u 44  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ó  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)cung cấp  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 nghiệp vụ (Business requirements) 45  Mô tả mục tiêu (goal) hay tác 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  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. Yêu cầu người dùng (User requirements) 46  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à yêu cầu về hành vi (behavioral requirements)  Ví dụ: Hệ thống sẽ gởi một xác nhận giữ chỗ cho khách hàng Yêu cầu chức năng (Functional requirements) 47  Mô yêu u c cao i n m, a c ng con (subsystem) o.  t ng thể n n m hay bao m c ng con a n m ng như n ng.  Con i ng n ng, y c c năng ng ng nh vai a con i. System requirements 48 i liên hê a c c yêu u srse 49 i liên hê a c c yêu u srse 50 Phân i i u yêu u 51  Môi trường vật lý  Giao tiếp  Người dùng và nhân tố con người  Chức năng  Lập tài liệu  Dữ liệu  Tài nguyên  An ninh  Bảo đảm chất lượng Các loại yêu cầu 52  i c giao m t n m n ng ng m, ng sung thêm ng nh c c a t o y c n y tinh (beaker)  Yêu cầu của phần mềm là gì? Case study 53  Nhấn mạnh tới tính cộng tác và lặp lại  Tạo tài liệu cho những kết quả quan sát  Kiểm tra  Nó còn nhấn mạnh tới vai trò của kinh nghiệm và tính xã hội t thu p yêu u Requirements Engineering 54  t thu p yêu u liên quan n t c t ng chu :  c nh yêu u a i ng,  Phân ch yêu u suy n thêm c yêu u c  c yêu u  m tra xem yêu u a c p i nhu u i ng không t thu p yêu u Requirements Engineering 55 Các bước trong Qui trình phát triển yêu cầu 56 Các bước trong Qui trình phát triển yêu cầu 57 Các bước trong Qui trình phát triển yêu cầu 58 Các bước trong Qui trình phát triển yêu cầu 59 Xác định yêu cầu: • Là hoạt động chuyển thông tin phát sinh trong suốt tiến trình phân tích thành tài liệu định nghĩa tập hợp các yêu cầu • Phản ánh chính xác điều mà người dùng muốn • Tài liệu phải được viết để hệ thống sẽ được hiểu bởi • Người dùng cuối • Những khách hàng của hệ thống. Các bước trong Qui trình phát triển yêu cầu 60 Đặc tả yêu cầu: • Bản mô tả các yêu cầu hệ thống được thiết lập như cơ sở của hợp đồng giữa khách hàng và nhà phát triển phần mềm • Mô tả thật chi tiết về yêu cầu người dùng và yêu cầu hệ thống • hữu ích cho thiết kế • Mô tả chính xác để nắm bắt đúng vấn đề • Việc lập tài liệu này được thực hiện song song cùng với một số các thiết kế cấp cao khác. • Lỗi trong định nghĩa yêu cầu cần được xem xét kỹ lưỡng. • Nó phải được sửa chữa theo đúng vấn đề này. Các bước trong Qui trình phát triển yêu cầu 61 Quản lý yêu cầu: • Quản lý yêu cầu là tiến trình quản lý sự thay đổi của yêu cầu trong suốt quy trình công nghệ yêu cầu và phát triển hệ thống • Yêu cầu thì chắc hẳn là sẽ không hoàn thiện và không nhất quán • Các yêu cầu mới thì liên tục phát sinh trong suốt tiến trình khi nhu cầu công việc thay đổi và có sự hiểu rõ hơn về hệ thống đang phát triển • Các quan điểm khác nhau có các yêu cầu khác nhau và điều này thường làm phát sinh mâu thuẫn c nh n a requirement engineering 62 Ranh i a t n n yêu u 63 Kỹ thuật yêu u 64 65 Lợi ích khi thu thập yêu cầu hiệu quả  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  Giảm việc phải làm lại  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 66 Lợi ích khi thu thập yêu cầu hiệu quả  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  Đội ngũ 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  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. 67 Những lợi ích không định lượng 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  u do c nh yêu u không ng i rework ( m i ) —doing over something that you thought was already done.  Rework t – % ng chi t n n i do yêu u m i – % chi m i. u khi c nh yêu u sai 68 So nh chi a sai i a yêu u i i i m c nhau n t??? 69 SDLC 70  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. Khi không i rework 71  Insufficient User Involvement – thiếu sự tham gia người dùng  Creeping User Requirements – Yêu cầu người dùng phình ra  Ambiguous Requirements – yêu cầu mơ hồ, không rõ ràng  Gold Plating - 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ả  Minimal Specification – Yêu cầu tối thiểu  Overlooked User Classes – Bỏ qua lớp người dùng  Inaccurate Planning – Hoạch định không chính xác  assignment a m: m m 10 (srse) Nguyên nhân n n c nh yêu u không nh công 72
Tài liệu liên quan