Độ phức tạp của một ứng dụng web


8

Tôi hiện đang viết Luận văn thạc sĩ về khả năng bảo trì của ứng dụng web. Tôi tìm thấy một số phương pháp như "Chỉ số duy trì" của Coleman et.al. hoặc "Chỉ số bảo trì phần mềm" của Muthanna et.al. Đối với cả hai người ta cần tính toán độ phức tạp chu kỳ. Vì vậy, câu hỏi của tôi là:

Có thể đo độ phức tạp chu kỳ của một ứng dụng web không?

Theo tôi có ba phần cho một ứng dụng web:

  1. Mã máy chủ (PHP, C #, Python, Perl, v.v.)
  2. Mã khách hàng (JavaScript)
  3. HTML (liên kết và biểu mẫu dưới dạng toán tử, tham số GET và trường biểu mẫu dưới dạng toán hạng!?)

Bạn nghĩ sao? Có một quan điểm khác về sự phức tạp của ứng dụng web? Tôi đã bỏ lỡ một cái gì đó?


1
CSS. JSON hoặc XML (để liên lạc AJAX giữa máy khách và máy chủ)
James McLeod

6
Điều gì về truy cập dữ liệu và cấu trúc cơ sở dữ liệu và mã (thủ tục được lưu trữ)?
Oded

@James McLeod Vậy trong CSS, toán tử sẽ là gì và toán hạng sẽ là gì? JSON và XML có thể là toán hạng cho các hàm máy khách và máy chủ, hoặc bạn nghĩ gì?
Dominik G

Có đối với CSS, không phải JSON / XML được JavaScript tạo động hay không? Làm thế nào mà được đo? Tương tự, bạn sẽ đo những gì được lưu trữ trong DB?
StuperUser

Cơ sở dữ liệu sẽ là một điểm tốt tôi hoàn toàn quên mất.
Dominik G

Câu trả lời:


5

Độ phức tạp theo chu kỳ là một trong nhiều phép đo độ phức tạp của mã. Ví dụ: trong Visual Studio, chỉ số bảo trì phụ thuộc vào:

  • Phức tạp cyclomatic,
  • Độ sâu của thừa kế,
  • Khớp nối lớp
  • Các dòng mã IL (mã IL là mã nguồn được biên dịch sang Ngôn ngữ trung gian, sau đó được biên dịch JIT).

Mọi phép đo đó, cũng như các phép đo phức tạp khác, đều hoạt động bằng cách nào đó, nhưng không bao giờ là dấu hiệu tuyệt đối cho thấy mã nguồn có vấn đề phức tạp . Một số phép đo, như LỘC, được biết là hoàn toàn vô nghĩa và sai lệch; những người khác, như phức tạp chu kỳ, tốt hơn một chút, nhưng vẫn có vấn đề.

Điều này là do thực tế rằng:

  • Quá phức tạp đối với một chương trình máy tính để biết mã nguồn thực sự phức tạp như thế nào bởi nhà phát triển .

    Ví dụ, tôi thường nhận thấy sự sụt giảm rất lớn của chỉ số bảo trì khi tái cấu trúc mã từ kiểu thủ tục sang kiểu chức năng thông qua LINQ, biến một khối mã nguồn rất khó đọc thành một biểu thức chuỗi đơn cực kỳ rõ ràng.

    Một ví dụ khác là sự phản ánh của các mẫu lập trình trên các số liệu. Thông thường, bằng cách đưa các mẫu lập trình vào mã của bạn, bạn sẽ làm cho nó trở nên ít phức tạp hơn đối với nhà phát triển (giả sử nhà phát triển này quen thuộc với các mẫu đó), nhưng chỉ số bảo trì sẽ giảm.

  • Mã nguồn có thể có các hình thức khác nhau.

    Đo độ phức tạp hoặc độ sâu của tính kế thừa hoặc khớp nối lớp rất hạn chế đối với một ứng dụng web, bởi vì, như bạn đã nói, sự tồn tại của HTML / CSS, JavaScript, v.v., và như đã lưu ý trong các nhận xét, sự tồn tại của quyền truy cập cơ sở dữ liệu.

    Giới hạn này không chỉ tồn tại cho các ứng dụng web. Trong các ứng dụng máy tính để bàn, chẳng hạn, sự phức tạp của bố cục UI (mã XAML trong các ứng dụng Windows) thì sao? Những gì về mã được tạo ra? Hoặc truy cập cơ sở dữ liệu?


Tôi biết rằng không có mô hình nào hoàn chỉnh cũng như bất kỳ mô hình nào tôi thấy sai, nhưng họ vẫn có thể đưa ra gợi ý. Tôi chỉ tò mò về cách GUI và tách mã máy khách và máy chủ có thể được đo. Tôi cũng sử dụng khảo sát AFOTEC để có được một số giá trị chủ quan.
Dominik G
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.