Kiến trúc phần mềm vs Kiến trúc hệ thống so với sơ đồ Class?


11

Tôi khá bối rối về các điều khoản sau đây:

Kiến trúc phần mềm

Kiến trúc ứng dụng phần mềm là quá trình xác định một giải pháp có cấu trúc đáp ứng tất cả các yêu cầu kỹ thuật và vận hành, đồng thời tối ưu hóa các thuộc tính chất lượng phổ biến như hiệu suất, bảo mật và khả năng quản lý. Nó liên quan đến một loạt các quyết định dựa trên một loạt các yếu tố và mỗi quyết định này có thể có tác động đáng kể đến chất lượng, hiệu suất, khả năng bảo trì và thành công chung của ứng dụng. ( microsoft )

Kiến Trúc Hệ Thống

Kiến trúc hệ thống là một mô hình khái niệm xác định cấu trúc, hành vi và nhiều khung nhìn của một hệ thống. 1 Mô tả kiến ​​trúc là một mô tả chính thức và đại diện cho một hệ thống, được tổ chức theo cách hỗ trợ lý luận về các cấu trúc và hành vi của hệ thống ( wiki )

Sơ đồ lớp

Trong công nghệ phần mềm, sơ đồ lớp trong Ngôn ngữ mô hình thống nhất (UML) là một loại sơ đồ cấu trúc tĩnh mô tả cấu trúc của hệ thống bằng cách hiển thị các lớp của hệ thống, thuộc tính, hoạt động (hoặc phương thức) của chúng và mối quan hệ giữa các đối tượng. ( wiki )

Nếu tôi đọc những mô tả này, tất cả những điều này mô tả sự tương tác giữa các mô-đun khác nhau của ứng dụng. Tuy nhiên, sự khác biệt giữa những điều này là gì?
Những gì tôi nghĩ / đã cố gắng để so sánh các điều khoản này :

  • Các sơ đồ lớp không phải là một dạng kiến ​​trúc hệ thống, bởi vì mô tả ở trên ( structure, behavior, and more views of a system) ngụ ý rằng không có chi tiết triển khai nào trong một kiến ​​trúc trong khi các sơ đồ lớp mô tả việc thực hiện và có lẽ theo hướng thiết kế hơn là kiến ​​trúc?
  • Tôi nghĩ kiến ​​trúc hệ thống là một kiến ​​trúc cũng bao gồm các tương tác bên ngoài (như cơ sở dữ liệu) trong khi kiến ​​trúc phần mềm tập trung vào chính ứng dụng?

1
Có lẽ Biểu đồ lớp là một đầu ra của hoạt động Kiến trúc phần mềm, theo cách tương tự như bản thiết kế của tòa nhà là đầu ra của kiến ​​trúc sư của tòa nhà ...
FrustratedWithFormsDesigner

Câu trả lời:


7

Kiến trúc hệ thống mô tả các thành phần của hệ thống. Ví dụ: bạn có thể có một hệ thống nhập đơn hàng bao gồm:

Web Front End, Dịch vụ lớp doanh nghiệp và Lưu trữ dữ liệu.

Vì vậy, bạn nên một sơ đồ cấp cao cho thấy điều này.

Kiến trúc ứng dụng phần mềm mô tả kiến ​​trúc của một thành phần cụ thể. Ví dụ, một trong những thành phần của hệ thống nhập đơn hàng là giao diện người dùng web. Kiến trúc ứng dụng sẽ hiển thị các lớp và tương tác khác nhau của thành phần đó. UI Responsive, Model View Controller, dịch vụ web out out, cách ghi nhật ký sẽ được thực hiện, v.v. Nó đưa ra và ý tưởng của từng thành phần sẽ được xây dựng và các lớp trong thành phần đó là một phần của hệ thống lớn hơn.

thường là một sơ đồ chi tiết hơn cho thấy cách thức thành phần đó sẽ được tạo ra.

Cuối cùng, Biểu đồ lớp đi sâu hơn vào kiến ​​trúc ứng dụng phần mềm. Ví dụ, hợp đồng cho giao diện đăng nhập trông như thế nào? Cách xem sẽ tương tác với Bộ điều khiển ... và cứ thế. Chúng sẽ chi tiết hơn về kiến ​​trúc ứng dụng phần mềm cho một thành phần cụ thể của hệ thống.

Cần có nhiều trong số này nếu thành phần cụ thể là lớn và phức tạp.


2

Một số điểm bổ sung:

  • Hệ thống là thuật ngữ rộng nhất và thường ở mức cao nhất, ít chi tiết nhất.
  • Một phần của hệ thống có thể được phân loại là phần mềm.
  • Một phần của phần mềm có thể được mô tả bằng sơ đồ lớp.

Cuối cùng nhưng không kém phần quan trọng: kiến ​​trúc là về những lựa chọn một lần khó hoặc không thể quay lại sau mà không xây dựng lại mọi thứ. Định nghĩa tốt nhất về kiến ​​trúc, khiến nó khác biệt so với thiết kế, là "mọi thứ thực sự tốn kém để thay đổi". Vì vậy, trong kiến ​​trúc, bạn thường sẽ tìm thấy sự lựa chọn cho ngôn ngữ lập trình, hệ điều hành, thương hiệu của cơ sở dữ liệu quan hệ, bất cứ điều gì khóa bạn vào một loại giải pháp. Vì vậy, những gì được phân loại là kiến ​​trúc cũng phụ thuộc vào chính hệ thống và làm thế nào (trong) nó linh hoạt liên quan đến khía cạnh.


0

Các sơ đồ lớp khá khác biệt so với hai thuật ngữ còn lại - chúng cho thấy các lớp cung cấp cho các lớp khác và cách chúng tương tác với nhau. Tuy nhiên, thuật ngữ 'kiến trúc hệ thống' và 'kiến trúc phần mềm' tạo ra sự nhầm lẫn và yêu cầu làm rõ thêm.

Điều quan trọng là phải nhận ra rằng một "hệ thống" không chỉ liên quan đến các thành phần phần mềm mà còn các thành phần khác như các thành phần phần cứng. Nếu một hệ thống chỉ chứa một hệ thống phần mềm, thì không có sự khác biệt giữa cả hai điều khoản. Tuy nhiên, rõ ràng, nếu một hệ thống chứa các thành phần phi phần mềm khác thì kiến ​​trúc phần mềm sẽ khác biệt đáng kể so với kiến ​​trúc hệ thống của hệ thống.


Kiến trúc hệ thống cũng nên chứa một cái gì đó giống như một mô-đun GUI? @Tushar
KingBoomie

Vâng, nó có thể và nó không cần phải là một thành phần phần mềm. @RickBeeloo
Tushar

Nhưng bạn sẽ cần một lớp trong phần mềm để chấp nhận đầu vào của người dùng và hiển thị một cái gì đó cho người dùng? Vì vậy, nó nên là một thành phần phần mềm là tốt?
KingBoomie

Có và không. Không phải tất cả người tiêu dùng của một hệ thống phần mềm đều là con người :)
Tushar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.