You are on page 1of 34

Object-Oriented Analysis and Design

Bài 12: Thiết kế hệ thống con

Object Oriented Analysis and Design


1
Mục tiêu: Thiết kế hệ thống con
 Mô tả mục đích của việc thiết kế hệ thống
con và vị trí của nó trong vòng đời
 Xác định hành vi được xác định trong hệ
thống con về việc cộng tác của các lớp
 Tài liệu hóa cấu trúc bên trong của hệ
thống con
 Xác định sự phụ thuộc của các thành phần
bên ngoài vào hệ thống con

Object Oriented Analysis and Design


2
Ngữ cảnh thiết kế hệ thống con
[Early
Elaboration [Inception
Iteration] Iteration (Optional)]

Define a Candidate Perform


Architecture Architectural
Synthesis

Analyze Behavior

(Optional)
Refine the
Architecture

Subsystem
Design Designer Define Design the
Components Database

Object Oriented Analysis and Design


3
Tổng quan thiết kế hệ thống con

Design Subsystems
and Interfaces

Subsystem
Project Specific
Design
Guidelines

Design Classes

Object Oriented Analysis and Design


4
Nhắc lại: Hệ thống con và giao diện
Hệ thống con:
 Là giao nhau giữa một gói và một lớp
 Hiện thực hóa một hoặc nhiều giao diện
định nghĩa các hành vi của nó
<<interface>> <<subsystem>>
Interface Subsystem Name

Realization (Canonical
Subsystem
Interface form)
<<subsystem>>
Subsystem Name

Interface
Realization (Elided form)
Object Oriented Analysis and Design
5
Hướng dẫn hệ thống con
 Mục tiêu
 Liên kết lỏng lẻo <<subsystem>>
 Khả chuyển, khả năng tương thích A
cao
 Ít bị ảnh hưởng bởi các thay đổi
 Tiến hóa độc lập <<subsystem>>

 Các gợi ý B

 Không công khai chi tiết, chỉ công


khai giao diện
 Chỉ dựa vào giao diện khác <<subsystem>>
C
Sự trừu tượng hóa và đóng gói là quan trọng
Object Oriented Analysis and Design
6
Nhắc lại: Quy ước mô hình hóa cho hệ thống con và giao diện

<<subsystem>>
CourseCatalogSystem
ICourseCatalogSystem

<<subsystem>> package

<<subsystem proxy>> class

Interfaces start with an “I” <<subsystem>>


CourseCatalogSystem
<<subsystem proxy>>

ICourseCatalogSystem

Giao diện là BÊN NGOÀI của hệ thống con


Object Oriented Analysis and Design
7
Các bước thiết kế hệ thống con
 Phân chia hành vi của hệ thống con cho
các thành phần của nó
 Tài liệu hóa các thành phần hệ thống con
 Mô tả sự phụ thuộc hệ thống con
 Các điểm quan trọng

Object Oriented Analysis and Design


8
Các bước thiết kế hệ thống con
 Phân chia hành vi của hệ thống con cho
các thành phần của nó
 Tài liệu hóa các thành phần hệ thống con
 Mô tả sự phụ thuộc hệ thống con
 Các điểm quan trọng

Object Oriented Analysis and Design


9
Trách nhiệm của hệ thống con
 Trách nhiệm của hệ thống con được định
nghĩa bởi các hành vi của giao diện
 Mô hình hóa sự hiện thực hóa giao diện
 Các hành vi giao diện có thể được hiện
thực hóa bằng
 Các hành vi của lớp trong
 Các hành vi trong của hệ thống con
<<interface>>
ICourseCatalogSystem <<subsystem>>
CourseCatalogSystem
getCourseOfferings()

subsystem responsibility
Object Oriented Analysis and Design
10
Phân phối trách nhiệm hệ thống con
 Xác định các thành phần thiết kế mới, hoặc sử dụng lại
(ví dụ, lớp và/hoặc hệ thống con)
 Đặt trách nhiệm cho hệ thống con vào các thành phần
thiết kế
 Phối hợp các cơ chế có thể áp dụng (Ví dụ, lưu trữ,
phân phối)
 Tài liệu hóa sự cộng tác các thành phần thiết kế trong
“hiện thực hóa giao diện”
 Một hoặc nhiều biểu đồ tương tác cho một hành vi
giao diện
 Biểu đồ lớp chứa mối quan hệ giữa các thành phần
thiết kế
 Xem lại “Xác định các thành phần thiết kế”
 Điều chỉnh biên hệ thống con và các phụ thuộc nếu
cần

Object Oriented Analysis and Design


11
Quy ước mô hình hóa: Biểu đồ tương tác hệ thống con

Subsystem Subsystem Design Design


Client Proxy Element1 Element2

performResponsibility( )
Op1( )

Subsystem Op2( )
responsibility
Internal
Op3( ) subsystem
interactions

Op4( )

Giao diện hệ thống con không


Object Oriented Analysis and Design
được hiển thị
12
Ví dụ: Hệ thống con CourseCatalogSystem
: RegisterForCourses : Registration : ICourseCatalog : Schedule : Student
: Registrar Form Controller System

1://create schedule( )
2://get course offerings( )
3://get course offerings( ) Subsystem
Student wishes to 4://display course offerings( )
interface
create a new
schedule
Subsystem responsibility
5://display blank schedule( )

A list of the A blank schedule


available course displayed for the
offerings for this students to select
semester… offerings

6://select 4 primary and 2 alternate offerings( )


7://create schedule with offerings( )

8://create with offerings( )

9://add schedule(Schedule)

Legacy RDBMS Database Access


Object Oriented Analysis and Design
13
Phối hợp các cơ chế kiến trúc: Lưu trữ

 Ánh xạ lớp phân tích vào cơ chế kiến trúc


từ sự phân tích ca sử dụng
Lớp phân tích Cơ chế phân tích

Student Persistency, Security OODBMS


Schedule Persistency, Security Persistency

CourseOffering Persistency, Legacy Interface RDBMS


Course Persistency, Legacy Interface Persistency
RegistrationController Distribution

Lưu trữ sử dụng OODBMS


được thảo luận trong Thiết kế ca
sử dụng

Object Oriented Analysis and Design


14
Nhắc lại: Phối hợp JDBC: Các bước
 Cung cấp truy cập vào thư viện các lớp cần thiết để
cài đặt JDBC
Ö  Cung cấp gói java.sql
 Tạo các lớp DBClasses cần thiết
 Một DBClass cho một lớp lưu trữ
 Lớp lưu trữ Course Offering =>
DBCourseOffering

Ö - Done

Object Oriented Analysis and Design


15
Nhắc lại: Phối hợp JDBC: Các bước (cont.)
 Phối hợp lớp DBClasses vào thiết kế
 Phân bổ gói/tầng
• DBCourseOffering được đặt trong hệ thống
con CourseCatalogSystem
 Thêm quan hệ từ khách lưu trữ
• Khách lưu trữ là khách của hệ thống con
CourseCatalogSystem
 Tạo/cập nhật biểu đồ tương tác mô tả:
 Sự khởi tạo Database
 Truy cập các lớp lưu trữ: Tạo, sửa, xóa, cập
nhật

Object Oriented Analysis and Design


16
Ví dụ: Tương tác hệ thống con cục bộ CourseCatalogSystem
CourseCatalog : CourseCatalog : DBCourse : Connection : Statement :CourseOffering : Course : ResultSet
System Client System Offerring List Offering

: Course Catalog
1. getCourseOfferings(Semester)
Retrieve all available course
offerings for the current
semester
Subsystem Proxy
1.1. read(string)

1.1.1. createStatement( )
sql statement is passed in
specifying the search criteria 1.1.2. executeQuery(String)
course offerings in the
current semester 1.1.2.1. // executeQuery( )

Create a list to hold all


Repeat these operations for retrieved course offerings RDBMS
each element returned from 1.1.3. new( ) Read
the executeQuery()
command. 1.1.4. new( )
The CourseOfferingList is
2. getString( )
loaded with the data
retrieved from the
3. setData( )
database.
The getData and setData
operations are called for 4. add(CourseOffering)
each attribute in the each
retrieved class instance.
Add the retrieved course
offering to the list to be returned

Object Oriented Analysis and Design


17
Ví dụ: Hệ thống con Billing System
Giao diện hệ thống con
: CloseRegistration : CloseRegistration : ICourseCatalog : Course : Schedule : Student. : Ibilling
: Registrar
Form Controller System Offering System

1. // close registration( )
1.1. // is registration open?( ) Retrieve a list of course
offerings for the current
semester
2. // close registration( )
Close
2.1. getCourseOfferings(Semester) registration for
each course
offering If the maximum number of
Repeat twice this selected primary courses have
is for simplicity; 2.2. // close registration( )
not been committed, select
realistically, an alternate course offerings).
indefinite number
of iterations could
occur) 2.3. // level( )

Finally commit or
2.4. // close( ) Currently assuming tuition based on
cancel the course
offering once all number of offerings taken and certain
leveling has occurred attributes of students. If different offerings
get different prices this will change slightly.
2.5. getTuition( )
Gửi sinh viên và học phí
Đến hệ thống Billing System
để tính toán chi phí 2.6. submitBill(Student, double)
Cho lịch của sinh viên

Trách nhiệm hệ thống con


Object Oriented Analysis and Design
18
Ví dụ: tương tác cục bộ hệ thống con BillingSystem
Subsystem Proxy
Billing System : BillingSystem : StudentBillingTransaction : Student :BillingSystemInterface
: Billing System
Client

1. submitBill(Student, double)
Retrieve the
information that must
1.1. create(Student, double) be included on the bill

1.1.1. // get contact info( )

1.2. submit(StudentBillingTransaction)

1.2.1. // open connection( )

1.2.2. // process transaction( )

1.2.3. // close connection( )

Object Oriented Analysis and Design


19
Các bước thiết kế hệ thống con
 Phân chia hành vi của hệ thống con cho
các thành phần của nó
 Tài liệu hóa các thành phần hệ thống con
 Mô tả sự phụ thuộc hệ thống con
 Các điểm quan trọng

Object Oriented Analysis and Design


20
Ví dụ: Các thành phần hệ thống con CourseCatalogSystem

<<Interface>>
ICourseCatalogSystem
(from External System Interfaces)
Subsystem Proxy
getCourseOfferings(forSemester : Semester) : CourseOfferingList

<<subsystem proxy>>
CourseCatalogSystem
Giao diện hệ thống con
getCourseOfferings(forSemester : Semester) : CourseOfferingList

CourseOfferingList
(from University Artifacts) DBCourseOfferring

new() create() : CourseOffering


add() read(searchCriteria : string) : CourseOfferingList
1 1

0..*
1
<<Entity>>
CourseOffering Connection
(from University Artifacts) (from java.sql) Statement
(from java.sql) ResultSet
(from java.sql)
new() createStatement()
executeQuery()
setData() getString()
executeUpdate()

Object Oriented Analysis and Design


21
Ví dụ: Thành phần hệ thống con Billing System
<<Interface>>
IBillingSystem
(from External System Interfaces)

submitBill() StudentBillingTransaction

create(forStudent : Student, forAmount : double)


Giao diện hệ thống
con
<<Entity>>
<<subsystem proxy>>
Student
BillingSystem
(from University Artifacts)

submitBill(forStudent : Student, forTuition : double)


// get contact info()
1

Subsystem Proxy
0..1
BillingSystemInterface

submit(theTransaction : StudentBillingTransaction)

Object Oriented Analysis and Design


22
Các bước thiết kế hệ thống con
 Phân chia hành vi của hệ thống con cho
các thành phần của nó
 Tài liệu hóa các thành phần hệ thống con
 Mô tả sự phụ thuộc hệ thống con
 Các điểm quan trọng

Object Oriented Analysis and Design


23
Sự phụ thuộc hệ thống con: Hướng dẫn
 Hệ thống con phụ thuộc vào hệ thống con
<<subsystem>> <<subsystem>>
Client Support Server Support
Linh hoạt,
Server
được khuyến
cáo
 Hệ thống con phụ thuộc vào gói

<<subsystem>>
Client Support
Supporting Sử dụng
Types
cẩn thận

Object Oriented Analysis and Design


24
Ví dụ: Sự phụ thuộc của hệ thống con CourseCatalogSystem

<<subsystem>>
CourseCatalogSystem
(from Business Services)

External System
Interfaces
(from Business Services)

University Artifacts
(from Business Services)

java.sql
(from Middleware)

Object Oriented Analysis and Design


25
Ví dụ: sự phụ thuộc hệ thống con BillingSystem

<<subsystem>>
BillingSystem
(from Business Services)

External System
Interfaces
(from Business Services)

University Artifacts
(from Business Services)

Object Oriented Analysis and Design


26
Các bước thiết kế hệ thống con
 Phân chia hành vi của hệ thống con cho
các thành phần của nó
 Tài liệu hóa các thành phần hệ thống con
 Mô tả sự phụ thuộc hệ thống con
 Các điểm quan trọng

Object Oriented Analysis and Design


27
Các điểm quan trọng: Thiết kế hệ thống con

 Có một hiện thực hóa quan hệ cho mỗi giao


diện được cung cấp bởi hệ thống con?
 Có một sự phụ thuộc được định nghĩa cho
mỗi giao diện được sử dụng bởi hệ thống
con?
 Ta có chắc chắn rằng không có thành phần
nào bên trong hệ thống con được công
khai?
 Có phải mỗi hành vi của giao diện được hiện
thực hóa bởi hệ thống con được tài liệu hóa
trong biểu đồ tương tác? Nếu không, hành vi
đó có được hiện thực hóa trong lớp nào
không, để nó dễ dàng nhìn thấy ánh xạ 1:1
giữa hành vi của lớp và hành vi của giao
diện?

Object Oriented Analysis and Design


28
Tổng kết: Thiết kế hệ thống con
 Mục đích của việc thiết kế hệ
thống con?
 Có báo nhiêu biểu đồ tương
tác cần được tạo trong quá
trình thiết kế hệ thống con?
 Vì sao sự phụ lên hệ thống
con nên được đặt trên giao
diện của hệ thống con?

Object Oriented Analysis and Design


29
Bài tập: Thiết kế hệ thống con
 Cho:
 Hệ thống con đã được định
nghĩa, giao diện và mối quan hệ
của nó với các thành phần thiết
kế khác (biểu đồ ngữ cảnh hệ
thống con)
 Các mẫu sử dụng của cơ chế
kiến trúc

(continued)

Object Oriented Analysis and Design


30
Bài tập: Thiết kế hệ thống con (cont.)
 Xác định các thành phần sau
cho hệ thống con cụ thể:
 Các thành phần thiết kế được
chứa trong hệ thống con và quan
hệ của chúng
 Các cơ chế kiến trúc có thể áp
dụng
 Tương tác cần thiết để cài đặt
hành vi giao diện của hệ thống
con

(continued)

Object Oriented Analysis and Design


31
Bài tập: Thiết kế hệ thống con (cont.)
 Tạo các biểu đồ sau cho các hệ thống con
cụ thể:
 “Hiện thực hóa giao diện”
• Biểu đồ tương tác cho mỗi hành vi giao diện
• Biểu đồ lớp chứa các thành phần thiết kế hệ
thống con hiện thực hóa trách nhiệm của
giao diện và qua hệ của chúng
 Biểu đồ lớp biểu diễn hệ thống con và các sự
phụ thuộc vào các gói/hệ thống con bên ngoài
(biểu đồ lớp phụ thuộc hệ thống con)

Object Oriented Analysis and Design


32
Bài tập: Rà soát
 So sánh sự hiện thực hóa giao diện
của ta với các bạn trong lớp
 Tất cả các luồng chính/phụ đã được xử
lý chưa?
 Tất cả hành vi đã được phân bổ đến
các thành phần thiết kế tham gia chưa?
 Hành vi đã được phân bổ đến thành
phần thiết kế đúng chưa?
 Có thông điệp nào đến từ giao diện
không?

Object Oriented Analysis and Design


33
Object Oriented Analysis and Design
34

You might also like