Bài giảng Công nghệ phần mềm - Chủ đề 3: Phân tích Phần mềm

Nội dung

• Sơ đồ lớp ở mức phân tích

– Xác định các lớp đối tượng chính

– Xác định các thông tin và hành động/trách nhiệm của mỗi lớp

đối tượng chính

– Xác định các quan hệ chính

– Xác định các lớp đối tượng phụ, các danh mục

• Sơ đồ lớp và Khả năng tiến hóa của hệ thống

• Sơ đồ trạng thái

– Khái niệm và các ký hiệu

• Trạng thái

• Biến cố, điều kiện

• Trạng thái đầu, trạng thái cuối

• Superstate

– Áp dụng

pdf 84 trang yennguyen 3320
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Công nghệ phần mềm - Chủ đề 3: Phân tích Phần mềm", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Công nghệ phần mềm - Chủ đề 3: Phân tích Phần mềm

Bài giảng Công nghệ phần mềm - Chủ đề 3: Phân tích Phần mềm
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 1 HIENLTH
Chủ đề 3 (tt): Phân tích Phần mềm
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 2 HIENLTH
Phân tích Hướng đối tượng
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 3 HIENLTH
Nội dung
• Sơ đồ lớp ở mức phân tích
– Xác định các lớp đối tượng chính
– Xác định các thông tin và hành động/trách nhiệm của mỗi lớp 
đối tượng chính
– Xác định các quan hệ chính
– Xác định các lớp đối tượng phụ, các danh mục
• Sơ đồ lớp và Khả năng tiến hóa của hệ thống
• Sơ đồ trạng thái
– Khái niệm và các ký hiệu
• Trạng thái
• Biến cố, điều kiện
• Trạng thái đầu, trạng thái cuối
• Superstate
– Áp dụng
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 4 HIENLTH
Một số khái niệm mở đầu
• Vấn đề: Mô tả lại bằng một ngôn ngữ nào đó 
(thường là các sơ đồ) nhằm diễn tả trực quan về 
vấn đề
• Phân tích: xây dựng mô hình Thế giới thực
• Phân tích theo hướng đối tượng: xây dựng các 
mô hình về các đối tượng của Thế giới thực
• Một số loại Sơ đồ:
– Sơ đồ lớp đối tượng: Mô tả hệ thống các lớp đối
tượng (thuộc tính, hành động) cùng với các quan hệ
giữa chúng
– Sơ đồ trạng thái: Mô tả chu trình sống của đối tượng
– 
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 5 HIENLTH
Lớp (class) là gì?
• Đối tượng là cái gì đó tồn tại trong thế giới thực
• Lớp là mô tả thuộc tính, hành vi, ngữ nghĩa của 
một nhóm đối tượng
– Lớp xác định thông tin nào được lưu trữ trong đối 
tượng và hành vi nào đối tượng có
• Thí dụ về lớp: Lớp NhanVien
– Đối tượng của lớp có các attribute: HoTen, DiaChi, 
Luong
– Các hành vi: Thuê mướn, Đuổi việc và Đề bạt nhân 
viên?
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 6 HIENLTH
Sơ đồ Lớp Class Diagram
• Là biểu đồ quan trọng nhất.
• Mô tả các đối tượng và mối quan hệ của chúng 
trong hệ thống.
• Mô tả các thuộc tính và các hành vi (Behavior) 
của đối tượng.
• Có biểu đồ lớp mức phân tích và mức cài đặt.
• Ký pháp đồ họa của lớp trong biểu đồ
– Tên lớp
– Thuộc tính
– Thao tác
+ : public
- : private
# : protected
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 7 HIENLTH
Nhắc lại về hướng đối tượng 
Tên class Tên class
(Các) phương thức
(Các) thuộc tính
Một số ký hiệu
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 8 HIENLTH
Public/Protected/Private
+ Thuộc tính/Phương thức public
- Thuộc tính/Phương thức private
# Thuộc tính/Phương thức protected
Phương 
thức Public
Phương 
thức 
Protected
Phương thức
Private
Class
- privateAttribute
# protectedAttribute
+publicOp()
# protectedOp()
- privateOp()
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 9 HIENLTH
Class
- classifierScopeAttribute
classifierScopeOperation()
- instanceScopeAttribute
instanceScopeOperation()
Tầm vực
• Xác định số lượng thể hiện của thuộc tính 
/ phương thức
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 10 HIENLTH
Ví dụ
CStudent
- name
- address
- nextAvailID : int
+ addSchedule(theSchedule : Schedule, forSemester : Semester)
+ getSchedule(forSemester : Semester) : Schedule
+ hasPrerequisites(forCourseOffering : CourseOffering) : boolean
# passed(theCourseOffering : CourseOffering) : boolean
+ getNextAvailID() : int
- studentID
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 11 HIENLTH
Nhận xét
Tên class
(Các) phương thức
(Các) thuộc tính
Bình thường: Class bình thường
In nghiêng: Class thuần ảo
Gạch dưới: Object (không phải class)
Bình thường: Thuộc tính bình thường
In nghiêng: không sử dụng
Gạch dưới: Thuộc tính static
Bình thường: Phương thức bình 
thường
In nghiêng: Phương thức virtual
Gạch dưới: Phương thức static
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 12 HIENLTH
Hai dạng lớp: phân tích và thiết kế
Bỏ qua các chi tiết 
không cần thiết
Phải đầy đủ & chi tiết các thành phần 
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 13 HIENLTH
Tìm kiếm lớp như thế nào?
• Tìm đầy đủ lớp rất khó khăn.
• Khuyến cáo
– Tìm lớp từ các danh từ trong luồng sự kiện
– Chú ý rằng danh từ có thể là tác nhân, lớp, ( thuộc 
tính và biểu thức không phải loại trên
– Tìm lớp từ biểu đồ tương tác
– Những cái chung của đối tượng tạo thành lớp
– Tìm lớp ở các nơi khác
• Các báo cáo tìm ra trong pha phân tích yêu cầu hình thành
lớp giao diện
• Các thiết bị phần cứng được biểu diễn bởi lớp khác nhau
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 14 HIENLTH
Tìm kiếm lớp như thế nào?
• Cùng với chuyên gia lĩnh vực vấn đề trả lời các câu hỏi 
sau đây để tìm ra lớp
– Có thông tin nào cần lưu trữ hay phân tích? Nếu có, nó là lớp
– Có hệ thống ngoài không? Nếu có thì nó được xem như những 
lớp chứa trong hệ thống của ta hay hệ thống của ta tương tác 
với chúng
– Có mẫu, thư viện lớp, thành phần...? Nếu có, thông thường 
chúng chứa các ứng viên lớp
– Hệ thống cần quản lý các thiết bị ngoại vi nào? Mọi thiết bị kỹ
thuật nối với hệ thống đều là ứng viên lớp.
– Tác nhân đóng vai trò tác nghiệp nào? Các nhiệm vụ này có thể 
là lớp; thí dụ người sử dụng, thao tác viên hệ thống, khách 
hàng...
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 15 HIENLTH
Mối quan hệ giữa các class
• Generalization: tổng quát hóa
• Association:
– dependency
– aggregation
– composition
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 16 HIENLTH
Các quan hệ trong biểu đồ lớp
• Quan hệ Generalization: Thể hiện rằng một 
lớp A kế thừa từ một lớp B (Hay A là trường hợp 
riêng của B; B là tổng quát của A)
• Gọi là quan hệ Là một (Is a)
• Thể hiện:
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 17 HIENLTH
Quan hệ giữa các lớp đối tượng
• Quan hệ kế thừa
– ClassB kế thừa từ ClassA
– ClassB là một trường hợp đặc biệt của ClassA
– ClassA là trường hợp tổng quát của ClassB
ClassA
ClassB
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 18 HIENLTH
Ví dụ
CTamGiac
# CDiem P1
# CDiem P2
# CDiem P3
+ CTamGiac()
+ float DienTich()
+ float ChuVi()
+ void Ve()
+ ...
CTuGiac
# CDiem P1
# CDiem P2
# CDiem P3
# CDiem P4
+ CTuGiac()
+ float DienTich()
+ float ChuVi()
+ void Ve()
+ ...
CEllipse
# CDiem Tam
# float A
# float B
+ CEllipse()
+ float DienTich()
+ float ChuVi()
+ void Ve()
+ ...
CHinhVe
# int MaLoaiHinhVe
+ float DienTich()
+ float ChuVi()
+ void Ve()
+ ...
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 19 HIENLTH
Quan hệ giữa các lớp đối tượng
• Quan hệ Association
• Hoặc
– Trong ClassA có thuộc tính có kiểu là ClassB
• Hoặc
– Trong ClassB có thuộc tính có kiểu là ClassA
• Nhận xét: Về mặt lập trình, thuộc tính có thể
được lưu trữ dạng biến đơn, biến mảng, hay
biến con trỏ
• Ví dụ: ?
ClassA ClassB
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 20 HIENLTH
Ví dụ
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 21 HIENLTH
Quan hệ giữa các lớp đối tượng
• Quan hệ Aggregation
• Đã xác định được ClassA và ClassB có quan hệ 
Association với nhau
– Xác định rõ hơn:
• Trong object của ClassA có chứa (trong phần
thuộc tính) object của ClassB
• ObjectX của ClassA bị hủy thì ObjectY của ClassB
(bên trong ObjectX) vẫn có thể còn tồn tại
• Ví dụ: ?
ClassA ClassB
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 22 HIENLTH
Quan hệ Aggregation
• Còn gọi là mối quan hệ: Có một (Has a)
• Ví dụ:
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 23 HIENLTH
Quan hệ giữa các lớp đối tượng
• Quan hệ Composition
• Đã xác định được ClassA và ClassB có quan hệ 
Association với nhau
– Xác định rõ hơn:
• Trong object của ClassA có chứa (trong phần
thuộc tính) object của ClassB
• ObjectX của ClassA bị hủy thì ObjectY của ClassB
(bên trong ObjectX) không thể còn tồn tại
– Ví dụ: ?
ClassA ClassB
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 24 HIENLTH
Quan hệ Composition
• Thể hiện rằng một lớp A bao hàm lớp B. Nhưng 
lớp B không thể tồn tại độc lập (Tức không 
thuộc lớp nào). Tức là, nếu có B thì phải suy ra 
được A.
• Thể hiện:
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 25 HIENLTH
Quan hệ giữa các lớp đối tượng
• Chiều của quan hệ (Association, 
Aggregation, Composition)
• Nếu quan hệ là 1 chiều: đa số các lời gọi 
hàm được gọi theo đúng chiều của quan 
hệ
• Nếu quan hệ là 2 chiều: không vẽ mũi tên
ClassA ClassB
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 26 HIENLTH
Quan hệ giữa các lớp đối tượng
• Bản số - Multiplicity (Association, Aggregation, 
Composition)
– Ý nghĩa
– Ví dụ:
• 1
• 2
• 1..*
• 0..*
• *
• 1, 3, 5..9
ClassA ClassB
1 1..*
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 27 HIENLTH
Quan hệ giữa các lớp đối tượng
• Bản số - Multiplicity (Association, Aggregation, 
Composition)
– Ý nghĩa
– Ví dụ:
• 1
• 2
• 1..*
• 0..*
• *
• 1, 3, 5..9
ClassA ClassB
1 1..*
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 28 HIENLTH
Quan hệ giữa các lớp đối tượng
• Quan hệ Dependency
– ClassA và ClassB không có quan hệ Association
– ClassA “phụ thuộc” vào ClassB
ClassA ClassB
class A
{
void F(B x)
{
}
};
class A
{
B F()
{
}
};
class A
{
void F()
{
B x;
}
};
Trong ClassA có
sử dụng biến toàn
cục (kiểu B), hoặc
sử dụng phương
thức/thuộc tính
static của ClassB
Tham số truyền vào Kết quả trả ra Biến cục bộ
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 29 HIENLTH
Bản số (Multiplicity)
• Thể hiện rằng ứng với mỗi lớp A thì có (chứa, 
dạy, có, mua, đặt,...) bao nhiêu phần tử lớp B?
A
B
1 1
Một phần tử lớp A có 1 phần tử lớp B
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 30 HIENLTH
Bản số (Multiplicity)
• Thể hiện rằng ứng với mỗi lớp A thì có 
(chứa, dạy, có, mua, đặt,...) bao nhiêu 
phần tử lớp B?
A
Khách hàng
B
Tài khoản
1 0..3
Một phần tử lớp A có tối đa 3 phần tử lớp B
Mỗi phần tử lớp B có đúng 1 phần tử lớp A
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 31 HIENLTH
Bản số (Multiplicity)
• Thể hiện rằng ứng với mỗi lớp A thì có 
(chứa, dạy, có, mua, đặt,...) bao nhiêu 
phần tử lớp B?
A
Khách hàng
B
Đơn hàng
1 *
Một phần tử lớp A có nhiều phần tử lớp B
Mỗi phần tử lớp B có đúng 1 phần tử lớp A
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 32 HIENLTH
Bản số (Multiplicity)
• Thể hiện rằng ứng với mỗi lớp A thì có 
(chứa, dạy, có, mua, đặt,...) bao nhiêu 
phần tử lớp B?
A
Sinh viên
B
Khóa học
0..* 1..*
Mỗi sinh viên tham gia ít nhất 1 khóa học
Mỗi khóa học có thể có 0 hoặc nhiều sv tham gia
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 33 HIENLTH
Ví dụ
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 34 HIENLTH
Ví dụ
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 35 HIENLTH
Xây dựng sơ đồ lớp
ở mức phân tích
CLASS DIAGRAM
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 36 HIENLTH
Class Diagram
• Được xây dựng và hiệu chỉnh trong suốt 
quá trình phát triển
• Mục tiêu:
– Đặt tên và lập mô hình các khái niệm trong 
hệ thống
– Đặc tả sự cộng tác
– Đặc tả sơ đồ CSDL
• Được phát triển bởi phân tích viên, thiết 
kế viên, lập trình viên
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 37 HIENLTH
Lập danh sách các đối tượng
• Tiêu chuẩn nhận dạng đối tượng
– Định danh: Đối tượng phải có tên (thường là danh từ/ngữ danh
từ)
– Chu trình sống: có thời điểm sinh ra, có khoảng thời gian hoạt
động, có thời điểm chấm dứt
– Sự độc lập tương đối với các đối tượng khác
– 
• Đề nghị:
– Con người
– Vật thể
– Tổ chức
– Vật lý
– Không gian
– Thời gian
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 38 HIENLTH
Lập danh sách các đối tượng
• Lập danh sách các đối tượng liên quan 
đến hệ thốngĐối tượng đề nghị
Không là đối tượng Là đối tượng
Được quan tâmKhông được quan tâm
Đối tượng chínhĐối tượng phụ
Tiêu chuẩn nhận dạng đối tượng: có rất nhiều trường phái 
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 39 HIENLTH
Ví dụ
• Ví dụ: Xét ngữ cảnh là 1 trường PTTH với phần
mềm quản lý trường cấp 3:
• Danh sách đề nghị:
– Học sinh Tổ Bộ môn Số tiết
– Giáo viên BGH TKB
– Môn học Khối Bảng điểm
– Lớp Phụ huynh Phòng
– Học kỳ ĐTB Học phí
– Năm học Diện HS 
• Đối tượng/Không phải đối tượng?
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 40 HIENLTH
Ví dụ
• Được quan tâm?
– Phần mềm quản lý học sinh:
• Học sinh, Giáo viên, Môn học, Lớp, Khối, Phụ 
huynh, Học kỳ, Năm học
– Phần mềm quản lý giáo viên:
• Giáo viên, Tổ bộ môn, Môn học, Khối, Lớp, Học kỳ, 
Năm học
– Phần mềm xếp thời khóa biểu:
• Giáo viên, Môn học, Lớp, Phòng, Học kỳ,Năm 
học
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 41 HIENLTH
Ví dụ
• Đối tượng chính?Đối tượng phụ
– Phần mềm quản lý học sinh:
• Học sinh, Giáo viên, Môn học, Lớp, Khối, Phụ 
huynh, Học kỳ, Năm học
– Phần mềm quản lý giáo viên:
• Giáo viên, Tổ bộ môn, Môn học, Khối, Lớp, Học kỳ, 
Năm học
– Phần mềm xếp thời khóa biểu:
• Giáo viên, Môn học, Lớp, Phòng, Học kỳ,Năm 
học
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 42 HIENLTH
Lập danh sách các quan hệ
• Tiêu chí đánh giá:
– Động từ
– Sự phụ thuộc giữa các đối tượng (chủ yếu xét các đối tượng
chính)
• Đề nghị:
– Quan hệ theo thời gian
• Ít biến động: sau 1 thời gian dài mới thay đổi (thường làm
về mặt tổ chức)
• Biến động: quan hệ xảy ra vào lúc nào, trong thông tin có
thuộc tính về thời gian, thay đổi theo thời gian (thường quan
tâm nhiều đến loại quan hệ này)
– Quan hệ về tổ chức (thường liên quan đến đối tượng phụ)
– Quan hệ về không gian (thường liên quan đến đối tượng phụ
– Quan hệ theo vai trò: Chủ động/Bị động
• Ví dụ:?
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 43 HIENLTH
Nhận dạng thuộc tính
• Sự phụ thuộc (không có ý nghĩa rõ ràng khi 
đứng độc lập)
– Phụ thuộc một đối tượng Thuộc tính của đối tượng
– Phụ thuộc nhiều đối tượng Thuộc tính của quan hệ
• Các loại thuộc tính 
– Định danh (thường của đối tượng)
– Phân loại
– Thời gian
– Không gian
– Định lượng
– 
• Ví dụ: ?
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 44 HIENLTH
Các bước xây dựng 
sơ đồ lớp ở mức phân tích
• Bước 1: Xác định các lớp đối tượng, quan hệ và 
thuộc tính trực tiếp từ yêu cầu của hệ thống
– Xét lần lượt từng biểu mẫu và quy định
• Nếu trong sơ đồ lớp hiện tại chưa có thể lưu trữ 
được thông tin cần thiết:
– Cần bổ sung thuộc tính vào lớp đối tượng đã 
có?
– Cần bổ sung thuộc tính vào quan hệ đã có?
– Cần bổ sung thêm quan hệ giữa các lớp đối 
tượng đã có?
– Cần bổ sung thêm lớp đối tượng mới?
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 45 HIENLTH
Các bước xây dựng 
sơ đồ lớp ở mức phân tích
• Bước 2:
– Nếu một lớp đối tượng có thuộc tính có cấu
trúc phức tạp hoặc có các thuộc tính có liên
hệ chặt chẽ với nhau và có ngữ nghĩa cụ thể
thì nên tách ra thành lớp đối tượng phụ
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 46 HIENLTH
Các bước xây dựng 
sơ đồ lớp ở mức phân tích
• Bước 3:
– 3.1. Nhiều lớp đối tượng có nhiều đặc điểm chung
 Xây dựng lớp đối tượng tổng quát chung cho các
lớp đối tượng cụ thể này
– 3.2. Một lớp đối tượng có thuộc tính phân loại và
cách xử lý trong các phương thức của đối tượng
thuộc lớp này phụ thuộc vào giá trị của thuộc tính
phân loại
 Tách lớp đối tượng này thành nhiều lớp đối tượng
con tương ứng với mỗi (nhóm) giá trị của thuộc tính
phân loại
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 47 HIENLTH
Các bước xây dựng 
sơ đồ lớp ở mức phân tích
• Bước 4:
– Hiệu chỉnh các quan hệ đã có để phù hợp với 
các lớp đối tượng vừa được điều chỉnh
• Bước 5:
– Kiểm tra lại sơ đồ lớp và hiệu chỉnh (theo kinh
nghiệm)
• Bước 6:
– Bổ sung các trách nhiệm (phương thức) vào
các lớp đối tượng ở mức phân tích
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 48 HIENLTH
Kết quả
• Sơ đồ lớp
• Danh sách các lớp đối tượng và quan hệ
• Mô tả chi tiết từng lớp đối tượng và quan hệ
– Với mỗi lớp đối tượng:
• Mô tả các thuộc tính
• Danh sách các trách nhiệm chính
– Với mỗi quan hệ:
STT Tên lớp/quan hệ Loại Ý nghĩa/ghi chú
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/ghi chú
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/ghi chú
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 49 HIENLTH
Áp dụng
• Áp dụng thực tế vào các bài tập 
– Xác định các lớp đối tượng chính
– Xác định các thông tin và hành động/trách 
nhiệm của mỗi lớp đối tượng chính
– Xác định các quan hệ chính
– Xác định các lớp đối tượng phụ, các danh mục
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 50 HIENLTH
Ví dụ
0..1
Co
0..*
Thuoc
0..1
0..*
0..1
0..*
CGiangVien
+
+
+
+
+
+
+
+
+
+
GVID
MaGV
HocVi
ChucDanh
TenVT
Ho
Ten
DiaChi
DienThoai
Email
: long
: string
: string
: string
: string
: string
: string
: string
: string
: string
CKhoa
#
+
-
KhoaID
MaKhoa
TenKhoa
: int
: string
: string
CBoMon
+
+
+
BMID
MaBM
TenBM
: long
: string
: string
+ Insert () : int
0..1
0..*
CNganh
+
+
+
+
NganhID
MaNganh
TenNganh
TenVT
: long
: string
: string
: string
CKhoa
#
+
-
KhoaID
MaKhoa
TenKhoa
: int
: string
: string
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 51 HIENLTH
Ví dụ
0..1
Co
0..*
Thuoc
0..1
0..*
0..1
0..*
0..1
0..*
0..1
0..*
0..1
0..*
0..1
0..*
0..1
0..*
1..1
0..*
1..1 0..*
1..1
0..*
CBoMon
+
+
+
BMID
MaBM
TenBM
: long
: string
: string
+ Insert () : int
CGiangVien
+
+
+
+
+
+
+
+
+
+
GVID
MaGV
HocVi
ChucDanh
TenVT
Ho
Ten
DiaChi
DienThoai
Email
: long
: string
: string
: string
: string
: string
: string
: string
: string
: string
CKhoa
#
+
-
KhoaID
MaKhoa
TenKhoa
: int
: string
: string
CLOP
+
+
+
+
+
LOPID
MALOP
TENLOP
NAMTS
TenVT
: long
: string
: string
: short
: string
CLOPNK
+
+
+
LOPNKID
NAM
NAMHOC
: long
: short
: short
CMONHOC
+
+
+
+
+
+
+
MonID
MaMon
TenMon
TinChi
SoTietLT
SoTietBT
TenVT
: long
: string
: string
: short
: short
: short
: string
+
+
+
+
Them ()
Xoa ()
Sua ()
LayDL ()
: void
: void
: void
: void
CNganh
+
+
+
+
NganhID
MaNganh
TenNganh
TenVT
: long
: string
: string
: string
CTKB
+
+
+
+
+
+
TKBID
TKB
HOCKY
NAMHOC
NGAYBD
NGAYKT
: long
: string
: short
: short
: DateTime
: DateTime
CTKBLOP
+ TKBLOPID : long
CTKBLOP_CHITIET
+
+
+
+
+
THU
TIETBD
TIETKT
LYTHUYET
PHONG
: short
: short
: short
: short
: string
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 52 HIENLTH
Ánh xạ biểu đồ sang Code
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 53 HIENLTH
Ánh xạ biểu đồ sang Code (2)
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 54 HIENLTH
Ánh xạ khách hàng- đơn hàng
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 55 HIENLTH
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 56 HIENLTH
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 57 HIENLTH
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 58 HIENLTH
Sơ đồ trạng thái
STATECHART DIAGRAM
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 59 HIENLTH
Statechart Diagram
• Ghi nhận các hành vi động (even –
oriented)
• Mục tiêu:
– Mô hình hóa chu kỳ sống của đối tượng
– Mô hình hóa các đối tượng phản hồi (user 
interfaces, devices, )
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 60 HIENLTH
Các khái niệm
• Sơ đồ trạng thái
– Mô tả chu trình sống của các đối tượng chính từ khi 
sinh ra, hoạt động & mất đi
– Mỗi đối tượng có thể có nhiều sơ đồ trạng thái theo 
các góc nhìn khác nhau
• Trạng thái & biến cố
– Trạng thái của đối tượng diễn đạt tình trạng hiện có 
của đối tượng (có ý nghĩa trong một đoạn thời gian)
– Biến cố là các sự kiện xảy ra làm cho đối tượng 
chuyển trạng thái.
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 61 HIENLTH
State Diagram Bàn cờ
Khởi tạo bàn cờ
Quân trắng đi
Quân đen đi
Quân trắng thắng Hòa Quân đen thắng
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 62 HIENLTH
Ví dụ: Xét ứng dụng quản lý TKB
• Hệ thống cho phép bộ phận giáo vụ Khoa 
nhập thời khóa biểu, cập nhật thời khóa 
biểu của tất cả các lớp
• Hệ thống cho phép sinh viên tra cứu thời 
khóa biểu theo từng học kỳ của lớp
• Hệ thống cho phép giảng viên tra cứu thời 
khóa biểu giảng dạy trong học kỳ
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 63 HIENLTH
Ví dụ minh họa
• State Diagram mô tả trạng thái TKB
[Bắt đầu học kỳ mới]
[Kết thúc học kỳ]
[Tất cả các lớp đã được phân phòng]
[Một số lớp chưa được phân phòng]
Có lớp mới được phân [Còn lớp chưa được phân phòng]
[Tất cả các lớp đã được phân phòng]
Yêu cầu tra cứu TKB
Khởi tạo
do / Khoi tao TKB
Chờ phân phòng
Có lớp mới được phân() / Cap nhat Phong
Đang sử dụng
Yêu cầu tra cứu TKB(Lop) / TKB Lop
Yêu cầu tra cứu TKB(GV) / TKB Giảng viên
Đóng
do / Ket thuc hoc ky
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 64 HIENLTH
Các thành phần trong State diagram
• Trạng thái – State
• Sự kiện – Event
• Hành động – Action
• Mối liên hệ giữa các trạng thái
State1
entry / Action_1
do / Action_2
exit / Action_3
Event_1 [Condition]/ Action 11State1
entry / Action_1
do / Action_2
exit / Action_3
State2
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 65 HIENLTH
Một số ký hiệu
Tên trạng thái
Tên trạng thái
stateVar : type = value
entry/ entry action
do/ activity
exit/ exit action
Tên biến cố (tham số)
Tên hành động (tham số)
[Điều kiện]
Trạng thái
Chuyển đổi trạng thái
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 66 HIENLTH
• Trang thái bắt đầu
– Là trạng thái khi mới được khởi tạo của object
– Bắt buộc phải có
– Chỉ có thể có 1 trạng thái bắt đầu 
• Trang thái kết thúc
– Chỉ vị trí kết thúc đời sống của object
– Không nhất thiết phải thể hiện
– Có thể có nhiều
Tr/thái bắt đầu
Tr/thái kết thúc
Các trạng thái đặc biệt
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 67 HIENLTH
Tên trạng thái
stateVar : type = value
entry/ entry action
do/ activity
exit/ exit action
Biến cố(tham số) 
[Biểu thức điều kiện]
/ Hành động (tham số)
Trạng thái Biến cố
Chuyển đổi trạng thái
Hành động
Hành động
Sơ đồ trạng thái
• Là đồ thị có hướng với các node là các trạng thái nối với 
nhau bới các cung mô tả việc chuyển đổi trạng thái
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 68 HIENLTH
Các thành phần trong State diagram
• Sự kiện – Event
• Event
– Entry: sự kiện phát sinh khi đối tượng bắt đầu 
nhận trạng thái
– Exit: sự kiện phát sinh khi đối tượng kết thúc 
trạng thái thúc trạng thái
– Do: sự kiện phát sinh khi user thực hiện một 
hành động thông qua bàn phím/chuột.
State1
entry / Action_1
do / Action_2
exit / Action_3
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 69 HIENLTH
Các thành phần trong State diagram
• Trạng thái – State
• Action
– Entry: hành động được thực hiện khi đối 
tượng bắt đầu trạng thái
– Do: tập các hành động có thể thực hiện với 
trạng thái
– Exit: hành động được thực hiện khi đối tượng 
kết thúc trạng thái
State1
entry / Action_1
do / Action_2
exit / Action_3
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 70 HIENLTH
Các thành phần trong State diagram
• Mối liên hệ giữa các trạng thái –Transition
– Event
– Action
– Condition: điều kiện cho phép chuyển từ 
trạng thái này sang trạng thái khác
Event_1 [Condition]/ Action 11State1
entry / Action_1
do / Action_2
exit / Action_3
State2
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 71 HIENLTH
Các thành phần trong State diagram
• State – Event – Action – Transition
Huy Huy
Huy
/ SoLuong = 10
Them Sinh Vien/ SoLuong = 0
Them Sinh Vien [SoLuong <10]
KH Khởi tạo
do / KhoiTao
Đang mở
entry / Sinh vien dang ky
exit / Tang SoLuong 1 DV
Kết thúc
do / Ket thuc khoa hoc
Bị Hủy
do / Thong bao sinh vien da dang ky
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 72 HIENLTH
Ví dụ minh họa
• State Diagram mô tả trạng thái TKB
[Bắt đầu học kỳ mới]
[Kết thúc học kỳ]
[Tất cả các lớp đã được phân phòng]
[Một số lớp chưa được phân phòng]
Có lớp mới được phân [Còn lớp chưa được phân phòng]
[Tất cả các lớp đã được phân phòng]
Yêu cầu tra cứu TKB
Khởi tạo
do / Khoi tao TKB
Chờ phân phòng
Có lớp mới được phân() / Cap nhat Phong
Đang sử dụng
Yêu cầu tra cứu TKB(Lop) / TKB Lop
Yêu cầu tra cứu TKB(GV) / TKB Giảng viên
Đóng
do / Ket thuc hoc ky
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 73 HIENLTH
Ví dụ minh họa
• State Diagram mô tả trạng thái màn hình 
quản lý danh mục người dùng
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 74 HIENLTH
Ví dụ minh họa
• State Diagram mô tả trạng thái màn hình 
quản lý danh mục người dùng
Thoat
Thêm ND Sửa ND [Đã chọn ND]
Kết thúc sửa NDKết thúc Thêm ND
Khởi tạo màn hình
entry / Load
entry / Show
do / Thêm ND
do / Sửa ND
do / Xóa ND
do / Thoát
Đang thêm Người dùng
entry / Thêm ND
do / Lưu ND
do / Không lưu
exit / Xác lập trạng thái
Kết thúc MH Người dùng
entry / Unload
Đang sửa Người dùng
entry / Sửa ND
do / Lưu
do / Không lưu
exit / Xác lập trạng thái
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 75 HIENLTH
Sơ đồ trạng thái
S1
S4
S2
S3
S5
S6
B1
B2
B3
B4
B5
B6
B7
B8
B9
B1, B2: biến cố sinh
B4, B8, B9: biến cố mất
B3, B5, B6, B7: biến cố hoạt động
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 76 HIENLTH
Sơ đồ trạng thái
• Mỗi sơ đồ trạng thái sẽ ánh xạ thành một thuộc tính của 
đối tượng
• Các trạng thái của đối tượng trong 1 sơ đồ trạng thái 
không giao nhau và giá trị của thuộc tính tương ứng chỉ 
mang 1 trong các giá trị tương ứng
• Sơ đồ trạng thái càng chi tiết sẽ phục vụ:
– Có những xử lý thích hợp trong kiểm tra ràng buộc
– Có những xử lý thích hợp trong xử lý biến cố
– Phục vụ tra cứu, tìm kiếm
• Khi đã quan tâm đến sơ đồ trạng thái của 1 đối tượng
– Thường trong ứng dụng không còn chức năng xóa (thật sự) đối 
tượng này
– Các đối tượng sẽ tồn tại ở trạng thái mất thay vì bị xóa thật sự
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 77 HIENLTH
• Thông thường, sơ đồ trạng thái của 1 đối 
tượng có dạng
Sẵn sàng
Tạm dừngHoạt động
Chấm dứt
Sơ đồ trạng thái
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 78 HIENLTH
Cách xây dựng sơ đồ trạng thái
• Cách 1:
– Xác định quá trình hoạt động bình thường của đối 
tượng từ khi sinh ra đến khi mất đi
– Bổ sung các trạng thái và biến cố liên quan đến
• Sinh ra
• Hoạt động
• Tạm từng
• Mất đi
• Cách 2:
– Xác định các trạng thái sinh
– Xác định các trạng thái cuối
– Xác định các trạng thái trung gian và các biến 
cố/hành động làm chuyển trạng thái
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 79 HIENLTH
Kết quả: Sơ đồ trạng thái
S1
S4
S2
S3
S5
S6
B1
B2
B3
B4
B5
B6
B7
B8
B9
STT Trạng thái Ý nghĩa Xử lý liên quan Ghi chú
STT Biến cố Ý nghĩa Xử lý liên quan Ghi chú
Bảng mô tả các trạng thái
Bảng mô tả các biến cố
Sơ đồ trạng thái
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 80 HIENLTH
Tạo State Diagram trong PD
• Tạo mới State Diagram
• State
– Start
– End
– State
• Transition
• Action
• Event
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 81 HIENLTH
Bài tập
• Vẽ sơ đồ trạng thái của thang máy
• Vẽ sơ đồ trạng thái của 1 đèn giao thông
• Vẽ sơ đồ trạng thái của 1 cặp đèn giao 
thông tại ngã tư
• Vẽ sơ đồ trạng thái của 1 độc giả
• Vẽ sơ đồ trạng thái của 1 cuốn sách
• Vẽ sơ đồ trạng thái của 1 phòng trong 
khách sạn
• Vẽ sơ đồ trạng thái của 1 quân cờ
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 82 HIENLTH
Bài tập
Vẽ sơ đồ trạng thái:
• Quản lý giải bóng đá vô địch quốc gia
• Quản lý bình chọn bài hát hay Làn sóng 
xanh
• Quản lý giáo vụ trường đại học
• Quản lý giáo vụ trường phổ thông
• Quản lý bán hàng
• Quản lý nhân sự - Tiền lương
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 83 HIENLTH
Ôn tập
• State diagram là gì ?
• Event là gì ?
• Transition ?
• Action là gì ? Các loại Action ?
• Xây dựng State diagram cho một số ứng 
dụng trong phần bài tập
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 84 HIENLTH
Câu hỏi và thảo luận

File đính kèm:

  • pdfbai_giang_cong_nghe_phan_mem_chu_de_3_phan_tich_phan_mem.pdf