04-Design - Architecture

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 32

Thiết kế kiến trúc phần mềm

Nội dung

 Khái niệm, thuật ngữ


 Các mô hình kiến trúc
 Các quyết định khi thiết kế
 Quy trình thiết kế
Kiến trúc phần mềm

 Kiến trúc phần mềm là các cấu trúc của hệ


thống được tạo nên bởi
– Các thành phần
– Các thuộc tính của từng thành phần có thể thấy từ
bên ngoài
– Mối quan hệ giữa các thành phần
Các thành phần trong kiến trúc
 Các thành phần trong kiến trúc có thể là:
– Cấu trúc mô đun (module structures)
– Cấu trúc thành phần – kết nối (component-and-connector
structures)
– Cấu trúc phân phối (allocation structures)
 Mỗi loại cấu trúc thể hiện một khía cạnh khác nhau của hệ
thống
 Liên quan đến nhau

Tham khảo thêm tại:


http://www.ece.ubc.ca/~matei/EECE417/BASS/ch02lev1sec5.html
Cấu trúc mô đun
 Thể hiện hệ thống là tập các phần mã
nguồn (classes, layers,…)
 Trả lời các câu hỏi
– Các chức năng chính của từng mô đun là gì?
– Mối quan hệ phụ thuộc giữa các mô đun

5
Cấu trúc thành phần – kết nối
 Thể hiện các thành phần của hệ thống và sự
tương tác giữa các thành phần trong thời gian
thực thi (runtime)
 Trả lời các câu hỏi
– Thành phần nào là thành phần chính và tương tác
với các thành phần khác như thế nào?
– Phần nào của hệ thống sẽ được nhân bản
(duplicated)?
– Dữ liệu được xử lý trong hệ thống như thế nào?
– Những phần nào có thể chạy song song?

6
Cấu trúc phân phối
 Thể hiện mối quan hệ giữa phần mềm và
các phần khác (CPU, file systems,
networks,…) trong hệ thống
 Trả lời các câu hỏi
– Thành phần nào sẽ chạy trên bộ xử lý nào?
– Các mô đun sẽ được lưu trữ trên thư mục, file
nào?
– Các mô đun được phân công cho đội phát
triển như thế nào?

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

Ví dụ: Client – Server


 Servers cung cấp các dịch vụ; Clients yêu cầu và sử
dụng các dịch vụ
 Ứng dụng được cài đặt tại Clients (PCs)
 Dữ liệu được lưu trữ và quản trị tại Servers
– Sử dụng hệ quản trị cơ sở dữ liệu Oracle, SQL Server,…
 Một số trường hợp Clients chứa các dịch vụ riêng;
các trường hợp khác Clients yêu cầu và sử dụng
mọi thứ từ Servers.
Kiến trúc phần mềm

 Kiến trúc phần mềm hỗ trợ


– Phân tích khả năng đáp ứng yêu cầu của hệ thống
– Nghiên cứu các giải pháp thay thế
– Giảm rủi ro của việc phát triển phần mềm
– Sử dụng lại
Kiến trúc phần mềm tốt
 Kết dính cao – high cohesion
– Các yếu tố bên trong mỗi module có quan hệ chặt
chẽ với nhau
 Ghép nối lỏng lẻo - low coupling
– Các modules không cần biết nhiều về modules
khác (ít phụ thuộc vào nhau)
Quy trình thiết kế kiến trúc

 Tổ chức hệ thống
– Chia hệ thống thành các phân hệ và xác định
phương thức liên kết các phân hệ
 Mô hình điều khiển
– Xác định cách điều khiển giữa các phân hệ
 Phân rã phân hệ
– Chia nhỏ mỗi phân hệ thành các môdun
Một số mô hình kiến trúc

 Dữ liệu tập trung


 Client – Server
 Phân tầng
 MVC
 Mô hình hướng đối tượng
Mô hình dữ liệu tập trung
Mô hình dữ liệu tập trung
Mô hình dữ liệu tập trung

 Ưu điểm
– Tiện lợi cho chia sẻ dữ liệu lớn
– Sự độc lập giữa các phân hệ
 Nhược điểm
– Khó thay đổi cấu trúc dữ liệu
Mô hình Client – Server
Mô hình Client – Server
Mô hình Client – Server
Mô hình Client – Server

 Ưu điểm
– Hiệu quả sử dụng cao
– Dễ dàng mở rộng thêm dịch vụ
– Dễ dàng nâng cấp
 Nhược điểm
– Số lượng client có thể tăng giảm mà phía server
không biết
– Server bị hỏng
Biến thể của Client – Server
Biến thể của Client – Server
Đánh giá
 Ưu điểm
– Chia sẽ tài nguyên
– Thuận tiện cho việc bảo trì
– An ninh: dữ liệu được giữ ở server nên được
bảo vệ tốt hơn
 Nhược điểm
– Nghiệp vụ và dữ liệu thường được để chung
phía server
– Single point of failure

22
Mô hình phân tầng
 Nhóm các chức năng có liên quan chặt chẽ vào chung
một lớp
 Các lớp được sắp xếp chồng lên nhau
 Chỉ lớp trên mới gọi được lớp dưới
Mô hình phân tầng
Kiểu phân lớp
 Ưu điểm
– Cho phép thay thế từng lớp một (giữ nguyên
giao diện với các lớp khác)
– Thuận tiện cho việc kiểm thử
– Dễ quản lý, dễ thay đổi
– Khả năng tái sử dụng cao
 Nhược điểm
– Hiệu năng
– Tương tác giữa các lớp theo thiết kế

25
Mô hình phân tầng

 Bố trí các tầng như thế nào?


Mô hình phân tầng

 Bố trí các tầng như thế nào?


Mô hình phân tầng

 Bố trí các tầng như thế nào?


Mô hình MVC

 Model View Controller


– 1 Model, nhiều View
– Mỗi View có một Controller
Kiến trúc hướng đối tượng

 Che dấu thông tin


 Hệ thống được phân rã thành một tập các đối
tượng có tương tác với nhau
Các quyết định khi thiết kế

 Có kiến trúc mẫu nào không? (của một ứng


dụng đang được sử dụng nào đó)
 Làm thế nào để tổ chức ứng dụng? (nghĩa là
chia ứng dụng thành các phân hệ)
 Tương tác giữa các phân hệ như thế nào?
 Phân rã các phân hệ như thế nào?
 Những tài liệu mô tả kiến trúc?
 Làm thế nào để đánh giá?
Tổng kết

 Khái niệm kiến trúc phần mềm


 Một số kiểu kiến trúc

You might also like