CHƢƠNG 3 KỸ THUẬT ĐÁNH GIÁ CHẤT LƢỢNG PHẦNMỀM
3.2 Khoa học phầnmềm của HALSTEAD
Lý thuyết của Halstead được suy ra từ một giả thuyết nền tảng “bộ óc con người tuân theo một tập hợp chặt chẽ các quy tắc hơn là nó từng biết về…”. Khoa học phần mềm dùng một tập các cách đo nguyên thuỷ có thể suy ra sau khi mã được sinh ra hay được ước lượng một khi thiết kế đã hoàn thành.
Cách đo của Halstead:
n1 : số các toán tử phân biệt xuất hiện trong chương trình n2 : số các toán hạng phân biệt xuất hiện trong chương trình N1 : tổng số lần xuất hiện toán tử
Để minh hoạ cho cách đo này bạn hãy tham khảo thí dụ về chương trình SORT trong hình dưới.
Halstead đã dùng cách đo nguyên thuỷ để xây dựng các biểu thức về - Chiều dài toàn bộ chương trình
- Khối lượng tối thiểu tiềm năng cho một thuật toán, khối lượng thực tế (số bit cần để xác định chương trình)
- Mức chương trình ( đo độ phức tạp của chương trình)
- Mức ngôn ngữ (hằng số đối với một ngôn ngữ đã cho) và các tính năng khác như công sức phát triển, thời gian phát triển, thậm chí cả số lỗi trong phần mềm
Công thức tính chiều dài N:
N = n1log2n1 + n2log2n2 Công thức tính khối lượng chương trình:
V = Nlog2(n1 + n2)
Lưu ý: V sẽ thay đổi theo ngôn ngữ lập trình và khối lượng thông tin biểu thị cần để xác định một chương trình. Với modul SORT, khối lượng cho bản FORTRAN là 204, khối lượng cho một bản hợp ngữ tương đương sẽ là 328 do phải mất nhiều nỗ lực hơn để xây dựng chương trình trong hợp ngữ.
Về mặt lý thuyết, một thuật toán cụ thể phải tồn tại một khối lượng tối thiểu nhất định. Halstead định nghĩa tỷ số khối lượng L là tỷ số khối lượng của dạng gọn nhất so với khối lượng thực tại của một chương trình. Trong thực tế, L bao giờ cũng bé hơn 1.
Dưới dạng cách đo nguyên thuỷ tỷ số khối lượng có thể được biểu diễn như sau:
L= 2 2 1 2 N n n
Halstead đề nghị rằng, mỗi ngôn ngữ có thể được phân loại theo mức ngôn ngữ l, là hằng số đối với một ngôn ngữ đã cho, nhưng công trình khác lại chỉ ra rằng mức ngôn ngữ lại là một hàm của cả ngôn ngữ lẫn người lập trình. Các giá trị mức ngôn ngữ sau đây đã được suy ra theo kinh nghiệm cho các ngôn ngữ chung:
Ngôn ngữ Trung bình / l Tiếng Anh 2,16
PL/1 1,53 ALGOL/68 2,12 FORTRAN 1,14 Hợp ngữ 0,88
Công trình của Halstead tuân theo kiểm chứng thực nghiệm, đã có một khối lượng lớn các nghiên cứu đã được tiến hành để điều tra khoa học phần mềm.