TOGAF® Standard — ADM Techniques¶
4. Mẫu kiến trúc (Architecture Patterns)¶
Mẫu kiến trúc (Architecture Patterns) là một kỹ thuật quan trọng trong việc phát triển kiến trúc, cung cấp các giải pháp tái sử dụng cho các vấn đề thường gặp.
4.1. Giới thiệu (Introduction)¶
- Các mẫu (patterns) để mô tả Kiến trúc Doanh nghiệp (Enterprise Architectures) ngày càng trở nên quan trọng đối với các chuyên gia.
- Với tính chất đa dạng và đa ngành của Kiến trúc Doanh nghiệp (Enterprise Architecture), các mẫu cần được phát triển trong các lĩnh vực (disciplines), miền (domains) và mức độ chi tiết khác nhau.
- Mặc dù chưa có một tiêu chuẩn duy nhất để mô tả các mẫu Kiến trúc Doanh nghiệp, nhưng có một "mẫu" (pattern) chung để mô tả các mẫu.
4.2. Bối cảnh (Background)¶
- Một "mẫu" (pattern) được định nghĩa là "một ý tưởng đã hữu ích trong một ngữ cảnh thực tế và có thể sẽ hữu ích trong những ngữ cảnh khác".
- Trong Tiêu chuẩn TOGAF® (TOGAF® Standard), các mẫu được coi là một cách để đặt các khối xây dựng (building blocks) vào ngữ cảnh; ví dụ, để mô tả một giải pháp tái sử dụng (re-usable solution) cho một vấn đề. Các khối xây dựng (building blocks) là những gì bạn sử dụng, còn các mẫu (patterns) cho bạn biết cách sử dụng chúng, khi nào, tại sao và những đánh đổi (trade-offs) nào bạn phải thực hiện khi làm như vậy.
- Các mẫu (patterns) giúp kiến trúc sư xác định các sự kết hợp của các khối xây dựng kiến trúc (Architecture Building Blocks - ABB) và/hoặc khối xây dựng giải pháp (Solution Building Blocks - SBB) đã được chứng minh là mang lại các giải pháp hiệu quả trong quá khứ và có thể là cơ sở cho các giải pháp hiệu quả trong tương lai.
- Kỹ thuật mẫu (pattern techniques) được Christopher Alexander, một kiến trúc sư xây dựng, thiết lập như một kỹ thuật thiết kế kiến trúc có giá trị trong cuốn sách "The Timeless Way of Building" (1979). Sau đó, các kiến trúc sư phần mềm đã tiếp cận ý tưởng này, với cuốn sách nổi tiếng "Design Patterns: Elements of Re-usable Object-Oriented Software" (Gamma et al., 1994).
4.3. Nội dung của một mẫu (Content of a Pattern)¶
Mặc dù có nhiều định dạng khác nhau để mô tả các mẫu, nhưng hầu hết các mẫu đều chứa các yếu tố sau:
- Tên (Name): Một cách ý nghĩa và dễ nhớ để gọi mẫu, thường là một từ hoặc cụm từ ngắn.
- Vấn đề (Problem): Mô tả vấn đề, cho biết mục đích khi áp dụng mẫu – các mục tiêu (goals and objectives) cần đạt được trong ngữ cảnh và các yếu tố (forces) được mô tả (có thể kèm theo mức độ ưu tiên).
- Ngữ cảnh (Context): Các điều kiện tiên quyết (preconditions) mà mẫu có thể áp dụng – mô tả trạng thái ban đầu trước khi mẫu được áp dụng.
- Các yếu tố (Forces): Mô tả các yếu tố và ràng buộc (constraints) liên quan, cách chúng tương tác/xung đột với nhau và với các mục tiêu dự định. Các yếu tố này thường tương đương với các "phẩm chất" (qualities) mà kiến trúc sư tìm cách tối ưu và các mối quan tâm (concerns) họ muốn giải quyết khi thiết kế kiến trúc. Ví dụ:
- Bảo mật (Security), độ mạnh mẽ (robustness), độ tin cậy (reliability), khả năng chịu lỗi (fault-tolerance).
- Khả năng quản lý (Manageability).
- Hiệu quả (Efficiency), hiệu suất (performance), thông lượng (throughput), yêu cầu băng thông (bandwidth requirements), sử dụng không gian (space utilization).
- Khả năng mở rộng (Scalability - tăng trưởng gia tăng theo yêu cầu).
- Khả năng mở rộng (Extensibility), khả năng phát triển (evolvability), khả năng bảo trì (maintainability).
- Tính module (Modularity), tính độc lập (independence), khả năng tái sử dụng (re-usability), tính mở (openness), khả năng kết hợp (composability - plug-and-play), tính di động (portability).
- Tính đầy đủ và chính xác (Completeness and correctness).
- Dễ xây dựng (Ease-of-construction).
- Dễ sử dụng (Ease-of-use).
- Giải pháp (Solution): Mô tả, bằng văn bản và/hoặc đồ họa, cách đạt được các mục tiêu mong muốn. Mô tả này bao gồm cấu trúc tĩnh (static structure) và hành vi động (dynamic behavior) của giải pháp – những người và các tác nhân tính toán (computing actors), và sự cộng tác của họ. Nó cũng có thể bao gồm hướng dẫn triển khai.
- Ngữ cảnh kết quả (Resulting Context): Các điều kiện hậu kỳ (post-conditions) sau khi mẫu đã được áp dụng. Phần này mô tả các yếu tố nào đã được giải quyết và như thế nào, và những yếu tố nào còn tồn đọng. Nó cũng có thể chỉ ra các mẫu khác có thể áp dụng trong ngữ cảnh mới.
- Ví dụ (Examples): Một hoặc nhiều ứng dụng mẫu của mẫu minh họa từng yếu tố khác: một vấn đề, ngữ cảnh và tập hợp các yếu tố cụ thể; cách mẫu được áp dụng; và ngữ cảnh kết quả.
- Cơ sở lý luận (Rationale): Giải thích/biện minh cho toàn bộ mẫu hoặc các thành phần riêng lẻ trong đó, chỉ ra cách mẫu thực sự hoạt động, và tại sao – làm thế nào nó giải quyết các yếu tố để đạt được các mục tiêu mong muốn, và tại sao điều này là "tốt".
- Các mẫu liên quan (Related Patterns): Các mối quan hệ giữa mẫu này và các mẫu khác (ví dụ: mẫu tiền thân, mẫu kế nhiệm, mẫu thay thế hoặc mẫu phụ thuộc đồng thời).
- Các trường hợp sử dụng đã biết (Known Uses): Các ứng dụng đã biết của mẫu trong các hệ thống hiện có, xác minh rằng mẫu thực sự mô tả một giải pháp đã được chứng minh cho một vấn đề lặp đi lặp lại. Các trường hợp sử dụng đã biết cũng có thể đóng vai trò là ví dụ.
- Tóm tắt (Abstract) (tùy chọn): Cung cấp cái nhìn tổng quan về mẫu và chỉ ra các loại vấn đề nó giải quyết. Tóm tắt cũng có thể xác định đối tượng mục tiêu và các giả định về người đọc.
4.4. Thuật ngữ (Terminology)¶
Mặc dù mẫu thiết kế (design patterns) đã là tâm điểm được quan tâm rộng rãi trong ngành công nghiệp phần mềm trong nhiều năm qua, đặc biệt trong các lĩnh vực phần mềm hướng đối tượng (object-oriented software) và phần mềm dựa trên thành phần (component-based software), nhưng chỉ gần đây mới có sự quan tâm ngày càng tăng đến mẫu kiến trúc (architecture patterns) — tức là việc mở rộng các nguyên tắc và khái niệm của design patterns sang miền kiến trúc.
Tài liệu kỹ thuật liên quan đến lĩnh vực này trở nên phức tạp bởi thực tế rằng nhiều người trong ngành phần mềm sử dụng thuật ngữ “kiến trúc (architecture)” để chỉ phần mềm, và nhiều mẫu được mô tả là “mẫu kiến trúc (architecture patterns)” thực chất chỉ là các mẫu thiết kế phần mềm ở cấp độ cao (high-level software design patterns). Điều này càng làm nổi bật tầm quan trọng của việc sử dụng chính xác thuật ngữ (precise use of terminology).
4.4.1. Architecture Patterns and Design Patterns¶
Thuật ngữ “mẫu thiết kế (design pattern)” thường được sử dụng để chỉ bất kỳ mẫu nào giải quyết các vấn đề liên quan đến kiến trúc phần mềm (software architecture), thiết kế (design), hoặc triển khai lập trình (programming implementation). Trong cuốn Pattern-Oriented Software Architecture: A System of Patterns, các tác giả đã định nghĩa ba loại mẫu này như sau:
- Mẫu Kiến trúc (Architecture Pattern): Diễn tả một tổ chức hoặc sơ đồ cấu trúc cơ bản cho các hệ thống phần mềm. Nó cung cấp một tập hợp các hệ thống con được định nghĩa trước, chỉ định trách nhiệm của chúng và bao gồm các quy tắc, hướng dẫn để tổ chức mối quan hệ giữa chúng.
- Mẫu Thiết kế (Design Pattern): Cung cấp một sơ đồ để tinh chỉnh các hệ thống con hoặc thành phần của một hệ thống phần mềm, hoặc các mối quan hệ giữa chúng. Nó mô tả một cấu trúc thường xuyên lặp lại của các thành phần giao tiếp giải quyết một vấn đề thiết kế chung trong một ngữ cảnh cụ thể.
- Ngữ pháp (Idiom): Là một mẫu cấp thấp đặc thù cho một ngôn ngữ lập trình. Nó mô tả cách triển khai các khía cạnh cụ thể của các thành phần hoặc mối quan hệ giữa chúng bằng cách sử dụng các tính năng của ngôn ngữ nhất định.
- Trong ngữ cảnh của tài liệu này, trọng tâm là các mẫu cho kiến trúc hệ thống doanh nghiệp (enterprise system architecting), bao gồm phần mềm, phần cứng, mạng và con người, chứ không chỉ thuần túy các hệ thống phần mềm.
4.4.2. Các mẫu (Patterns) và Dải liên tục Kiến trúc (Architecture Continuum)¶
- Mặc dù các mẫu kiến trúc (architecture patterns) chưa được tích hợp hoàn toàn vào Tiêu chuẩn TOGAF® (TOGAF Standard), nhưng mỗi trong bốn giai đoạn chính của ADM (Giai đoạn A đến D) đều chỉ ra giai đoạn mà các tài sản kiến trúc tái sử dụng (re-usable architecture assets) liên quan từ Dải liên tục Kiến trúc Doanh nghiệp (Enterprise Architecture Continuum) nên được xem xét sử dụng. Các mẫu kiến trúc là một tài sản như vậy.
- Một doanh nghiệp áp dụng một phương pháp chính thức để sử dụng và tái sử dụng các mẫu kiến trúc sẽ thường tích hợp việc sử dụng chúng vào Dải liên tục Kiến trúc Doanh nghiệp.
4.4.3. Các mẫu (Patterns) và Quan điểm (Views)¶
- Các quan điểm kiến trúc (architecture views) là các phần được chọn lọc của một hoặc nhiều mô hình đại diện cho kiến trúc hệ thống hoàn chỉnh, tập trung vào các khía cạnh giải quyết các mối quan tâm (concerns) của một hoặc nhiều bên liên quan (stakeholders).
- Các mẫu có thể giúp thiết kế các mô hình như vậy và trong việc tổng hợp các quan điểm dựa trên chúng.
4.4.4. Các mẫu (Patterns) và Kịch bản Kinh doanh (Business Scenarios)¶
- Các mẫu kiến trúc liên quan có thể được xác định trong quá trình làm việc với các kịch bản kinh doanh (business scenarios).