43
'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 Mc tiêu Tìm hiu mc đích ca công đon phân tích Use-Case và vtrí ca nó trong chu ksng ca qui trình phát trin phn mm Xác định các lp thc hin mt dòng skin use- case Phân phi các hành vi (behaviour) ca use- case vcác lp(class), thông qua vic xác định nhim vca các lp Phát trin các hin thc hóa use-case mô hình hóa tương tác gia các thhin ca các lp đã xác định

Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

  • Upload
    vanhanh

  • View
    218

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 2: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 3: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 4: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 5: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 6: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 7: Phân tích Use-Case · PDF filePhá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 ... 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>>

Page 8: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 9: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 10: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 11: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 12: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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.

Page 13: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 14: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 15: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 16: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 17: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 18: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 19: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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ụ

Page 20: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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.

Page 21: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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( )

Page 22: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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( )

Page 23: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 24: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 25: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 26: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 27: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 28: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 29: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 30: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 31: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 32: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 33: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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ó

Page 34: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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ẻ.

Page 35: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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..*

Page 36: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 37: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 38: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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)

Page 39: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 40: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'XYZ' Instructor Notes

79

<<control>>

<<boundary>>

<<entity>><<entity>>

Unify Analysis Classes

80

Unify Analysis Classes

Page 41: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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

Page 42: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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?

Page 43: Phân tích Use-Case · PDF filePhá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 ... Lớp phân tích:

'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