Thiết kế phần mềm phức tạp

Thuật ngữ phức tạp là viết tắt của trạng thái sự kiện hoặc sự vật, có nhiều liên kết liên kết với nhau và cấu trúc phức tạp cao. Trong lập trình phần mềm, khi thiết kế phần mềm được hiện thực hóa, số lượng các phần tử và mối liên hệ giữa chúng dần dần xuất hiện là rất lớn, điều này trở nên quá khó hiểu ngay lập tức.

Khó đánh giá độ phức tạp của thiết kế phần mềm nếu không sử dụng các thước đo và thước đo độ phức tạp. Chúng ta hãy xem ba thước đo độ phức tạp quan trọng của phần mềm.

Các biện pháp phức tạp của Halstead

Năm 1977, ông Maurice Howard Halstead đưa ra các thước đo để đo lường độ phức tạp của phần mềm. Các chỉ số của Halstead phụ thuộc vào việc triển khai thực tế chương trình và các thước đo của nó, được tính toán trực tiếp từ các toán tử và toán hạng từ mã nguồn, theo cách tĩnh. Nó cho phép đánh giá thời gian kiểm tra, từ vựng, kích thước, độ khó, lỗi và nỗ lực đối với mã nguồn C / C ++ / Java.

Theo Halstead, “Một chương trình máy tính là sự triển khai của một thuật toán được coi là một tập hợp các mã thông báo có thể được phân loại thành toán tử hoặc toán hạng”. Các chỉ số Halstead cho rằng một chương trình là một chuỗi các toán tử và các toán hạng liên quan của chúng.

Ông xác định các chỉ số khác nhau để kiểm tra độ phức tạp của mô-đun.

Tham số Ý nghĩa
n1 Số lượng toán tử duy nhất
n2 Số toán hạng duy nhất
N1 Tổng số lần xuất hiện của toán tử
N2 Tổng số lần xuất hiện của các toán hạng

Khi chúng tôi chọn tệp nguồn để xem chi tiết độ phức tạp của nó trong Trình xem số liệu, kết quả sau được nhìn thấy trong Báo cáo chỉ số:

Hệ mét Ý nghĩa Biểu diễn toán học
n Từ vựng n1 + n2
N Kích thước N1 + N2
V Âm lượng Độ dài * Từ vựng Log2
D Khó khăn (n1 / 2) * (N1 / n2)
E Nỗ lực Độ khó * Khối lượng
B Lỗi Khối lượng / 3000
T Thời gian kiểm tra Thời gian = Nỗ lực / S, trong đó S = 18 giây.

Các phép đo độ phức tạp chu kỳ

Mọi chương trình đều bao gồm các câu lệnh cần thực thi để thực hiện một số nhiệm vụ và các câu lệnh ra quyết định khác quyết định, câu lệnh nào cần được thực hiện. Các cấu trúc ra quyết định này thay đổi luồng chương trình.

Nếu chúng ta so sánh hai chương trình có cùng kích thước, chương trình nào có nhiều câu lệnh ra quyết định hơn sẽ phức tạp hơn vì việc kiểm soát chương trình nhảy thường xuyên.

McCabe, vào năm 1976, đề xuất Phép đo độ phức tạp Cyclomatic để định lượng độ phức tạp của một phần mềm nhất định. Đây là mô hình điều khiển bằng biểu đồ dựa trên các cấu trúc ra quyết định của chương trình như if-else, do-while, repeat-Until, switch-case và câu lệnh goto.

Quy trình lập đồ thị điều khiển luồng:

  • Phá vỡ chương trình trong các khối nhỏ hơn, được phân định bằng các cấu trúc ra quyết định.
  • Tạo các nút đại diện cho mỗi nút này.
  • Kết nối các nút như sau:
    • Nếu điều khiển có thể phân nhánh từ khối i sang khối j

      Vẽ một vòng cung

    • Từ nút thoát đến nút vào

      Vẽ một vòng cung.

Để tính toán độ phức tạp Cyclomatic của một mô-đun chương trình, chúng tôi sử dụng công thức:

V(G) = e – n + 2

Where
e is total number of edges
n is total number of nodes

Độ phức tạp Cyclomatic của mô-đun trên là

e = 10
n = 8
Cyclomatic Complexity = 10 - 8 + 2
                      = 4

Theo P. Jorgensen, Độ phức tạp Cyclomatic của một mô-đun không được vượt quá 10.

Điểm chức năng

Nó được sử dụng rộng rãi để đo kích thước của phần mềm. Điểm chức năng tập trung vào chức năng được cung cấp bởi hệ thống. Các tính năng và chức năng của hệ thống được sử dụng để đo độ phức tạp của phần mềm.

Điểm chức năng tính trên năm tham số, được đặt tên là Đầu vào bên ngoài, Đầu ra bên ngoài, Tệp nội bộ logic, Tệp giao diện bên ngoài và Truy vấn bên ngoài. Để xem xét độ phức tạp của phần mềm, mỗi tham số được phân loại thêm là đơn giản, trung bình hoặc phức tạp.

Hãy cho chúng tôi xem các thông số của chức năng point:

Đầu vào bên ngoài

Mọi đầu vào duy nhất vào hệ thống, từ bên ngoài, được coi là đầu vào bên ngoài. Tính duy nhất của đầu vào được đo lường, vì không có hai đầu vào nào có định dạng giống nhau. Các đầu vào này có thể là dữ liệu hoặc tham số điều khiển.

  • Simple - nếu số lượng đầu vào thấp và ít ảnh hưởng đến các tệp nội bộ hơn

  • Complex - nếu số lượng đầu vào cao và ảnh hưởng đến nhiều tệp nội bộ hơn

  • Average - ở giữa đơn giản và phức tạp.

Đầu ra bên ngoài

Tất cả các loại đầu ra do hệ thống cung cấp đều được tính vào danh mục này. Đầu ra được coi là duy nhất nếu định dạng đầu ra và / hoặc quá trình xử lý của chúng là duy nhất.

  • Simple - nếu số lượng đầu ra thấp

  • Complex - nếu số lượng đầu ra cao

  • Average - ở giữa đơn giản và phức tạp.

Tệp nội bộ logic

Mọi hệ thống phần mềm đều duy trì các tệp nội bộ để duy trì thông tin chức năng của nó và hoạt động bình thường. Các tệp này chứa dữ liệu logic của hệ thống. Dữ liệu lôgic này có thể chứa cả dữ liệu chức năng và dữ liệu điều khiển.

  • Simple - nếu số lượng loại bản ghi thấp

  • Complex - nếu số loại bản ghi nhiều

  • Average - ở giữa đơn giản và phức tạp.

Tệp giao diện bên ngoài

Hệ thống phần mềm có thể cần chia sẻ tệp của nó với một số phần mềm bên ngoài hoặc nó có thể cần chuyển tệp để xử lý hoặc dưới dạng tham số cho một số chức năng. Tất cả các tệp này được tính là tệp giao diện bên ngoài.

  • Simple - nếu số loại bản ghi trong tệp chia sẻ thấp

  • Complex - nếu số loại bản ghi trong tệp được chia sẻ nhiều

  • Average - ở giữa đơn giản và phức tạp.

Yêu cầu bên ngoài

Yêu cầu là sự kết hợp của đầu vào và đầu ra, trong đó người dùng gửi một số dữ liệu để hỏi khi đầu vào và hệ thống trả lời người dùng với đầu ra của câu hỏi được xử lý. Độ phức tạp của một truy vấn nhiều hơn Đầu vào Bên ngoài và Đầu ra Bên ngoài. Truy vấn được cho là duy nhất nếu đầu vào và đầu ra của nó là duy nhất về định dạng và dữ liệu.

  • Simple - nếu truy vấn cần xử lý thấp và tạo ra một lượng nhỏ dữ liệu đầu ra

  • Complex - nếu truy vấn cần quá trình xử lý cao và thu được lượng lớn dữ liệu đầu ra

  • Average - ở giữa đơn giản và phức tạp.

Mỗi tham số này trong hệ thống được cho trọng số tùy theo lớp và độ phức tạp của chúng. Bảng dưới đây đề cập đến trọng số được cung cấp cho mỗi tham số:

Tham số Đơn giản Trung bình cộng Phức tạp
Đầu vào 3 4 6
Kết quả đầu ra 4 5 7
Yêu cầu 3 4 6
Các tập tin 7 10 15
Giao diện 5 7 10

Bảng trên mang lại các Điểm Chức năng thô. Các điểm chức năng này được điều chỉnh tùy theo độ phức tạp của môi trường. Hệ thống được mô tả bằng cách sử dụng mười bốn đặc điểm khác nhau:

  • Truyền thông dữ liệu
  • Quá trình đóng góp
  • Mục tiêu hoạt động
  • Tải cấu hình hoạt động
  • Tỷ lệ giao dịch
  • Nhập dữ liệu trực tuyến,
  • Hiệu quả người dùng cuối
  • Cập nhật trực tuyến
  • Logic xử lý phức tạp
  • Re-usability
  • Cài đặt dễ dàng
  • Hoạt động dễ dàng
  • Nhiều trang web
  • Mong muốn tạo điều kiện thay đổi

Các yếu tố đặc điểm này sau đó được đánh giá từ 0 đến 5, như được đề cập bên dưới:

  • Không ảnh hưởng
  • Incidental
  • Moderate
  • Average
  • Significant
  • Essential

Tất cả các xếp hạng sau đó được tổng hợp là N. Giá trị của N nằm trong khoảng từ 0 đến 70 (14 loại đặc điểm x 5 loại xếp hạng). Nó được sử dụng để tính toán các hệ số điều chỉnh độ phức tạp (CAF), sử dụng các công thức sau:

CAF = 0.65 + 0.01N

Sau đó,

Delivered Function Points (FP)= CAF x Raw FP

FP này sau đó có thể được sử dụng trong các số liệu khác nhau, chẳng hạn như:

    Cost = $ / FP

    Quality = Lỗi / FP

    Productivity = FP / người-tháng