Giáo trình UML use Case Analystic
Trang 1Phân Tích và Thiết Kế Hướng Đối Tượng
Sử dụng UML
Use-Case Analysis
Duon
g Anh Duc
Digitally signed by Duong Anh Duc DN:
cn=Duong Anh Duc, o=HCMUN
S, ou=SE Departmen
t, c=VN Date:
2001.09.18 07:12:05 Z
Signatu
re Not Verified
Trang 2Muïc tieâu: Use-Case Analysis
Use-Case Analysis vị trí của nó trong chu kỳ
sống của QT PTPM
flow of events
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
hóa collaboration giữa các thể hiện của các class đã xác định
Trang 3Use-Case Analysis trong ngữ cảnh
Architect
Designer
Architectural Analysis
Architecture Reviewer
Review the Design
Review the Architecture
Use-Case Analysis
Architectural Design Concurrency Describe Distribution Describe
Class Design
Subsystem Design Use-Case
Design Reviewer Design
Trang 4Toång quan veà Use-Case Analysis
Use-Case
Software Architecture
Document
Trang 5Các bước thực hiện phân tích Use-Case
– Tìm các Class từ Use-Case Behavior – Phân bổ Use-Case Behavior về các Class
– 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
Trang 6Các bước thực hiện phân tích Use-Case
Trang 7Boå sung Use-Case Description
• 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ừ HT cũ.
• Hệ thống hiển thị một danh sách các lớp học (course offerings).
Trang 8Các bước thực hiện phân tích Use-Case
– Tìm các Class từ Use-Case Behavior
Trang 9Review: Class
Professor name empID create( ) save( ) delete( ) change( )
Class Name Attributes Operations
– Properties (attributes) – Behavior (operations) – Relationships
– Ngữ nghĩa (Semantics)
Trang 10Review: Use-Case Realization
Trang 11Tìm kiếm các Class từ Use-Case Behavior
được phân bổ về cho các analysis class
Trang 12Thế nào là một Analysis Class?
<<control>>
<<boundary>>
<<entity>>
System boundary
Use-case behavior coordination
System information
Trang 13Các Analysis Class: Bước đầu tiến đến cài đặt
Use Cases Analysis
Classes
Source Code
Exec Design
Elements
Trang 14Thế nào là Boundary Class?
<<boundary>>
Analysis class stereotype
ngồi hệ thống
– Các User interface class – Các System interface class – Các Device interface class
case
Trang 15Vai trò của một Boundary Class
Mơ hình hĩa sự tương tác giữa system và mơi trường của nĩ
Trang 16Ví dụ: Tìm kiếm các Boundary Class
Course Catalog System Register for Courses
Trang 17Guidelines: Boundary Class
– Tập trung vào những thông tin gì được thể hiện cho người dùng
– Tập trung vào những protocols nào phải đ/n
được cài đặt
Tập trung vào các nhiệm vụ, chứ không phải chi tiết!
Trang 18Thế nào là một Entity Class?
Glossary
Business-Domain Model
<<entity>>
Analysis class stereotype
Use Case
Trang 19Vai trò của một Entity Class
Trang 20Ví dụ: Tìm kiếm các Entity Class
z Dùng use-case flow of events như input
z Các trừu tượng hĩa then chốt của use case
z 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 (ngồ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
Trang 21Ví dụ: Chọn ứng viên cho các Entity Class
Student
CourseOffering
Schedule
Trang 22Review: Generalization
Account balance
name number
Withdraw() CreateStatement()
Checking Withdraw()
Savings
GetInterest() Withdraw()
Superclass (parent)
Subclasses
Generalization Relationship
z Một class chia sẻ cấu
Trang 23Tìm Generalization: Generalization của các Class
Savings Checking Stock
Trang 24Tìm Generalization: Specialization của các Class
Trang 25Ví dụ: Generalization (Chia sẻ ngữ nghĩa)
Student name address
FulltimeStudent
studentID
gradDate
ParttimeStudent maxNumCourses
Part-timeStudent
name address numberCourses
Full-timeStudent
name address studentID gradDate
Trang 26Thế nào là một Control Class?
<<control>>
Analysis class stereotype
Use Case
Phụ thuộc use-case, độc lập mơi trường
Trang 27Vai trò của một Control Class
Điều phối các hành vi của use-case
Trang 28Ví dụ: Tìm các Control Class
Course Catalog System Register for Courses
Student
<<control>>
RegistrationController
Trang 29Ví dụ: Tổng kết về các Analysis Class
Course Catalog System Register for Courses
Trang 30Các bước thực hiện phân tích Use-Case
– Phân bổ Use-Case Behavior cho các Class
Trang 31Distribute Use-Case Behavior to Classes
– 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
Collaboration Diagrams Sequence Diagrams
Trang 32Guidelines: Allocating Responsibilities to Classes
Trang 33Guidelines: Allocating Responsibilities to Classes (cont.)
z Ai có dữ liệu cần cho việc thực hiện
Trang 34The Anatomy of Sequence Diagrams
Supplier Object Client Object
1: PerformResponsibility
Message
Reflexive Message Object Lifeline
1.1: PerformAnother Responsibility
Hierarchical Message
Đây là một
script mẫu.
Trang 35Ví duï: Sequence Diagram
: 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( )
2 // select 4 primary and 2 alternate offerings( )
2.1 // create schedule with offerings( )
2.1.1 // create with offerings( )
Trang 36Ví duï: Sequence Diagram (cont.)
: CourseOffering
: Student :
[ has pre-requisites, course offering open, and no schedule conflicts ]
[ is selected ]
Trang 37The Anatomy of Collaboration Diagrams
Trang 38Ví duï: Collaboration Diagram
: Student
: RegisterForCoursesForm
: RegistrationController
: Schedule : Student
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( )
Trang 39Ví duï: Collaboration Diagram (cont.)
: CourseOffering
: Student
: RegistrationController
: Schedule
: Student
: PrimaryScheduleOfferingInfob
1.1.2.2 // has pre-requisites(CourseOffering)
Trang 40One Interaction Diagram Not Good Enough
Basic Flow
Alternate Flow 1 Alternate Flow 2 Alternate Flow 3
AF1 AF2 AF3
Alternate Flow 4 Alternate Flow 5 Alternate Flow n
Trang 41Collaboration Diagrams Vs Sequence Diagrams
z Sequence Diagrams
– Chỉ ra rõ ràng chuỗi các thông điệp
– Trực quan hóa tốt hơn toàn bộ luồng sự kiện – Tốt hơn cho các đặc tả real-time và cho các
scenario phức tạp
Trang 42Exercise: Use-Case Analysis, Part 1
Trang 43Exercise: Use-Case Analysis, Part 1 (cont.)
(còn tiếp)
Trang 44Exercise: Use-Case Analysis, Part 1 (cont.)
– Use-case realization interaction diagram cho tối thiểu một trong các use-case flows of events
Trang 45Use-Case Analysis Steps
– Mô tả các nhiệm vụ của chúng
Trang 47// select 4 primary and 2 alternate offerings()
// display blank schedule()
<<boundary>>
PrimaryScheduleOfferingInfo grade
// 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>>
ScheduleOfferingInfo status
// mark as selected() // mark as cancelled() // is selected?()
<<entity>>
CourseOffering number : String = "100"
startTime : Time endTime : Time days : Enum
// add student() // still open?()
Trang 48Maintaining Consistency: What to Look For
Trang 49Use-Case Analysis Steps
– Mô tả các Attribute và Association
Trang 50Describe Attributes and Associations
Aggregation và Association
Trang 51Review: What is an Attribute?
ClassName <<stereotype>>
Attribute : Type = InitValue Attribute : Type = InitValue Attribute : Type = InitValue
Trong analysis, không nên tốn nhiều thời gian cho
việc xác định các attribute signature
CourseOffering <<entity>>
number :String=“100”
startTime : Time endTime: Time days: enum
attribute
Trang 52Finding Attributes
– 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
Trang 53Review: What is an Association?
các thể hiện (instances) của các class
Simple association
is a pre-requisite of
<<entity>> Course
Trang 54Review: What are Roles?
Trang 55Ví duï: Multiple Associations
<<entity>> add student to
remove student from
Trang 561 * 0 1 2 4
2, 4 6
Trang 57Ví duï: Multiplicity
Bản số
0 4 0 2
primaryCourses alternateCourses
Trang 60Review: What is Aggregation?
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
0 4 0 2
primaryCourses alternateCourses
Trang 62Association Class
status
// mark as selected() // mark as cancelled() // is selected?()
<<entity>>
CourseOffering
<<entity>> Schedule
<<entity>>
0 *
0 4 primaryCourses
alternateCourses
<<entity>>
Trang 63Finding Relationships
1: PerformResponsibility :Client
Trang 64Ví duï: VOPC: Finding Relationships
RegisterForCoursesForm // create schedule ()
// display course offerings () // display blank schedule // select 4 primary and 2 alternate offerings()
<<boundary>>
1 1
0 1
Trang 65Ví duï: VOPC: Finding Relationships (contd)
ScheduleOfferingInfo status
// mark as selected() // mark as cancelled() // is selected?()
<<entity>>
PrimaryScheduleOfferingInfob grade
// is enrolled in?() // mark as enrolled in()
<<entity>>
CourseOffering number : String = "100" startTime : Time
endTime : Time days : Enum
// add student() // cancel() // still open?() // save()
Trang 66Use-Case Analysis Steps
– Lượng giá các Analysis Mechanism
Trang 67Describing Analysis Mechanisms
Trang 68Ví duï: Describing Analysis Mechanisms
mechanism
Analysis Class Analysis Mechanism(s)
Student Schedule CourseOffering Course
RegistrationController
Persistency, Security
Persistency, Legacy Interface Persistency, Legacy Interface Distribution
Persistency, Security
Trang 69Ví duï: Describing Analysis Mechanisms (cont.)
– Granularity: 1 đến 10 Kbytes / sản phẩm – Volume: tối đa 2,000 schedule
Trang 70Use-Case Analysis Steps
z Hợp nhất các Analysis Class
Trang 71Unify Analysis Classes
<<control>>
<<boundary>>
<<entity>>
<<entity>>
Trang 72Evaluate Your Results
Supplementary Specification
Glossary Design Model
Use-Case Model
Trang 73Use-Case Analysis Steps
z Checkpoints
Trang 74Checkpoints: Analysis Classes
kết với nhau về mặt chức năng không?
class chưa?
Trang 75Checkpoints: Use-Case Realizations
được điều khiển chưa, bao gồm cả các t/h ngoài lệ?
hành vi về các đối tượng chưa?
tượng không?
quan hê gwiax chúng có rõ ràng và phù hợp không?
Trang 76Review: Use-Case Analysis
mô tả về 3 analysis stereotype.
các trách nhiệm cho các analysis class.
xây dựng trong giai đoạn Use-Case
Analysis?
Trang 77Exercise: Use-Case Analysis, Part 2
– 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ể
Trang 78Exercise: Use-Case Analysis, Part 2 (cont.)
Trang 79Exercise: Use-Case Analysis, Part 2 (cont.)
– 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