Có bất kỳ công việc nào trong việc áp dụng các biện pháp phức tạp Halstead để xác định chất lượng phần mềm không?


14

Năm 1977, Maurice Howard Halstead đã giới thiệu các biện pháp phức tạp của mình cho các hệ thống phần mềm , bao gồm các phép đo từ vựng chương trình, thời lượng chương trình, khối lượng, độ khó, nỗ lực và số lượng lỗi ước tính trong một mô-đun. Theo Wikipedia, khó khăn liên quan đến khó khăn trong việc hiểu chương trình khi đọc hoặc viết nó và nỗ lực có thể được dịch thành thời gian cần thiết để mã hóa một ứng dụng trong đó Thời gian = (Nỗ lực / 18) giây.

Một phép đo là vô ích trừ khi dữ liệu và tính toán liên quan đến một số khía cạnh của phát triển phần mềm. Tuy nhiên, tôi chưa tìm thấy bất kỳ công việc nào nói rằng độ khó của một giá trị nhất định hoặc cao hơn có xu hướng gia tăng đáng kể về mặt khiếm khuyết hoặc mối quan hệ giữa khó khăn và thời gian để đọc mã (độ khó của N mang lại trung bình M giờ sử dụng hiểu cơ sở mã) hoặc bất kỳ phân tích nào về khả năng tính toán Thời gian sau khi thực tế có ích trong việc xác định chất lượng (đặc biệt là do thời gian viết nên đã được ghi lại như một phép đo). Tôi đặc biệt quan tâm đến ước tính lỗi của Halstead (không được đề cập trên Wikipedia) - số lượng lỗi trong ứng dụng có thể được ước tính theo Tập / 3000 hoặc Nỗ lực ^ (2/3) / 3000.

Tôi đang tìm kiếm hai điều:

  • Có ai đã sử dụng các biện pháp phức tạp phần mềm của Halstead trong một ứng dụng trong thế giới thực để đánh giá chất lượng phần mềm chưa? Nếu vậy, làm thế nào bạn áp dụng chúng và chúng hóa ra là một phép đo hữu ích, hợp lệ và / hoặc đáng tin cậy?
  • Có nghiên cứu học thuật nào dưới dạng khảo sát, phân tích hoặc nghiên cứu trường hợp thảo luận về tính hợp lệ (hoặc tính vô hiệu) của các biện pháp phức tạp Halstead khi áp dụng cho chất lượng phần mềm không?
  • Có nghiên cứu học thuật nào dưới dạng khảo sát, phân tích hoặc nghiên cứu trường hợp chứng minh việc sử dụng Mã nguồn (SLOC) để tính toán một số thứ tương tự như các số liệu Halstead về Khối lượng, Độ khó, Nỗ lực, Thời gian và Lỗi không? Tôi nghi ngờ rằng Khối lượng có thể chỉ tương ứng với số SLOC và Độ khó có thể tương ứng với độ phức tạp chu kỳ (và có thể các biện pháp khác). Tôi cũng nhận thức rõ rằng việc đo lường nỗ lực, năng suất hoặc thời gian trong SLOC có khả năng gây hiểu nhầm.

Bạn sẽ gặp một số khó khăn trong việc tìm kiếm kết quả trong 15 năm qua, vì công việc đo lường của Halstead đã được thực hiện giống như 30-40 năm trước và mối tương quan mạnh mẽ với SLOC đã được phát hiện gần như ngay lập tức. (Đây là từ trí nhớ, từ một cuộc nói chuyện của một ứng cử viên tiến sĩ mới tại UT Austin ca. 1977.)
John R. Strohm

Cảm ơn vì điều đó. Tôi sẽ cập nhật câu hỏi và tập trung lại nỗ lực tìm kiếm của tôi con trai giấy tờ cũ.
Thomas Owens

Câu trả lời:


5

Microsoft Research đã thực hiện một số công việc trong lĩnh vực này. Kiểm tra trang này: http://research.microsoft.com/en-us/people/nachin/ . Mặc dù không đặc biệt dựa trên Halstead, Nachi và nhóm của anh ta đã thực hiện một số điều tra bằng cách sử dụng Halstead, độ phức tạp theo chu kỳ, khuấy mã và các biện pháp khác để đánh giá rủi ro và sự mong manh tương đối để thực hiện thay đổi trong các lĩnh vực mã. Ngoài ra còn có một bài viết thú vị về hiệu quả tổ chức cũng đóng một vai trò lớn nhưng đó không phải là chủ đề. :)


Tôi sẽ phải đọc qua một vài trong số đó. Chắc chắn là một cái gì đó tôi quan tâm, nhưng tôi (ít nhất là ngay bây giờ), đặc biệt quan tâm đến Halstead, vì vậy tôi sẽ tập trung ở đó. Tôi đã đánh dấu trang web để tôi có thể đọc nó khi tôi có thêm thời gian, nhưng đây là +1 cho thời điểm hiện tại.
Thomas Owens

Độ phức tạp chu kỳ của McCabe đã được chứng minh, trên mã thực, có mối tương quan rất mạnh với SLOC thô, đến mức không có giá trị gia tăng nào trong việc tính toán nó.
John R. Strohm

0

Có khá nhiều nghiên cứu như vậy. Google là bạn của bạn.

Số liệu của Halstead không được ủng hộ khi chứng minh rằng tất cả chúng đều có mối tương quan chặt chẽ với SLOC (dòng mã nguồn). Tại thời điểm đó, việc đo SLOC trở nên dễ dàng hơn và được thực hiện với nó.

Đây là kết quả từ Google Sách .


1
Tôi đã làm Google từ trước khi tôi hỏi câu hỏi này và chưa tìm thấy bất kỳ bài báo nào được công bố hoặc các nguồn có uy tín khác. Ngoài ra, tôi không thấy làm thế nào một số liệu liên quan đến SLOC có thể kém. SLOC / thời gian là thước đo năng suất kém, nhưng các số liệu dựa trên SLOC khác thường được coi là hợp lệ, một ví dụ là lỗi / SLOC.
Thomas Owens

1
@Thomas: Không phải số liệu của Halstead là "liên quan" đến SLOC, mà là chúng có mối tương quan chặt chẽ với nhau. Thống kê 102. Nói rằng Y và X có mối tương quan chặt chẽ có nghĩa là tỷ lệ Y / X về cơ bản là không đổi cho tất cả các bộ dữ liệu. Khi đó là trường hợp, không có điểm nào để đo Y nếu việc đo X dễ dàng hơn, bởi vì Y không thực sự nói với bạn bất cứ điều gì bạn chưa biết từ X.
John R. Strohm

Điều đó có ý nghĩa. Số liệu của Halstead dựa trên số lượng toán tử và toán hạng riêng biệt và tổng. Điều thông thường là một chương trình dài hơn sẽ có nhiều toán tử / toán hạng hơn và nhiều khả năng sẽ có nhiều toán tử / toán hạng khác biệt hơn. Các số liệu về Khối lượng và Độ khó có thể được lấy bằng SLOC thay vì toán tử / toán hạng. Tuy nhiên, điều đó không giải quyết được tính hợp lệ, ứng dụng và ý nghĩa (hoặc thiếu ý nghĩa) của các số liệu Nỗ lực, Thời gian và Lỗi. Ngay cả khi được tính toán với SLOC thay vì toán tử / toán hạng, các số liệu này có nói gì về hệ thống không?
Thomas Owens

SLOC dễ đếm hơn, và có lẽ hữu ích hơn. Ước tính SLOC được sử dụng bởi một số kỹ thuật ước tính chi phí, được theo dõi trong PSP và TSP và có thể được sử dụng trong các số liệu khác như mật độ khuyết tật. Điều đó, với tôi, nói rằng đếm SLOC có thể tốt hơn đếm toán tử / toán hạng. Thứ hai, và chưa được trả lời cho đến nay, là tính hợp lệ của các số liệu về Nỗ lực, Thời gian và Lỗi, bất kể các phép đo nào được sử dụng để tính toán chúng. Tôi đồng ý rằng tính toán chúng với SLOC có thể tốt hơn, nhưng ngay cả khi tôi đã làm, liệu chúng có ý nghĩa gì không?
Thomas Owens

@ThomasOwens: Có lẽ là không. Nếu Nỗ lực, Thời gian và Lỗi đều có mối tương quan mạnh với SLOC, thì nó sẽ cho bạn biết rằng tất cả các chương trình có quy mô nhất định đều mất cùng thời gian và công sức và có cùng số lỗi. Hai cái đầu tiên là những gì ước tính dựa trên SLOC (ví dụ COCOMO) dựa trên, và giống như nói nước ướt. Thứ ba không thực sự giúp bạn.
John R. Strohm

0

Khối lượng Halstead tương quan với SLOC rất thú vị nhưng hạn chế. Thống kê cơ bản: tương quan tuyến tính không phải là bắc cầu. X tương quan với Y, Y tương quan với Z KHÔNG Ý NGH thatA rằng X tương quan với Z.


Khi X và Y chỉ tương quan với nhau và Y và Z chỉ tương quan với nhau, vâng, X và Z không nhất thiết phải tương quan với nhau, vì mức độ nhiễu tương đối cao trong hai tương quan đầu tiên. Khi X và Y có mối tương quan mạnh, và Y và Z có mối tương quan mạnh, sẽ có rất ít tiếng ồn liên quan và nó trở nên có khả năng cao trong bất kỳ trường hợp cụ thể nào mà X và Z sẽ được tìm thấy có mối tương quan.
John R. Strohm
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.