Chapter 10: Software Quality
Group 10:
- Nguyễn Gia Dũng
- Nguyễn Ngọc Khánh
1.Software Quality Fundamentals
Software Engineering Culture and Ethics
Value and Costs of Quality
Models and Quality Characteristics
Software Quality Improvement
Software Safety
1.1 Software Engineering Culture and Ethics
Một nền văn hóa phần mềm lành mạnh bao gồm nhiều đặc điểm, bao gồm:
• Có sự cam kết về chất lượng của người lập trình, đảm bảo cân bằng giữa chi phí, tiến độ, chất lượng.
• Một sản phẩm phần mềm tốt là sản phẩm được báo cáo chính xác thông tin và các kết quả liên quan đến chất lượng.
• Do yêu cầu đảm bảo chất lượng phần mềm nên 1 số tổ chức đã tạo ra các bộ chuẩn về các nguyên tắc trong chất lượng phần mềm
Ví dụ: IEEE Computer Society and the ACM.
1.2.Value and Costs of Quality
CoSQ: Cost of software Quality (Chi phí chất lượng phần mềm) • Chuẩn tập hợp 1 bộ các phép đo đánh giá về giá trị kinh tế trong quá trình phát triển phần mềm và bảo trì. • Four cost of quality categories: (4 loại chi phí)
- prevention
- appraisal
- internal failure
- external failure
1.2.1. Prevention: Chi phí phòng ngừa
• Bao gồm các khoản đầu tư vào các nỗ lực cải tiến quy trình phần mềm, chất lượng cơ sở hạ tầng, các công cụ chất lượng, đào tạo, kiểm tra, đánh giá và quản lý.
• Các chi phí này thường không cụ thể cho một dự án
1.2.2. Appraisal: Chi phí thẩm định
• Phát sinh từ các hoạt động dự án mà tìm thấy lỗi.
• Phân loại: chi phí đánh giá thiết kế và chi phí kiểm thử (phần mềm kiểm tra đơn vị, tích hợp phần mềm, kiểm tra hệ thống cấp, kiểm tra chấp nhận)
• chi phí thẩm định sẽ được mở rộng cho các nhà cung cấp phần mềm hợp đồng phụ
1.2.3. Internal failure: Chi phí thất bại nội bộ
Là chi phí được phát sinh để sửa chữa những lỗi tìm thấy trong quá trình hoạt động thẩm định và phát hiện ra trước khi phân phối sản phẩm cho khách hàng
1.2.4. External failure: Chi phí thất bại bên ngoài
Bao gồm các hoạt động ứng phó với các vấn đề phần mềm phát hiện sau khi giao hàng cho khách hàng.
Summary: Kỹ sư phần mềm có thể sử dụng phương pháp CoSQ để xác định cấp độ chất lượng phần mềm và cũng có thể trình bày lựa chọn sao cho cân bằng giữa chất lượng và chi phí của sản phẩm
1.3 Models and Quality Characteristics:
Mô hình và đặc điểm của chất lượng
• Thuật ngữ mô tả đặc tính chất lượng phần mềm (hoặc mô hình của chất lượng phần mềm)
• Mỗi mô hình có các mức phân cấp và đặc tính khác nhau.
Ví dụ: ISO/IEC 25.010: 2011 bao gồm
• identifying software and system requirements (Yêu cầu của phần mềm và hệ thống)
• validating the comprehensiveness of a requirements definition (Tính toàn diện của hệ thống)
• identifying software and system design objectives (Yêu cầu thiết kế theo mục tiêu của phần mềm và hệ thống)
• identifying software and system testing objectives (Yêu cầu kiểm thử theo mục tiêu)
• identifying quality control criteria as part of quality assurance (Yêu cầu về tiêu chí quản lý chất lượng – là 1 phần của việc đảm bảo chất lượng)
• identifying acceptance criteria for a software product and/or software-intensive computer system (Các tiêu chí ở mức chấp nhận được cho 1 sản phẩm phần mềm)
• establishing measures of quality characteristics in support of these activities (Các biện pháp hỗ trợ cho đặc tính chất lượng)
1.4 Software Quality Improvement
Cải thiện chất lượng phần mềm
• Thông qua các quy trình phòng ngừa hoặc một quá trình lặp đi lặp lại các cải tiến liên tục, đòi hỏi có sự kiểm soát quản lý, điều phối, và thông tin phản hồi từ nhiều tiến trình đồng thời:
• ( 1 ) các quá trình trong vòng đời phần mềm.
• ( 2 ) quá trình lỗi / khiếm khuyết phát hiện, loại bỏ, và phòng ngừa.
• ( 3 ) các quá trình cải tiến chất lượng.
Ví dụ:
• Xây dựng chất lượng sản phẩm thông qua việc phát hiện phòng ngừa sớm các lỗi, cải tiến liên tục giữa các bên liên quan trong quá trình phát triển sản phẩm.
=> Các chuyên gia đã khẳng định: Chất lượng của một sản phẩm được liên kết trực tiếp đến chất lượng của quá trình phát triển và sử dụng.
• PDCA (Plan- Do- Check- Act): Lên kế hoạch – thực hiện – kiểm tra – chỉnh sửa
•
• Evolutionary delivery: Khả năng tiến hóa
•
• QFD (quality function deployment): Cải tiến chất lượng triển khai
•
=> Cung cấp các kỹ thuật để xác định mục tiêu chất lượng sản phẩm và xác định xem họ được đáp ứng như thế nào.
1.5 Software Safety
Đảm bảo An toàn phần mềm
• Thực tế: Một lỗi hệ thống trong 1 sản phẩm có thể gây tổn hại cho đời sống con người - các loài sinh vật khác, cấu trúc vật lý, hoặc môi trường.
•
=> Các phần mềm trong các hệ thống này coi trọng an toàn
Ví dụ:
Hệ thống quản lý bay, nhà máy sản xuất hóa chất, các thiết bị y tế. Một lỗi trong hoạt động của hệ thống phần mềm trong các ngành này có thể có tác động rất lớn, thậm chí gây nên thảm họa.
Phân loại
• Direct (Trực tiếp) có thể là phần mềm nhúng trong một hệ thống, chẳng hạn như máy tính điều khiển chuyến bay của công ty quản lý bay
•
• Indirect (Gián tiếp) bao gồm các ứng dụng phần mềm được sử dụng trong các môi trường phát triển công nghệ phần mềm và môi trường kiểm tra phần mềm.
•
Ví dụ: chuẩn DO - 178C của tổ chức RTCA
• Catastrophic (mức thảm họa) Thất bại có thể gây nguy hiểm tính mạng cho rất nhiều người (thường là trong lĩnh vực hàng không)
•
• Hazardous (nguy hiểm) Tác động lớn đến sự an toàn, có thể gây nguy hiểm đến tính mạng của 1 số ít người
•
• Major: không làm giảm đáng kể sự an toàn, tuy nhiên có thể tăng lượng công việc phải làm, nhiều khi dẫn tới sự khó chịu.
•
Ví dụ: một sự thay đổi kế hoạch bay thường lệ .
• No Effect: Nếu xảy ra lỗi thì cũng không ảnh hưởng hoặc tác động đễn sự an toàn và vận hành của hệ thống cũng như khối lượng công việc.
•
2. Software Quality Management Processes (SQM)
• Quản lý chất lượng phần mềm là tập hợp các quy trình để đảm bảo rằng các sản phẩm phần mềm, dịch vụ, và vòng đời của quá trình triển khai sản phẩm đạt được sự hài lòng của các bên liên quan.
•
• SQM định nghĩa các quy trình, chủ sở hữu quá trình, các yêu cầu đối với các quá trình, các phép đo của các quá trình và kết quả đầu ra của họ, và các kênh thông tin phản hồi trong suốt toàn bộ chu kỳ đời phần mềm .
•
SQM comprises four subcategories (4 loại)
• Software quality planning (SQP) Lập kế hoạch (xác định các tiêu chuẩn chất lượng sẽ được sử dụng, xác định mục tiêu chất lượng cụ thể
•
• Software quality assurance (SQA): Đảm bảo chất lượng phần mềm
•
• Software quality control (SQC): Kiểm soát chất lượng phần mềm
•
• Soft- ware process improvement (SPI): Cải tiến quy trình
•
2.1. Software quality planning (SQP) Lập kế hoạch
• Bao gồm việc xác định chất lượng tiêu chuẩn sẽ được sử dụng, xác định mục tiêu chất lượng cụ thể, và ước lượng tiến độ của các hoạt động phát triển phần mềm.
• Trong một số trường hợp, lập kế hoạch chất lượng phần mềm cũng bao gồm việc xác định các quy trình chất lượng phần mềm được sử dụng.
•
2.2. Software quality assurance (SQA): Đảm bảo chất lượng phần mềm
• Xác định và đánh giá sự phù hợp của các quy trình phần mềm.
• Đảm bảo các sản phẩm phần mềm có chất lượng phù hợp cho mục đích, dự định của họ.
•
2.3. Software quality control (SQC): Kiểm soát chất lượng phần mềm
• Xác định chất lượng phần mềm phải tuân thủ các tiêu chuẩn được thiết lập cho các dự án (bao gồm cả các yêu cầu, ràng buộc, thiết kế, hợp đồng, và các kế hoạch).
•
• SQC đánh giá trung gian sản phẩm cũng như các sản phẩm cuối cùng.
•
2.4. Software process improvement (SPI): Cải tiến quy trình
• Cải thiện chất lượng phần mềm bằng hoạt động khắc phục - phòng ngừa, tìm cách nâng cao hiệu quả quá trình
• Mặc dù SPI có thể được thực thi trong ba loại trước, tuy nhiên do yêu cầu cao của 1 số sản phẩm mà SPI được tổ chức thành một thể loại riêng biệt.
•
2.5. Verification & Validation
Verification & Validation (Xác minh và xác thực)
Mục đích:
• Giúp phát triển và xây dựng chất lượng vào hệ thống trong vòng đời của phần mềm.
• Cung cấp một đánh giá khách quan của sản phẩm và các quá trình trong suốt vòng đời.
•
• Các quy trình V&V xác định xem các sản phẩm phát triển có phù hợp với nhu cầu sử dụng.
• Verification: đảm bảo rằng các sản phẩm được xây dựng chính xác, theo nghĩa là những sản phẩm đầu ra của một hoạt động đáp ứng các yêu cầu kỹ thuật đặt ra.
•
• Validation: đảm bảo rằng các sản phẩm phải được xây dựng có nghĩa là, các sản phẩm đáp ứng đúng mục đích cụ thể của nó.
•
Cả hai quá trình xác minh và xác nhận quá trình bắt đầu từ sự phát triển và duy trì đến hết giai đoạn.
Cung cấp tính năng kiểm tra sản phẩm trong mối quan hệ với giai đoạn trước đó và ngay lập tức cập nhật các thông số kỹ thuật để được giải quyết
2.6. Reviews and Audits
Nhận xét và kiểm toán bao gồm việc
• Người quản lý sẽ đánh giá kết quả dự án thực tế so với kế hoạch
• Đánh giá, kiểm tra về mặt kỹ thuật của sản phẩm.
• Đảm bảo qui trình kiểm toán.
• Đảm bảo sản phẩm sau khi kiểm toán.
3.Practical Considerations
(Xem xét thực tế)
• 3.1. Software Quality Requirements (Yêu cầu chất lượng phần mềm)
•
• 3.2. Defect Characterization (Các điểm khiếm khuyết)
•
• 3.3. Software Quality Management Techniques (Kỹ thuật quản lý chất lượng phần mềm )
•
• 3.4. Software Quality Measurement (Đo lường chất lượng phần mềm)
•
3.1. Software Quality Requirements
(Yêu cầu chất lượng phần mềm)
• 3.1.1. Influence Factors (Các yếu tố ảnh hưởng)
•
• 3.1.2. Dependabilit (Độ đáng tin cậy)
•
• 3.1.3. Integrity Levels of Software (Mức toàn vẹn của phần mềm)
•
3.1.1. Influence Factors
Các yếu tố ảnh hưởng đến việc lập kế hoạch, quản lý, và lựa chọn các hoạt động quản lý chất lượng phần mềm, bao gồm:
• Môi trường vật lý của các hệ thống phần mềm
•
• Hệ thống và phần mềm chức năng và yêu cầu chất lượng của chúng
•
• Các thành phần thương mại hoặc tiêu chuẩn được sử dụng trong hệ thống
•
• Các tiêu chuẩn kỹ thuật phần mềm cụ thể được áp dụng
•
• Các phương pháp và các công cụ phần mềm được sử dụng để phát triển và bảo trì
•
• Ngân sách, nhân viên, tổ chức, kế hoạch, dự án, và lịch trình của tất cả các quá trình
•
• Những người sử dụng và có ý định sử dụng hệ thống
•
• Mức toàn vẹn của hệ thống
•
3.1.2.Dependability
• Độ đáng tin cậy bao gồm các đặc điểm như:
•
• +Tính sẵn sàng
•
• +An toàn
•
• +Bảo mật
•
• +Có lỗi hay không
•
• …
•
3.1.3. Integrity Levels of Software
• Xác định mức toàn vẹn là một phương pháp quản lý rủi ro.
•
• Mức toàn vẹn của phần mềm là một loạt các giá trị phức tạp đại diện cho các phần mềm như:
•
• mức độ rủi ro
•
• mức độ an toàn
•
• mức độ bảo mật
•
• hiệu suất mong muốn
•
• độ tin cậy
•
• …
•
(Các mức toàn vẹn phần mềm giao có thể thay đổi khi các phần mềm phát triển)
3.2. Defect Characterization
• Đánh giá chất lượng phần mềm là các kỹ thuật tìm các khiếm khuyết, và các lỗi.
•
• Theo phương pháp thiết kế mới và các ngôn ngữ phát triển, cùng với những tiến bộ trong phần mềm các khiếm khuyết mới xuất hiện.
•
• Khi theo dõi các khiếm khuyết, các kỹ sư phần mềm quan tâm đến không chỉ số lượng của các khiếm khuyết mà còn các loại.Thông tin một mình, không có một số phân loại, có thể không đủ để xác định nguyên nhân của các khiếm khuyết.
•
• Một số loại khiếm khuyết:
•
• Lỗi tính toán
• Lỗi do người sử dụng
• Các khiếm khuyết
• Lỗi trong mã nguồn
3.3. Software Quality Management Techniques
• Kỹ thuật quản lý chất lượng phần mềm có thể được phân loại theo nhiều cách, nhưng cách tiếp cận đơn giản là gồm hai loại: tĩnh và động.
•
• Kỹ thuật động liên quan đến việc thực hiện các phần mềm
•
• Kỹ thuật tĩnh liên quan đến việc phân tích tài liệu và mã nguồn, nhưng không thực hiện các phần mềm.
•
3.4. Software Quality Measurement
• Những kỹ thuật đo lường bao gồm:
•
• Thống kê
•
• Thử nghiệm thống kê
•
• Phân tích xu hướng
•
• Dự báo
•
4. Software Quality Tools
• Công cụ chất lượng phần mềm bao gồm các công cụ phân tích tĩnh và động.
•
• Công cụ phân tích tĩnh đầu vào mã nguồn, thực hiện phân tích cú pháp và ngữ nghĩa mà không thực hiện mã này, và kết quả hiện nay cho người dùng.
•
• Công cụ phân tích động sẽ thực hiện các chương trình và phân tích quá trình đó.