8 - 4 Design Elements Nội dung trình bày Mô hình thiết kế và lớp thiết kế Hệ thống con Subsystem Tính sử dụng lại Reusability Mô hình phân tầng trong quá trình thiết kế Mô hình thiết
Trang 1Mô hình hóa thiết kế
Giảng viên: Mai Thúy Nga
Unified Modeling Language
Nội dung môn học
Giới thiệu về PTTK
hướng đối tượng với
UML
Khái niệm về Hướng đối tượng trong UML
Đặc tả Yêu cầu với
mô hình Use Case I
Đặc tả Yêu cầu với
mô hình Use Case II
Tổng quan về Phân tích và Thiết kế
Phân tích Use
Case II
Ôn tập
Mô hình hóa Thiết kế
Phân tích Use Case I
1
5 4
2
6 3
Trang 28 - 4 Design Elements
Nội dung trình bày
Mô hình thiết kế và lớp thiết kế
Hệ thống con (Subsystem)
Tính sử dụng lại (Reusability)
Mô hình phân tầng trong quá trình thiết kế
Mô hình thiết kế
Mô hình thiết kế
Đặc tả yêu cầu
Tìm kiếm các thành phần của
mô hình thiết kế
Kiến trúc dự án
Mô hình phân tích
Hướng dẫn dự án
Trang 38 - 6 Design Elements
Chuyển ñổi lớp phân tích thành các thành phần thiết kế
<<boundary>>
<<control>>
<<entity>>
<<boundary>>
Ánh xạ Nhiều – Nhiều
Tìm kiếm các lớp thiết kế
Một lớp phân tích ánh xạ trực tiếp thành một lớp thiết
kế nếu
Các lớp phân tích phức tạp có thể:
hoặc tập hợp (generalization, aggregation)
Trang 48 - 8 Design Elements
Nhóm các lớp thiết kế (package) (1)
Thay ñổi một lớp làm ảnh hưởng tới các lớp còn lại
ðối tượng của lớp này tương tác tới các ñối tượng của lớp khác
Chúng tương tác với cùng một tác nhân
Chúng có quan hệ chặt chẽ với nhau
Lớp này tạo ra lớp kia
năng sử dụng lại và bảo dưỡng hệ thống
Nhóm các lớp thiết kế (package) (2)
Các gói không nên quan
hệ chéo lẫn nhau
Nhóm ở tầng dưới không
nên phụ thuộc vào tầng
trên
Tránh sự phụ thuộc bỏ
qua các tầng ở giữa
A
B
X
Tầng trên
Tầng dưới
C
X
X = Vi phạm nguyên tắc quan hệ
X
Trang 58 - 10 Design Elements
đóng gói trong hệ thống đăng ký học
RegisterForCoursesForm
<<boundary>>
RegistrationController
<<control>>
CloseRegistrationForm
<<boundary>>
CloseRegistrationController
<<control>>
Registration Package
Quản lý Đóng đăng ký học
Quản lý Đăng
ký học
External System Interfaces Package
IBillingSystem
<<interface>>
ICourseCatalogSystem
<<Interface>>
Gói giao tiếp với
hệ thống ngoại vi (HT Thanh Toán,
HT QL khóa học)
Student
<<entity>>
Professor
<<entity>>
Schedule
<<entity>>
CourseOffering
<<entity>>
Course
<<entity>>
University Artifacts Package
Gói thực thể
của HT QL
Học tập
Nội dung trình bày
Mô hình thiết kế và lớp thiết kế
Hệ thống con (Subsystem)
Tắnh sử dụng lại (Reuse)
Mô hình phân tầng trong quá trình thiết kế
Trang 68 - 12 Design Elements
Hệ thống con (Subsystems)
đóng gói hoàn chỉnh một hành vi nào ựó
Thể hiện khả năng ựộc lập sử dụng các giao diện một
cách rõ ràng
Có thể có nhiều hình thức cài ựặt
InterfaceK MethodX() MethodW()
<<Interface>>
SubsystemA
<<subsystem>>
ClassA1 MethodW()
ClassA2 MethodX()
SubsystemB
<<subsystem>>
ClassB1 MethodW() MethodY()
ClassB2 MethodX()
ClassB3 MethodZ()
Subsystems là hình thức trừu tượng hóa
Sử dụng hệ thống con
Phân chia hệ thống thành nhiều phần hoạt ựộng
tương ựối ựộc lập
Hệ thống con trong mô hình thiết kế sẽ trở thành
thành phần trong quá trình cài ựặt (components)
Subsystems có thể ựược sử dụng ựể thể hiện một
sản phẩm có sẵn, hoặc một hệ thống ngoại vi trong
quá trình thiết kế
Trang 78 - 14 Design Elements
Tìm kiếm hệ thống con
Lớp phân tích có thể tạo thành hệ thống con nếu
Thể hiện một sản phẩm có sẵn hoặc hệ thống ngoại
vi trong quá trình thiết kế:
hệ thống phân tán
…
Subsystem A
<<subsystem>>
Subsystem B
<<subsystem>>
Subsystem C
<<subsystem>>
Thiết kế hệ thống con (Subsystems)
Method1() Method2()
<<Interface>>
Subsystem K
<<subsystem>>
ClassA
Method1() Method2()
“Superman Class”
Trang 88 - 16 Design Elements
Một giao diện rõ ràng, ổn định
là giải pháp tốt cho việc tạo ra một kiến trúc hiệu quả.
Giao diện cho hệ thống con (Subsystem Interface)
Mỗi hệ thống con nên có một hoặc nhiều giao diện
Mô hình hóa các giao diện
đóng gói các giao diện
Vắ dụ: Giao diện của hệ thống con trong HT đăng ký học
Phân tắch
BillingSystem
//submit bill()
<<boundary>>
CourseCatalogSystem
//get course offerings()
<<boundary>>
Giao diện với
HT Thanh toán
Giao diện với HT
QL Khóa học
Lấy thông tin các Khóa học mở trong kỳ cho một Sinh viên
Thiết kế
Billing System
<<subsystem>>
IBillingSystem
submitBill(forTuition : Double, forStudent : Student)
Course Catalog System
<<subsystem>>
ICourseCatalogSystem
getCourseOfferings(forSemester : Semester, forStudent : Student) : CourseOfferingList initialize()
Chỉ ra chi tiết
Đóng học phắ cho một Sinh viên
Trang 98 - 18 Design Elements
CourseCatalogSystem
(Quản lý khóa học)
BillingSystem
(HT Thanh toán)
Các lớp phân tích khác ánh xạ
trực thành thành lớp thiết kế
Hệ thống con CourseCatalogSystem
Hệ thống con BillingSystem
Bảng ánh xạ Lớp phân tích – Thành phần thiết kế
Mô hình hóa hệ thống con và giao diện trong UML
Gói <<subsystem>>
CourseCatalogSystem
<<subsystem>>
ICourseCatalogSystem
Giao diện với HT
QL Khóa học
Giao diện thường
bắt đầu bởi “I”
Lớp thực thi hệ thống con
<<subsystem proxy>>
CourseCatalogSystem getCourseOfferings() initialize()
<<subsystem proxy>>
ICourseCatalogSystem
getCourseOfferings(forSemester : Semester, forStudent : Student) : CourseOfferingList
initialize()
Lấy thông tin các Khóa học mở trong kỳ cho một Sinh viên
(Phần khai báo hàm)
Lấy thông tin các Khóa học mở
Trang 108 - 20 Design Elements
Hệ thống con CourseCatalogSystem
Xác định rõ
giao diện
ICourseCatalogSystem
getCourseOfferings(forSemester : Semester) : CourseOfferingList initialize()
<<Interface>>
CloseRegistrationController
// is registration open?()
// close registration()
<<control>>
0 1
+courseCatalog
CourseCatalogSystem
getCourseOfferings(forSemester : Semester) : CourseOfferingList initialize()
<<subsystem proxy>>
RegistrationController
getCurrentSchedule() deleteCurrentSchedule() submitSchedule() saveSchedule() getCourseOfferings() setSession()
<<class>> new() getStudent()
<<control>>
CourseOfferingList
new() add()
Lớp thiết kế mới
Hệ thống con Billing System
BillingSystem submitBill(forStudent : Student, forTuition : double)
<<subsystem proxy>>
IBillingSystem submitBill(forTuition : Double, forStudent : Student)
<<Interface>>
CloseRegistrationController // is registration open?() // close registration()
<<control>>
1
0 1
Biller 1
Student
<<entity>>
Phụ thuộc
Thanh toán
(Thực thi)
Thanh toán
(Khai báo)
Trang 118 - 22 Design Elements
Nội dung trình bày
Mô hình thiết kế và lớp thiết kế
Hệ thống con (Subsystem)
Tính sử dụng lại (Reuse)
Mô hình phân tầng trong quá trình thiết kế
Tính sử dụng lại
Mục ñích
thống con hoặc các thành phần sẵn có trong hệ thống
Hướng dẫn
sẵn có (sử dụng lại)
thành phần có sẵn ñó ñể sử dụng lại
Trang 128 - 24 Design Elements
Các khả năng sử dụng lại
Bên trong hệ thống
Bên ngoài hệ thống
Phát triển lại một thành phần có sẵn (sử dụng lại thiết kế)
Khả năng sử dụng lại bên trong hệ thống
2 Chuyển thành phần đó xuống tầng hệ thống
3 Sửa lại gói ban đầu và gói mới để sử dụng lại thành phần vừa chuyển tới tầng hệ thống
?
1 Cần sử dụng lại
thành phần sẵn có?
Tầng
ứng dụng
Tầng
hệ thống
Trang 138 - 26 Design Elements
Nội dung trình bày
Mô hình thiết kế và lớp thiết kế
Hệ thống con (Subsystem)
Tính sử dụng lại (Reuse)
Mô hình phân tầng trong quá trình thiết kế
B
A Package A
Package B
Quan hệ giữa các lớp tạo nên sự phụ thuộc
1
8 7 6
5 4
3
2
14
13 12
11 10 9
18 19 15
Trang 148 - 28 Design Elements
Security
GUI Framework Secure Interfaces
Application
<<layer>>
Business Services
<<layer>>
<<layer>>
Tầng Ứng dụng
<<layer>>
Tầng Nghiệp vụ
Mô hình phân tầng với Hệ thống ðăng ký học (1)
University Artifacts
Registration
External System Interfaces
Gói “Bảo mật” có thể cần thiết cho hệ thống nếu cần
Mô hình phân tầng với Hệ thống ðăng ký học (2)
CourseCatalogSystem
<<subsystem>>
External System Interfaces
University Artifacts
ObjectStore
Support
<<layer>>
Tầng Nghiệp vụ
GUI Framework
Secure Interfaces
Security
<<subsystem>>
Security Manager
BillingSystem
<<subsystem>>
Gói “Bảo mật” có thể cần thiết cho hệ thống nếu cần
Các Hệ thống con nên tương tác với HT qua Lớp giao diện tương tác
Gói “Hỗ trợ làm việc với CSDL” cho
phép HT có thể lưu trữ DL một cách
mềm dẻo, không bị phụ thuộc
Trang 158 - 30 Design Elements
Middleware
<<layer>>
Business Services
<<layer>>
Mô hình phân tầng với Hệ thống ðăng ký học (3)
java.sql com.db
<<layer>>
Tầng Thư viện
BillingSystem
<<subsystem>>
CourseCatalogSystem
<<subsystem>>
External System Interfaces
University Artifacts
ObjectStore
Support
<<layer>>
Tầng Nghiệp vụ
GUI Framework
Secure Interfaces
Security
<<subsystem>>
Security Manager
Tầng thực thi làm việc với CSDL
Tổng kết
Các mô hình thiết kế ñược xây dựng trực tiếp từ các
mô hình phân tích
Là hình thức chi tiết hóa từ các lớp trừu tượng hóa trong
mô hình phân tích
Lớp phân tích có mức ñộ phức tạp cao có thể ñược
phát triển thành hệ thống con (subsystem)
phần còn lại
viện có sẵn