Upload
vanhanh
View
218
Download
3
Embed Size (px)
Citation preview
'XYZ' Instructor Notes
1
Giáo trình Phân tích và thiết kế hướng đối tượng bằng UML
Phân tích Use-Case
2
Mục tiêu
� Tìm hiểu mục đích của công đoạn phân tích Use-Case và vị trí của nó trong chu kỳ sống của qui trình phát triển phần mềm
� Xác định các lớp thực hiện một dòng sự kiện use- case
� Phân phối các hành vi (behaviour) của use-case về các lớp(class), thông qua việc xác định nhiệm vụ của các lớp
� Phát triển các hiện thực hóa use-case mô hình hóa tương tác giữa các thể hiện của các lớp đã xác định
'XYZ' Instructor Notes
3
Vị trí của phân tích Use-Case [Early
ElaborationIteration]
[InceptionIteration (Optional)]
Define a CandidateArchitecture
PerformArchitectural
Synthesis
Analyze Behavior
Refine theArchitecture
DesignComponents
Design theDatabase
(Optional)
Use-CaseAnalysisDesigner
4
SupplementarySpecifications
Glossary
Use-Case Model
Use-CaseAnalysis
Use-CaseModeling Guidelines
Use-Case Realization(identified)
Use-Case Realization(developed)
Design Model
Analysis Classes
Analysis Model (optional)
Tổng quan Use-Case Analysis
Software ArchitectureDocument
'XYZ' Instructor Notes
5
Các bước trong Use-Case Analysis
� Bổ sung đặc tả Use-Case� Với mỗi hi ệc thực hóa use-case
� Tìm các lớp từ hành vi Use-Case� Phân bổ các hành vi Use-case về các lớp
� Với mỗi lớp phân tích đã tìm th ấy� Mô tả nhiệm vụ của chúng� Mô tả thuộc tính và các mối quan hệ� Lượng giá (qualify) các cơ chế phân tích
� Hợp nhất các Analysis Class� Checkpoints
6
Các bước trong Use-Case Analysis
� Bổ sung đặc tả Use-Case� Với mỗi hi ệc thực hóa use-case
� Tìm các l ớp từ hành vi Use-Case� Phân bổ các hành vi Use-case v ề các lớp
� Với mỗi lớp phân tích đã tìm th ấy� Mô tả nhi ệm vụ của chúng� Mô tả thuộc tính và các m ối quan h ệ� Lượng giá (qualify) các c ơ chế phân tích
� Hợp nhất các Analysis Class� Checkpoints
'XYZ' Instructor Notes
7
• Hệ thống hiển thị một danh sách các lớp học (course offerings).
• Hệ thống truy vấn và hiển thị một danh sách các lớp học đang mở từ CSDL course catalog kế thừa từ hệ thống cũ.
Bổ sung đặc tả Use-Case
8
� Bổ sung đặc tả Use-Case� Với mỗi hi ệc thực hóa use-case
� Tìm các Class t ừ hành vi Use-Case� Phân bổ các hành vi Use-case v ề các Class
� Với mỗi Class phân tích đã tìm th ấy� Mô tả nhi ệm vụ của chúng� Mô tả thuộc tính và các m ối quan h ệ� Lượng giá (qualify) các c ơ chế phân tích
� Hợp nhất các Class� Checkpoints
Các bước trong Use-Case Analysis
'XYZ' Instructor Notes
9
ProfessornameempIDcreate( )save( )delete( )change( )
Class Name
Attributes
Operations
Nhắc lại khái niệm Class
� Là một sự trừu tượng hóa� Nhấn mạnh đến những đặc tính chung� Bỏ qua những đặc tính riêng
� Mô tả một nhóm các đối tượng có chung:� Properties (attributes)� Behavior (operations)� Relationships� Ngữ nghĩa (Semantics)
10
Class Diagrams
Sequence Diagrams
Use Case
Use-Case Model Design Model
Use Case Use-Case Realization
Collaboration Diagrams
Nhắc lại hi ện thực hóa use-case
'XYZ' Instructor Notes
11
<<control>>
<<boundary>>
<<entity>>
System boundary
Use-case behavior coordination
System information
Các lo ại class
12
<<boundary>>
<<boundary>><<control>>
<<entity>>
<<entity>>
Tìm các Class t ừ hành vi Use-Case
� Toàn bộ hành vi của một use case phải được phân bổ về cho các lớp phân tích
'XYZ' Instructor Notes
13
Tìm các Class t ừ hành vi Use-Case
14
Trách nhiệm và hành vi Class
System boundary
Use-case behavior coordination
System information
<<boundary>>
<<control>>
<<entity>>
System information
<<entity>>
System boundary
<<boundary>>
'XYZ' Instructor Notes
15
Use Cases AnalysisClasses
SourceCode
ExecDesignElements
Use-Case Analysis
Lớp phân tích: A First Step Towards Executables
16
Phụ thuộc môi tr ường
<<boundary>>Analysis class stereotype
Thế nào là m ột Boundary Class?
� Làm trung gian giao tiếp giữa giao diện và những gì nằm ngoài hệ thống
� Một số kiểu� Các Class giao diện người dùng (User interface class)� Các lớp giao diện hệ thống (System interface class)� Các lớp giao diện thiết bị (Device interface class)
� Một boundary class cho 1 c ặp actor/use case
Analysis class stereotype
'XYZ' Instructor Notes
17
Mô hình hóa s ự tương tác gi ữa system và môi tr ường của nó
Customer
<<boundary>>
<<boundary>>
<<control>>
<<boundary>>
<<entity>> <<entity>>
Vai trò c ủa Boundary Class
18
Course Catalog SystemRegister for CoursesStudent
Ví dụ: Tìm các Boundary Class
� Một boundary class cho 1 cặp tác nhân/use case
RegisterForCoursesForm CourseCatalogSystem
'XYZ' Instructor Notes
19
Tập trung vào các nhi ệm vụ, chứ không ph ải chi ti ết!
Hướng dẫn: Boundary Class
� Các lớp giao diện người dufng � Tập trung vào những thông tin gì được thể hiện cho người dùng
� KHÔNG tập trung vào các chi tiết GUI� Các lớp giao diện hệ thống và thiết bị
� Tập trung vào những giao thức (protocols) nào phải định nghĩa
� KHÔNG tập trung vào cách mà các protocol sẽ được cài đặt
20
� Ví dụ: Hãy tìm các Boundary Class cho hệ thống Đăng ký học phần
'XYZ' Instructor Notes
21
Glossary
Business-Domain Model
Độc lập môi tr ường
<<entity>>
Analysis class stereotype
Use Case
Architectural Analysis Abstractions
Thế nào là m ột lớp thực thể (Entity Class)?
� Các trừu tượng hóa chính của hệ thống
22
Lưu trữ và quản tr ị các thông tin trong h ệ thống
Customer
<<boundary>>
<<boundary>>
<<control>>
<<boundary>>
<<entity>> <<entity>>
Vai trò c ủa Entity Class
'XYZ' Instructor Notes
23
Ví dụ: Tìm các Entity Class
� Dùng dòng sự kiện use-case như đầu vào (input) � Các trừu tượng hóa chính của use case� Hướng tiếp cận truyền thống (nouns filtering)
� Gạch dưới các cụm danh từ trong dòng sự kiện� Loại bỏ các ứng viên dư thừa� Loại bỏ các ứng viên mơ hồ, không rõ ràng� Loại bỏ các tác nhân (ngoài phạm vi)� Loại bỏ các kiến trúc cài đặt� Loại bỏ các thuộc tính (để lại dùng sau)
24
Ví dụ: Tìm các Entity Class t ừ Create a Schedule
� Create a Schedule1. Hệ thống yêu cầu sinh viên chọn chức năng muốn thực
hiện (Create a Schedule , Update a Schedule, or Delete a Schedule).
2. Hệ thống lấy danh sách học phần có mở trong học kỳ từ hệ thống Course Catalog System và thể hiện dưới dạng danh sách cho sinh viên chọn.
3. Sinh viên chọn 4 học phần bắt buộc và hai học phần tự chọn từ danh sách trên.
4. Sau khi sinh viên chọn, hệ thống tạo một thời khóa biểu đăng ký học phần chứa những học phần sinh viên đã đăng ký.
5. Sinh viên kiểm tra và xác nhận thời khóa biểu, Submit Schedule được thực thi.
'XYZ' Instructor Notes
25
Ví dụ: các l ớp thực th ể ứng viên
� Đăng ký học phần – use-case tạo thời lịch học (Register for Courses - Create Schedule)
Student
ScheduleCourseOffering
26
Accountbalancenamenumber
Withdraw()CreateStatement()
Checking
Withdraw()
Savings
GetInterest()Withdraw()
Superclass (parent)
Subclasses
Generalization Relationship
Nhắc lại: Mối quan h ệ tổng quát hóa
� Một lớp chia sẻ cấu trúc và/hoặc hành vi của một hay nhiều lớp
� Mối quan hệ “Là một dạng của”
� Trong phân tích, sử dụng ở mức độ đơn giản, sơ sài
'XYZ' Instructor Notes
27
Finding Generalization: Generalization of Classes
Savings CheckingStock
BondRealEstate Asset
RealEstate
Savings
BankAccount
Checking Stock
Security
Bond
Tổng quát hơn
28
Finding Generalization: Specialization of Classes
Asset
Asset
RealEstate
Savings
BankAccount
Checking Stock
Security
BondChuyên biệt hơn
'XYZ' Instructor Notes
29
Student
nameaddress
FulltimeStudent
studentID
gradDate
ParttimeStudent
maxNumCourses
Part-timeStudentnameaddress
numberCourses
Full-timeStudentnameaddressstudentIDgradDate
Không có sự tổng quát hóa
Có sự tổng quát hóa
studentID
Example: Generalization (Chia s ẻ ngữ ngh ĩa)
30
Use Case
Phụ thuộc use-case, độc lập môi tr ường
Thế nào là m ột lớp điều khi ển (Control Class)?
� Nhà điều phối các hành vi của Use-case� Một lớp điều khiển cho một use case
Analysis class stereotype
'XYZ' Instructor Notes
31
Vai trò c ủa Control Class
Điều phối các hành vi c ủa use-case
Customer
<<boundary>>
<<boundary>>
<<control>>
<<boundary>>
<<entity>> <<entity>>
32
Ví dụ: Tìm các Control Class
� Một control class cho một use case� Một Class Control phức tạp có thể mở ra thành nhiều Class
Student Course Catalog System
Register for Courses
RegistrationController
'XYZ' Instructor Notes
33
Ví dụ: Tổng hợp: các l ớp phân tích
Student Course Catalog System
Register for Courses
Use-Case Model
Design Model
RegisterForCoursesForm CourseCatalogSystem Student Schedule
CourseOffering RegistrationController
34
� Bổ sung đặc tả Use-Case� Với mỗi hi ệc thực hóa use-case
� Tìm các l ớp từ hành vi Use-Case� Phân bổ các hành vi Use-case v ề các lớp
� Với mỗi lớp phân tích đã tìm th ấy� Mô tả nhi ệm vụ của chúng� Mô tả thuộc tính và các m ối quan h ệ� Lượng giá (qualify) các c ơ chế phân tích
� Hợp nhất các Analysis Class� Checkpoints
Các bước trong Use-Case Analysis
'XYZ' Instructor Notes
35
Phân bổ hành vi Use-case v ề các lớp
� Đối với mỗi dòng sự kiện use-case: � Xác định các lớp phân tích � Gắn kết các trách nhiệm của use-case cho các lớp phân
tích� Mô hình hóa tương tác của các lớp phân tích trong sơ đồ
tương tác (interaction diagram)
Use CaseClass Diagrams
Communication DiagramsSequence
Diagrams
Use-Case Realization
36
Interaction Diagram
Thuật ngữ chung cho một số sơ đồ nhấn mạnhsự tương tác giữa các đối tượng� Sequence Diagram
� Time oriented view of object interaction
� Communication Diagram(or Collaboration Diagram )� Structural view of messaging objects
Communication Diagrams
Sequence Diagrams
'XYZ' Instructor Notes
37
Hướng d ẫn: Phân b ổ trách nhi ện về các lớp
� Dùng các stereotype lớp phân tích như là dòng hướng dẫn:� Các Boundary Class
• Các hành vi liên quan đến sự giao tiếp với Actor� Các Entity Class
• Các hành vi liên quan đến dữ liệu được gói trong một trừu trượng hóa
� Các Control Class• Các hành vi đặc thù cho một use case hoặc một
phần rất quan trọng của dòng sự kiện
(còn tiếp)
38
Hướng dẫn: Phân b ổ trách nhi ệm vào các l ớp (tt)
� Ai có dữ liệu cần cho việc thực hiện nhiệm vụ?� Nếu một Class có dữ liệu, hãy để nhiệm vụ cùng
với dữ liệu� Nhiều lớp có dữ liệu :
• Hãy để nhiệm vụ trong một Class và thêm mối quan hệ với các Class khác.
• Tạo một Class mới, để nhiệm vụ trong Class mới này, và thêm các mối quan hệ với các Class cần thực hiện nhiệm vụ
• Hãy để nhiệm vụ trong Class điều khiển, và thêm các mối quan hệ với các Class cần để thực hiện nhiệm vụ
'XYZ' Instructor Notes
39
1: PerformResponsibility
Client Object Supplier Object
Message
:Client :Supplier
Focus of Control
Đây là một script mẫu
Reflexive MessageObject Lifeline
1.1: PerformAnotherResponsibility
Tìm hi ểu về Sequence Diagram
Hierarchical MessageNumbering
40
Register for Courses Use Case –Basic flow: Create a Schedule
1. Sinh viên chọn "create schedule." 2. Hệ thống truy suất danh sách các course offerings từ
Course Catalog System. 3. Hệ thống hiển thị một blank schedule form. 4. Sinh viên chọn 4 môn bắt buộc và 2 môn tự chọn từ
danh sách môn học đề nghị. Khi việc chọn đã hoàn tất Sinh viên chọn "submit."
5. Hệ thống tạo một lịch học chứa những học phần sinh viên đã đăng ký.
6. Sinh viên kiểm tra và xác nhận lịch học, Submit Schedule được thực thi.
'XYZ' Instructor Notes
41
Các lớp phân tích
42
Ví dụ: Sơ đồ tuần tự
: Student:
RegisterForCoursesForm:
RegistrationController: Schedule : Student
: Course Catalog:
CourseCatalogSystem
A list of the available course offerings for this semester are displayed
Student wishes to create a new schedule
1. // create schedule( )
1.2. // display course offerings( )
1.1. // get course offerings( )
1.1.1. // get course offerings(forSemester)
1.3. // display blank schedule( )
At this, point the Submit Schedule subflow is executed.
2. // select 4 primary and 2 alternate offerings( )
2.1. // create schedule with offerings( )2.1.1. // create with offerings( )
A blank schedule is displayed for the students to select offerings
2.1.2. // add schedule(Schedule)
1.1.1.1. // get course offerings( )
'XYZ' Instructor Notes
43
: CourseOffering: Student
: RegisterForCoursesForm : RegistrationController : Schedule : Student: PrimaryScheduleOfferingInfob
Repeat for all primary course offerings.
An attempt is made to register the student for all selected course offerings
1. // submit schedule( )
1.1. // submit schedule( )
1.1.2. // submit( )
1.1.2.3. // still open?( )
1.1.2.5. // add student(Schedule)
1.1.2.2. // has pre-requisites(CourseOffering)
1.1.2.4. // any conflicts?( )
1.1.2.1. // is selected?( )
1.1.2.6. // mark as enrolled in( )
1.1.1. // save( )
[ has pre-requisites, course offering open, and no schedule conflicts ]
[ is selected ]
Ví dụ: Sequence Diagram (tt)
44
Ví dụ: Sơ đồ cộng tác
: Student
: RegisterForCoursesForm
: RegistrationController
: Schedule
: Student
: CourseCatalogSystem
1.2. // display course offerings( )1.3. // display blank schedule( )
: Course Catalog
1. // create schedule( )2. // select 4 primary and 2 alternate offerings( )
1.1. // get course offerings( )2.1. // create schedule with offerings( )
2.1.1. // create with offerings( )
1.1.1. // get course offerings(forSemester)
2.1.2. // add schedule(Schedule)
1.1.1.1. // get course offerings( )
'XYZ' Instructor Notes
45
: CourseOffering
: Student
: RegistrationController
: Schedule
: Student
: PrimaryScheduleOfferingInfob
1.1.2.4. // any conflicts?( )
: RegisterForCoursesForm
1. // submit schedule( )
1.1. // submit schedule( )
1.1.2. // submit( )1.1.1. // save( ) 1.1.2.3. // still open?( )
1.1.2.5. // add student(Schedule)
1.1.2.1. // is selected?( )1.1.2.6. // mark as enrolled in( )
1.1.2.2. // has pre-requisites(CourseOffering)
Ví dụ: Communication Diagram (tt)
46
Alternate Flow 4 Alternate Flow 5 Alternate Flow n
Alternate Flow 1 Alternate Flow 2 Alternate Flow 3
AF1
AF2
AF3
Basic Flow
Một sơ đồ tương tác thì không đủ tốt
'XYZ' Instructor Notes
47
Sơ đồ cộng tác Vs s ơ đồ tuần tự
Communication Diagram
� Chỉ ra các mối quan hệbổ sung cho các tươngtác
� Trực quan hóa tốt hơncác mẫu cộng tác
� Trực quan hóa tốt hơncác hiệu ứng tác động lênmột đối tượng cụ
� Dễ sử dụng hơn trongcác vấn đề cần giải quyếttập thể
Sequence Diagram
� Chỉ ra rõ ràng chuỗi cácthông điệp
� Trực quan hóa tốt hơntoàn bộ luồng sự kiện
� Tốt hơn cho các đặc tảreal-time và cho cácscenario phức tạp
48
Bài ti ểu luận: Use-Case Analysis (ph ần 1)
� Hãy xây dựng:� Use-Case Model, đặc biệt là các use-case flows of
events� Các trừu tượng hóa/class then chốt
� Hãy xác định các thông tin sau cho một use case cụ thể:� Các analysis class, cùng với chúng là:
• Brief descriptions• Stereotypes• Responsibilities
� Các collaboration cần thiết để cài đặt use case
'XYZ' Instructor Notes
49
Exercise: Use-Case Analysis, Part 1 (tt)
� Với một use case cụ thể, hãy thiết lập:� Use-case realization interaction diagram cho tối
thiểu một trong các use-case flows of events
50
Các bước trong Use-Case Analysis
� Bổ sung đặc tả Use-Case� Với mỗi hi ệc thực hóa use-case
� Tìm các l ớp từ hành vi Use-Case� Phân bổ các hành vi Use-case v ề các lớp
� Với mỗi lớp phân tích đã tìm th ấy� Mô tả nhi ệm vụ của chúng� Mô tả thuộc tính và các m ối quan h ệ� Lượng giá (qualify) các c ơ chế phân tích
� Hợp nhất các Analysis Class� Checkpoints
'XYZ' Instructor Notes
51
Mô tả trách nhi ệm
� Trách nhiệm (responsibilities) là gì?� Là một bản tuyên bố về những điều mà một đối tượng có thể được yêu
cầu cung cấp
� Làm thế nào để tìm ra chúng?� Trách nhiệm Tạo ra một hoặc nhiều thao tác (operation) của Class� Chúng có thể phân làm 2 loại: Action mà đối tượng có thể thực thi; Tri
thức mà đối tượng duy trì và cung cấp cho những đối tượng khác� Một số trách nhiệm khác có thể suy ra từ các yêu cầu phi chức năng của
hệ thống� Khi chúng ta tạo ra một trách nhiệm mới, hãy kiểm tra các yêu cầu về
phi chức năng để tìm xem nếu nó được liên quan đế yêu cầu được áp dụng không. Hoặc là bổ sung mô tả cho tra1hc nhiệm hoặc tạo một trách nhiệm mới
� Cách mô tả trách nhiệm:
52
// PerformResponsibility
:Client :Supplier
Supplier
// PerformResponsibility
Interaction Diagram
Class Diagram
Mô tả trách nhi ệm
'XYZ' Instructor Notes
53
RegisterForCoursesForm
// submit schedule()// display course offerings()// display schedule()// create schedule()// select 4 primary and 2 alternate offerings()// display blank schedule()
<<boundary>>
PrimaryScheduleOfferingInfograde
// is enrolled in?()// mark as enrolled in()
<<entity>>
CourseCatalogSystem
// get course offerings()
<<boundary>>RegistrationController
// get course offerings()// submit schedule()// create schedule with offerings()
<<control>>
Student
// add schedule()// has pre-requisites()
<<entity>>
ScheduleOfferingInfostatus
// mark as selected()// mark as cancelled()// is selected?()
<<entity>>
CourseOfferingnumber : String = "100"startTime : TimeendTime : Timedays : Enum
// add student()// still open?()// save()
<<entity>>
Schedule
// create with offerings()// submit()// save()
<<entity>>
Ví dụ: Hệ thống đăng ký h ọc phần
54
Maintaining Consistency: What to Look For
� In order of criticality� Redundant responsibilities across classes� Disjoint responsibilities within classes � Class with one responsibility� Class with no responsibilities� Better distribution of behavior � Class that interacts with many other classes
'XYZ' Instructor Notes
55
� Bổ sung mô t ả Use-case� Với mỗI use-case realization
� Tìm các Class t ừ Use-Case Behavior � Phân bổ Use-Case Behavior v ề các Classs
� Với mỗI analysis class đã tìm th ấy� Mô tả nhi ệm vụ của chúng� Mô tả các Attribute và các Association� Lượng giá (qualify) các Analysis Mechanism
� Hợp nhất các Analysis Class� Checkpoints
Các bước trong Use-Case Analysis
56
Describe Attributes and Associations
� Định nghĩa các Attribute� Thiết lập các mối quan hệ dạng Aggregation và Association
'XYZ' Instructor Notes
57
ClassName<<stereotype>>
Attribute : Type = InitValueAttribute : Type = InitValueAttribute : Type = InitValue
CourseOffering<<entity>>
number :String=“100”startTime : TimeendTime: Timedays: enumattribute
Trong analysis, không nên tốn nhi ều thời gian cho việc xác định các attribute signature
Nhắc lại: Thu ộc tính là gì?
58
Tìm các thu ộc tính
� Các thuộc tính/đặc điểm của các lớp� Các thông tin đc giữ lại bởi các lớp� Các “danh từ” không biến thành lớp
� Các thông tin mà giá trị của chúng là quan trọng� Các thông tin được sở hữu bởi một đối tượng duy nhất� Các thông tin không có hành vi
'XYZ' Instructor Notes
59
Nhắc lại: Mối kết hợp là gì?
� Mô hình hóa một liên hệ ngữ nghĩa giữa các thể hiện (instances) của các lớp
Simple association
<<entity>>Student
<<entity>>Schedule
<<entity>>CourseOffering
Reflexive association
is a pre-requisite of
<<entity>>Course
Association là m ột quan h ệ cấu trúc
60
Nhắc lại : Vai trò (role) là gì?
� Nhân vật” mà một lớp “đóng vai” trong association
Department head
Pre-requisites
Instructor
<<entity>>CourseOffering
<<entity>>Professor
<<entity>>Department
<<entity>>Course
Role Name
'XYZ' Instructor Notes
61
CourseOffering<<entity>>
Schedule<<entity>>
primaryCourses
alternateCourses
CourseOffering<<entity>>
Schedule<<entity>> add student to
remove student from
Các multiple association ph ải phản ánh các multiple role
Ví dụ: Multiple Associations
62
Review: Multiplicity
2..4
0..1
1..*
0..*
1
*
� Không mô tả� Duy nhất một� Zero hoặc nhiều (many,
unlimited)
� Một hoặc nhiều� Zero hoặc 1� Một đoạn� Nhiều đoạn rời nhau
2, 4..6
'XYZ' Instructor Notes
63
Bản số
0..4
0..2primaryCourses
alternateCourses
0..*
0..*0..*1
<<entity>>Student
<<entity>>Schedule <<entity>>
CourseOffering
Example: Multiplicity
64
Hai chiều
Một chiều
Class1 Class2
Class1 Class2
Review: Navigability
� Khả năng định hướng từ associating class đến target class
'XYZ' Instructor Notes
65
2-way navigation
0..4
0..2
primaryCourses
alternateCourses
0..*
0..*
<<entity>>Schedule
<<entity>>CourseOffering
1-way navigation
1 1<<boundary>>
RegisterForCoursesForm<<control>>
RegistrationController
Example: Navigability
66
Whole/aggregate part
0..4
0..2primaryCourses
alternateCourses
0..*
0..*
0..*1<<entity>>Student
<<entity>>Schedule <<entity>>
CourseOffering
Nhắc lại: What is Aggregation?
� Một dạng đặc biệt của association dùng để mô hình hóa một mối quan hệ toàn thể-bộ phận giữa toàn thể và các phần của nó
'XYZ' Instructor Notes
67
Khi c ảm thấy nghi ng ờ hãy dùng association
association
aggregation
Class1 Class2
Class1 Class2
Association or Aggregation?
� Xem xét� Ngữ cảnh, các đặc trưng độc lập của Class2
68
Nhận diện Aggregation
Bốn ngữ nghĩa có thể của Aggregation� Sở hữu độc quyền (Exclusive Owns): Book has
Chapter� Có sự phụ thuộc tồn tại (không có chapter nếu không có
book)� Không chia sẻ� Là thuộc tính cố định (một chapter không thể chuyển sang
book khác)
� Sở hữu (Owns): Car has Tire� Không chia sẻ� Không là thuộc tính cố định (có thể chuyển tire sang một car
khác)
� Có (Has): Department has Student� Không có sự phụ thuộc tồn tại, có thể chia sẻ.
'XYZ' Instructor Notes
69
Composition and Aggregation
� Aggregation cơ bản là bất kỳ quan hệ whole–part� Ngữ nghĩa có thể rất mơ hồ� Tương ứng với ngữ nghĩa "Has" và "Member".� Một đối tượng thành phần (part) có thể thuộc nhiều
hơn một đối tượng bao gồm (whole)
� Composition là Aggregation mạnh hơn� Tại một thời điểm, mỗi đối tượng thành phần (part)
chỉ có thể thuộc chỉ một đối tượng bao gồm (whole) .
� Có sự phụ thuộc tồn tại từ "part" vào "whole"� Khi đối tượng "whole" bị hủy thì các "part" cũng bị
hủy
70
Aggregation and Composition
Quan hệ m*n có thể chấp nhận
Quan hệ m*n không được phép
Các Student có thể trong nhiều CourseOffering.Nếu CourseOffering bị hủy, các Student không bị hủy!
Nếu Book bị xóa, các chương (Chapter) trong Book cũng bị xóa!
Book Chapter
1..*1 1..*1
StudentCourseOffering
1..* 0..*1..* 0..*
'XYZ' Instructor Notes
71
Association Class
� Một class “được gắn” vào một association� Chứa các thuộc tính của relationship� Một thể hiện / 1 link
ScheduleOfferingInfostatus
// mark as selected()// mark as cancelled()// is selected?()
<<entity>>
CourseOffering<<entity>>
Schedule<<entity>>
0..*0..4
primaryCourses
alternateCourses0..* 0..2
PrimaryScheduleOfferingInfobgrade
// is enrolled in?()// mark as enrolled in()// mark as committed()
<<entity>>
72
1: PerformResponsibility
Link
Association
CollaborationDiagram
ClassDiagram 0..*
Prime suppliers
0..*
Client Supplier
:Client :Supplier
Client Supplier
PerformResponsibility()
Tạo Relationship cho m ọi link!
Finding Relationships
'XYZ' Instructor Notes
73
Example: What Associations Can You Find?
: Student
: RegisterForCoursesForm
: RegistrationController
: Schedule
: Student
: CourseCatalogSystem
1.2. // display course offerings( )1.3. // display blank schedule( )
: Course Catalog
1. // create schedule( )2. // select 4 primary and 2 alternate offerings( )
1.1. // get course offerings( )2.1. // create schedule with offerings( )
2.1.1. // create with offerings( )
1.1.1. // get course offerings(forSemester)
2.1.2. // add schedule(Schedule)
1.1.1.1. // get course offerings( )
74
Example: VOPC: Finding Relationships
RegisterForCoursesForm
CourseOfferingSchedule0..40..*
Student0..*1
RegistrationController11 1
0..1
0..1
0..1
<<entity>> <<entity>> <<entity>>
<<control>><<boundary>>
primaryCourses
currentSchedule
'XYZ' Instructor Notes
75
1 0..*
1
1
Schedule
// create with offerings()
<<entity>>
1
0..1
RegisterForCoursesForm
// create schedule ()// display course offerings ()// display blank schedule// select 4 primary and 2 alternate offerings()
<<boundary>>
RegistrationController
// get course offerings()// create schedule with offerings
<<control>>
// get course offerings(forSemester)
CourseCatalogSystem<<boundary>>
Student
// add schedule (Schedule)
<<entity>>
currentScheduleregistrant
0..1
0..1
Example: VOPC: Finding Relationships
76
Example: What Associations Can You Find?
: CourseOffering
: Student
: RegistrationController
: Schedule
: Student
: PrimaryScheduleOfferingInfob
1.1.2.4. // any conflicts?( )
: RegisterForCoursesForm
1. // submit schedule( )
1.1. // submit schedule( )
1.1.2. // submit( )1.1.1. // save( ) 1.1.2.3. // still open?( )
1.1.2.5. // add student(Schedule)
1.1.2.1. // is selected?( )1.1.2.6. // mark as enrolled in( )
1.1.2.2. // has pre-requisites(CourseOffering)
'XYZ' Instructor Notes
77
ScheduleOfferingInfostatus
// mark as selected()// mark as cancelled()// is selected?()
<<entity>>
PrimaryScheduleOfferingInfobgrade
// is enrolled in?()// mark as enrolled in()
<<entity>>
CourseOfferingnumber : String = "100"startTime : TimeendTime : Timedays : Enum
// add student()// cancel()// still open?()// save()
<<entity>>
Schedule
// cancel(theOffering : CourseOffering)// submit()// any conflicts?()// create with offerings()
<<entity>>
0..* 0..4
primaryCourses
alternateCourses0..* 0..2
Example: VOPC: Finding Relationships (tt)
78
Các bước trong Use-Case Analysis
� Bổ sung đặc tả Use-Case� Với mỗi hi ệc thực hóa use-case
� Tìm các l ớp từ hành vi Use-Case� Phân bổ các hành vi Use-case v ề các lớp
� Với mỗi lớp phân tích đã tìm th ấy� Mô tả nhi ệm vụ của chúng� Mô tả thuộc tính và các m ối quan h ệ� Lượng giá (qualify) các c ơ chế phân tích
� Hợp nhất các Analysis Class� Checkpoints
'XYZ' Instructor Notes
79
<<control>>
<<boundary>>
<<entity>><<entity>>
Unify Analysis Classes
80
Unify Analysis Classes
'XYZ' Instructor Notes
81
SupplementarySpecification
Glossary
Use-Case Model
Design Model
Analysis Classes
Evaluate Your Results
82
Use-Case Analysis Steps
� Bổ sung mô t ả Use-case� Với mỗi use-case realization
� Tìm các Class t ừ Use-Case Behavior � Phân bổ Use-Case Behavior v ề các Classs
� Với mỗi analysis class đã tìm th ấy� Mô tả nhi ệm vụ của chúng� Mô tả các Attribute và các Association� Lượng giá (qualify) các Analysis Mechanism
� Hợp nhất các Analysis Class� Checkpoints
'XYZ' Instructor Notes
83
(còn tiếp)
Checkpoints: Analysis Classes
� Các class có hợp lý không?� Tên của các class có phản ánh đúng vai trò của chúng?� Class có biểu diễn 1 single well-defined abstraction? � Tất cả các attribute và responsibility có gắn kết với nhau về mặt
chức năng không?� Class có cung cấp các hành vi được y/c?� Tất cả các yêu cầu cụ thể đã được thể hiện trên class chưa?
84
Checkpoints: Use-Case Realizations
� Tất cả các luồng chính và luồng con đã được điều khiển chưa, bao gồm cả các trường hợp ngoài lệ?
� Đã tìm thấy tất cả các đối tượng cần thiết?� Đã phân phối một cách rõ ràng tất cả các hành vi về các đối
tượng chưa? � Các hành vi có được phân phối về đúng đối tượng không?� Các interaction diagrams nằm ở đâu, mối quan hê gwiax chúng
có rõ ràng và phù hợp không?
'XYZ' Instructor Notes
85
Review: Use-Case Analysis
� Mục tiêu của Use-Case Analysis là gì?� Một analysis class là gì? Cho biết tên và mô tả về 3 analysis
stereotype.� Use-case realization là gì?� Mô tả một vài hoạt động khảo sát when đặt các trách nhiệm cho
các analysis class.� Bao nhiêu interaction diagram phải được xây dựng trong giai đoạn Use-Case Analysis?
86
Exercise: Use-Case Analysis, Part 2
� Hãy cho biết các khái niệm sau:� Các Requirements artifact, đặc biệt là đặc tả bổ sung� Các cơ chế phân tích có thể� Các flow of events interaction diagram cho một use case cụ
thể� Với mỗi use case hãy xác định các dữ kiện sau:
� Các thuộc tính và các mối quan hệ của Analysis class � Các cơ chế phân tích Analysis class
� Xây dựng các lược đồ sau:� VOPC class diagram, chứa các analysis class, stereotype
của chúng, nhiệm vụ, các attribute, và relationship. � Ánh xạ Analysis class với các cơ chế phân tích