Một sinh viên hỏi: “Chất lượng phần mềm là gì? Bạn em bảo em chất lượng nghĩa là phần mềm không có lỗi nhưng thầy giáo của em nói chất lượng là đạt tới sự thoả mãn của khách hàng. Ai đúng?”

Đáp: Có nhiều định nghĩa về chất lượng phần mềm tuỳ the các cách nhìn khác nhau. Từ cách nhìn của khách hàng, chất lượng có thể được xác định là việc đáp ứng nhu cầu của họ và đạt tới thoả mãn của họ. Từ cách nhìn của người phát triển, chất lượng có thể được định nghĩa là phần mềm được thiết kế tốt thế nào và sản phẩm tuân thủ tốt thế nào theo thiết kế đó (Đáp ứng yêu cầu đặc tả chức năng). Từ cách nhìn của người quản lí dự án, chất lượng có thể được xác định là đáp ứng các mục đích của dự án như chi phí, lịch biểu và yêu cầu của khách hàng. Từ cách nhìn của người chủ công ti, chất lượng được dựa trên khách hàng sẵn lòng trả bao nhiêu tiền cho sản phẩm. Từ cách nhìn hàn lâm hay cách nhìn của các giáo sư, chất lượng có thể được xác định như qui trình hiệu quả tạo ra sản phẩm mà không có lỗi nào và cung cấp giá trị đo được cho những người tạo ra sản phẩm và người dùng nó. Tôi chắc là còn nhiều định nghĩa nữa.

Bởi vì có nhiều định nghĩa, mọi người đều đúng theo góc nhìn của họ. Nếu sản phẩm phần mềm đầy lỗi, thì không ai sẽ mua nó (góc nhìn của người chủ công ti). Nếu phần mềm không đáp ứng nhu cầu của người dùng hay không thực hiện tương ứng, thì khách hàng sẽ không hài lòng và có thể không muốn làm kinh doanh với công ti thêm nữa (cách nhìn của khách hàng). Nếu phần mềm mất quá lâu mới dựng xong, không đáp ứng lịch biểu, vượt quá ước lượng chi phí, với nhiều lỗi thì việc làm của người quản lí dự án có thể thành vấn đề nghiêm trọng (góc nhìn của người quản lí dự án). Nếu phần mềm không được thiết kế tốt, đầy vấn đề và không đáp ứng đặc tả thiết kế thì người phát triển sẽ phải chữa chúng, hay làm lại nó. Trong trường hợp đó họ có thể không có khả năng để giữ việc làm lâu (cách nhìn của người phát triển). Nếu phần mềm không được phát triển theo qui trình được xác định, đầy lỗi và không cung cấp giá trị đo được cho người dùng thì có thể chương trình đào tạo là không tốt (góc nhìn hàn lâm). Tuy nhiên, không lỗi chỉ là “ước muốn”, không thể có không lỗi được dù bạn kiểm thử bao nhiêu lần cho phần mềm. Không ai có thể đảm bảo rằng phần mềm không có lỗi.

—-English version—

Software quality

A student asked: “What is software quality? My friend told me that quality means software has zero defect but my teacher said quality is achieving customer’s satisfaction. Who is right?”

Answer: There are several definitions of software quality depending on different views. From the customers’ view, quality can be defined as meeting their needs and achieve their satisfaction. From the developer’s view, quality can be defined as how well the software is designed and how good the product conforms to that design (Meet functional specification requirements). From the project manager’s view, quality can be defined as meeting specific project goals such as costs, schedule, and customer’s requirements. From the company owner’s view, quality is based on how much customer is willing to pay for the product. From the academic view or professor’s view, quality can be defined as an effective process that creates a product without any defects and provides measurable value for those who produce it and those who use it. I am sure there are more definitions.

Because there are more definitions, everybody is right from their own view. If a software product is full of defects, then nobody will buy it (Company owner’s view). If a software do not meet users’ needs or not perform accordingly, then customers will be very unhappy and may not want to do business with the company anymore (Customers’ view). If a software takes too long to built, do not meet schedule, exceed cost estimates, with many defects then the project manager’s job may be in serious problem (Project manager’s view). If the software is not well designed, full of problems and do not meet design specification then developers will have to fix them, or do it again. In that case they may not be able to keep the jobs for long. (Developers’ view). If the software is not developed according to a defined process, full of defects and provide no measurable value to users then maybe the training program is not a good one (Academic ‘s view). However, zero defect is only a “wish”, it is impossible to have zero defect no matter how many times you test the software. No one can guarantee that the software has zero defect.