Bài giảng Kiến trúc phần mềm - Chương 3: Các mẫu kiến trúc phổ dụng cung cấp cho người học các kiến thức: Kiến trúc trong các hệ thống phần mềm, các mẫu kiến trúc phổ dụng, kết chương. Mời các bạn cùng tham khảo nội dung chi tiết.
Trang 1Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
áp dụng nhất quán thông qua tất cả các bước của dự án phần mềm
₫ược
toàn vẹn kiến trúc ₫ược giữ nguyên
Trang 2Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
database, object, ADT
các thành phần gọi thủ tục, pipe, phát tán sự kiện
dựng : chữ ký, ₫iều kiện pre/post, ₫ặc tả RT
3.1 Kiến trúc trong các hệ thống phần mềm
Mẫu/Kiểu kiến trúc (Architecture Pattern/Style)
Trang 3Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
₫ường ống và lọc (Pipe and filters)
program & subroutines), các cấp có thứ bậc (Hierarchical layers),
hệ thống hướng ₫ối tượng (OO system)
luật (Rule-based system)
(Communicating processes), các hệ thống xử lý sự kiện (Event systems)
Blackboard
3.2 Các mẫu kiến trúc phổ dụng
Kiến trúc ₫ơn thể (Monolithic)
Đặc tả : Hệ thống chỉ gồm duy nhất 1 module Module này chứa
mọi thứ của chương trình :
Trang 4Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
© 2015
Môn : Kiến trúc phần mềm
Chương 3 : Các mẫu kiến trúc phổ dụng
Slide 7
Kiến trúc lô tuần tự (Batch Sequential)
Đặc tả : Chương trình gồm n phần mềm ₫ộc lập và ₫ược chạy
theo cơ chế tuần tự : phần mềm i chạy trước, khi xong rồi thìtruyền kết quả cho phần mềm thứ i+1 Mỗi phần mềm i trong lô
₫ược gọi là filter, nó xử lý dữ liệu ₫ầu vào theo ₫ịnh dạng xác ₫ịnh rồi tạo kết quả ₫ầu ra theo ₫ịnh dạng xác ₫ịnh
Filter Filter Filter Filterdata 1 data 2 data 3 data 4 data 5
3.2 Các mẫu kiến trúc phổ dụng
Kiến trúc lô tuần tự (Batch Sequential)
Tình huống nên dùng : trong các ứng dụng xử lý dữ liệu mà dữ
liệu nhập cần ₫ược xử lý bởi nhiều công ₫oạn khác nhau và cótính ₫ộc lập cao trước khi tạo ra kết quả cuối cùng
Ưu ₫iểm : dễ dàng thay ₫ổi/bảo trì/dùng lại từng filter của hệ
thống, phù hợp với nhiều hoạt ₫ộng nghiệp vụ, dễ dàng nâng cấpbằng cách thêm filter mới
Khuyết ₫iểm : 2 filter kề nhau cần tuân thủ ₫ịnh dạng dữ liệu
chung
Trang 5Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
© 2015
Môn : Kiến trúc phần mềm
Chương 3 : Các mẫu kiến trúc phổ dụng
Slide 9
Kiến trúc lô tuần tự (Batch Sequential)
Thí dụ : Thiết kế trực quan cửa sổ giao diện và dùng nó trong
phần mềm android
Chương trình thiết kế trực quan giao diện cửa sổứng dụng
Project Android quản lý ứng dụng androidNgười thiết kế
giao diện ₫ặc tả bản File XML
thiết kế
Chương trình android dùng giao diện ₫ược thiết kế
3.2 Các mẫu kiến trúc phổ dụng
Kiến trúc ₫ường ống và lọc (Pipe and filter Architecture)
Đặc tả : Nới rộng kiến trúc lô tuần tự lên tầm cao mới :
chúng có thể là các thread chạy trong 1 chương trình
Filter
Filter Filter
FilterFilter Filter
Trang 6Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
© 2015
Môn : Kiến trúc phần mềm
Chương 3 : Các mẫu kiến trúc phổ dụng
Slide 11
Kiến trúc ₫ường ống và lọc (Pipe and filter Architecture)
Tình huống nên dùng : trong các ứng dụng xử lý dữ liệu mà dữ
liệu nhập cần ₫ược xử lý bởi nhiều công ₫oạn khác nhau và cótính ₫ộc lập cao trước khi tạo ra kết quả cuối cùng
Ưu ₫iểm : dễ dàng thay ₫ổi/bảo trì/dùng lại từng filter của hệ
thống, phù hợp với nhiều hoạt ₫ộng nghiệp vụ, dễ dàng nâng cấp bằng cách thêm filter mới, hiệu quả cao hơn kiến trúc lô tuần tự
Khuyết ₫iểm : 2 filter kề nhau cần tuân thủ ₫ịnh dạng dữ liệu
Parser Phân tích
cú pháp
Phân tích ngữ nghĩa
Tạo code mục tiêucây cú pháp
hoàn chỉnh
cây ngữ nghĩa object codecây cú pháp
thô
Trang 7Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
© 2015
Môn : Kiến trúc phần mềm
Chương 3 : Các mẫu kiến trúc phổ dụng
Slide 13
Kiến trúc nhiều cấp (Layered architecture)
Đặc tả : Hệ thống gồm nhiều cấp chức năng dạng chồng lên
nhau, mỗi layer có chức năng cụ thể, rõ ràng và cung cấp cácdịch vụ cho layer ngay trên mình Layer cấp thấp nhất chứa cácdịch vụ cơ bản nhất và ₫ược dùng cho toàn hệ thống
Layer 1Layer 2
Layer nLayer n-1
interface sử dụng của layer 1
3.2 Các mẫu kiến trúc phổ dụng
Kiến trúc nhiều cấp (Layered architecture)
Tình huống nên dùng : xây dựng thêm khả năng mới trên hệ
thống có sẵn, hay khi có nhiều nhóm phát triển khác nhau, mỗinhóm chịu trách nhiệm về 1 layer chức năng cụ thể, hay khi cóyêu cầu bảo mật nhiều cấp
Ưu ₫iểm : cho phép hiệu chỉnh bên trong layer bất kỳ sao cho
interface không ₫ổi Có thể giải quyết 1 chức năng nào ₫ó (xácnhận user) ở nhiều cấp theo cách thức tăng dần
Khuyết ₫iểm : khó tách bạch chức năng của từng cấp, layer trên
khó tương tác với layer phía dưới nó nhưng không liền kề Hiệuquả giảm sút khi nhiều layer phải tương tác nhau ₫ể giải quyết 1 chức năng nào ₫ó
Trang 8Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
3.2 Các mẫu kiến trúc phổ dụng
Kiến trúc client-server (client-server Architecture)
Đặc tả : Hệ thống gồm 2 loại phần tử chức năng : server cung cấp
1 số dịch vụ, client là phần tử sử dụng dịch vụ bằng cách truy xuất
₫ến server tương ứng
Client dùng Server
Trang 9Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
© 2015
Môn : Kiến trúc phần mềm
Chương 3 : Các mẫu kiến trúc phổ dụng
Slide 17
Kiến trúc client-server (client-server Architecture)
Tình huống nên dùng : khi database dùng chung từ nhiều vị trí
khác nhau hay khi tải hệ thống thay ₫ổi ₫ộng (nhân bản server thành nhiều phần tử)
Ưu ₫iểm : server có thể phân tán tự do trên mạng.
Khuyết ₫iểm : ₫ộ hiệu quả phụ thuộc vào mạng và hệ thống nên
khó lường trước Nếu các server ₫ược quản lý bởi các tổ chứckhác nhau thì có vấn ₫ề về quản lý chúng
3.2 Các mẫu kiến trúc phổ dụng
Kiến trúc client-server (client-server Architecture)
Thí dụ : Hệ thống quản lý phim ảnh dùng mô hình client-server
Trang 10Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
© 2015
Môn : Kiến trúc phần mềm
Chương 3 : Các mẫu kiến trúc phổ dụng
Slide 19
Kiến trúc 3 ₫ối tác (3-tiers Architecture)
Đặc tả : Sự cải tiến của kiến trúc client-server Hệ thống gồm 3
loại phần tử chức năng : client, server, và server của server
cho client
serverdùng
3.2 Các mẫu kiến trúc phổ dụng
Kiến trúc 3 ₫ối tác (3-tiers Architecture)
Tình huống nên dùng : khi database dùng chung từ nhiều vị trí
khác nhau hay khi tải hệ thống thay ₫ổi ₫ộng (nhân bản server thành nhiều phần tử)
Ưu ₫iểm : server có thể phân tán tự do trên mạng.
Khuyết ₫iểm : ₫ộ hiệu quả phụ thuộc vào mạng và hệ thống nên
khó lường trước Nếu các server ₫ược quản lý bởi các tổ chứckhác nhau thì có vấn ₫ề về quản lý chúng
Trang 11Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
© 2015
Môn : Kiến trúc phần mềm
Chương 3 : Các mẫu kiến trúc phổ dụng
Slide 21
Kiến trúc 3 ₫ối tác (3-tiers Architecture)
Thí dụ : Hệ thống quản lý phim ảnh dùng mô hình 3-tiers
Client 1
Server tiếp nhận các request từ client và xử lý luận lý
Client 2 Client 3 Client n
Internet
DBMS ds thư viện
DBMS Films
DBMS Photo
DBMSthông tinInternet
3.2 Các mẫu kiến trúc phổ dụng
Kiến trúc n ₫ối tác (n-tiers Architecture)
Đặc tả : Sự tổng quát của kiến trúc 3-tiers Hệ thống gồm n loại
phần tử chức năng : client, server, và server của server,
Trang 12Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
© 2015
Môn : Kiến trúc phần mềm
Chương 3 : Các mẫu kiến trúc phổ dụng
Slide 23
Kiến trúc n ₫ối tác (n-tiers Architecture)
Tình huống nên dùng : khi database dùng chung từ nhiều vị trí
khác nhau hay khi tải hệ thống thay ₫ổi ₫ộng (nhân bản server thành nhiều phần tử)
Ưu ₫iểm : server có thể phân tán tự do trên mạng.
Khuyết ₫iểm : ₫ộ hiệu quả phụ thuộc vào mạng và hệ thống nên
khó lường trước Nếu các server ₫ược quản lý bởi các tổ chứckhác nhau thì có vấn ₫ề về quản lý chúng
3.2 Các mẫu kiến trúc phổ dụng
Kiến trúc n ₫ối tác (n-tiers Architecture)
Thí dụ : Hệ thống quản lý phim ảnh dùng mô hình n-tiers
Client 1
Server tiếp nhận các request từ client và xử lý luận lý
Client 2 Client 3 Client n
Internet
DBMS ds thư viện
DBMS Films
DBMS Photo
DBMSthông tinInternet
Trang 13Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
Đặc tả : Hệ thống gồm 3 thành phần luận lý tương tác lẫn nhau :
cho user
chuột… và gởi thông tin tương tác này tới View và/hoặc Model
3.2 Các mẫu kiến trúc phổ dụng
Kiến trúc MVC (Model-View-Controller)
Trang 14Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
Tình huống nên dùng : Hệ thống có nhiều cách ₫ể view và tương
tác với dữ liệu, hoặc ta chưa biết trước các yêu cầu tương lai về sựtương tác và biểu diễn dữ liệu của chương trình
Ưu ₫iểm : cho phép dữ liệu thay ₫ổi ₫ộc lập với cách thức thể hiện
nó và ngược lại
Khuyết ₫iểm : có thể cần nhiều code hơn và code có thể phức
tạp hơn khi mô hình dữ liệu và sự tương tác chỉ ở mức ₫ộ ₫ơngiản
3.2 Các mẫu kiến trúc phổ dụng
Kiến trúc MVC (Model-View-Controller)
Thí dụ : Hệ thống web dùng kiến trúc MVC :
Trang 15Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
Đặc tả : Hệ thống gồm 3 thành phần luận lý tương tác lẫn nhau :
cho user
chuột… và gởi thông tin tương tác này tới View và/hoặc Model
3.2 Các mẫu kiến trúc phổ dụng
Kiến trúc MVP (Model-View-Presenter)
Trang 16Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
Tình huống nên dùng : Hệ thống có nhiều cách ₫ể view và tương
tác với dữ liệu, hoặc ta chưa biết trước các yêu cầu tương lai về sựtương tác và biểu diễn dữ liệu của chương trình
Ưu ₫iểm : cho phép dữ liệu thay ₫ổi ₫ộc lập với cách thức thể hiện
nó và ngược lại
Khuyết ₫iểm : có thể cần nhiều code hơn và code có thể phức
tạp hơn khi mô hình dữ liệu và sự tương tác chỉ ở mức ₫ộ ₫ơngiản
3.2 Các mẫu kiến trúc phổ dụng
Kiến trúc MVP (Model-View-Presenter)
Thí dụ : Hệ thống web dùng kiến trúc MVC :
Trang 17Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
© 2015
Môn : Kiến trúc phần mềm
Chương 3 : Các mẫu kiến trúc phổ dụng
Slide 33
Kiến trúc kho (Repository Architecture)
Đặc tả : Tất cả dữ liệu của hệ thống ₫ược quản lý trong 1 kho
chứa tập trung, mọi thành phần chức năng của hệ thống ₫ều cóthể truy xuất kho chứa này Các thành phần không tương tác trựctiếp với nhau, chỉ thông qua kho chứa tập trung
Component 1
Kho dữ liệu (repository)Component 2 Component 3 Component n
3.2 Các mẫu kiến trúc phổ dụng
Kiến trúc kho (Repository Architecture)
Tình huống nên dùng : khi hệ thống tạo và chứa 1 lượng rất lớn
thông tin trong thời gian dài, hay trong các hệ thống dựa vào dữliệu, ở ₫ó việc chứa thông tin vào kho sẽ kích hoạt 1 tool hay 1 chức năng hoạt ₫ộng
Ưu ₫iểm : các thành phần ₫ộc lập nhau, không ai biết gì về ai
khác
Khuyết ₫iểm : kho là ₫iểm yếu nhất, nếu có lỗi sẽ ảnh hưởng
toàn bộ các thành phần chức năng Có vấn ₫ề về truy xuất ₫ồngthời kho, phân tán kho trên nhiều máy cũng khó khăn
Trang 18Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
© 2015
Môn : Kiến trúc phần mềm
Chương 3 : Các mẫu kiến trúc phổ dụng
Slide 35
Kiến trúc kho (Repository Architecture)
Thí dụ : Môi trường IDE gồm nhiều thành phần dùng chung kho
thông tin, mỗi tool tạo thông tin và ₫ể trong kho ₫ể các tool khácdùng
Trang 19Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
© 2015
Môn : Kiến trúc phần mềm
Chương 3 : Các mẫu kiến trúc phổ dụng
Slide 37
Kiến trúc hướng ₫ối tượng (Objects based Architecture)
Đối tượng : là nguyên tử cấu thành phần mềm, nó có 1 số tính
Kiến trúc hướng ₫ối tượng (Objects based Architecture)
Các nguyên tắc chính yếu của kiến trúc hướng ₫ối tượng :
Trang 20Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
© 2015
Môn : Kiến trúc phần mềm
Chương 3 : Các mẫu kiến trúc phổ dụng
Slide 39
Kiến trúc hướng ₫ối tượng (Objects based Architecture)
Ưu ₫iểm của kiến trúc hướng ₫ối tượng :
Kiến trúc hướng ₫ối tượng (Objects based Architecture)
Tình huống nên dùng : bất kỳ hệ thống phần mềm phức tạp nào.
Khuyết ₫iểm : là mẫu kiến trúc có ₫ộ tổng quát cao nên khi hiện
thực ta phải tốn nhiều chi phí ₫ể vận dụng nó
Trang 21Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
Trang 22Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
© 2015
Môn : Kiến trúc phần mềm
Chương 3 : Các mẫu kiến trúc phổ dụng
Slide 43
Kiến trúc các thành phần (Components based Architecture)
Ưu ₫iểm của kiến trúc các thành phần :
Kiến trúc các thành phần (Components based Architecture)
Tình huống nên dùng : bất kỳ hệ thống phần mềm phức tạp nào.
Khuyết ₫iểm : là mẫu kiến trúc có ₫ộ tổng quát cao nên khi hiện
thực ta phải tốn nhiều chi phí ₫ể vận dụng nó
Trang 23Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
Kiến trúc hướng dịch vụ (Service-Oriented Architecture)
Service : phần tử cung cấp 1 số chức năng ₫a dụng nào ₫ó và
thường ₫ã có sẵn Các nguyên tắc chính yếu của kiến trúc hướng dịch vụ là :
Trang 24Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
© 2015
Môn : Kiến trúc phần mềm
Chương 3 : Các mẫu kiến trúc phổ dụng
Slide 47
Kiến trúc hướng dịch vụ (SOA - Service-Oriented Architecture)
Ưu ₫iểm của kiến trúc hướng dịch vụ :
Kiến trúc hướng dịch vụ (SOA - Service-Oriented Architecture)
Tình huống nên dùng : bất kỳ hệ thống phần mềm phức tạp nào
mà muốn chạy trên nền Internet
Khuyết ₫iểm : ₫ộ hiệu quả phụ thuộc vào cơ sở hạ tầng mạng và
máy chạy service
Trang 25Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
thiết thường ₫ược gộp thành module
Trang 26Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
Process : là nguyên tử cấu thành phần mềm, nó là 1 phần mềm
chạy ₫ộc lập, mỗi process thực hiện 1 chức năng xác ₫ịnh
Connector : phương tiện tương tác (truyền thông báo) giữa các
Trang 27Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
3.2 Các mẫu kiến trúc phổ dụng
Kiến trúc dựa trên sự kiện (Event-based Architecture)
Emitter : là phần tử tạo và phát tán 1 hay nhiều sự kiện.
Handler : là phần tử muốn xử lý sự kiện, nó ₫ăng ký thủ tục xử lý
sự kiện vào danh sách xử lý của sự kiện tương ứng Khi sự kiện xảy ra, nó ₫ược kích hoạt chạy (bởi module quản lý sự kiện) Lưu ý thứ tự chạy các thủ tục xử lý sự kiện cho 1 sự kiện xác ₫ịnh làkhông xác ₫ịnh
Event chanel : là phương tiện truyền dẫn sự kiện từ emitter tới
handler
lẫn event handler Có thể có các dạng tương tác khác giữa các phần tử như gọi thủ tục, truy xuất dữ liệu
Trang 28Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
© 2015
Môn : Kiến trúc phần mềm
Chương 3 : Các mẫu kiến trúc phổ dụng
Slide 55
Kiến trúc dựa trên sự kiện (Event-based Architecture)
Tình huống nên dùng : trong các hệ thống :
Trang 29Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM
© 2015
Môn : Kiến trúc phần mềm
Chương 3 : Các mẫu kiến trúc phổ dụng
Slide 57
Kiến trúc bảng ₫en (Blackboard Architecture)
blackboard : là vùng nhớ toàn cục có cấu trúc của phần mềm, nó
chứa các ₫ối tượng của bài toán cần giải quyết, còn ₫ược gọi làcác nút, chúng ₫ược tổ chức dạng phân cấp
Knowledge sources : là những module chức năng chuyên dụng
có cách biểu diễn riêng biệt Mỗi KS ₫ược ₫ặc trưng bởi 1 tập các
₫iều kiện kích hoạt xác ₫ịnh và ₫oạn code xử lý dữ liệu từblackboard rồi ₫óng góp kết quả vào quá trình giải quyết bài toán
Control : là phần tử ₫iều khiển chung, nó cấu hình, chọn lựa và
thi hành các KS Việc xác ₫ịnh KS nào là dựa vào trạng thái của quá trình giải quyết bài toán (₫ược miêu tả trong blackboard)
3.2 Các mẫu kiến trúc phổ dụng
Kiến trúc bảng ₫en (Blackboard Architecture)
Tình huống nên dùng : trong các hệ chuyên gia giải quyết vấn
₫ề mà không có cách giải quyết tất ₫ịnh và có thể tin tưởng ₫ược
Khuyết ₫iểm : ?