Liệu nó có ý nghĩa để tính toán độ phức tạp / dòng của tỷ lệ mã?


8

Nhìn chung, chỉ số duy trì phụ thuộc vào nhiều yếu tố. Ví dụ, trong Visual Studio, nó dựa vào độ phức tạp chu kỳ, độ sâu kế thừa, khớp nối lớp và các dòng mã; bốn giá trị đó phải càng thấp càng tốt.

Đồng thời, tôi chưa bao giờ thấy, trong các công cụ đo lường mã, cũng như trong sách, sự so sánh giữa độ phức tạp chu kỳ (CC) và dòng mã (LC).

Liệu nó có ý nghĩa để tính tỷ lệ như vậy? Nó cung cấp thông tin gì về mã? Nói cách khác, tốt hơn là giảm nhiều CC hơn LC để có tỷ lệ thấp hơn?

Điều tôi nhận thấy là đối với các dự án nhỏ, tỷ lệ CC / LC thấp (và thấp hơn). Nói cách khác, LC cao và CC thấp. Trong các dự án lớn, CC / LC trong hầu hết các trường hợp lớn hơn. Tại sao?


13
Chỉ số chất lượng mã hợp lệ duy nhất là WTFs / phút;)

1
Dự đoán cuối cùng của bạn (các dự án nhỏ x lớn) có thể phụ thuộc vào nền tảng và số lượng mã soạn sẵn mà người ta phải viết để có được một dự án tối thiểu đang chạy. Ví dụ, sử dụng API Win32 thô, số lượng mẫu soạn sẵn cho mã thực là cao đối với các dự án nhỏ. Điều này làm tăng số lượng dòng mã. Bạn có thể chọn một vài dự án nguồn mở ngẫu nhiên và thực hiện một biểu đồ phân tán CC x LC. Có lẽ bạn có thể tìm thấy một cái gì đó hữu ích từ nó.
Vitor Py

Tỷ lệ bạn đang đề xuất là IMO thú vị nhưng tôi muốn đề xuất thay thế các dòng mã (LOC) bằng Điểm chức năng (FP) hoặc Điểm sử dụng (UCP) và xem những gì bạn nhận được.
M.Sameer

Câu trả lời:


4

Từ http://en.wikipedia.org/wiki/Cyclomatic_complexity

Les Hatton đã tuyên bố gần đây (Keynote tại TAIC-PHẦN 2008, Windsor, UK, tháng 9 năm 2008) rằng McCabe Cyclomatic Complexity có khả năng dự đoán tương tự như các dòng mã. [11]

Tỷ lệ có khả năng dự đoán tương tự như được sử dụng riêng.


1
Tôi không đồng ý. Độ phức tạp theo chu kỳ (CC) có mối tương quan rõ ràng với các dòng mã logic (LLOC). Dự án của bạn càng lớn thì độ phức tạp của nó càng cao. Điều này là hiển nhiên. Nhưng CC / LLOC không có mối tương quan với quy mô của một dự án (tôi đã thấy các ví dụ cụ thể). Tỷ lệ này phụ thuộc vào ba điều: ngôn ngữ và khung được sử dụng, độ phức tạp của chức năng dự án và kiểu mã. Nếu hai yếu tố đầu tiên không thể thay đổi dễ dàng, thì yếu tố thứ ba có thể là một dấu hiệu rõ ràng về chất lượng mã.
Alexandre Butynski

6

Có một số liệu về độ phức tạp chu kỳ trên mỗi báo cáo nguồn - nó được gọi là mật độ phức tạp chu kỳ . Số liệu này có thể được sử dụng để ước tính thời gian bảo trì và nỗ lực cần thiết cho các dự án phần mềm.


3

Như đã lưu ý trong một trả lời trước, tuyên bố này trong câu trả lời được chấp nhận rõ ràng là không chính xác.

Tỷ lệ có khả năng dự đoán tương tự như được sử dụng riêng.

Mật độ CC đã được tìm thấy có ý nghĩa bởi các nhà nghiên cứu khác nhau, mặc dù nó dường như không được phổ biến đáng kể trong các học viên. Có bằng chứng từ hai học giả nổi tiếng trong lĩnh vực số liệu phần mềm rằng tỷ lệ (mật độ phức tạp chu kỳ = CC / KLOC) là một yếu tố dự báo năng suất bảo trì tốt hơn nhiều so với CC hoặc KLOC.

GK Gill và CF Kemerer, "Mật độ phức tạp chu kỳ và năng suất bảo trì phần mềm," trong Giao dịch của IEEE về Kỹ thuật phần mềm, tập. 17, không. 12, trang 1284-1288, tháng 12 năm 1991. đổi: 10.1109 / 32.106988

Có nhiều người khác đã xây dựng công trình này để tinh chỉnh các số liệu dựa trên mật độ CC. Hai ví dụ:

  1. T. Andersson, K. Enholm và A. Törn. Đo độ dài độc lập của độ phức tạp phần mềm. Trong M. Ross, CA Brebbia, C. Staples và J. Stapleton (chủ biên) Hội nghị quốc tế lần thứ hai về Quản lý chất lượng phần mềm, Tập 1, Quản lý hệ thống chất lượng, 1994.

  2. JP Găngal, Pradeep Bhatia và Harish Găngal. 2009. Đánh giá năng suất bảo trì phần mềm bằng logic mờ. SIGSOFT Softw. Tiếng Anh Ghi chú 34, 5 (tháng 10 năm 2009), 1-4. DOI = http://dx.doi.org/10.1145/1598732.1598739


Và nó nên cao, thấp, trong một phạm vi cụ thể, hoặc một số ý tưởng mơ hồ về "hợp lý" cho trường hợp tốt nhất, theo đó?
Ded repeatator

Bài báo nói rằng trong các mô-đun cụ thể của các hệ thống được điều tra, các giá trị nằm trong khoảng từ 0,10 đến 0,12. Tôi đã quan sát thấy trong các giá trị ứng dụng web sản xuất khá phức tạp, cầu xin tái cấu trúc trong khoảng từ 0,18-0,20. Tôi nghi ngờ rằng mọi thứ xung quanh 0,20 có thể quá phức tạp, trong khi các giá trị gần 0,10 chỉ ra mật độ phức tạp đủ thấp - tuy nhiên, cần nhiều dữ liệu hơn để có kết quả an toàn hơn.
Nikos Houssos

1

Xin lỗi nhưng tôi không đồng ý với tuyên bố này:

Tỷ lệ có khả năng dự đoán tương tự như được sử dụng riêng.

Một tỷ lệ rõ ràng không giống như một số liệu cá nhân. Dựa trên dữ liệu thực nghiệm, Hatton tuyên bố rằng CC tỷ lệ thuận với XLOC với tỷ lệ không đổi khoảng 0,25 (xem slide 17) cho tập dữ liệu cụ thể của anh ấy. Do đó, dù XLOC của bạn là 60 hay 400, tỷ lệ CC: XLOC của bạn sẽ vào khoảng 0,25 (bỏ qua độ lệch thống kê ở số cao hơn). Vì vậy, tỷ lệ là không dự đoán bất cứ điều gì.


chắc chắn bạn có nhiều khả năng bị sai lệch thống kê với số lượng nhỏ
jk.
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.