Có một mối tương quan giữa sự phức tạp và khả năng tiếp cận?


18

Gần đây tôi đã nghiên cứu độ phức tạp chu kỳ (McCabe) và khả năng tiếp cận của phần mềm tại uni gần đây. Hôm nay giảng viên của tôi nói rằng không có mối tương quan giữa hai số liệu, nhưng đây có thực sự là trường hợp không?

Tôi nghĩ chắc chắn sẽ có một số mối tương quan, vì các chương trình ít phức tạp hơn (từ số ít chúng tôi đã xem) dường như có kết quả 'tốt hơn' về khả năng tiếp cận.

Có ai biết bất kỳ nỗ lực nào để xem xét hai số liệu cùng nhau không, và nếu không, đâu là nơi tốt để tìm dữ liệu về cả độ phức tạp và khả năng tiếp cận cho một số lượng lớn chương trình (ish)?

Câu trả lời:


2

Gần đây tôi đã nghiên cứu độ phức tạp chu kỳ (McCabe) và khả năng tiếp cận của phần mềm tại uni gần đây. Hôm nay giảng viên của tôi nói rằng không có mối tương quan giữa hai số liệu, nhưng đây có thực sự là trường hợp không?

Thật ra cả có và không.

Trước hết, chỉ để nhắc nhở bạn, số liệu McCabe về độ phức tạp chu kỳ được tính trên biểu đồ luồng điều khiển trong đó bạn trừu tượng mã nguồn của mình thành biểu đồ có hướng với các khối hoặc câu lệnh cơ bản là các nút và chuyển tiếp giữa chúng (theo dòng điều khiển thông thường đi xuống hoặc trong trường hợp nhảy và vòng lặp có điều kiện) là các cạnh. Độ phức tạp chu kỳ ở đây có thể đại khái (nếu bạn coi toàn bộ chương trình của mình không có mã bị cô lập, tức là biểu đồ của bạn được kết nối) được xem là sự khác biệt giữa số cạnh và số nút.

CC = E - N

Vấn đề về khả năng tiếp cận là một vấn đề phổ biến trong lý thuyết đồ thị có thể được thể hiện theo cách: đưa ra hai nút A và B, là nút B có thể tiếp cận từ nút A, tức là người ta có thể tiếp cận B bắt đầu từ A và theo các cạnh của biểu đồ một cách chính xác phương hướng? Vì vậy, một lần nữa, số liệu có thể áp dụng cho biểu đồ luồng điều khiển và không phải trên mã.

Có một số cách để áp dụng vấn đề này vào biểu đồ luồng điều khiển . Một cách được gọi là "phân tích khả năng tiếp cận biến", nghĩa là đối với biến đã cho, phân tích xác định xem giá trị của nó có còn ở điểm chương trình nhất định hay không (kỹ thuật này còn được gọi là phân tích phần mềm). Tôi cũng chỉ tìm thấy một số bài viết sử dụng thuật ngữ này (và nói chung là vấn đề khả năng tiếp cận) cho các ứng dụng đa luồng .

Về cơ bản, người ta có thể thấy một số loại tương quan giữa CC và khả năng tiếp cận: với sự gia tăng của CC, tỷ lệ các cạnh trên các nút cũng tăng và thậm chí trong trường hợp đồ thị có hướng trong đó hướng của cạnh cũng rất quan trọng, người ta có thể suy đoán rằng việc tăng số lượng các cạnh cuối cùng dẫn đến sự gia tăng các đường dẫn có sẵn trong biểu đồ và do đó để tăng khả năng tiếp cận thông qua các kết nối trực tiếp hoặc gián tiếp giữa các nút. Vì vậy, câu trả lời là Có ở đây.

Mặt khác, khái niệm khả năng tiếp cận trong môi trường đa luồng đòi hỏi phải phân tích cái gọi là siêu máy tính - và điều này không quá tầm thường. Tăng CC (được gọi là " độ phức tạp đồng bộ hóa ") có thể dẫn đến xác suất bế tắc trong phần mềm cao hơn và do đó làm giảm khả năng tiếp cận của các nút / đoạn mã nhất định. Do đó "Không" là một câu trả lời hợp lệ ở đây .


1

Tôi không quen với khả năng tiếp cận, nhưng nếu đó là thước đo các đường dẫn mã không bao giờ được thực thi, thì độ phức tạp theo chu kỳ sẽ là một giới hạn trên của điều đó.


0

Có thể có một số thống kê về điều này nhưng tôi sẽ nói rằng không có mối tương quan nào vì người ta không phụ thuộc vào người khác và cũng có sự lựa chọn trong thiết kế hệ thống phần mềm để bạn có thể loại bỏ điều này.

Về mặt dữ liệu trong thế giới thực, có thể có mối tương quan mạnh mẽ nhưng đó có thể là do các hệ thống phần mềm được thiết kế tồi không loại bỏ mối tương quan này. Nó có thể là một mối tương quan ngẫu nhiên vì thiếu kiến ​​thức về lý thuyết đồ thị.


1
Một cái tùy thuộc vào cái khác là nhân quả, không tương quan.
JeffO
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.