Công ty phần mềm Phi Long

Trụ sở chính Số 150 Nguyễn Huy Tự, Phường Bắc Hà, TP Hà Tĩnh, Tỉnh Hà Tĩnh
Văn phòng đại diện tại Hà Nội : số 79 Hồ Tùng Mậu, Cầu Giấy, Hà Nội
Phone+84 949 171 916
Kiến trúc phần mềm là gì

Kiến trúc phần mềm là gì

(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]

  • Cấu trúc hệ thống vĩ mô : điều này đề cập đến kiến ​​trúc như một phần trừu tượng cấp cao hơn của hệ thống phần mềm bao gồm một tập hợp các thành phần tính toán cùng với các trình kết nối mô tả sự tương tác giữa các thành phần này. [6]
  • Nội dung quan trọng - bất kể đó là gì : điều này đề cập đến thực tế là các kiến ​​trúc sư phần mềm nên quan tâm đến những quyết định có ảnh hưởng lớn đến hệ thống và các bên liên quan của nó. [7]
  • Đó là điều cơ bản để hiểu một hệ thống trong môi trường của nó [8]
  • Những thứ mà mọi người cho là khó thay đổi : vì việc thiết kế kiến ​​trúc diễn ra ở giai đoạn đầu của vòng đời hệ thống phần mềm, kiến ​​trúc sư nên tập trung vào các quyết định "phải" đúng ngay lần đầu tiên. Theo dòng suy nghĩ này, các vấn đề thiết kế kiến ​​trúc có thể trở thành phi kiến ​​trúc một khi tính không thể đảo ngược của chúng có thể được khắc phục. [7]
  • Tập hợp các quyết định về thiết kế kiến ​​trúc : kiến ​​trúc phần mềm không nên được coi chỉ đơn thuần là một tập hợp các mô hình hoặc cấu trúc, mà nên bao gồm các quyết định dẫn đến các cấu trúc cụ thể này và cơ sở lý luận đằng sau chúng. [9] Cái nhìn sâu sắc này đã dẫn đến nghiên cứu đáng kể về quản lý kiến ​​thức kiến ​​trúc phần mềm . [10]

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:

  • Nó cung cấp cơ sở để phân tích hành vi của hệ thống phần mềm trước khi hệ thống được xây dựng. [2] Khả năng xác minh rằng một hệ thống phần mềm trong tương lai đáp ứng nhu cầu của các bên liên quan mà không thực sự phải xây dựng nó thể hiện khả năng tiết kiệm chi phí và giảm thiểu rủi ro đáng kể. [16] Một số kỹ thuật đã được phát triển để thực hiện các phân tích như vậy, chẳng hạn như ATAM hoặc bằng cách tạo ra một biểu diễn trực quan của hệ thống phần mềm.
  • Nó cung cấp cơ sở cho việc tái sử dụng các yếu tố và quyết định. [2] [4] : ​​35  Một kiến ​​trúc phần mềm hoàn chỉnh hoặc các phần của nó, như các chiến lược và quyết định kiến ​​trúc riêng lẻ, có thể được sử dụng lại trên nhiều hệ thống mà các bên liên quan yêu cầu các thuộc tính hoặc chức năng chất lượng tương tự, tiết kiệm chi phí thiết kế và giảm thiểu rủi ro khi thiết kế những sai lầm.
  • Nó hỗ trợ các quyết định thiết kế ban đầu ảnh hưởng đến tuổi thọ phát triển, triển khai và bảo trì của hệ thống. [4] : 31  Việc đưa ra các quyết định sớm, có tác động cao là điều quan trọng để ngăn chặn việc vượt quá kế hoạch và ngân sách .
  • Nó tạo điều kiện giao tiếp với các bên liên quan, góp phần vào một hệ thống đáp ứng tốt hơn nhu cầu của họ. [4] : 29–31 Trao  đổi về các hệ thống phức tạp theo quan điểm của các bên liên quan giúp họ hiểu được hậu quả của các yêu cầu đã nêu và các quyết định thiết kế dựa trên chúng. Kiến trúc mang lại khả năng giao tiếp về các quyết định thiết kế trước khi hệ thống được triển khai, khi chúng vẫn còn tương đối dễ thích ứng.
  • Nó giúp quản lý rủi ro. Kiến trúc phần mềm giúp giảm thiểu rủi ro và khả năng thất bại. [11] : 18 
  • Nó cho phép giảm chi phí . Kiến trúc phần mềm là một phương tiện để quản lý rủi ro và chi phí trong các dự án CNTT phức tạp. ( theo bách khoa toàn thư wikipedia)