Kiến trúc dựa trên thành phần
Kiến trúc dựa trên thành phần tập trung vào việc phân rã thiết kế thành các thành phần chức năng hoặc logic riêng lẻ đại diện cho các giao diện truyền thông được xác định rõ có chứa các phương thức, sự kiện và thuộc tính. Nó cung cấp mức độ trừu tượng cao hơn và chia vấn đề thành các vấn đề con, mỗi vấn đề được liên kết với các phân vùng thành phần.
Mục tiêu chính của kiến trúc dựa trên thành phần là đảm bảo component reusability. Một thành phần đóng gói chức năng và hành vi của một phần tử phần mềm thành một đơn vị nhị phân có thể tái sử dụng và tự triển khai. Có nhiều khuôn khổ thành phần tiêu chuẩn như COM / DCOM, JavaBean, EJB, CORBA, .NET, dịch vụ web và dịch vụ lưới. Những công nghệ này được sử dụng rộng rãi trong thiết kế ứng dụng GUI cục bộ trên máy tính để bàn như các thành phần JavaBean đồ họa, các thành phần MS ActiveX và các thành phần COM có thể được sử dụng lại bằng thao tác kéo và thả đơn giản.
Thiết kế phần mềm hướng thành phần có nhiều ưu điểm so với các phương pháp tiếp cận hướng đối tượng truyền thống như:
Giảm thời gian trên thị trường và chi phí phát triển bằng cách sử dụng lại các thành phần hiện có.
Tăng độ tin cậy với việc tái sử dụng các thành phần hiện có.
Thành phần là gì?
Thành phần là một tập hợp chức năng được xác định rõ theo mô-đun, di động, có thể thay thế và tái sử dụng, đóng gói việc triển khai nó và xuất nó dưới dạng giao diện cấp cao hơn.
Thành phần là một đối tượng phần mềm, nhằm mục đích tương tác với các thành phần khác, đóng gói một số chức năng hoặc một tập hợp các chức năng. Nó có một giao diện được xác định rõ ràng và tuân theo một hành vi được khuyến nghị chung cho tất cả các thành phần trong một kiến trúc.
Thành phần phần mềm có thể được định nghĩa như một đơn vị cấu thành với giao diện được chỉ định theo hợp đồng và chỉ phụ thuộc ngữ cảnh rõ ràng. Nghĩa là, một thành phần phần mềm có thể được triển khai độc lập và chịu sự chi phối của các bên thứ ba.
Chế độ xem của một thành phần
Một thành phần có thể có ba dạng xem khác nhau - dạng xem hướng đối tượng, dạng xem thông thường và dạng xem liên quan đến quá trình.
Object-oriented view
Một thành phần được xem như một tập hợp của một hoặc nhiều lớp hợp tác. Mỗi lớp miền vấn đề (phân tích) và lớp cơ sở hạ tầng (thiết kế) được giải thích để xác định tất cả các thuộc tính và hoạt động áp dụng cho việc triển khai của nó. Nó cũng liên quan đến việc xác định các giao diện cho phép các lớp giao tiếp và hợp tác.
Conventional view
Nó được xem như một phần tử chức năng hoặc một mô-đun của chương trình tích hợp logic xử lý, các cấu trúc dữ liệu bên trong được yêu cầu để thực hiện logic xử lý và một giao diện cho phép thành phần được gọi và dữ liệu được chuyển đến nó.
Process-related view
Theo quan điểm này, thay vì tạo từng thành phần từ đầu, hệ thống đang xây dựng từ các thành phần hiện có được duy trì trong thư viện. Khi cấu trúc phần mềm được xây dựng, các thành phần được chọn từ thư viện và được sử dụng để đưa vào kiến trúc.
Thành phần giao diện người dùng (UI) bao gồm lưới, các nút được gọi là điều khiển và các thành phần tiện ích hiển thị một tập hợp con cụ thể của các chức năng được sử dụng trong các thành phần khác.
Các loại thành phần phổ biến khác là những thành phần sử dụng nhiều tài nguyên, không được truy cập thường xuyên và phải được kích hoạt bằng cách sử dụng phương pháp tiếp cận đúng lúc (JIT).
Nhiều thành phần vô hình được phân phối trong các ứng dụng kinh doanh doanh nghiệp và ứng dụng web internet như Enterprise JavaBean (EJB), các thành phần .NET và các thành phần CORBA.
Đặc điểm của các thành phần
Reusability- Các thành phần thường được thiết kế để sử dụng lại trong các tình huống khác nhau trong các ứng dụng khác nhau. Tuy nhiên, một số thành phần có thể được thiết kế cho một nhiệm vụ cụ thể.
Replaceable - Các thành phần có thể được thay thế tự do bằng các thành phần tương tự khác.
Not context specific - Các thành phần được thiết kế để hoạt động trong các môi trường và bối cảnh khác nhau.
Extensible - Một thành phần có thể được mở rộng từ các thành phần hiện có để cung cấp hành vi mới.
Encapsulated - Thành phần AA mô tả các giao diện, cho phép người gọi sử dụng chức năng của nó và không tiết lộ chi tiết về các quy trình nội bộ hoặc bất kỳ biến hoặc trạng thái nội bộ nào.
Independent - Các thành phần được thiết kế để có sự phụ thuộc tối thiểu vào các thành phần khác.
Nguyên tắc thiết kế dựa trên thành phần
Một thiết kế cấp thành phần có thể được biểu diễn bằng cách sử dụng một số biểu diễn trung gian (ví dụ: đồ họa, bảng hoặc dựa trên văn bản) có thể được dịch sang mã nguồn. Việc thiết kế cấu trúc dữ liệu, giao diện và thuật toán phải tuân theo các nguyên tắc đã được thiết lập tốt để giúp chúng tôi tránh đưa ra lỗi.
Hệ thống phần mềm được phân rã thành các đơn vị thành phần có thể tái sử dụng, gắn kết và đóng gói.
Mỗi thành phần có giao diện riêng chỉ định các cổng yêu cầu và các cổng được cung cấp; mỗi thành phần ẩn việc triển khai chi tiết của nó.
Một thành phần nên được mở rộng mà không cần thực hiện mã nội bộ hoặc sửa đổi thiết kế đối với các phần hiện có của thành phần.
Sự phụ thuộc vào thành phần trừu tượng không phụ thuộc vào các thành phần bê tông khác, điều này làm tăng khó khăn trong khả năng sử dụng.
Kết nối các thành phần kết nối, xác định và điều khiển sự tương tác giữa các thành phần. Kiểu tương tác được xác định bởi các giao diện của các thành phần.
Tương tác các thành phần có thể ở dạng lệnh gọi phương thức, lệnh gọi không đồng bộ, phát sóng, tương tác theo hướng tin nhắn, truyền thông luồng dữ liệu và các tương tác cụ thể của giao thức khác.
Đối với một lớp máy chủ, các giao diện chuyên biệt nên được tạo ra để phục vụ các loại máy khách chính. Chỉ những hoạt động có liên quan đến một danh mục khách hàng cụ thể mới nên được chỉ định trong giao diện.
Một thành phần có thể mở rộng đến các thành phần khác và vẫn cung cấp các điểm mở rộng của riêng nó. Đó là khái niệm về kiến trúc dựa trên trình cắm thêm. Điều này cho phép một plugin cung cấp một API plugin khác.
Nguyên tắc thiết kế cấp thành phần
Tạo quy ước đặt tên cho các thành phần được chỉ định như một phần của mô hình kiến trúc và sau đó tinh chỉnh hoặc xây dựng như một phần của mô hình mức thành phần.
Đính kèm các tên thành phần kiến trúc từ miền vấn đề và đảm bảo rằng chúng có ý nghĩa đối với tất cả các bên liên quan xem mô hình kiến trúc.
Trích xuất các thực thể của quy trình kinh doanh có thể tồn tại độc lập mà không có bất kỳ sự phụ thuộc liên quan nào vào các thực thể khác.
Nhận biết và khám phá các thực thể độc lập này như các thành phần mới.
Sử dụng tên thành phần cơ sở hạ tầng phản ánh ý nghĩa cụ thể về việc triển khai của chúng.
Mô hình hóa bất kỳ phụ thuộc nào từ trái sang phải và kế thừa từ trên cùng (lớp cơ sở) xuống dưới (lớp dẫn xuất).
Mô hình hóa bất kỳ phụ thuộc thành phần nào dưới dạng giao diện thay vì biểu diễn chúng dưới dạng phụ thuộc thành phần trực tiếp.
Tiến hành thiết kế cấp thành phần
Nhận biết tất cả các lớp thiết kế tương ứng với miền vấn đề như được định nghĩa trong mô hình phân tích và mô hình kiến trúc.
Nhận biết tất cả các lớp thiết kế tương ứng với miền cơ sở hạ tầng.
Mô tả tất cả các lớp thiết kế không được lấy làm thành phần có thể sử dụng lại và chỉ định chi tiết thông báo.
Xác định các giao diện thích hợp cho từng thành phần và xây dựng các thuộc tính và xác định các kiểu dữ liệu và cấu trúc dữ liệu cần thiết để triển khai chúng.
Mô tả chi tiết luồng xử lý trong từng thao tác bằng mã giả hoặc sơ đồ hoạt động UML.
Mô tả các nguồn dữ liệu liên tục (cơ sở dữ liệu và tệp) và xác định các lớp cần thiết để quản lý chúng.
Phát triển và xây dựng các biểu diễn hành vi cho một lớp hoặc thành phần. Điều này có thể được thực hiện bằng cách xây dựng các biểu đồ trạng thái UML được tạo cho mô hình phân tích và bằng cách kiểm tra tất cả các trường hợp sử dụng có liên quan đến lớp thiết kế.
Lập sơ đồ triển khai để cung cấp thêm chi tiết triển khai.
Thể hiện vị trí của các gói hoặc lớp chính của các thành phần trong hệ thống bằng cách sử dụng các cá thể lớp và chỉ định môi trường phần cứng và hệ điều hành cụ thể.
Quyết định cuối cùng có thể được thực hiện bằng cách sử dụng các nguyên tắc và hướng dẫn thiết kế đã được thiết lập. Các nhà thiết kế có kinh nghiệm xem xét tất cả (hoặc hầu hết) các giải pháp thiết kế thay thế trước khi quyết định mô hình thiết kế cuối cùng.
Ưu điểm
Ease of deployment - Khi có phiên bản tương thích mới, việc thay thế các phiên bản hiện có sẽ dễ dàng hơn mà không ảnh hưởng đến các thành phần khác hoặc toàn bộ hệ thống.
Reduced cost - Việc sử dụng các thành phần của bên thứ ba cho phép bạn phân bổ chi phí phát triển và bảo trì.
Ease of development - Các thành phần thực hiện các giao diện nổi tiếng để cung cấp chức năng xác định, cho phép phát triển mà không ảnh hưởng đến các phần khác của hệ thống.
Reusable - Việc sử dụng các thành phần có thể tái sử dụng có nghĩa là chúng có thể được sử dụng để phân bổ chi phí phát triển và bảo trì trên một số ứng dụng hoặc hệ thống.
Modification of technical complexity - Một thành phần sửa đổi độ phức tạp thông qua việc sử dụng một vùng chứa thành phần và các dịch vụ của nó.
Reliability - Độ tin cậy tổng thể của hệ thống tăng lên do độ tin cậy của từng thành phần riêng lẻ nâng cao độ tin cậy của toàn hệ thống thông qua việc tái sử dụng.
System maintenance and evolution - Dễ dàng thay đổi và cập nhật việc thực hiện mà không ảnh hưởng đến phần còn lại của hệ thống.
Independent- Tính độc lập và khả năng kết nối linh hoạt của các thành phần. Phát triển độc lập các thành phần theo nhóm khác nhau song song. Năng suất cho việc phát triển phần mềm và phát triển phần mềm trong tương lai.