Kiến trúc của một hệ thống phần mềm (Software Architecture) mô tả các thành phần chính của nó, các mối quan hệ của các thành phần và cách chúng tương tác với nhau.
Kiến trúc phần mềm và thiết kế phần mềm phụ thuộc một số yếu tố như Chiến lược kinh doanh, thuộc tính chất lượng, nguồn nhân lực, thiết kế và môi trường CNTT.
Chúng ta có thể tách Kiến trúc và Thiết kế phần mềm thành hai giai đoạn riêng biệt: Kiến trúc phần mềm và Thiết kế phần mềm.
Trong Kiến trúc phần mềm, các quyết định phi chức năng được đúc kết và tách biệt bởi các yêu cầu chức năng.
Trong Thiết kế phần mềm, các yêu cầu chức năng được hoàn thành.
Kiến trúc đóng vai trò như một bản thiết kế cho một hệ thống . Nó cung cấp một sự trừu tượng để quản lý độ phức tạp của hệ thống và thiết lập một cơ chế giao tiếp và phối hợp giữa các thành phần.
Những quyết định này bao gồm:
Thiết kế phần mềm cung cấp một kế hoạch thiết kế mô tả các phần tử của hệ thống, cách chúng phù hợp và làm việc cùng nhau để đáp ứng yêu cầu của hệ thống. Các mục tiêu của việc có một kế hoạch thiết kế như sau:
Nó xảy ra trước khi thiết kế chi tiết, viết code, tích hợp và thử nghiệm, sau khi đã phân tích miền, phân tích yêu cầu và phân tích rủi ro.
Mục tiêu chính của Software Architecture là xác định các yêu cầu ảnh hưởng đến cấu trúc của ứng dụng. Một kiến trúc bài bản giúp giảm rủi ro liên quan đến việc xây dựng giải pháp kỹ thuật và xây dựng cầu nối giữa yêu cầu nghiệp vụ và kỹ thuật.
Một số mục tiêu khác như sau:
Kiến trúc phần mềm vẫn là một ngành học mới nổi trong ngành kỹ thuật phần mềm. Nó có những hạn chế sau:
Kiến trúc sư phần mềm cung cấp giải pháp mà nhóm kỹ thuật có thể tạo và thiết kế cho toàn bộ ứng dụng. Một kiến trúc sư phần mềm nên có chuyên môn trong các lĩnh vực sau:
Chất lượng là thước đo sự xuất sắc hoặc trạng thái không có thiếu sót hoặc khuyết tật. Thuộc tính chất lượng là các thuộc tính của hệ thống tách biệt với chức năng của hệ thống.
Việc triển khai các thuộc tính chất lượng giúp dễ dàng phân biệt hệ thống tốt với hệ thống xấu. Thuộc tính là các yếu tố tổng thể ảnh hưởng đến thời gian chạy, thiết kế hệ thống và trải nghiệm người dùng.
Chúng có thể được phân loại là:
Phản ánh cấu trúc của một hệ thống và tổ chức, liên quan trực tiếp đến kiến trúc, thiết kế và mã nguồn. Chúng vô hình đối với người dùng cuối, nhưng ảnh hưởng đến chi phí phát triển và bảo trì, ví dụ: tính mô-đun, khả năng kiểm tra, khả năng bảo trì, v.v.
Phản ánh hành vi của hệ thống trong quá trình thực thi. Chúng liên quan trực tiếp đến kiến trúc, thiết kế, mã nguồn, cấu hình, tham số triển khai, môi trường và nền tảng của hệ thống.
Chúng được hiển thị cho người dùng cuối và tồn tại trong thời gian chạy, ví dụ như thông lượng, độ mạnh mẽ, khả năng mở rộng, v.v.
Các kịch bản chất lượng chỉ rõ cách ngăn lỗi trở thành lỗi. Chúng có thể được chia thành sáu phần dựa trên đặc điểm thuộc tính của chúng:
Bảng sau liệt kê các thuộc tính chất lượng chung mà Software Architecture phải có:
Phân loại | Thuộc tính chất lượng | Sự miêu tả |
---|---|---|
Chất lượng thiết kế | Tính toàn vẹn | Xác định tính nhất quán và mạch lạc của thiết kế tổng thể. Điều này bao gồm cách các thành phần hoặc mô-đun được thiết kế. |
Khả năng bảo trì | Xác định khả năng thay đổi, cập nhật, nâng cấp hệ thống một cách dễ dàng. | |
Khả năng tái sử dụng | Xác định khả năng các thành phần hệ thống phù hợp để sử dụng trong các ứng dụng khác. | |
Chất lượng thời gian thực thi | Khả năng tương tác | Xác định khả năng hệ thống dễ dàng giao tiếp và trao đổi thông tin với các hệ thống bên thứ 3. |
Khả năng quản lý | Xác định mức độ dễ dàng quản trị hệ thống trong việc quản lý ứng dụng. | |
Độ tin cậy | Xác định khả năng duy trì hoạt động theo thời gian của một hệ thống. | |
Khả năng mở rộng | Xác định khả năng có thể xử lý việc tăng tải mà không ảnh hưởng đến hiệu suất của hệ thống hoặc khả năng dễ dàng mở rộng. | |
Khả năng bảo vệ | Khả năng của một hệ thống để ngăn chặn các hành động phá hoại hoặc nằm ngoài cách sử dụng được thiết kế. | |
Hiệu suất | Khả năng đáp ứng của hệ thống để thực hiện bất kỳ hành động nào trong một khoảng thời gian nhất định. | |
Tính khả dụng | Xác định tỷ lệ thời gian hệ thống hoạt động, được đo bằng phần trăm của tổng thời gian ngừng hoạt động của hệ thống trong một khoảng thời gian xác định trước. | |
Chất lượng hệ thống | Khả năng hỗ trợ | Khả năng của hệ thống cung cấp thông tin hữu ích để xác định và giải quyết các vấn đề khi hệ thống không hoạt động chính xác. |
Khả năng kiểm tra | Đo lường mức độ dễ dàng tạo ra các tiêu chí kiểm tra cho hệ thống và các thành phần của nó. | |
Phẩm chất người dùng | Khả năng sử dụng | Xác định mức độ ứng dụng đáp ứng các yêu cầu của người dùng. |
Chất lượng kiến trúc | Tính đúng đắn | Trách nhiệm giải trình để đáp ứng tất cả các yêu cầu của hệ thống. |
Chất lượng non-runtime | Tính di động | Khả năng của hệ thống chạy trong các môi trường điện toán khác nhau. |
Tính tích hợp | Khả năng làm cho các thành phần được phát triển riêng biệt của hệ thống hoạt động chính xác với nhau. | |
Khả năng sửa đổi | Khả năng dễ dàng thay đổi, sửa đổi, nâng cấp hệ thống phần mềm. | |
Chất lượng kinh doanh | Chi phí và lịch trình | Chi phí của hệ thống liên quan đến thời gian đưa ra thị trường, thời gian tồn tại của dự án và việc sử dụng di sản. |
Khả năng tiếp thị | Sử dụng hệ thống đối với cạnh tranh thị trường. |
Bạn có thể vui lòng tắt trình chặn quảng cáo ❤️ để hỗ trợ chúng tôi duy trì hoạt động của trang web.
Sharding là một giải pháp chia nhỏ một database lớn thành nhiều database nhỏ đặt ở nhiều server khác nhau.
Caching là cách giúp sử dụng tài nguyên hiệu quả hơn từ đó giảm chi phí của hệ thống phân tán (Distributed System).
Load Balancing là gì? Load Balancing đóng vai trò như thế nào trong hệ thống phân tán (Distributed System).
Hệ thống phân tán (Distributed System) là gì? Vì sao các hệ thống của doanh nghiệp lớn lại sử dụng Distributed System?