6.1 Phân hủy

Mặc dù có nhiều tiêu chí khác nhau, nhiệm vụ chính trong việc phát triển các hệ thống lớn là nhiệm vụ giảm độ phức tạp của hệ thống . Để giảm bớt sự phức tạp, không có gì khác ngoài việc chia thành các phần chưa được phát minh.

Đôi khi, để đơn giản, điều này được gọi là nguyên tắc "chia để trị", nhưng, theo quan điểm của kiến ​​trúc sư phần mềm, chúng ta đang nói về phân rã thứ bậc .

Một hệ thống phức tạp phải được xây dựng từ một số lượng nhỏ các hệ thống con đơn giản hơn, đến lượt mỗi hệ thống con này lại được xây dựng từ các phần nhỏ hơn, và cứ tiếp tục như vậy cho đến khi các phần nhỏ nhất đủ đơn giản để có thể hiểu và tạo trực tiếp.

phân hủy

Tin tuyệt vời là giải pháp này không chỉ là giải pháp duy nhất được biết đến mà còn phổ biến. Ngoài việc giảm độ phức tạp, nó đồng thời cung cấp tính linh hoạt của hệ thống , khả năng mở rộng tốt tăng khả năng phục hồi bằng cách sao chép các bộ phận quan trọng.

Theo đó, khi nói đến việc xây dựng kiến ​​​​trúc của chương trình, tạo cấu trúc của nó, điều này có nghĩa là phân tách chương trình thành các hệ thống con, dịch vụ, lớp, chương trình con và mô-đun chức năng, đồng thời tổ chức sự tương tác của chúng với nhau và với thế giới bên ngoài.

Và điều có giá trị nhất ở đây là: các hệ thống con càng độc lập thì càng an toàn khi tập trung vào sự phát triển của từng hệ thống riêng biệt tại một thời điểm cụ thể và không phải lo lắng về tất cả các phần khác.

6.2 Lợi ích của kiến ​​trúc mô-đun

Sử dụng nguyên tắc phân tách theo thứ bậc cho phép bạn loại bỏ sự hỗn loạn trong hàng nghìn lớp mã của mình. Hãy nhớ rằng mã của bạn được chia thành các gói (package) và các gói con? Đây là một trong những cách diễn đạt để phân rã thứ bậc.

Chương trình của bạn biến từ một loạt các lớp thành một tập hợp các thư viện và mô-đun tương tác với nhau theo các quy tắc đơn giản và được xác định rõ ràng. Đổi lại, điều này cho phép bạn kiểm soát độ phức tạp của nó, đồng thời cho bạn cơ hội nhận được tất cả những lợi ích thường đi kèm với khái niệm về một kiến ​​trúc tốt.

Dưới đây là những cái cơ bản nhất:

  • Khả năng mở rộng - khả năng mở rộng hệ thống và tăng hiệu suất của nó bằng cách thêm các mô-đun mới.
  • Khả năng bảo trì - thay đổi một mô-đun không yêu cầu thay đổi các mô-đun khác.
  • Khả năng hoán đổi của các mô-đun (Khả năng hoán đổi) - mô-đun có thể dễ dàng thay thế bằng một mô-đun khác.
  • Kiểm tra đơn vị – Một đơn vị có thể được tách ra khỏi tất cả các đơn vị khác và được kiểm tra/sửa chữa .
  • Khả năng sử dụng lại - mô-đun có thể được sử dụng lại trong các chương trình khác và các môi trường khác.
  • Bảo trì - một chương trình được chia thành các mô-đun dễ hiểu và dễ bảo trì hơn.

Có thể nói rằng việc phá vỡ một vấn đề phức tạp thành những mảnh đơn giản là mục tiêu của tất cả các kỹ thuật thiết kế . Và thuật ngữ “kiến trúc” trong hầu hết các trường hợp chỉ đơn giản đề cập đến kết quả của sự phân chia như vậy cộng với “một số quyết định thiết kế mà một khi đã được thông qua thì rất khó thay đổi” (“Kiến trúc của các ứng dụng phần mềm doanh nghiệp” của Martin Fowler).

Do đó, hầu hết các định nghĩa ở dạng này hay dạng khác đều tóm tắt như sau:

" Kiến trúc xác định các thành phần chính của hệ thống và cách chúng tương tác. Đó cũng là sự lựa chọn các quyết định như vậy được hiểu là cơ bảnkhông thể thay đổi trong tương lai ."

" Kiến trúc là tổ chức của một hệ thống, thể hiện trong các thành phần của nó, mối quan hệ của chúng với nhau và với môi trường. Một hệ thống là một tập hợp các thành phần được kết hợp để thực hiện một chức năng cụ thể. "

Do đó, một kiến ​​trúc tốt trước hết là một kiến ​​trúc mô-đun / khối . Để có được một kiến ​​trúc tốt, bạn cần biết cách phân rã hệ thống một cách hợp lý. Điều này có nghĩa là cần phải hiểu phân tách nào được coi là "đúng" và cách tốt nhất để thực hiện phân tách đó.