Thiết kế hệ thống phần mềm với 4+1 Architectural View Model và C4 Model
4+1 Architectural View Model và C4 Model là 2 cách phổ biến để mô tả kiến trúc của hệ thống phần mềm.
Thiết kế hệ thống phần mềm với 4+1 Architectural View Model
4+1 Architectural View Model là cách để mô tả kiến trúc của hệ thống phần mềm dựa trên nhiều góc nhìn (view) khác nhau:
Scenarios
Đây là góc nhìn của người phân tích nghiệp vụ (business analyst), tester
Sử dụng use-case diagram
Mô tả các trường hợp sử dụng của hệ thống
Logical view
Đây là góc nhìn của người dùng cuối, khách hàng
Sử dụng class/state diagram
Mô tả các đối tượng chính trong hệ thống và mối liên hệ giữa chúng
Process view
Đây là góc nhìn của các lập trình viên, người tích hợp hệ thống
Sử dụng sequence/activity diagram
Mô tả các quy trình, luồng chạy của các tính năng trong hệ thống
Development view
Đây là góc nhìn của các lập trình viên, người quản lý dự án
Sử dụng component/package diagram
Mô tả các thành phần chính của hệ thống và mối liên hệ giữa chúng
Physical view
Đây là góc nhìn của các kỹ sư hệ thống
Sử dụng deployment diagram
Mô tả cách hệ thống được cài đặt, triển khai như thế nào
Thiết kế hệ thống phần mềm với C4 Model
C4 model là một cách khác để mô tả kiến trúc hệ thống phần mềm tương tự như 4+1 Architectural View Model.
C4 model bao gồm các diagram ở 4 cấp độ:
System Context diagram: mô tả hệ thống ở mức abstract cao nhất, mô tả chức năng chính của hệ thống, thể hiện mối liên hệ giữa hệ thống với người dùng và các hệ thống khác. Đối tượng phục vụ: tất cả mọi người trong và ngoài team dự án.
Container diagram: một container là một phần của hệ thống ví dụ như server backend, web app, mobile app, database,… Container diagram mô tả các thành phần chính của hệ thống, nhiệm vụ của từng thành phần, mối liên hệ giữa chúng, và cách chúng tương tác với nhau. Đối tượng phục vụ: tất cả technical member ở trong và ngoài team dự án.
Component diagram: 1 container bao gồm nhiều component khác nhau, ví dụ như tập hợp các class liên quan với nhau. Component diagram mô tả các component của một container, mối liên hệ và cách chúng tương tác với nhau. Đối tượng phục vụ: Software architect, lập trình viên.
Code diagram: mô tả chi tiết cách thực thi của từng component. Đối tượng phục vụ: Software architect, lập trình viên.
Ưu điểm
Thể hiện cấu trúc của hệ thống một cách dễ hiểu, rõ ràng, và sinh động
Đơn giản hơn 4+1 Architectural View Model và các giải pháp khác
Nhược điểm
Thiếu các ký hiệu để diễn giải hệ thống có độ phức tạp cao
Các mối liên hệ ở cấp độ code level được thể hiện khá mơ hồ
Thể hiện góc nhìn tĩnh (static view), thiếu thông tin về thời gian và tần suất xảy ra của các quan hệ