Tôi nhận được một email người gửi viết: “Cái gì là khác biệt giữa cách đo và độ đo và có bao nhiêu cách đo hay độ đo phần mềm?”

Đáp: Theo định nghĩa cách đo là một chuẩn hay một đơn vị đo chẳng hạn: Số các lỗi, số các dòng mã nguồn (SLOC). Độ đo là một chỉ báo được tính toán dựa trên hai hay nhiều cách đo. Chẳng hạn, số lỗi trên một nghìn dòng mã (KSLOC). Như bạn có thể thấy hai hay nhiều cách đo tạo nên một độ đo và hai hay nhiều độ đo cung cấp cho bạn thông tin. Chẳng hạn, 10 lỗi trên một nghìn dòng mã là tốt hơn 40 lỗi trên một nghìn dòng mã.

Có nhiều cách đo và độ đo, có lẽ có hàng trăm nhưng có vài cách đo thông dụng trong dự án phần mềm như kích cỡ, nỗ lực và chất lượng. Kích cỡ là khối lượng phần mềm mà dự án phát triển như số dòng mã nguồn (SLOC). Kích cỡ cũng có thể được đo bằng điểm chức năng hay số các chức năng. Dòng mã là đơn giản, dễ dùng nhưng từng dự án phải xác định rõ ràng cách đếm chúng một cách nhất quán. Chẳng hạn số trình biên dịch cho khi nó dịch một chương trình. Điểm chức năng là tốt hơn trong một số ứng dụng vì số này nhất quán qua các ngôn ngữ và dễ đếm kích cỡ của dự án vào pha sớm ngay cả trước khi viết mã.

Nỗ lực là khối lượng công việc mà một người được yêu cầu thực hiện một nhiệm vụ. Chẳng hạn, số người-giờ dành cho pha của phần mềm. Ví dụ, một dự án có một người làm việc trong năm ngày để hoàn thành một hoạt động thiết kế có nỗ lực là 40 người-giờ. Nếu nó có hai người làm việc năm ngày để hoàn thành hoạt động thiết kế thì nỗ lực sẽ là 80 người- giờ.

Chất lượng có vài định nghĩa, tuỳ thuộc vào kiểu dự án và tuỳ theo khách hàng hay người quản lí dự án. Một số người coi chất lượng là số các lỗi trong sản phẩm, càng nhiều lỗi thì chất lượng càng kém. Chẳng hạn số lỗi được tìm ra trong từng pha, hay số lỗi trong từng nghìn dòng mã. Những người khác định nghĩa chất lượng là việc dễ dùng sản phẩm thế nào, người dùng càng dễ dùng sản phẩm thì chất lượng càng tốt. Bởi vì từng người nhìn chất lượng một cách khác nhau, điều rất quan trọng là làm sáng tỏ định nghĩa này bằng việc làm tài liệu sớm trong kế hoạch dự án về điều bạn ngụ ý bởi chất lượng.

—-English version—-

Measure and metric

I received an email where the sender wrote: “What is the difference between a measure and a metric and how many software measure or metric are there?”

Answer: By definition a measure is a standard or unit of measurement for example: Number of defects, number of source lines of code (SLOC). A metric is a calculated indicator based on two or more measures. For example,  a number of defects per thousand lines of code (KSLOC). As you can see two or more measures make up a metric and two or more metrics provides you the information. For example, 10 defects per thousand lines of code is better than 40 defects per thousand lines of code.

There are many measures and metrics, probably hundred of them but there are few common measures in software project such as Size, Effort, and Quality. Size is the amount of software a project develops such as number of source lines of code (SLOC). Size can also be measured by Function points or number of functionality. Lines of code is simple, easy to use but each project must clearly defines how to count them consistently. For example the number compiler gives when it compiles a program. Function points are better in some applications because the number is more consistent across languages and it is easy to count the size of the project at the early phase even before coding.

Effort is the amount of work for one person required to perform a task. For example, the number of man-hours spent per phase of software. For example, a project has one person working five days to complete a design activity has an effort of 40 man-hours. If it has two people working five days to complete the design activity than the effort would be 80 man-hours.

Quality has several definitions, depends on the type of project and by the customers or the project manager. Some people consider quality is the number of defects in the product, the more defects the less quality. For example the number of defects found in each phase, or number of defects in each thousand line of code. Other people defines quality as how easy to use the product, the easy users can use the product the better quality. Because each people sees quality differently, it is very important to clarify the definition by document early in the project plan what do you mean by quality.