Bài giảng Phân tích và thiết kế hệ thống thông tin - Phần 3: Phân tích hệ thống - Nguyễn Anh Hào

Nội dung bài giảng 2

1. Hành động phân tích hệ thống

2. Yêu cầu đ/v hệ thống từ môi trường

3. Đặc tả hệ thống

• Coi hệ thống là một đối tượng lớn: ranh giới của nó

tách hệ thống thành 2 phần: bên trong và bên ngoài

• Nhìn từ ngoài: đặc tả những gì hệ thống sẽ làm cho

môi trường (usecase)

• Nhìn vào bên trong: đặc tả kết cấu các thành phần

(đối tượng) cần thiết của hệ thống (classes) và các

quan hệ giữa các đối tượng này.

pdf68 trang | Chuyên mục: Phân Tích Thiết Kế Hệ Thống | Chia sẻ: yen2110 | Lượt xem: 534 | Lượt tải: 0download
Tóm tắt nội dung Bài giảng Phân tích và thiết kế hệ thống thông tin - Phần 3: Phân tích hệ thống - Nguyễn Anh Hào, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
 một cấu trúc 
bảng để mô tả khái quát vai trò (có thể là cần thiết) của một đối 
tượng trong hệ thống. CRC được lập ra từ tình huống sử dụng 
đối tượng trong usecase
• Ví dụ: CRC card cho Card Reader của máy ATM
31
Lập CRC: Bước 1
• Là bước tìm các đối tượng bằng brain-storming
• Viết ra các đối tượng biết được trong miền vấn đề
– Chú ý đến các danh từ trong mô tả (objects are nouns)
– Object có thuộc tính và dịch vụ
• Sau đó, lọc và tinh chỉnh lại các đối tượng này
– Có giao tiếp phù hợp nhau (trong phạm vi ứng dụng)
– Loại bỏ sự trùng lặp:
• Nó có là thuộc tính của các đối tượng khác ?
• Nó có là thể hiện của lớp đối tượng nào đó ?
• Nó có là lớp con của lớp đối tượng nào đó ?
32
Lập CRC: Bước 2
• Với mỗi đối tượng tìm được, định nghĩa lớp đối tượng 
của nó (chỉ bằng tên gọi)
• Với mỗi lớp đối tượng, tạo ra một CRC card cho nó.
• Vai trò ( trách nhiệm) của đối tượng có thể là:
– Chứa thông tin dùng được cho các đối tượng khác
– Làm cầu nối (liên kết các đối tượng bằng quan hệ)
– Cung cấp dịch vụ cho các đối tượng khác
– Điều khiển đối tượng khác (controller)
– Chuyễn đổi giao tiếp cho các đối tượng
33
Lập CRC: Bước 3
• Tinh chỉnh cards:
– Xem xét các tình huống sử dụng
– Cập nhật thêm nhiệm vụ của đối tượng
– Viết thêm các cộng tác viên để thực hiện nhiệm vụ của 
đối tượng
34
Ví dụ 1: Coffee cup
Brainstorming: Cái tách cà phê nào tốt ?
35
Coffee cup: component objects
For sitting
For filling = pouring & holding coffee,..
For holding
For drinking
BOWL
HANDLE
36
Coffee cup: CRC cards
Class BOWL
Responsibilities Collaborators
Pour(coffee/tea/water/)
Hold(coffee/tea/water/)
Drink(coffee/tea/water/) HANDLE
Sit_on(table/desk/ground/)
Class HANDLE
Responsibilities Collaborators
Hold_by (hand/robot hand/)
37
Ví dụ 2: Thiết kế đồng hồ
• Chúng ta cần tạo ra cái đồng hồ. Yêu cầu là:
1. Có cách để đặt thời gian cho đồng hồ
• ie, nhớ được thời gian
2. Hiển thị thời gian giờ, phút, giây theo khuông mẫu
• 12h+AM/PM; 24h; hoặc đồng hồ kim,
3. Cập nhật thời gian đúng với giờ hiện hành.
• Đếm thời gian chính xác từng giây
38
Làm lần đầu
• Brainstorming
– Attributes: hours, mins, secs, timezone,state(low bat,..) 
– Services: update(), setTime(), alarm(), setAlarm(), 
displayTime(), displayDate(), setAmPm(), getAmPm(),...
• Filter/requirements: ticker, hours, minutes, seconds
• Class CLOCK:
– Attributes: seconds, minutes, hours, displayFormat
– Services: get/set, nextSecond, display, setFormat
39
Sai !!
• Chúng ta giả định rằng chỉ có 1 lớp đồng hồ: Clock.
– Làm sao để dùng lại ?
• Chúng ta bắt đầu từ dữ liệu và không bắt đầu từ vai 
trò / trách nhiệm
– Không có sự chia sẽ trách nhiệm giữa các đối tượng, 
không tìm ra được sự cộng tác.
• Ngay từ đầu, chúng ta quá chú tâm vào việc lập trình 
theo chức năng.
40
Làm lại lần 2
• Brainstorm objects for Clock
– Clock, Display, Formatter, Time, SecondTicker
– 
– Clock (function: display, format), Time. SecondTicker
• CRC Cards:
– Có hai tình huống:
1. Update time: Khi bộ xung nhịp (SecondTicker) tạo ra 1 
xung (sau 1 giây) cho đồng hồ, thời gian của đồng hồ 
(Time) phải tăng lên 1 giây.
2. Display time: Khi đồng hồ (clock) cần hiển thị thời gian, 
thời gian phải được đọc từ bộ lưu thời gian (Time) và 
định dạng hiển thị theo khuông mẫu đã ấn định.
41
CRC cho tình huống 1: Update time
1. Bộ xung 1 giây 
(seconds-Ticker) kích 
hoạt đồng hồ (clock)
2. Đồng hồ thông báo 1 
giây đã trôi qua cho bộ 
đếm thời gian (time) 
3. Bộ đếm thời gian tự cập 
nhật lại thời gian của nó 
(giờ:phút:giây)
42
CRC cho tình huống 2: Display time
1. Đồng hồ cần hiển thị 
thời gian lấy từ bộ 
đếm thời gian (time)
2. Bộ đếm thời gian trả 
về giờ, phút, giây hiện 
tại
43
CRC cho tình huống 2: Display time
3. Đồng hồ chuyễn thời 
gian (giờ, phút, giây) 
thành dạng hiển thị
44
Finished CRC
45
Clock object model
Clock Set
Clock Time
Second
ticker
46
CRC Clock: Lược đồ cộng tác
Clock
TimeSecond
ticker
1: Pulse() 2: Inform(Pulse)
3:UpdateTime()
Update time:
47
CRC Clock: Lược đồ cộng tác
Clock Time
1: Inform(Pulse)
2:Time(hr, m, s)
Display time:
3:DisplayTime(hr, m, s)
48
Ví dụ “Quản lý tài khoản ngân hàng”
Bank Employee
Bank Teller Bank Manager
Manage Account
Open Account Close Account
Monitor Account
Account Management Software
49
“Open Account” Scenario
Bank Manager Open Account
1.BM: Request Open Account 2.SYSTEM: Ask Customer Data
3.BM: Give Customer Data 4.SYSTEM: Ask Account Type
5.BM: Give Account Type 6.SYSTEM: Ask Initial Balance
7.BM: Give Initial Balance 8.SYSTEM: Confirm to BM
USE CASE: Open Account
Actor: Bank Manager (BM)
Actor’s goal: Create a new Customer’s Account on the System
Basic flows:
50
Lược đồ tuần tự cho “Open account”
Bank Manager
OpenAccount(id)
AskCustInfo(id)
CustomerInfo(data)
AskAccountType(id)
AccountType(AccType)
AskInitialBalance(id)
Balance(InitBalance)
Confirm(ResultCode)
SYSTEM Lớp SYSTEM có nhiệm vụ gì ?
3. Lưu trữ để sử dụng 
CRC
Lớp Customer Manager
Lớp Account Manager
Lớp Database 
1. Nhận biết khách hàng
2. Cấp tài khoản (loại, số dư)
51
Lược đồ tuần tự cho “Open account”
Bank Manager Cust manager
OpenAccount(id)
AskCustInfo(id)
CustomerInfo(data)
AskAccountType(id)
AccountType(AccType)
AskInitialBalance(id)
Balance(InitBalance)
Confirm(ResultCode)
Acc manager Acc DB
Activate(CustData)
CreateAcc
(Cust, Acc)
52
Lược đồ cộng tác cho “Open account”
Bank Manager
CustManager
1: OpenAccount(id)
2: AskCustInfo(id)
3: CustomerInfo(data)
5: AskAccountType(id)
6: AccountType(Acctype)
7: AskIntialBalance(id)
8: Balance(InitBalance)
10: Confirm(id,ResultCode)
AccManager
4: Activate 
(CustData)
AccDatabase
9: CreateAcc
(CustData,Acc)
53
Lược đồ hoạt động cho “Open account”
New customer
Get Cutomer Data
Create Account
Cust Manager
Get Account Type
Old
customer
Acc Manager AccDatabase
Get Initial Balance
54
Lược đồ trạng thái cho “Open account”
New customer
CustData: ready
Cust Manager Acc Manager AccDatabase
CustData: none
AccType: ready
AccType: none
AccInit: none
AccInit: ready
Get Account Type
Get Acc balance
CustAcc: ready
CustAcc: none
Create Account
Get customer data
55
Đặc tả chi tiết lớp
• Ngoài tên gọi, đối tượng còn có thuộc tính và phương 
thức xử lý.
– Thuộc tính: là đặc tính của đối tượng (có thể public, 
private hay protected)
– Phương thức: là hành động của đối tượng (có thể 
public- gọi là dịch vụ, hay private- hành vi bên trong)
• Sự đặc tả chi tiết cho đối tượng bắt nguồn từ cách 
nhìn từ bên ngoài đối với đối tượng (nhìn ra các thuộc 
tính và hành động xử lý cần thiết cho hệ thống)
– ký hiệu trước thuộc tính/phương thức: 
+ : Public, - : Private, # : Protected
56
Đặc tả thuộc tính của lớp
Tùy trường hợp sử dụng.
(1)
(2)
(3)
(4)
• Cách nào đúng ?
57
Từ lược đồ class: quan hệ kế thừa
Nhân viên
-tên,tuổi
-Vai trò
- Nhiệm vụ
Bác sỹ
-tên,tuổi
-Vai trò
- Nhiệm vụ
Người
-tên, tuổi
Bác sỹ
-tên,tuổi
Bác sỹ
-tên,tuổi
-Vai trò
- Nhiệm vụ
+Khám()
+Điều trị()
Chữa bệnh
+Khám()
+Điều trị()
Dược sỹ
-tên,tuổi
-Vai trò
- Nhiệm vụ
+Cấp thuốc()
Làm thuốc
+Cấp thuốc()
58
Từ lược đồ class: Association
ProjectEmployee
* *
Work_on
Hours
Start_date
Work_on
-E: Employee
-P: Project
-Hours
-Start_date
Bệnh nhânBác sỹ
Điều trị
1 *
BN
-My doctor : BS
BS
-My Patients[ ]: BN
+ĐieuTri (x:BN)
59
Từ lược đồ class: Aggregation
Car Bike
Engine Wheel
Car
-List of (Engine)
-List of (Wheel)
Bike
-List of (Wheel)
A "uses" B = Aggregation : B exists independently (conceptually) from A
60
Từ lược đồ class: Composition
Person
Leg Arm
Person
-MyArm : Arm
-MyLeg : Leg
A "owns" B = Composition : B has no meaning or purpose in the system 
without A
61
Đặc tả phương thức xử lý của lớp
• Dynamic view
• Các phương thức này là những dịch vụ của đối tượng 
trong hệ thống, được trích ra từ các lược đồ mô tả các 
tương tác trong hệ thống:
– Lược đồ cộng tác, tuần tự
– Lược đồ hoạt động
62
Từ lược đồ tuần tự
Person
Free
Kick(c)
Inspector
Event(m,c)
Report( p,c)
Cat
Rear
Report( m)
Police
Crime(p,c)
Arrest( p)
63
Đặc tả cho đối tượng – thành phần
• Đặc tả đối tượng = đặc tả các thuộc tính & phương 
thức cần thiết cho hệ thống (loại public, protect)
• Các thuộc tính & phương thức riêng (private) được đặc 
tả chỉ để hướng dẫn cách cài đặt cho đối tượng.
64
Đặc tả phương thức: “Open account”
Bank Manager Cust manager
OpenAccount(id)
AskCustInfo(id)
CustomerInfo(data)
AskAccountType(id)
AccountType(AccType)
AskInitialBalance(id)
Balance(InitBalance)
Confirm(ResultCode)
Acc manager Acc DB
Activate(CustData)
CreateAcc
(Cust, Acc)
SYSTEM = SOFTWARE
INTERFACE : USER - SOFTWARE
Kích hoạt từ menu “open account”
65
Đặc tả phương thức: “Open account”
Bank Manager Cust Manager
OpenAccount(id)
AskCustInfo(id)
CustomerInfo(data) Activate
(CustData)
Acc Manager
Cust Manager
+ Open Account ()
-AskCustInfo():FORM
-Activate(AM,CustData)
Open Account
Cust.Name:
Cust.Addr:
OK>
Ký hiệu UML:
>
Ký hiệu UML:
66
Đặc tả phương thức: “Open account”
Bank Manager
AskAccountType(id)
AccountType(AccType)
AskInitialBalance(id)
Balance(InitBalance)
Acc Manager
CreateAcc
(Cust, Acc)
Activate(CustData)
Cust Manager Acc DB
Acc Manager
+ Activate (CustData)
-AskAccType(): FORM
-AskInitBalance(): FORM
-Create(ACDB,Cust,Acc)
67
Đặc tả phương thức: “Open account”
Confirm(ResultCode)
Acc manager Acc DB
CreateAcc
(Cust, Acc)
Acc DB
+CreateAcc (Cust, Acc)
-DBAdd(DB,Cust,Acc) 
-Confirm() : FORM
Bank Manager
DBMS
>
Ký hiệu UML:
68
Stereo types
• Lớp biên (boundary): để tương tác giữa 
actor với hệ thống, vd: form giao diện 
cho user, tương tác với thiết bị.
• Lớp điều khiển (control): phân phối các 
thông điệp để thực hiện usecase
• Lớp thực thể (entity): lớp có chứa dữ 
liệu cho các tương tác trong usecase
>
>
>

File đính kèm:

  • pdfbai_giang_phan_tich_va_thiet_ke_he_thong_thong_tin_phan_3_ph.pdf