6. Kết quả nghiên cứu, đóng góp khoa học của luận án
1.3.1.1. đo Halstead
Lý thuyết Halstead [26] về độ đo phần mềm có thể coi là lý thuyết tốt nhất để đánh giá về độ phức tạp của phần mềm. Lý thuyết này dựa trên khái niệm về "toán tử (operator)" và "toán hạng (operand)", do đó độ đo này sẽ lệ thuộc vào ngôn ngữ lập trình. Halstead sử dụng các mô tả sau cho ngôn ngữ lập trình C:
Toán tử: bao gồm toán tử phép tính số học (’+’), toán tử so sánh(’<’), toán tử gán (’+=’), toán tử dịch bit (’>>’), toán tử logic (’&&’), toán tử từ khóa điều khiển (’while’), toán tử khai báo kiểu (’double’), lời gọi hàm, tham chiếu phần tử của tập hợp/bản ghi/mảng, vv...
Toán hạng: bao gồm tên biến, tên hằng, nhãn, tên hàm, v.v..
Bên cạnh đó, Halstead sử dụng các kí hiệu sau khi thực hiện các phép tính toán thông số của chương trình:
: số lượng toán tử khác nhau xuất hiện trong chương trình. : số lượng toán hạng khác nhau xuất hiện trong chương trình.
: tổng số lượng toán tử trong chương trình (một toán tử có thể xuất hiện nhiều lần).
: tổng số lượng toán hạng trong chương trình (một toán hạng có thể xuất hiện nhiều lần).
Sau khi thu thập từ thực tế các thông số trên, Halstead cung cấp các công thức giúp ước lượng được các thông số dẫn xuất sau:
1. : độ dài chương trình. "Độ dài Halstead (Halstead Program Length)" của chương trình mô tả kích thước của một chương trình trừu tượng thu được bằng cách chỉ giữ lại các toán tử và toán hạng và loại bỏ tất cả các thành tố khác. được ước lượng bởi công thức:
(1.9)
2. : kích thước chương trình. "Kích thước Halstead (Halstead Program Volume)" của chương trình ước lượng số bit cần dùng để lưu trữ chương trình trừu tượng độ dài nếu các toán tử và toán hạng được mã hóa nhị phân. được ước lượng bởi công thức:
(1.10) 3. : mức độ chương trình. "Mức độ Halstead (Halstead Program Level)" của
chương trình mô tả tỉ lệ giữa kích thước chương trình hiện tại và chương trình cài đặt "nhỏ gọn nhất" của cùng thuật toán. Một cài đặt dài sẽ có mức độ thấp hơn một cài đặt ngắn. được ước lượng bởi công thức:
12
(1.11)
4. : độ khó chương trình. "Độ khó Halstead (Halstead Program Difficulty)" của chương trình là nghịch đảo của mức độ chương trình: cài đặt dài hơn sẽ có độ khó lớn hơn. Độ khó tăng lên khi số lượng toán tử khác nhau tăng hoặc tỉ lệ xuất hiện trung bình của toán hạng tăng. được ước lượng bởi công thức:
(1.12)
5. : sức gia công chương trình. "Sức gia công Halstead (Halstead Program Effort)" của chương trình tỉ lệ thuận với độ khó và kích thước chương trình:
(1.13)
6. : độ thông minh chương trình. "Độ thông minh nội dung Halstead (Halstead Intelligent Content)" của chương trình mô tả sự độc lập của thuật toán với ngôn ngữ lập trình và được ước lượng bởi công thức:
(1.14)
Từ đó có hai công thức Halstead1 và Halstead2 ước tính số lượng lỗi của chương trình:
̂
(1.15)
̂
(1.16)