LOGO
TRƯỜNG ĐH KINH TẾ TP HỒ CHÍ MINH
KHOA TIN HỌC QUẢN LÝ
Bài giảng mơn
TÍCH HỢP HỆ THỐNG
BÀI 5: KIẾN TRÚC MODULE
Mục tiêu
Sau khi học xong bài này sinh viên có thể:
Hiểu kỹ thuật phát triển hệ thống theo kiến trúc
module: phân tích, thiết kế, lập trình
Biết được các tiêu chí đánh giá kiến trúc module
Phân biệt được các kiểu tích hợp module
Biết được các cơng nghệ hỗ trợ lập trình module
Tham khảo
1. Nguyễn Văn Vỵ, Nguyễn Việt Hà. Giáo trình kỹ
nghệ phần mềm, NXB ĐHQG HN, 2008
2. />3. Ian Sommerville, Software Engineering 8th Edition,
2007.
Nội dung
Các khái niệm cơ bản về kiến trúc module
Tiêu chí đánh giá kiến trúc module
Các kiểu ghép nối module (tích hợp)
Lập trình theo module
Kiến trúc module
Kiến trúc mô-đun (module) cho phép chia nhỏ bài
toán (hay yêu cầu) của phần mềm thành các phần
hầu như khơng trùng lắp và do đó hỗ trợ làm việc
song song trên các module và đặc biệt là dễ bảo
trì hơn.
Kiến trúc module có khả năng tái sử dụng các
thành phần của hệ thống và khả năng mở rộng tốt
hơn.
Kiến trúc module
Dựa trên quan điểm “chia để trị”
C: độ phức tạp
C(p1 + p2) > C(p1) + C(p2)
E: nỗ lực thực hiện E(p1 + p2) > E(p1) + E(p2)
Giảm độ phức tạp
Cục bộ, dễ sửa đổi
Có khả năng phát triển song song
Dễ sửa đổi, dễ hiểu nên dễ tái sử dụng
Kiến trúc module
Phân rã phân mềm thành
các module có thể nối kết với nhau
Kiến trúc module
Kích thước module nên được quyết định dựa trên
khái niệm độc lập chức năng, mỗi module thực
hiện một công việc: dễ hiểu, dễ sửa đổi, dễ tái sử
dụng
Kiến trúc module
Interface – công cụ giao tiếp của các module
Các module được gắn kết với nhau trong chương
trình thông qua các "interface".
Một interface của module mô tả những thành
phần được cung cấp và cần được cung cấp.
Các thành phần này được các module khác "thấy"
và sử dụng.
Kiến trúc module
Nguyên tắc Information-hiding
Những phần có khả năng thay đổi bên trong của
module được ẩn đi nên những phần còn lại dùng
để giao tiếp giữa các module sẽ không bị ảnh
hưởng khi thay đổi thiết kế.
Kết quả là những module có thể thay đổi một cách
độc lập mà không ảnh hưởng lẫn nhau.
Kiến trúc module
Kiến trúc module có thể mở rộng để áp dụng ở
mức hệ thống và các module có thể là các ứng
dụng hay dịch vụ chạy song song và tương tác
với nhau thông qua một kiểu giao tiếp như
Messaging, RPC, Socket...
Về ý tưởng, kiến trúc module có thể xem là nền
tảng cơ bản của rất nhiều kiến trúc tiên tiến khác
như MVC, Multi-tier, SOA...
Kiến trúc module có thể tái áp dụng vào các
module của chính nó hay các thành phần con của
các kiến trúc trên như các dịch vụ bên trong các
hệ thống SOA..
Kiến trúc module
Kiến trúc Module mở rộng
Tiêu chí đánh giá kiến trúc module
Coupling: mức độ ghép nối giữa các module
Cohesion: mức độ liên kết giữa các thành
phần bên trong một module
Understandability: tính hiểu được
Adaptability: tính thích nghi được
Tiêu chí đánh giá kiến trúc module
Coupling (ghép nối)
Độ đo sự liên kết (trao đổi) giữa các Module
Ghép nối chặt chẽ thì khó hiểu, khó sửa đổi do phải
tính đến các liên kết có thể, dễ gây lỗi lan truyền.
Cohesion (kết dính)
Độ đo sự phụ thuộc lẫn nhau của các thành phần
trong một Module
Kết dính cao thì tính cục bộ cao (độc lập chức
năng); dễ hiểu, dễ sửa đổi.
Tiêu chuẩn của thiết kế tốt: kết dính chặt,
ghép nối lỏng
Coupling (ghép nối)
Coupling (ghép nối)
Độ đo sự liên kết (trao đổi) giữa các Module
Ghép nối chặt chẽ thì khó hiểu, khó sửa đổi do phải
tính đến các liên kết có thể, dễ gây lỗi lan truyền.
Cohesion (kết dính)
Độ đo sự phụ thuộc lẫn nhau của các thành phần
trong một Module
Kết dính cao thì tính cục bộ cao (độc lập chức
năng); dễ hiểu, dễ sửa đổi.
Tiêu chuẩn của thiết kế tốt: kết dính chặt,
ghép nối lỏng
Coupling (ghép nối)
a. Ghép nối nội dung
Các module dùng dữ liệu hay thơng tin điều
khiển được duy trì trong một module khác
Là trường hợp xấu nhất. Ví dụ:
Các ngôn ngữ bậc thấp chỉ dùng biến chung
Lạm dụng lệnh Goto trong một chu trình
Coupling (ghép nối)
b. Ghép nối chung
Các module trao đổi dữ liệu thông qua biến tổng thể
Lỗi của module này có thể ảnh hưởng đến hoạt
động của module khác
Khó sử dụng lại các module
Coupling (ghép nối)
c. Ghép nối điều khiển
Các module trao đổi thơng tin điều khiển
Làm cho thiết kế khó hiểu, khó sửa đổi, dễ nhầm
Coupling (ghép nối)
d. Ghép nối nhãn
Các module trao đổi thừa thơng tin
Module có thể thực hiện chức năng ngồi ý muốn
Làm giảm tính thích nghi
Coupling (ghép nối)
e. Ghép nối dữ liệu
Truyền dữ liệu qua tham số
Nhận kết quả qua tham số và giá trị trả lại