Mục đíchPhân tích sự tương tác của các lớp phân tích và xác định các thành phần trong mô hình thiết kế Lớp thiết kế design class Hệ thống con Subsystem Giao diện hệ thống con Subsy
Trang 1OBJECT-ORIENTED ANALYSIS AND DESIGN WITH UML 2.0
Bé m«n C«ng nghÖ phÇn mÒm
KHOA CÔNG NGHỆ THÔNG TIN TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Bài 6 Xác định các phần tử thiết kế
Trang 2Nội dung
3 Tính tái sử dụng lại (Reusability)
Trang 3Mục đích
Phân tích sự tương tác của các lớp phân tích và xác định các thành phần trong mô hình thiết kế
Lớp thiết kế (design class)
Hệ thống con (Subsystem)
Giao diện hệ thống con (Subsystem interface)
Trang 4Đặc tả phụ trợ
Xác định các phần tử thiết kế
Mô hình thiết kế
Mô hình phân tích
Hướng dẫn dự án
Xác định các phần tử thiết kế
Trang 5Chuyển đổi lớp phân tích thành các phần tử thiết kế
Trang 6Tì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
Trang 7Nhóm các lớp dựa trên nhiều yếu tố:
Phân bổ nguồn lực trong các đội phát triển
Tương ứng với từng loại người dùng
Hệ thống con đại diện cho các sản phẩm và dịch vụ đã có mà hệ thống sử dụng
Việc gộp nhóm hiệu quả giúp
Quản lý khả năng sử dụng lại
Trang 8trong các package riêng biệt
Nếu giao diện của hệ thống không chắc chắn có các thay đổi đáng kể
Các lớp biên được gom nhóm với các lớp liên quan về mặt chức năng
Trang 9Nhóm các lớp liên quan về mặt chức năng
Các tiêu chí – liên quan về mặt chức năng:
khác
thông điệp hoặc có mối giao tiếp phức tạp
một lớp thực thể nào đó nếu lớp biên biểu diễn lớp thực thể đó
trong cùng một tác nhân
Trang 10Các tiêu chí – KHÔNG nên đặt hai lớp vào cùng
một package:
Nhóm các lớp liên quan về mặt chức năng
Trang 11PackageB PackageA
Public visibility
Private visibility
Chỉ có lớp public (+)
có thể được tham chiếu bên ngoài package chứa nó
Quy tắc của OO: Đóng gói (Encapsulation)
Sự phụ thuộc package: Element Visibility
A
B
+ Class A1
+ Class A2 + Class A3
+ Class B1
- Class B2
Lớp protected (#) chỉ được truy cập trong gói chứa nó và gói
kế thừa gói chứa nó
Lớp private (-) chỉ được truy cập trong
gói chứa nó
Trang 12B
X
Phụ thuộc giữa các package
Các package không nên
phụ thuộc lẫn nhau
(cross-coupling)
Package ở tầng thấp
hơn không nên phụ
thuộc vào các package
Tầng thấp hơn
C
X
X = Vi phạm móc nối
X
Trang 14<<entity>> 0 *
1
instructor 0 1
0 *
0 2 alternateCourses
0 *
1
Ví dụ: University Artifacts Package
Trang 15Nội dung
3 Tính tái sử dụng lại (Reusability)
Trang 16Hệ 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 thực thi
InterfaceK
X() W()
Y()
ClassB2 X()
ClassB3 Z()
Trang 18Các phân tích có thể trở thành hệ thống con nếu:
Cung cấp chức năng phức tạp
Các lớp biên (giao diện với hệ thống bên ngoài) Các sản phẩm có sẵn hoặc các hệ thống bên ngoài trong quá trình thiết kế (ví dụ thành phần):
Trang 19Xác định hệ thống con
<<control>>
ClassA
X() W()
Trang 20Giao 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
Trang 21Nội dung
3 Tính tái sử dụng lại (Reusability)
Trang 223 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
Trang 24Khả năng sử dụng lại bên trong hệ thống
Trang 25Necessary because the Application Layer must have access to the core distribution mechanisms provided with Java RMI.
Trang 26Quan hệ giữa các lớp tạo nên sự phụ thuộc
B
Package B
Trang 27<<layer>>
Application
Ví dụ: Tầng ứng dụng
Trang 28GUI Framework Secure Interfaces
Application<<layer>>
Business Services
Trang 29Ví dụ tầng Business Service
CourseCatalogSystem
<<subsystem>>
External System Interfaces
University Artifacts
Secure Interfaces
Security
<<subsystem>>
Security Manager BillingSystem
<<subsystem>>
Trang 30Business Services
<<layer>>
Ví dụ: Ngữ cảnh tầng Business Service
java.sql com.odi
University Artifacts
Secure Interfaces
Security
<<subsystem>>
Security Manager
Trang 32Ánh xạ 1-1 cho những lớp phân tích đơn giản