PT & TK Hướng đối tượng – Thiết kế kiến trúc21 Architectural Design Topics w Các khái niệm then chốt w Các cơ chế thiết kế và cài đặt w Các Design Class và Subsystem w Các khả năng tái s
Trang 1PT & TK Hướng đối tượng – Thiết kế kiến trúc
21
Architectural Design Topics
w Các khái niệm then chốt
w Các cơ chế thiết kế và cài đặt
w Các Design Class và Subsystem
w Các khả năng tái sử dụng
w Tổ chức mô hình thiết kế
w Checkpoints
Trang 2Analysis Classes Design Elements
Quan hệ nhiều nhiều
Từ Analysis Classes đến Design Elements
<<boundary>>
<<control>>
<<entity>>
<<boundary>>
Trang 3PT & TK Hướng đối tượng – Thiết kế kiến trúc
23
Xác định các Design Class
w Analysis class ánh xạ thẳng thành design class nếu:
§ Đơn giản
§ Biểu diễn một single logical abstraction
w Các analysis class phức tạp hơn có thể:
§ Tách thành nhiều class
§ Trở thành một package
§ Trở thành một subsystem (sẽ khảo sát sau)
§ Một tổ hợp bất kỳ …
w Các analysis class đơn giản có thể trở thành
một design class
Trang 4sở hữu nó
Nguyên lý OO : Encapsulation
Các phụ thuộc Package: Tính khả kiến của các ptử
Trang 5PT & TK Hướng đối tượng – Thiết kế kiến trúc
25
w Một dạng trung gian giữa package (có thể chứa các phần tử khác) và class (có hành vi)
w Hiện thực hoá 1 hoặc nhiều interface định
nghĩa hành vi của nó
Realization (Canonical form)
Realization (Elided form)
<<interface>>
Interface
Nhắc lại: Subsystem và Interface
Trang 6SubsystemA InterfaceK
W()
Class B2 X()
Class B3 Z()
Class A1 W()
Class A2 X()
Subsystem và Interface (tt.)
w Các Subsystem:
§ Hoàn toàn đóng gói hành vi
§ Thể hiện một khả năng hoàn toàn độc lập, với các interface rõ ràng (có tiềm năng tái sử dụng)
§ Mô hình hoá nhiều phương án cài đặt khác nhau
Trang 7PT & TK Hướng đối tượng – Thiết kế kiến trúc
Encapsulation là mấu chốt !
So sánh Package với Subsystem
w Subsystem cung cấp hành vi, package không
w Subsystem hoàn toàn đóng gói nội dung của nó, package thì không
w Subsystem dễ dàng được thay thế
Trang 8Các Subsystem nâng cao mức độ trừu tượng
Cách dùng Subsystem
w Subsystem có thể dùng để chia system thành các phần độc lập về:
§ Thứ tự, cấu hình, hoặc vận chuyển
§ Phát triển, chừng nào mà interface còn chưa thay đổi
§ Triển khai trên các node tính toán phân tán
§ Thay đổi mà không phá vỡ các phần khác của system
w Subsystem còn có thể dùng để:
§ Phần chia system thành các đơn vị cung cấp độ bảo mật cao đối với các tài nguyên then chốt
§ Biểu diễn các sản phẩm có sẵn hoặc các system nằm ngoài bản thiết kế (chẳng hạn như các component)
Trang 9PT & TK Hướng đối tượng – Thiết kế kiến trúc
29
Các gợi ý giúp xác định các Subsystem
w Tìm kiếm sự cộng tác giữa các object
w Tìm kiếm sự tuỳ chọn
w Chú ý user interface của system
w Chú ý các Actor
w Tìm kiếm sự kết dính giữa các class
w Xem xét sự thay thế (các mức độ service)
w Xem xét sự phân bố
w Xem xét sự kém bền vững
Trang 10w Các Analysis classe có thể tiến hoá thành các subsystem
Các Subsystem tiềm năng
Trang 11PT & TK Hướng đối tượng – Thiết kế kiến trúc
31
InterfaceA
<<Interface>>
Y() Z()
<<subsystem>> SubsystemK
ClassA
Y() Z()
“Superman Class”
Identifying Subsystems
?
Trang 12Các interface ổn định, thiết kế tốt là nền tảng cho một kiến trúc bền vững
§ Tìm kiếm sự tương tự giữa các interface
§ Định nghĩa các phụ thuộc của interface
§ Ánh xạ các interface đến các subsystem
§ Định nghĩa hành vi được mô tả bới interface
§ Đoán gói các interface
Trang 13PT & TK Hướng đối tượng – Thiết kế kiến trúc
33
Interface Guidelines
w Đặt tên cho Interface
§ Thể hnện vai trò trong system
w Mô tả Interface
§ Chuyển tải các nhiệm vụ
w Định nghĩa Operation
§ Tên phải phản ánh đúng kết quả của operation
§ Mô tả operation được thực hiện, tất cả các tham số và kết quả
w Interface documentation
§ Package các thông tin hỗ trợ: sequence aà state diagrams, kế hoạch kiểm chứng, …
Trang 14BillingSystem // submit bill()
Tất cả các analysis class khác đều chuyển thành design class
Ví dụ: Các Design Subsystem
getCourseOfferings(forSemester : Semester) : CourseOfferingList
submitBill(forTuition : Double, forStudent : Student)
Trang 15PT & TK Hướng đối tượng – Thiết kế kiến trúc
35
Analysis Class Design Element
CourseCatalogSystem
BillingSystem
All other analysis classes map
directly to design classes
CourseCatalogSystem Subsystem BillingSystem Subsystem
Via dụ: Analysis-Class-To-Design-Element Map
Trang 16<<subsystem proxy>> class
Qui ước mô hình hoá: Subsystem và Interface
Trang 17PT & TK Hướng đối tượng – Thiết kế kiến trúc
37
courseCatalog
CourseOfferingList
CourseCatalogSystem getCourseOfferings(forSemester : Semester) : CourseOfferingList
<<subsystem proxy>>
RegistrationController
// get course offerings() // get current schedule() // delete current schedule() // submit schedule()
// is registration open?() // save schedule() // create schedule with offerings() // update schedule with new selections()
<<control>>
CloseRegistrationController
// is registration open?() // close registration()
<<control>>
ICourseCatalogSystem getCourseOfferings(forSemester : Semester) : CourseOfferingList
Trang 18BillingSystem submitBill(forStudent : Student, forTuition : double)
<<subsystem proxy>>
IBillingSystem submitBill(forTuition : Double, forStudent : Student)
<<Interface>>
Student
<<entity>>
0 1 1 +Biller
CloseRegistrationController
// is registration open?() // close registration()
<<control>>
Ví duï: Subsystem Context: Billing System
Trang 19PT & TK Hướng đối tượng – Thiết kế kiến trúc
39
Bài tập: Architectural Design, phần 1
w Cho biết các vấn đề sau:
§ Các analysis class và mối quan hệ của chúng
Trang 21PT & TK Hướng đối tượng – Thiết kế kiến trúc
41
Bài tập: Architectural Design, Part 1 (tt.)
w Hãy xây dựng các lược đồ sau:
§ Với mỗi subsystem, xây dựng 1 subsystem context class diagram
§ Xây dựng bảng ánh xạ các analysis class thành
các phần tử thiết kế (design element)