1. Công cụ và môi trường phát triển phần mềm
Phân tích Use-Case
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 1
2. Mục tiêu
w Tìm hiểu mục đích của công đoạn Use-Case Analysis vị trí của
nó trong chu kỳ sống của qui trình phát triển phần mềm
w Xác định các class thực hiện một use- case flow of events
w Phân phối các hành vi (behaviour) của use-case về các class
của nó, thông qua việc xác định nhiệm vụ của các class
w Phát triển các use-case realization mô hình hóa collaboration
giữa các thể hiện của các class đã xác định
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 2
3. Use-Case Analysis trong ngữ cảnh
Architectural
Analysis
Architectural Describe Ôn lại the Architecture
Describe Architecture Ôn lạier
Architect Design Concurrency Distribution
Subsystem Design
Use-Case
Analysis
Ôn lại the
Use-Case Design
Design
Designer Design Ôn lạier
Class
Design
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 3
4. Tổng quan Use-Case Analysis
Software Architecture
Glossary Use-Case Document
Modeling Guidelines Analysis Classes
Supplementary
Specifications
Use-Case Use-Case Realization
Use-Case Realization
(identified) Analysis (developed)
Use-Case Model Design Model
Analysis Model (optional)
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 4
5. Các bước trong Use-Case Analysis
w Bổ sung mô tả Use-Case
w 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 Class
w 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
w Hợp nhất các Analysis Class
w Checkpoints
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 5
6. Các bước trong Use-Case Analysis
w Bổ sung mô tả Use-Case
w 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 Class
w 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
w Hợp nhất các Analysis Class
w Checkpoints
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 6
7. Supplement the Use-Case Description
• Hệ thống truy vấn và
• Hệ thống hiển thị một danh
hiển thị một sách các lớp học
danh sách đang mở từ CSDL
các lớp học course catalog kế
(course thừa từ hệ thống cũ.
offerings).
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 7
8. Các bước trong Use-Case Analysis
w Bổ sung mô tả Use-Case
w 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 Class
w 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
w Hợp nhất các Analysis Class
w Checkpoints
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 8
9. Ôn lại: Class
w Là một sự trừu tượng hóa
w Mô tả một nhóm các đối tượng có chung:
§ Properties (attributes)
§ Behavior (operations)
§ Relationships
§ Ngữ nghĩa (Semantics)
Class Name Professor
name
Attributes empID
Operations create( )
save( )
delete( )
change( )
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 9
10. Ôn lại: Use-Case Realization
Use-Case Model Design Model
Use Case Use-Case Realization
Sequence Diagrams Collaboration Diagrams
Use Case
Phân tích Use-Case
Class Diagrams
Khoa CNTT - ĐHKHTN 10
11. Tìm các Class từ Use-Case Behavior
w Toàn bộ hành vi của một use case phải được phân bổ về cho
các analysis class
<<boundary>>
<<control>> <<boundary>>
<<entity>>
<<entity>>
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 11
12. Thế nào là một Analysis Class?
<<boundary>>
<<control>>
Use-case
behavior
coordination
System
boundary
System
<<entity>>
information
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 12
13. Analysis Classes: A First Step Towards Executables
Use Cases Analysis Design Source Exec
Classes Elements Code
Use-Case Analysis
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 13
14. Thế nào là một Boundary Class?
w Làm trung gian giao tiếp với những gì nằm ngoài hệ thống
w Một số kiểu
§ Các User interface class
§ Các System interface class
§ Các Device interface class
w Một boundary class cho 1 cặp actor/use case
<<boundary>>
Analysis class
stereotype
Phụ thuộc môi trường
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 14
15. Vai trò của Boundary Class
<<boundary>>
<<control>>
<<boundary>>
Customer
<<boundary>>
<<entity>> <<entity>>
Mô hình hóa sự tương tác giữa system và môi trường của nó
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 15
16. Ví dụ: Tìm các Boundary Class
w Một boundary class cho 1 cặp actor/use case
Student Register for Courses Course Catalog System
<<boundary>> <<boundary>>
RegisterForCoursesForm CourseCatalogSystem
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 16
17. Guidelines: Boundary Class
w Các User Interface Class
§ 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 UI
w Các System và Device Interface Class
§ Tập trung vào những 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
Tập trung vào các nhiệm vụ, chứ không phải chi tiết!
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 17
18. Thế nào là một Entity Class?
w Các trừu tượng hóa then chốt của system
Analysis class
stereotype
<<entity>>
Glossary
Use Case
Business-Domain Model
Architectural Analysis
Abstractions Độc lập môi trường
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 18
19. Vai trò của Entity Class
<<boundary>>
<<control>>
<<boundary>>
Customer
<<boundary>>
<<entity>> <<entity>>
Lưu trữ và quản trị các thông tin trong system
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 19
20. Ví dụ: Tìm các Entity Class
w Dùng use-case flow of events như input
w Các trừu tượng hóa then chốt của use case
w Hướng tiếp cận truyền thống (nouns filtering)
§ Gạch dưới các cụm danh từ trong flow of events
§ 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 actor (ngoài phạm vi)
§ Loại bỏ các kiến trúc cài đặt
§ Loại bỏ các attribute (để lại dùng sau)
§ Loại bỏ các operation
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 20
21. Ví dụ: Candidate Entity Class
w Register for Courses (Create Schedule)
Student
CourseOffering
Schedule
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 21
22. Ôn lại: Generalization
w Một class chia sẻ cấu trúc Account
và/hoặc hành vi của một hay balance
nhiều class Superclass name
w Mối quan hệ “Là một dạng (parent)
number
của” Withdraw()
w Trong phân tích, sử dụng ở CreateStatement()
mức độ đơn giản, sơ sài
Generalization
Relationship
Checking Savings
Subclasses
Withdraw() GetInterest()
Withdraw()
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 22
23. Finding Generalization: Generalization of Classes
Stock
Savings Checking Tổng quát hơn
Bond Asset
RealEstate
BankAccount Security RealEstate
Savings Checking Stock Bond
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 23
24. Finding Generalization: Specialization of Classes
Asset
Asset
BankAccount Security RealEstate
Savings Checking Stock Bond
Chuyên biệt hơn
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 24
25. Ví dụ: Generalization (Chia sẻ ngữ nghĩa)
Part-timeStudent Full-timeStudent
name name
Không có sự address
address
tổng quát hóa studentID studentID
numberCourses gradDate
Student
name
Có sự tổng quát address
studentID
hóa
FulltimeStudent ParttimeStudent
gradDate maxNumCourses
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 25
26. Thế nào là một Control Class?
w Nhà điều phối các hành vi của Use-case
w Chỉ một control class cho một use case
<<control>>
Analysis class
Use Case stereotype
Phụ thuộc use-case, độc lập môi trường
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 26
27. Vai trò của Control Class
<<boundary>>
<<control>>
<<boundary>>
Customer
<<boundary>>
<<entity>> <<entity>>
Điều phối các hành vi của use-case
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 27
28. Ví dụ: Tìm các Control Class
w Một control class cho một use case
Student Register for Courses Course Catalog System
<<control>>
RegistrationController
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 28
29. Ví dụ: Summary: Analysis Classes
Student Register for Courses Course Catalog System
Use-Case Model
Design Model
<<boundary>> <<control>> <<boundary>>
RegisterForCoursesForm RegistrationController CourseCatalogSystem
<<entity>> <<entity>> <<entity>>
Student Schedule CourseOffering
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 29
30. Các bước trong Use-Case Analysis
w Bổ sung mô tả Use-case
w 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 Class
w 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
w Hợp nhất các Analysis Class
w Checkpoints
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 30
31. Phân bổ Use-case về các Class
w Đối với mỗi use-case flow of events:
§ Xác định các analysis class
§ Gắn kết các trách nhiệm của use-case cho các analysis
class
§ Mô hình hóa tương tác của các analysis class trong
interaction diagram
Sequence Diagrams Collaboration Diagrams
Use Case Use-Case Realization
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 31
32. Guidelines: Allocating Responsibilities to Classes
w Dùng các A.Class stereotype làm guide:
§ 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
abstraction
§ 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 flow of events
(còn tiếp)
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 32
33. Guidelines: Allocating Responsibilities to Classes (tt)
w Ai có dữ liệu cần cho việc thực hiện nhiệm vụ?
§ Một class có dữ liệu, hãy để nhiệm vụ cùng với dữ liệu
§ Nhiều class có dữ liệu :
• Hãy để nhiệm vụ trong 1 class và thêm 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 quan hệ với các class cũ
• Hãy để nhiệm vụ trong control class, và thêm quan hệ
với các class cần để thực hiện nhiệm vụ
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 33
34. The Anatomy of Sequence Diagrams
Client Object Supplier Object
:Client :Supplier
Object Lifeline
Reflexive Message
1: PerformResponsibility
Đây là một script
mẫu
1.1: PerformAnother
Responsibility
Message
Hierarchical Message
Numbering
Focus of Control
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 34
35. Ví dụ: Sequence Diagram
: : : : Schedule : Student
: Course Catalog
: Student RegisterForCoursesForm RegistrationController CourseCatalogSystem
1. // create schedule( )
1.1. // get course offerings( )
Student wishes to
create a new 1.1.1. // get course offerings(forSemester)
schedule
1.1.1.1. // get course offerings( )
1.2. // display course offerings( )
A list of the available
course offerings for this
semester are displayed
A blank schedule
1.3. // display blank schedule( )
is displayed for the
students to select
offerings
2. // select 4 primary and 2 alternate offerings( )
2.1. // create schedule with offerings( )
2.1.1. // create with offerings( )
2.1.2. // add schedule(Schedule)
At this, point the Submit Schedule subflow is executed.
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 35
36. Ví dụ: Sequence Diagram (cont.)
: RegisterForCoursesForm : RegistrationController : Schedule : : CourseOffering : Student
: Student PrimaryScheduleOfferingInfob
1. // submit schedule( )
1.1. // submit schedule( )
1.1.1. // save( )
1.1.2. // submit( )
1.1.2.1. // is selected?( )
[ is selected ]
1.1.2.2. // has pre-requisites(CourseOffering)
Repeat for all primary
course offerings. 1.1.2.3. // still open?( )
An attempt is made
to register the 1.1.2.4. // any conflicts?( )
student for all
selected course
offerings [ has pre-requisites, course offering open,
and no schedule conflicts ]
1.1.2.5. // add student(Schedule)
1.1.2.6. // mark as enrolled in( )
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 36
37. The Anatomy of Collaboration Diagrams
Client Object
Link Supplier Object
:Client
:Supplier
1: PerformResponsibility
Message
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 37
39. Ví dụ: Collaboration Diagram (cont.)
1. // submit schedule( )
: RegisterForCoursesForm
: Student 1.1.2.4. // any conflicts?( )
1.1. // submit schedule( )
1.1.1. // save( ) 1.1.2.3. // still open?( )
1.1.2. // submit( ) 1.1.2.5. // add student(Schedule)
: : :
RegistrationController Schedule CourseOffering
1.1.2.1. // is selected?( ) 1.1.2.2. // has pre-requisites(CourseOffering)
1.1.2.6. // mark as enrolled in( )
:
PrimaryScheduleOfferingInfob
: Student
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 39
40. Một lược đồ tương tác là chưa đủ
Basic Flow
Alternate Flow 1 Alternate Flow 2 Alternate Flow 3
AF3
AF1
AF2
Alternate Flow 4 Alternate Flow 5 Alternate Flow n
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 40
41. Collaboration Diagrams Vs Sequence Diagrams
w Collaboration Diagrams w Sequence Diagrams
§ Chỉ ra các mối quan hệ § Chỉ ra rõ ràng chuỗi các
bổ sung cho các tương thông điệp
tác § Trực quan hóa tốt hơn
§ Trực quan hóa tốt hơn toàn bộ luồng sự kiện
các mẫu cộng tác § Tốt hơn cho các đặc tả
§ Trực quan hóa tốt hơn real-time và cho các
các hiệu ứng tác động scenario phức tạp
lên một đối tượng cụ
§ Dễ sử dụng hơn trong
các vấn đề cần giải quyết
tập thể
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 41
42. Exercise: Use-Case Analysis, Part 1
w 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
w 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
(còn tiếp)
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 42
43. Exercise: Use-Case Analysis, Part 1 (tt)
w 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
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 43
44. Các bước trong Use-Case Analysis
w Bổ sung mô tả Use-case
w 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
w 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
w Hợp nhất các Analysis Class
w Checkpoints
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 44
45. Miêu tả các trách nhiệm
w Trách nhiệm (responsibilities) là gì?
w Làm thế nào để tìm ra chúng?
Interaction Diagram
:Client :Supplier
// PerformResponsibility
Class Diagram
Supplier
// PerformResponsibility
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 45
46. Ví dụ: View of Participating Classes (VOPC) Class
Diagram
<<control>>
RegistrationController <<boundary>>
<<boundary>> CourseCatalogSystem
RegisterForCoursesForm // get course offerings()
// submit schedule() // get course offerings()
// submit schedule() // create schedule with offerings()
// display course offerings()
// display schedule()
// create schedule()
// select 4 primary and 2 alternate offerings() <<entity>>
// display blank schedule() <<entity>> ScheduleOfferingInfo
Schedule status
// create with offerings() // mark as selected()
// submit() // mark as cancelled()
// save() // is selected?()
<<entity>>
Student
// add schedule() <<entity>>
// has pre-requisites() CourseOffering <<entity>>
number : String = "100" PrimaryScheduleOfferingInfo
startTime : Time grade
endTime : Time
days : Enum // is enrolled in?()
// mark as enrolled in()
// add student()
// still open?()
// save()
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 46
47. Quản lý sự toàn vẹn: những điều quan tâm
w Xét theo trình tự
§ Dư thừa trách nhiệm giữa các lớp
§ Các trách nhiệm bị tách rời giữa các lớp
§ Lớp chỉ có một trách nhiệm
§ Lớp không có trách nhiệm
§ Sự phân tán các hành vi
§ Lớp có quá nhiều tương tác với các lớp khác
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 47
48. Các bước trong Use-Case Analysis
w Bổ sung mô tả Use-case
w 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
w 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
w Hợp nhất các Analysis Class
w Checkpoints
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 48
49. Miêu tả các thuộc tính và các mối quan hệ
w Định nghĩa các Attribute
w Thiết lập các mối quan hệ dạng Aggregation và Association
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 49
50. Ôn lại: thế nào là thuộc tính ?
<<stereotype>>
ClassName
Attribute : Type = InitValue
Attribute : Type = InitValue
Attribute : Type = InitValue
Trong analysis, không nên
tốn nhiều thời gian cho
<<entity>> việc xác định các attribute
CourseOffering signature
number :String=“100”
startTime : Time
endTime: Time
attribute days: enum
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 50
51. Cách tìm các thuộc tính
w Các thuộc tính/đặc điểm của các class
w Các thông tin đc giữ lại bởi các class
w Các “danh từ” không biến thành class
§ Các thông tin mà giá trị của chúng là quan trọng
§ Các thông tin ddc sở hữu bởi 1 object duy nhất
§ Các thông tin không có hành vi
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 51
52. Ôn lại: thế nào là một mối quan hệ
w 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 class
<<entity>> <<entity>>
Student CourseOffering
Simple
association
is a pre-requisite of
<<entity>>
Schedule
<<entity>>
Course
Reflexive
association
Association là một quan hệ cấu trúc
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 52
53. Ôn lại: thế nào là các vai trò ?
w Nhân vật” mà một class “đóng vai” trong association
<<entity>> <<entity>>
CourseOffering Professor
Instructor
Role Name Department head
<<entity>>
Pre-requisites Department
<<entity>>
Course
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 53
54. Ví dụ: quan hệ đa kết hợp
primaryCourses
<<entity>> <<entity>>
Schedule CourseOffering
alternateCourses
add student to
<<entity>> <<entity>>
Schedule remove student from CourseOffering
Các multiple association phải phản ánh các multiple role
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 54
55. Ôn lại: bản số (Multiplicity)
w Không mô tả
w Duy nhất một
1
w Zero hoặc nhiều (many,
unlimited) 0..*
*
w Một hoặc nhiều 1..*
w Zero hoặc 1 0..1
w Một đoạn 2..4
w Nhiều đoạn rời nhau 2, 4..6
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 55
56. Ví dụ: Multiplicity
Bản số
<<entity>> <<entity>> 0..* 0..4
1 0..* primaryCourses <<entity>>
Student Schedule
0..* 0..2 CourseOffering
alternateCourses
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 56
57. Ôn lại: Navigability
w Khả năng định hướng từ associating class đến target class
Class1 Class2
Hai chiều
Một chiều Class1 Class2
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 57
59. Ôn lại: Quan hệ Aggregation?
w 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ó
Whole/aggregate part
<<entity>> <<entity>> 0..* 0..4
1 0..* primaryCourses <<entity>>
Student Schedule
0..* 0..2 CourseOffering
alternateCourses
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 59
60. Association hay Aggregation?
w Xem xét
§ Ngữ cảnh, các đặc trưng độc lập của Class2
Class1 Class2
association
Class1 Class2
aggregation
Khi cảm thấy nghi ngờ hãy dùng association
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 60
61. Lớp kết hợp (Association Class)
w Một class “được gắn” vào một association
w Chứa các thuộc tính của relationship
w Một thể hiện / 1 link <<entity>>
ScheduleOfferingInfo
status
// mark as selected()
// mark as cancelled()
// is selected?()
alternateCourses
0..* 0..2
<<entity>> <<entity>>
Schedule CourseOffering
0..* primaryCourses
0..4
<<entity>>
PrimaryScheduleOfferingInfob
grade
// is enrolled in?()
Phân tích Use-Case
// mark as enrolled in()
Khoa CNTT - ĐHKHTN // mark as committed()
61
62. Xác định các mối quan hệ
1: PerformResponsibility
Collaboration :Client :Supplier
Diagram
Link
Client Supplier
Class
Client 0..* Supplier
Diagram 0..*
Prime suppliers
PerformResponsibility()
Association
Tạo Relationship cho mọi link!
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 62
63. Ví dụ: VOPC: Xác định các quan hệ
<<boundary>>
RegisterForCoursesForm
// create schedule ()
// display course offerings ()
// display blank schedule
// select 4 primary and 2 alternate offerings()
1
1
<<boundary>> <<control>>
CourseCatalogSystem 1 0..*
RegistrationController
// get course offerings(forSemester) // get course offerings()
// create schedule with offerings
0..1 0..1
0..1
registrant 1 currentSchedule
<<entity>> <<entity>>
Student Schedule
// add schedule (Schedule) // create with offerings()
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 63
64. Ví dụ: VOPC: Xác định các quan hệ (tt)
<<entity>>
PrimaryScheduleOfferingInfob
grade
// is enrolled in?() <<entity>>
// mark as enrolled in() CourseOffering
<<entity>> number : String = "100"
Schedule startTime : Time
primaryCourses endTime : Time
// cancel(theOffering : CourseOffering) days : Enum
// submit() 0..* 0..4
// any conflicts?() // add student()
// create with offerings() 0..* alternateCourses 0..2 // cancel()
// still open?()
// save()
<<entity>>
ScheduleOfferingInfo
status
// mark as selected()
// mark as cancelled()
// is selected?()
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 64
65. Các bước trong Use-Case Analysis
w Bổ sung mô tả Use-case
w 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
w 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
w Hợp nhất các Analysis Class
w Checkpoints
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 65
66. Mô tả các cơ chế phân tích
w Tập hợp tất cả analysis mechanisms trong 1 danh sách
w Vẽ một ánh xạ các client classes đến các analysis mechanism
Analysis Class Analysis Mechanism(s)
w Xác định các đặc trưng của Analysis Mechanisms
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 66
67. Ví dụ: Miêu tả các cơ chế phân tích
w Ánh xạ giữa Analysis class và analysis mechanism
Analysis Class Analysis Mechanism(s)
Student Persistency, Security
Schedule Persistency, Security
CourseOffering Persistency, Legacy Interface
Course Persistency, Legacy Interface
RegistrationController Distribution
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 67
68. Ví dụ: Miêu tả các cơ chế phân tích (cont.)
w Các đặc trưng của Analysis mechanism
w Persistency của Schedule class:
§ Granularity: 1 đến 10 Kbytes / sản phẩm
§ Volume: tối đa 2,000 schedule
§ Access frequency
• Create: 500 lần / ngày
• Read: 2,000 lần / giờ
• Update: 1,000 lần / ngày
• Delete: 50 lần / ngày
§ ….
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 68
69. Các bước trong Use-Case Analysis
w Bổ sung mô tả Use-case
w 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
w 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
w Hợp nhất các Analysis Class
w Checkpoints
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 69
70. Hợp nhất các lớp phân tích
<<boundary>>
<<control>>
<<entity>> <<entity>>
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 70
71. Đánh giá các kết quả
Glossary
Design Model
Supplementary
Specification
Use-Case Model
Analysis Classes
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 71
72. Các bước trong Use-Case Analysis
w Bổ sung mô tả Use-case
w 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
w 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
w Hợp nhất các Analysis Class
w Checkpoints
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 72
73. Checkpoints: Analysis Classes
w Các class có hợp lý không?
w Tên của các class có phản ánh đúng vai trò của chúng?
w Class có biểu diễn 1 single well-defined abstraction?
w 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?
w Class có cung cấp các hành vi được y/c?
w Tất cả các yêu cầu cụ thể đã được thể hiện trên class chưa?
(còn tiếp)
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 73
74. Checkpoints: Use-Case Realizations
w 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ệ?
w Đã tìm thấy tất cả các đối tượng cần thiết?
w Đã 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?
w Các hành vi có được phân phối về đúng đối tượng không?
w Các interaction diagrams nằm ở đâu, mối quan hê gwiax chúng
có rõ ràng và phù hợp không?
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 74
75. Ôn lại: Use-Case Analysis
w Mục tiêu của Use-Case Analysis là gì?
w Một analysis class là gì? Cho biết tên và mô tả về 3 analysis
stereotype.
w Use-case realization là gì?
w 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.
w Bao nhiêu interaction diagram phải được xây dựng trong giai
đoạn Use-Case Analysis?
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 75
76. Bài tập: Use-Case Analysis, Part 2
w 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ể
w 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
w 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
Phân tích Use-Case
Khoa CNTT - ĐHKHTN 76