Kiến trúc phân cấp
Kiến trúc phân cấp xem toàn bộ hệ thống như một cấu trúc phân cấp, trong đó hệ thống phần mềm được phân tách thành các mô-đun logic hoặc hệ thống con ở các cấp độ khác nhau trong hệ thống phân cấp. Cách tiếp cận này thường được sử dụng trong việc thiết kế phần mềm hệ thống như giao thức mạng và hệ điều hành.
Trong thiết kế phân cấp phần mềm hệ thống, hệ thống con cấp thấp cung cấp dịch vụ cho các hệ thống con cấp trên liền kề của nó, hệ thống này gọi các phương thức ở cấp thấp hơn. Lớp dưới cung cấp nhiều chức năng cụ thể hơn như dịch vụ I / O, giao dịch, lập lịch, dịch vụ bảo mật, v.v. Lớp giữa cung cấp nhiều chức năng phụ thuộc miền hơn như logic nghiệp vụ và dịch vụ xử lý lõi. Và, lớp trên cung cấp nhiều chức năng trừu tượng hơn dưới dạng giao diện người dùng như GUI, cơ sở lập trình shell, v.v.
Nó cũng được sử dụng trong việc tổ chức các thư viện lớp như thư viện lớp .NET trong hệ thống phân cấp không gian tên. Tất cả các kiểu thiết kế có thể thực hiện kiến trúc phân cấp này và thường kết hợp với các kiểu kiến trúc khác.
Phong cách kiến trúc phân cấp được chia thành:
- Main-subroutine
- Master-slave
- Máy ảo
Chương trình con chính
Mục đích của phong cách này là sử dụng lại các mô-đun và tự do phát triển các mô-đun hoặc chương trình con riêng lẻ. Theo phong cách này, một hệ thống phần mềm được chia thành các chương trình con bằng cách sử dụng sàng lọc từ trên xuống theo chức năng mong muốn của hệ thống.
Những cải tiến này dẫn đầu theo chiều dọc cho đến khi các mô-đun phân hủy đủ đơn giản để có trách nhiệm độc lập riêng của nó. Chức năng có thể được sử dụng lại và chia sẻ bởi nhiều người gọi ở các lớp trên.
Có hai cách mà dữ liệu được truyền dưới dạng tham số cho các chương trình con, đó là:
Pass by Value - Chương trình con chỉ sử dụng dữ liệu quá khứ, nhưng không thể sửa đổi nó.
Pass by Reference - Các chương trình con sử dụng cũng như thay đổi giá trị của dữ liệu được tham chiếu bởi tham số.
Ưu điểm
Dễ dàng phân rã hệ thống dựa trên sự tinh chỉnh phân cấp.
Có thể được sử dụng trong một hệ thống con của thiết kế hướng đối tượng.
Nhược điểm
Dễ bị tổn thương vì nó chứa dữ liệu được chia sẻ toàn cầu.
Khớp nối chặt chẽ có thể gây ra nhiều gợn sóng hơn khi thay đổi.
Chủ-nô lệ
Cách tiếp cận này áp dụng nguyên tắc 'chia để trị' và hỗ trợ tính toán lỗi và tính chính xác. Nó là một sửa đổi của kiến trúc chương trình con chính để cung cấp độ tin cậy của hệ thống và khả năng chịu lỗi.
Trong kiến trúc này, các nô lệ cung cấp các dịch vụ trùng lặp cho cái chủ và cái chủ chọn một kết quả cụ thể trong số các nô lệ bằng một chiến lược lựa chọn nhất định. Các nô lệ có thể thực hiện cùng một nhiệm vụ chức năng bằng các thuật toán và phương pháp khác nhau hoặc chức năng hoàn toàn khác. Nó bao gồm tính toán song song trong đó tất cả các nô lệ có thể được thực thi song song.
Việc triển khai mẫu Master-Slave tuân theo năm bước sau:
Chỉ định cách tính toán nhiệm vụ có thể được chia thành một tập hợp các nhiệm vụ con bằng nhau và xác định các dịch vụ con cần thiết để xử lý một nhiệm vụ con.
Chỉ định cách tính kết quả cuối cùng của toàn bộ dịch vụ với sự trợ giúp của các kết quả thu được từ việc xử lý các nhiệm vụ con riêng lẻ.
Xác định giao diện cho dịch vụ con được xác định trong bước 1. Nó sẽ được thực hiện bởi máy chủ và được sử dụng bởi máy chủ để ủy quyền xử lý các nhiệm vụ con riêng lẻ.
Thực hiện các thành phần phụ theo các thông số kỹ thuật đã phát triển ở bước trước.
Thực hiện tổng thể theo các thông số kỹ thuật đã phát triển ở bước 1 đến 3.
Các ứng dụng
Thích hợp cho các ứng dụng mà độ tin cậy của phần mềm là vấn đề quan trọng.
Ứng dụng rộng rãi trong các lĩnh vực tính toán song song và phân tán.
Ưu điểm
Tính toán nhanh hơn và khả năng mở rộng dễ dàng.
Cung cấp sự mạnh mẽ vì nô lệ có thể được nhân bản.
Slave có thể được thực hiện khác nhau để giảm thiểu lỗi ngữ nghĩa.
Nhược điểm
Chi phí giao tiếp.
Không phải tất cả các vấn đề đều có thể được phân chia.
Vấn đề khó thực hiện và tính di động.
Kiến trúc máy ảo
Kiến trúc Máy ảo giả vờ một số chức năng, không có nguồn gốc từ phần cứng và / hoặc phần mềm mà nó được triển khai. Một máy ảo được xây dựng dựa trên một hệ thống hiện có và cung cấp một trừu tượng ảo, một tập hợp các thuộc tính và hoạt động.
Trong kiến trúc máy ảo, máy chủ sử dụng 'cùng' dịch vụ con 'từ máy phụ và thực hiện các chức năng như phân chia công việc, gọi nô lệ và kết hợp các kết quả. Nó cho phép các nhà phát triển mô phỏng và thử nghiệm các nền tảng chưa được xây dựng và mô phỏng các chế độ "thảm họa" sẽ quá phức tạp, tốn kém hoặc nguy hiểm để thử nghiệm với hệ thống thực.
Trong hầu hết các trường hợp, một máy ảo tách một ngôn ngữ lập trình hoặc môi trường ứng dụng khỏi một nền tảng thực thi. Mục tiêu chính là cung cấpportability. Việc diễn giải một mô-đun cụ thể thông qua Máy ảo có thể được coi là -
Công cụ thông dịch chọn một lệnh từ mô-đun đang được thông dịch.
Dựa trên hướng dẫn, động cơ cập nhật trạng thái bên trong của máy ảo và quá trình trên được lặp lại.
Hình dưới đây cho thấy kiến trúc của cơ sở hạ tầng VM tiêu chuẩn trên một máy vật lý duy nhất.
Các hypervisor, cũng được gọi là virtual machine monitor, chạy trên hệ điều hành chủ và phân bổ tài nguyên phù hợp cho mỗi hệ điều hành khách. Khi khách thực hiện cuộc gọi hệ thống, hypervisor sẽ chặn và chuyển nó thành lệnh gọi hệ thống tương ứng được hỗ trợ bởi hệ điều hành chủ. Hypervisor kiểm soát mỗi máy ảo truy cập vào CPU, bộ nhớ, lưu trữ liên tục, thiết bị I / O và mạng.
Các ứng dụng
Kiến trúc máy ảo phù hợp trong các lĩnh vực sau:
Thích hợp để giải quyết một vấn đề bằng mô phỏng hoặc dịch thuật nếu không có giải pháp trực tiếp.
Các ứng dụng mẫu bao gồm trình thông dịch của vi lập trình, xử lý XML, thực thi ngôn ngữ lệnh script, thực thi hệ thống dựa trên quy tắc, ngôn ngữ lập trình định kiểu thông dịch viên Smalltalk và Java.
Các ví dụ phổ biến về máy ảo là trình thông dịch, hệ thống dựa trên quy tắc, trình bao cú pháp và bộ xử lý ngôn ngữ lệnh.
Ưu điểm
Tính di động và tính độc lập của nền tảng máy.
Tính đơn giản của phát triển phần mềm.
Cung cấp tính linh hoạt thông qua khả năng ngắt và truy vấn chương trình.
Mô phỏng cho mô hình làm việc với thảm họa.
Giới thiệu các sửa đổi trong thời gian chạy.
Nhược điểm
Trình thông dịch thực hiện chậm do tính chất của trình thông dịch.
Có một chi phí hiệu suất do tính toán bổ sung liên quan đến việc thực thi.
Kiểu phân lớp
Theo cách tiếp cận này, hệ thống được phân tách thành một số lớp cao hơn và thấp hơn trong một hệ thống phân cấp, và mỗi lớp có trách nhiệm duy nhất trong hệ thống.
Mỗi lớp bao gồm một nhóm các lớp liên quan được đóng gói trong một gói, trong một thành phần được triển khai hoặc dưới dạng một nhóm chương trình con ở định dạng thư viện phương thức hoặc tệp tiêu đề.
Mỗi lớp cung cấp dịch vụ cho lớp bên trên nó và phục vụ như một máy khách cho lớp bên dưới, tức là yêu cầu lớp i +1 gọi các dịch vụ được cung cấp bởi lớp i thông qua giao diện của lớp i. Phản hồi có thể quay trở lại lớp tôi +1 nếu nhiệm vụ được hoàn thành; nếu không lớp tôi liên tục gọi các dịch vụ từ lớp i -1 bên dưới.
Các ứng dụng
Kiểu phân lớp phù hợp trong các lĩnh vực sau:
Các ứng dụng liên quan đến các lớp dịch vụ riêng biệt có thể được tổ chức theo thứ bậc.
Bất kỳ ứng dụng nào có thể được phân tách thành các phần dành riêng cho ứng dụng và nền tảng cụ thể.
Các ứng dụng có sự phân chia rõ ràng giữa các dịch vụ cốt lõi, dịch vụ quan trọng và dịch vụ giao diện người dùng, v.v.
Ưu điểm
Thiết kế dựa trên mức độ trừu tượng tăng dần.
Cung cấp tính độc lập nâng cao khi các thay đổi đối với chức năng của một lớp ảnh hưởng đến nhiều nhất hai lớp khác.
Tách giao diện tiêu chuẩn và việc triển khai nó.
Được triển khai bằng cách sử dụng công nghệ dựa trên thành phần giúp hệ thống cho phép plug-and-play các thành phần mới dễ dàng hơn nhiều.
Mỗi lớp có thể là một máy trừu tượng được triển khai độc lập hỗ trợ tính di động.
Dễ dàng phân rã hệ thống dựa trên định nghĩa của các nhiệm vụ theo cách tinh chỉnh từ trên xuống
Các triển khai khác nhau (với các giao diện giống hệt nhau) của cùng một lớp có thể được sử dụng thay thế cho nhau
Nhược điểm
Nhiều ứng dụng hoặc hệ thống không dễ dàng được cấu trúc theo kiểu nhiều lớp.
Hiệu suất thời gian chạy thấp hơn vì yêu cầu của khách hàng hoặc phản hồi đối với khách hàng phải trải qua một số lớp tiềm năng.
Ngoài ra còn có các mối quan tâm về hiệu suất về chi phí trên việc sắp xếp và đệm dữ liệu theo từng lớp.
Việc mở giao tiếp giữa các lớp có thể gây ra bế tắc và “bắc cầu” có thể gây ra khớp nối chặt chẽ.
Các ngoại lệ và xử lý lỗi là một vấn đề trong kiến trúc phân lớp, vì các lỗi trong một lớp phải lan rộng lên tất cả các lớp đang gọi