(Software architecture) Kiến trúc phần mềm
Kiến trúc phần mềm đề cập đến các cấu trúc cơ bản của một hệ thống phần mềm và kỷ luật của việc tạo ra các cấu trúc và hệ thống đó. Mỗi cấu trúc bao gồm các phần tử phần mềm, các quan hệ giữa chúng và các thuộc tính của cả các phần tử và quan hệ. [1] Kiến trúc của một hệ thống phần mềm là một phép ẩn dụ, tương tự như kiến trúc của một tòa nhà. [2] Nó có chức năng như một bản thiết kế cho hệ thống và dự án đang phát triển, đưa ra các nhiệm vụ cần thiết để các nhóm thiết kế thực hiện. [3]
Kiến trúc phần mềm là việc đưa ra các lựa chọn cấu trúc cơ bản và phải thay đổi một khi được triển khai. Lựa chọn kiến trúc phần mềm bao gồm các tùy chọn cấu trúc cụ thể từ các khả năng trong thiết kế của phần mềm . Ví dụ, các hệ thống điều khiển phương tiện phóng Tàu con thoi có yêu cầu là rất nhanh và rất đáng tin cậy. Do đó, cần phải chọn một ngôn ngữ tính toán thời gian thực thích hợp. Ngoài ra, để đáp ứng nhu cầu về độ tin cậy, lựa chọn có thể được thực hiện để có nhiều bản sao dự phòng và được sản xuất độc lập của chương trình, đồng thời chạy các bản sao này trên phần cứng độc lập trong khi kiểm tra chéo kết quả.
Việc lập hồ sơ kiến trúc phần mềm tạo điều kiện giao tiếp giữa các bên liên quan , nắm bắt các quyết định sớm về thiết kế cấp cao và cho phép sử dụng lại các thành phần thiết kế giữa các dự án.
Các ý kiến khác nhau tùy theo phạm vi của kiến trúc phần mềm: [5]
Không có sự phân biệt rõ ràng giữa kiến trúc phần mềm so với thiết kế và kỹ thuật yêu cầu (xem Các trường liên quan bên dưới). Tất cả chúng đều là một phần của một "chuỗi ý định" từ ý định cấp cao đến các chi tiết cấp thấp. [11] : 18
Đặc trưng
Kiến trúc phần mềm thể hiện những điều sau:
Nhiều bên liên quan: hệ thống phần mềm phải phục vụ cho nhiều bên liên quan như người quản lý doanh nghiệp, chủ sở hữu, người dùng và người vận hành. Các bên liên quan này đều có mối quan tâm riêng của họ đối với hệ thống. Cân bằng những mối quan tâm này và chứng minh rằng chúng được giải quyết là một phần của việc thiết kế hệ thống. [4] : 29–31 Điều này ngụ ý rằng kiến trúc liên quan đến việc giải quyết nhiều mối quan tâm và các bên liên quan, và có tính chất đa ngành.
Tách các mối quan tâm : cách thiết lập để các kiến trúc sư giảm bớt sự phức tạp là tách các mối quan tâm thúc đẩy thiết kế. Tài liệu kiến trúc cho thấy rằng tất cả các mối quan tâm của các bên liên quan được giải quyết bằng cách mô hình hóa và mô tả kiến trúc từ các quan điểm riêng biệt liên quan đến các mối quan tâm khác nhau của các bên liên quan. [12] Các mô tả riêng biệt này được gọi là các khung nhìn kiến trúc (xem ví dụ mô hình khung nhìn kiến trúc 4 + 1 ).
Định hướng chất lượng: các phương pháp tiếp cận thiết kế phần mềm cổ điển (ví dụ Lập trình có cấu trúc của Jackson ) được thúc đẩy bởi chức năng yêu cầu và luồng dữ liệu qua hệ thống, nhưng thông tin chi tiết hiện tại [4] : 26–28 là kiến trúc của hệ thống phần mềm chặt chẽ hơn liên quan đến các thuộc tính chất lượng của nó như khả năng chịu lỗi , khả năng tương thích ngược , khả năng mở rộng , độ tin cậy , khả năng bảo trì , tính khả dụng , bảo mật, khả năng sử dụng và các đặc điểm khác như vậy . Mối quan tâm của các bên liên quan thường chuyển thành các yêu cầuvề các thuộc tính chất lượng này, được gọi khác nhau là các yêu cầu phi chức năng, các yêu cầu phụ chức năng, các yêu cầu về hành vi hoặc các yêu cầu thuộc tính chất lượng.
Các kiểu định kỳ: giống như kiến trúc xây dựng, chuyên ngành kiến trúc phần mềm đã phát triển các cách tiêu chuẩn để giải quyết các mối quan tâm định kỳ. Những "cách chuẩn" này được gọi bằng nhiều tên khác nhau ở nhiều mức độ trừu tượng khác nhau. Các thuật ngữ phổ biến cho các giải pháp lặp lại là phong cách kiến trúc, [11] : 273–277 chiến thuật, [4] : 70–72 kiến trúc tham chiếu [13] [14] và mô hình kiến trúc . [4] : 203–205
Tính toàn vẹn về mặt khái niệm: một thuật ngữ được Fred Brooks đưa ra trong cuốn sách The Mythical Man-Month năm 1975 của ông để biểu thị ý tưởng rằng kiến trúc của một hệ thống phần mềm thể hiện một tầm nhìn tổng thể về những gì nó nên làm và cách nó nên làm. Tầm nhìn này nên được tách ra khỏi việc thực hiện nó. Kiến trúc sư đảm nhận vai trò "người giữ tầm nhìn", đảm bảo rằng các bổ sung vào hệ thống phù hợp với kiến trúc, do đó duy trì tính toàn vẹn của khái niệm . [15] : 41–50
Ràng buộc về nhận thức: một quan sát lần đầu tiên được thực hiện trong một bài báo năm 1967 của nhà lập trình máy tính Melvin Conway rằng các tổ chức thiết kế hệ thống bị ràng buộc phải tạo ra các thiết kế là bản sao của cấu trúc truyền thông của các tổ chức này. Đối với tính toàn vẹn của khái niệm, chính Fred Brooks là người đã giới thiệu nó với nhiều khán giả hơn khi ông trích dẫn bài báo và ý tưởng trong tác phẩm kinh điển lịch lãm The Mythical Man-Month của mình , gọi nó là "Định luật Conway".
Động lực
Kiến trúc phần mềm là một phần trừu tượng "có thể nắm bắt được về mặt trí tuệ" của một hệ thống phức tạp. [4] : 5–6 Sự trừu tượng này cung cấp một số lợi ích: