COQ (Cost of quality) áp dụng cho chất lượng phần mềm như thế nào?

Ở bài viết trước (Cost of Quality - Chi phí cho chất lượng sản phẩm là gì?), các bạn đã có hiểu biết cơ bản về COQ đối với mọi loại sản phẩm nói chung. Khi đi vào từng lĩnh vực cụ thể, sẽ có những phát sinh chi phí đặc trưng. Lĩnh vực xây dựng dân dụng và lĩnh vực phần mềm có sự khác biệt khi lập dự toán chi phí dự án. Trong bài viết này chúng tôi xin tổng hợp các thông tin về các loại chi phí như vậy phát sinh trong suốt vòng đời phát triển, triển khai và vận hành các hệ thống phần mềm. Bài viết được trích lược từ nguồn viblo.

Một số câu hỏi bạn nên cân nhắc khi bắt đầu:

  • Phạm vi mong đợi của chất lượng chức năng (functional) và phi chức năng (non-functional) là như thế nào?
  • Các quy trình và báo cáo được nhằm mục đích theo dõi và xem xét là gì?
  • Quá trình thông báo lỗi khi bàn giao sản phẩm và hậu quả của nó sẽ xử lý như thế nào?
  • Rà soát, cân nhắc lại về chi phí kế hoạch và chi phí thực tế, các cân nhắc về cải tiến quy trình trong làm việc.
  • Các bên liên quan tới việc đánh giá chi phí này sẽ bao gồm những ai.


Trong kỹ thuật hệ thống và kỹ thuật yêu cầu, một yêu cầu phi chức năng (non-functional requirement) là một yêu cầu xác định các tiêu chí có thể được sử dụng để đánh giá hoạt động của một hệ thống, thay vì các hành vi cụ thể. Chúng tương phản với các yêu cầu chức năng (functional requirements) xác định hành vi hoặc chức năng cụ thể.

Chất lượng của một sản phẩm là gì?

Khi chúng ta đi mua sắm, cho dù là già trẻ, lớn bé, gái trai đều mong muốn có được sản phẩm tốt nhất không chỉ đáp ứng nhu cầu cốt lõi của chúng ta mà còn hiệu quả, tiết kiệm chi phí, và dễ sử dụng. Nói cách khác là muốn mọi thứ tốt nhất.

Kỳ vọng về chất lượng của sản phẩm phần mềm cũng vậy, không chỉ phần mềm có phục vụ "cái gì" hay không mà còn quan trọng nó phục vụ "như thế nào".

Thực tế khi bạn đặt một Homestay hoặc Khách sạn bằng trang Web với miêu tả thơ mộng và nên thơ với mức giá hấp dẫn, nhưng trải nghiệm của bạn về nó thì rất tồi tệ. Điều đó dẫn tới bạn sẽ không có niềm tin vào đặt phòng online nữa hoặc ít nhất sẽ không phải là khách sạn đó nữa.

Chất lượng liên quan đến hiệu suất của chức năng (functional) cũng như phi chức năng (non-functional).

Giống như mua iphone chính hãng với iphone hàng dựng vậy. Một bên mới 100% đầy đủ chức năng, còn seal, nhưng giá chính hãng của Apple. Một bên là cũng là mới, chính hãng nhưng hàng đã bị lỗi và thay thế, chỉnh sửa quá nhiều khi ở trên kệ hàng.

Vì vậy mặc dù có thể sản phẩm của bạn đáp ứng được yêu cầu của khách hàng, nhưng về cốt lõi bên trong của nó lại không thể đáp ứng kỳ vọng (như ví dụ hàng dựng ở trên).

Chất lượng đề cập đến thiết kế bên trong của sản phẩm phần mềm, độ tin cậy và khả năng vận hành của nó.

Chất lượng chức năng và phi chức năng

Bao gồm:

  1. Fitness for Purpose: Phần mềm thực hiện tất cả các tác vụ như được chỉ định trong tài liệu mô tả chức năng - Software Requirement Specification.
  2. Infrastructure Support: Phần mềm hỗ trợ môi trường có thể hoạt động và có thể mở rộng. Ví dụ: Trang web hoạt động ổn định trên tất cả trình duyệt hiện có hay không.
  3. Cost: Các chi phí liên quan đến việc phát triển và cung cấp phần mềm nằm trong ngân sách.
  4. Process: Quy trình phát triển và xem xét được thiết lập theo các tiêu chuẩn cụ thể.
  5. Management: Hệ thống xem xét và giám sát có tất cả các điểm để đánh giá và đảm bảo chất lượng Sản phẩm.
  6. Reporting: Báo cáo, tài liệu kịp thời, thông tin cụ thể và có thể hành động được.
  7. Functional Suitability / Appropriateness: Tính phù hợp, chính xác và tuân thủ.
  8. Performance Efficiency: Thời gian phản hồi, tuân thủ các quy tắc sử dụng tài nguyên như thế nào.
  9. Compatibility (Inter-Operability): Cùng tồn tại, khả năng thay thế, khả năng tương tác. Ví dụ: Trang web có thể sử dụng được từ điện thoại di động / iPad không?
  10. Usability: Dễ sử dụng, có sẵn trợ giúp hay không. Ví dụ: Trang web có dễ điều hướng và sử dụng không?
  11. Reliability: Khả năng chịu lỗi, tính khả dụng, khả năng phục hồi. Ví dụ: Ứng dụng có hiển thị các vé đặt chỗ khi có sự cố tắt nguồn thiết bị trong khi in vé không?
  12. Security: Tính bảo mật, tính toàn vẹn, tính xác thực. Ví dụ: Dữ liệu cá nhân được chia sẻ trên trang Web có an toàn không?
  13. Maintainability: Khả năng tái sử dụng của chức năng, dễ thay đổi, dễ sao chép, khả năng kiểm tra, tính ổn định. Ví dụ: Làm thế nào dễ dàng để cải thiện trang Web với các tính năng mới thêm vào?
  14. Portability: Dễ cài đặt, di động, thích ứng, tuân thủ. Ví dụ: Trang Web sẽ hoạt động theo cách tương tự nếu hệ điều hành được thay đổi / cập nhật hay không?
     

Bài viết này đã phần nào giúp chúng ta hiểu được thế nào là chất lượng của một sản phẩm phần mềm. Còn rất nhiều yếu tố khác quyết định đến chất lượng phần mềm, tuy nhiên không nằm trong khuôn khổ bài viết này. Chúng tôi sẽ giới thiệu thêm các yếu tố ngoài khu vực chuyên môn có thể tác động đến chất lượng trong ngắn hạn hoặc dài hạn.