Professional Documents
Culture Documents
Bai Giang Ptich
Bai Giang Ptich
TỔNG QUAN
PHÂN TÍCH VÀ THIẾT KẾ HTTT
OVERVIEW OF ANALYSIS AND DESIGN INFORMATION SYSTEMS
3
1.1. CÁC KHÁI NIỆM CƠ BẢN VỀ THÔNG TIN VÀ HTTT
4
1.1. CÁC KHÁI NIỆM VỀ THÔNG TIN VÀ HTTT
Ví dụ:
•Hệ thống đặt chổ vé máy bay không thể đoán
chính xác bao nhiêu chỗ sẽ được đặt cho một
chuyến bay nào đó.
• Hệ thống thông tin dự báo thời tiết
5
1.1. CÁC KHÁI NIỆM VỀ THÔNG TIN VÀ HTTT
Hệ thống đóng
Hệ thống có thể đoán trước kết quả đầu ra nếu
biết đầu vào.
Vd: HTTT QL NHÂN SỰ & TIỀN LƯƠNG
hệ thống đóng dễ quản lý hơn hệ thống mở.
Cấu tạo của một hệ thống
INPUT OUTPUT
SYSTEM
HỘP ĐEN
6
1.1. CÁC KHÁI NIỆM VỀ THÔNG TIN VÀ HTTT
8
1.1. CÁC KHÁI NIỆM VỀ THÔNG TIN VÀ HTTT
9
1.1. CÁC KHÁI NIỆM VỀ THÔNG TIN VÀ HTTT
10
1.1. CÁC KHÁI NIỆM VỀ THÔNG TIN VÀ HTTT
11
1.1. CÁC KHÁI NIỆM VỀ THÔNG TIN VÀ HTTT
12
1.1. CÁC KHÁI NIỆM VỀ THÔNG TIN VÀ HTTT
13
1.1. CÁC KHÁI NIỆM VỀ THÔNG TIN VÀ HTTT
15
CÁC THÀNH PHẦN CỦA MỘT HTTT QUẢN LÝ
Trong đó:
*Tổ chức: có thể là cơ quan, xí nghiệp, trường học...
*Phương tiện (phần cứng-phần mềm): cơ sở vật
chất dùng để thu nhập, xử lý, lưu trữ, chuyển tải
thông tin trong hệ thống như máy tính, máy in, điện
thoại lực
*Nhân ... : bao gồm tập thể, cá nhân tham gia vào
việc phát triển và duy trì HT
*Thông tin: Các thông tin sử dụng trong hệ thống,
các thông tin từ môi trường bên ngoài vào hệ
thống, các thông tin từ hệ thống ra môi trường bên
ngoài.
*Phương pháp xử lý tin: các tài nguyên phi vật chất
như các mô hình toán học, các thuật toán, tri
thức của con người trong hệ thống, các phần
mềm. 16
1.2. HỆ THỐNG THÔNG TIN QUẢN LÝ
Phục
Mục vụ cho
đích của MIScông tác quản lý.
Tạo ra các báo cáo thường xuyên hoặc theo
yêu cầu dưới dạng tóm tắt về hiệu quả hoạt
động nội bộ của tổ chức.
MIS chỉ quan tâm đến hiệu quả hoạt động của
các đối tượng trong và ngoài tổ chức để có
các biện pháp đối xử và phân bổ nguồn lực
thích hợp.
1.2. HỆ THỐNG THÔNG TIN QUẢN LÝ
(Management Information System, MIS)
Chức năng của MIS
– Cung cấp thông tin cho việc quản lý tổ chức
– Cho phép các nhà quản lý kiểm soát và điều
khiển các tổ chức
– Cung cấp những thông tin phản hồi chính
xác
– Cung cấp các báo cáo đặc biệt trên cơ sở đã
được lập kế hoạch
2. HỆ THỐNG THÔNG TIN QUẢN LÝ
Có 3 thành phần:
Thành phần quyết định:
Chức năng: ra quyết định.
Thành phần thông tin:
Chức năng tiếp nhận, xử lý, truyền tin và lưu
trữ thông tin.
Thành phần tác nghiệp:
Chức năng: bảo đảm các hoạt động cơ sở của
tổ chức.
22
CÁC THÀNH PHẦN CỦA MỘT HTTT QUẢN LÝ
23
CÁC THÀNH PHẦN CỦA MỘT HTTT QUẢN LÝ
24
CÁC THÀNH PHẦN CỦA MỘT HTTT
25
1.3. MÔ HÌNH HÓA MỘT HỆ THỐNG THÔNG TIN
A model is a complete
description of a
system from a
particular perspective
1.3. MÔ HÌNH HÓA MỘT HỆ THỐNG THÔNG TIN...
Tóm lại, 4 mục đích quan trọng của mô hình hoá ...
Mục đích:
HTTT có vòng đời dài (long life cycle)
Ra đời vào những năm cuối của thập niên 70. Xuất
phát từ những suy nghĩ của một nhóm nghiên cứu
đứng đầu bởi J.L.Lemoigne tại trường đại học Aix-
En-Provence - Pháp và những nghiên cứu hiện thực
đồng thời ở Trung tâm nghiên cứu trang bị kỹ thuật
(CETE), dưới sự lãnh đạo của H.Tardien.
1.4. GIỚI THIỆU MỘT VÀI PHƯƠNG PHÁP PTTK
Phương pháp phân tích thiết kế MERISE:
Nguồn gốc:
MERISE viết tắt từ cụm từ Methode pour
Rassembler les Ideés Sans Effort (phương pháp tập
hợp các ý tưởng không cần cố gắng).
Ra đời vào những năm cuối của thập niên 70. Xuất
phát từ những suy nghĩ của một nhóm nghiên cứu
đứng đầu bởi J.L.Lemoigne tại trường đại học Aix-
En-Provence - Pháp và những nghiên cứu hiện thực
đồng thời ở Trung tâm nghiên cứu trang bị kỹ thuật
(CETE), dưới sự lãnh đạo của H.Tardien.
1.4. GIỚI THIỆU MỘT VÀI PHƯƠNG PHÁP PTTK
Phương pháp phân tích thiết kế MERISE:
Đặc trưng của phương pháp Merise:
Tách rời dữ liệu và xử lý nhằm đảm bảo tính khách quan
trong quá trình phân tích và cung cấp đầy đủ các mô hình
để diễn đạt các bước cập nhật.
MỨC DỮ LIỆU XỬ LÝ
Mức quan niệm MH quan niệm về dữ MH quan niệm về
liệu xử lý
Mức tổ chức MH tổ chức về dữ liệu MH tổ chức về xử lý
Mức vật lý MH vật lý về dữ liệu MH vật lý về xử lý
1.4. GIỚI THIỆU MỘT VÀI PHƯƠNG PHÁP PTTK
Phương pháp phân tích thiết kế hướng đối tượng
Ra đời vào giữa thập niên 80
Phát triển từ các ý tưởng của lập trình hướng đối tượng.
Dựa trên một số khái niệm cơ bản sau:
• Ðối tượng (Object): gồm dữ liệu và thủ tục tác động lên
dữ liệu này
• Lớp (Class): Tập hợp các đối tượng có chung một cấu
trúc dữ liệu và cùng một phương pháp.
• Kế thừa (Heritage): tính chất kế thừa là đặc tính cho
phép định nghĩa một lớp mới từ các lớp đã có bằng
cách
thêm vào đó những dữ liệu mới, các phương pháp mới
có thể kế thừa những đặc tính của lớp cũ.
• Ðóng gói (Encapsulation): Không cho phép tác động
trực
tiếp lên dữ liệu của đối tượng mà phải thông qua
1.4. GIỚI THIỆU MỘT VÀI PHƯƠNG PHÁP PTTK
Phương pháp phân tích thiết kế hướng đối tượng (tt)
Sử dụng ngôn ngữ mô hình hoá hợp nhất UML để mô tả.
UML sử dụng 9 biểu đồ để mô hình hóa một hệ thống:
NHỮNG SAI LẦM CÓ THỂ XẢY RA KHI PTTK MỘT HTTT
Xác định các công việc cần thiết trước khi có thể
tiến hành nghiên cứu các lĩnh vực, bộ phận, hệ
thống con, các tổ chức có liên quan đến hệ thống
thông tin cần xây dựng.
Làm rõ được ý muốn của chủ đầu tư là: xây dựng 1
hệ thống thông tin mới hay nâng cấp một hệ thống
thông tin cũ.
b. Giai đoạn phân tích
Là giai đoạn trung tâm khi xây dựng 1 hệ thống thông tin, giai
đoạn này khởi sự ngay trong giai đoạn lập kế hoạch. Phân
tích bao gồm các công việc sau:
1. Phân tích hiện trạng
Mục đích: hiểu rõ tình trạng hoạt động của hệ thống cũ
trong mục đích hoạt động của tổ chức.
Nội dung công việc:
Tìm hiểu hiện trạng: thông qua việc nghiên cứu hồ sơ, tài
liệu để tìm hiểu thông tin chung về ngành dọc của tổ
chức.
Tìm hiểu hoạt động hiện tại của tổ chức
Xác định các thành phần tham gia trong tổ chức
Các nhiệm vụ của các tổ chức thành viên và các tổ
chức bên ngoài có liên quan
Các mối quan hệ thông tin giữa các thành viên trong
tổ chức
b. Giai đoạn phân tích
. Phân tích khả thi kinh tế: xem xét khả năng tài
chính để chi trả cho việc xây dựng hệ thống thông
tin mới cũng như chỉ ra những lợi ích mà hệ thống sẽ
đem lại.
. Phân tích khả thi hoạt động: khả năng vận hành hệ
thống trong điều kiện khuôn khổ, điều kiện tổ chức và
quản lý cho phép của tổ chức.
Tóm lại, trong giai đoạn này người phân tích phải tìm
ra một điểm cân bằng giữa nhu cầu và khả năng.
b. Giai đoạn phân tích
Thiết kế giao diện: chi tiết hóa hình thức giao tiếp
người - máy
LẬP KẾ HOẠCH
PHÂN TÍCH
THIẾT KẾ
THỰC HIỆN
CHUYỂN GIAO
BẢO TRÌ
Mô hình thác nước - Water Fall Model
Mô hình thác nước - Water Fall Model
Giai đoạn phân tích
Giai đoạn thiết kế
Giai đoạn mã hóa
Giai đoạn kiểm thử
Giai đoạn bảo trì
5. CÁC MỨC BẤT BIẾN CỦA MỘT HTTT
Ở mức quan niệm cần trả lời các câu hỏi: WHAT?
Chức năng của hệ thống thông tin là gì?
Hệ thống thông tin cần những yếu tố gì?
Hệ thống có dữ liệu và những quy tắc quản lý gì?
1.5. CÁC MỨC BẤT BIẾN CỦA MỘT HTTT
b. Mức tổ chức:
Mục đích: xác định các phương tiện, nhân lực,
máy móc, cách tổ chức để cung cấp các thông tin
cho
người sử dụng đúng thời hạn và đủ độ tin cậy.
Tại mức này, cần trả lời các câu hỏi:
Ai làm? (WHO?)
Làm ở đâu? (WHERE?)
Làm khi nào? (WHEN?)
Thông tin ở mức tổ chức được mô tả theo giải pháp
CSDL và thực chất là quan hệ logic của chúng. Do đó,
1.5. CÁC MỨC BẤT BIẾN CỦA MỘT HTTT
Đặc điểm:
Phân rã chức năng và làm mịn dần theo cách
tiếp cận Top/Down
phân tách nhỏ các chức năng chính thành các
chức năng đơn giản hơn theo cách từ trên
xuống- nguyên lý chia để trị.
Kết quả của việc phân rã là một BFD của hệ
thống
Các đơn thể chức năng trao đổi với nhau bằng
cách truyền tham số hay sử dụng dữ liệu chung
1.6.1 CÁCH TIẾP CẬN THEO HƯỚNG CHỨC NĂNG
Đặc điểm:
Bị ảnh hưởng bới các ngôn ngữ lập trình ALGOL,
Pascal, C
Các hàm của hệ thống phần mềm được xem như
tiêu chí cơ sở khi phân rã
Tách chức năng khỏi dữ liệu
Chức năng có hành vi
Dữ liệu chứa thông tin bị các chức năng tác động
Phân tách top-down chia hệ thống thành các hàm
để chuyển sang mã trình, dữ liệu được gửi giữa
chúng.
1.6.1 CÁCH TIẾP CẬN THEO HƯỚNG CHỨC NĂNG
Quản lý bạn đọc quản lý tài liệu Theo dõi mượn Thống kê
trả
Đặc điểm:
Đặt trọng tâm vào dữ liệu (thực thể)
Xem hệ thống như là tập các thực thể, các đối
tượng
Các lớp đối tượng trao đổi với nhau bằng
các thông điệp
Tính mở và thích nghi của hệ thống cao
Hỗ trợ sử dụng lại và cơ chế kế thừa
1.6.2 CÁCH TIẾP CẬN THEO HƯỚNG ĐỐI TƯỢNG
Tiệm cận hướng đối tượng tập trung vào cả thông tin và
hành vi
Cho khả năng xây dựng hệ thống mềm dẻo, “co dãn”
Phương pháp này dựa trên các nguyên tắc sau
• Tính đóng gói
• Kế thừa
• Đa trị
1.6.3 NHẬN XÉT
82
CHƯƠNG 2
1. Mục đích:
Tiếp cận với nghiệp vụ chuyên môn, môi trường hoạt
động của hệ thống.
Tìm hiểu các chức năng, nhiệm vụ và cách hoạt
động của hệ thống.
Chỉ ra các ưu điểm của hệ thống cũ để kế thừa và
các khuyết điểm của hệ thống để nghiên cứu khắc
phục.
85
2.1. NGHIÊN CỨU HIỆN TRẠNG CỦA HTTT
2.1.2. Nội dung khảo sát và đánh giá hiện trạng:
Thu thập và mô tả các quy tắc quản lý, tổ chức, kỹ
thuật.
Thu thập và tìm hiểu các chứng từ giao dịch. Mô tả
các luồng thông tin và tài liệu giao dịch.
Thống kê các phương tiện và tài nguyên đã và có
thể sử dụng.
Thu thập và tìm hiểu các ý kiến khen chê về HTTT
cũ và những yêu cầu, đòi hỏi về hệ thống tương lai.
Lập hồ sơ tổng hợp về hiện trạng
86
2.1. NGHIÊN CỨU HIỆN TRẠNG CỦA HTTT
Đối với mỗi chức năng cần làm rõ: điều kiện khởi
động, kết quả thu được, thời gian thực hiện, tần số,
chu kỳ, các quy tắc phải tuân thủ.
89
2.1. NGHIÊN CỨU HIỆN TRẠNG CỦA HTTT
90
2.1. NGHIÊN CỨU HIỆN TRẠNG CỦA HTTT
Quản lý
Doanh nghiệp
98
2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG
1.2 Ktra chổ trống 2.2 Đối chiếu vé 3.2 Ktra hiện trường
99
2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG
101
2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG
b. Các thành phần của một DFD:
Kho dữ liệu (Data store) – Tài liệu lưu trữ
Về mặt vật lý, kho dữ liệu là các tập tin dữ liệu
trong máy tính hoặc những tập tài liệu được lưu trữ
ở văn phòng.
Kho dữ liệu là các dữ liệu được lưu giữ trên giá
mang nó, vì vậy người ta thường lấy tên của vật
mang nó làm tên của kho dữ liệu.
Ký hiệu:
Phiếu
Phiếu xuất
Phiếu xuất
xuất
102
2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG
b. Các thành phần của một DFD:
Tiến trình (Proccess):
Là một công việc hoặc một hành động có tác động
lên dữ liệu làm cho chúng di chuyển, thay đổi hoặc
được phân phối.
Chỉ được xem là một tiến trình trong DFD nếu
chúng nhận thông tin đầu vào và có thông tin đầu ra.
103
2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG
b. Các thành phần của một DFD:
Tác nhân ngoài (extenal entity):
Là một cá nhân hoặc một tổ chức ở bên ngoài lĩnh
vực nghiên cứu của hệ thống.
Tác nhân ngoài là phần sống còn của hệ thống, bởi
vì chúng là nguồn cung cấp thông tin cho hệ thống
và là nguyên nhân kích hoạt hệ thống.
Ví dụ: một luồng dữ liệu là “Đơn đặt hàng” đến một
tác nhân ngoài là “Nhà cung cấp”.
Nhà cung cấp
Đơn đặt hàng
104
2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG
b. Các thành phần của một DFD:
Tác nhân ngoài (extenal entity):
Là một cá nhân hoặc một tổ chức ở bên ngoài hệ
thống.
Tác nhân trong (intenal entity):
Là một cá nhân, chức năng hoặc một hệ thống con
của hệ thống.
Ví dụ: một luồng dữ liệu là “Phiếu xuất/nhập” đến
một tác nhân trong là “Thủ kho”
Thủ kho
Phiếu nhập/xuất
105
2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG
Sử dụng BFD để xác định các tiến trình theo từng
mức cho DFD. Bởi vì BFD được thực hiện phân rã
thành các mức nên nó dùng để chỉ ra các mức tương
ứng trong DFD.
Tuy nhiên để kiểm tra tính đúng đắn của các thành
phần trong một DFD cần phải dựa vào các đặc trưng
dưới đây.
106
2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG
Tiến trình:
Không một tiến trình nào chỉ có thông tin vào mà
không có thông tin ra. Nếu một đối tượng nào đó mà
chỉ có thông tin vào mà không có thông tin ra thì đó có
thể là một tác nhân ngoài (đích-thu nhận thông tin).
Không một tiến trình nào chỉ có thông tin ra mà
không có thông tin vào. Nếu một đối tượng nào đó mà
chỉ có thông tin ra mà không có thông tin vào thì đó có
thể là một tác nhân trong (nguồn-phát sinh thông tin).
Thông tin vào của một tiến trình phải khác với thông
tin ra của tiến trình đó.
Tên một tiến trình phải duy nhất và là một mệnh đề
chỉ hành động. 107
2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG
Kho dữ liệu:
Tên một kho dữ liệu phải là một mệnh đề danh từ.
Dữ liệu không thể di chuyển trực tiếp từ một kho dữ
liệu này đến một kho dữ liệu khác.
Không thể di chuyển trực tiếp dữ liệu từ một tác
nhân đến một kho dữ liệu.
Không thể di chuyển trực tiếp dữ liệu từ một kho dữ
liệu đến một tác nhân.
Tác nhân:
Tên một tác nhân phải là một mệnh đề danh từ.
Dữ liệu không thể di chuyển trực tiếp từ một tác
108
nhân này đến một tác nhân khác.
2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG
Luồng dữ liệu:
Tên một luồng dữ liệu phải là một mệnh đề danh từ.
Một luồng dữ liệu chỉ có một hướng chỉ hướng di
chuyển của dữ liệu.
Một luồng dữ liệu không thể quay lui nơi nó vừa đi
khỏi.
Một luồng dữ liệu đi vào một kho có nghĩa là kho
được cập nhật dữ liệu.
Một luồng dữ liệu đi ra khỏi một kho có nghĩa là dữ
liệu được đọc từ kho.
109
2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG
110
2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG
112
2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG
Tổng quát, có thể định nghĩa một cách quy nạp biểu
đồ luồng dữ liệu các mức như sau:
113
VÍ DỤ- Kỹ thuật phân mức
114
VÍ DỤ- Kỹ thuật phân mức
Mức 0:
chức năng tổng quát của HT: “Quản lý tín dụng”.
Tác nhân của hệ thống: “Khách vay”.
Đơn vay
Khách vay QUẢN LÝ TÍN DỤNG
Nợ hoàn trả
2. Thu nợ
Nợ hoàn trả
116
DFD ở mức 1 (mức đỉnh)
VÍ DỤ- Kỹ thuật phân mức
Mức 2:
Chức năng “Cho vay” ở mức 1 được phân rã
thành 3 chức năng con là “Nhận đơn”, “Duyệt vay”
và “Trả lời đơn”;
Chức năng “Thu nợ” ở mức 1 được phân rã
thành 3 chức năng con là “Xác định kỳ hạn trả”,
“Xử lý nợ trả trong hạn” và “Xử lý nợ trả ngoài
hạn”.
Để bảo toàn các luồng dữ liệu vào/ra và thêm các
luồng dữ liệu nội bộ ta thành lập được hai DFD định
nghĩa cho hai chức năng 1 và 2 như sau:
117
VÍ DỤ- Kỹ thuật phân mức
Mức 2
Đơn đã
Đơn vay
kiểm tra
Đơn đã
duyệt
S
ổ
Từ chối vay
Mức 2 Nợ trả
trong hạn
2.2 Xử lý nợ
Nợ hoàn trả trong hạn
trả
2.3 Xử lý nợ
Nợ trả
ngoài hạn
trả ngoài hạn
123
2. Một vài nhận xét để rà soát lại mô hình ER
g. Xử lý một thuộc tính lặp nằm trong một tập thực thể
Nếu trong tập thực thể có thuộc tính lặp (đa trị) thì
tách thuộc tính này thành một tập thực thể có tên:
<tên thuộc tính đa trị> và có hai thuộc tính là:
• Mã + <tên thuộc tính> và
• Tên + <tên thuộc tính>
Ví dụ: một nhân viên có thể có nhiều sđt
126
2. Một vài nhận xét để rà soát lại mô hình ER
127
2.3.2 Một vài nhận xét để rà soát lại mô hình ER
h. Các tập thực thể có mối quan hệ ISA
Khi một thuộc tính của tập thực thể mà chỉ có một số phần
tử có giá trị, nếu phần tử nào có giá trị thì có thêm một số
thuộc tính riêng của nó thì chuyển thành một tập thực thể
riêng có tên là <tên thuộc tính> và có thuộc tính là các thuộc
tính riêng của nó.
Tập thực thể gốc gọi là tập thực thể Cha, tập thực thể được
tách ra gọi là tập thực thể Con.
Ví dụ
128
2.3.3 Cách mô tả mô hình quan niệm về dữ liệu
130
4. Mô hình quan niệm về xử lý
Phân loại biến cố :
Biến cố vào: biến cố tham gia vào việc kích hoạt
một công việc nào đó của hệ thống.
Biến cố ra: biến cố được sinh ra sau khi thực hiện
một hoặc nhiều công việc của hệ thống.
Biến cố trong: biến cố xảy ra bên trong hệ thống
để các hệ thống con trao đổi thông tin cho nhau.
Biến cố ngoài: biến cố đến từ môi trường bên
ngoài hệ thống.
Biến cố thời gian: biến cố gắn liền với thời gian,
có tính chu kỳ.
131
2.3.4 Mô hình quan niệm về xử lý
b. Công việc:
Là một xử lý nhỏ nhất mà hệ thống thực hiện khi
một biến cố trong hệ thống xuất hiện.
Thông thường một công việc chưa đủ để xác
định được một chức năng hoặc một nhiệm vụ của
hệ thống.
Ví dụ, công việc "Kiểm tra hàng nhập về" chưa
đủ điều kiện để thực hiện nhiệm vụ "nhập kho",
bởi vì nhiệm vụ này chỉ được hoàn tất sau khi các
công việc kiểm tra và làm phiếu nhập được thực
hiện xong.
Sau khi một công việc được thực hiện thì thông
thường một trong hai trạng thái sẽ xảy ra: thành
công (OK) và không thành công (⌐OK). Hai trạng
thái này sẽ kèm theo các biến cố ra tương ứng. 132
2.3.4 Mô hình quan niệm về xử lý
c. Điểm đợi
Thời điểm để đợi các biến cố xảy ra thì công việc mới
thực hiện được gọi là điểm đợi. Các biến cố này kích
hoạt công việc theo hai chế độ:
Chế độ AND: khi tất cả các biến cố tại điểm đợi
cùng xảy ra thì công việc mới được thực hiện.
Chế độ OR: khi một trong các biến cố tại điểm
đợi xảy ra thì công việc mới được thực hiện.
Ví dụ: Biến cố "sách đã cho mượn" được thực
hiện bởi công việc "CHO MƯỢN SÁCH" nếu tại
điểm đợi các biến cố xảy ra:
[(Độc giả yêu cầu)(Đủ tư cách độc giả)(có lệnh của
GĐ)]
(có 133
2.3.4 Mô hình quan niệm về xử lý
134
2.3.4 Mô hình quan niệm về xử lý
Chức năng của một hệ thống thông tin được
mô tả một cách tổng quát như sau:
135
2.3.4 Mô hình quan niệm về xử lý
Ví dụ, trong hệ thống thông tin “Quản lý kho hàng” Chức năng
“Bán hàng” sẽ bao gồm các công việc: kiểm tra tư cách khách
hàng, kiểm tra hàng tồn kho, viết phiếu xuất, thanh toán, xuất
kho.
136
2.3.4 Mô hình quan niệm về xử lý
137
2.4. MÔ HÌNH TỔ CHỨC CỦA HTTT
2.4.1. Khái niệm:
Mô hình tổ chức được thiết lập từ hai mô hình:
a. Mô hình tổ chức về dữ liệu:
Mô hình này được hình thành do sự chuyển đổi các
tập thực thể và các mối quan hệ trong mô hình ER.
Ở mức tổ chức thông tin được mô tả theo giải pháp
cơ sở dữ liệu và thực chất chính là quan hệ logic của
chúng, nên mức tổ chức còn được gọi mức logic.
b. Mô hình tổ chức về xử lý:
Mô tả về mặt tổ chức của các xử lý. Mô hình này trả
lời cho các câu hỏi: Ai?, Khi nào?, Ở đâu?, Như thế
nào? 138
2.4. MÔ HÌNH TỔ CHỨC CỦA HTTT
Nhắc lại một số kiến thức về CSDL quan hệ
Cơ sở khoa học – Nền tảng - Lịch sử
Quan hệ
Lược đồ quan hệ
Phụ thuộc hàm
Phép tách:
Bảo toàn thông tin
Bảo toàn phụ thuộc hàm
Lý thuyết chuẩn hóa:
1NF, 2NF, 3NF, BCNF
139
2.4.2. Mô hình tổ chức dữ liệu
Các quy tắc chuyển đổi từ mô hình ER sang mô hình
dữ liệu quan hệ
a. Chuyển một tập thực thể thành quan hệ
Quy tắc 1: Mỗi tập thực thể trong mô hình quan niệm
dữ liệu được chuyển thành một quan hệ: có tên là
tên của tập thực thể; có thuộc tính và khóa là thuộc
tính và khóa của tập thực thể và có thể có thêm
thuộc tính là khóa ngoại nếu có.
Nhân viên
Chuyển thành
-Mã NV
-Họ tên
-Ngày sinh
Nhân viên (Mã NV , Họ tên, Ngày sinh, Mã đơn vị)
-Mã đơn vị 140
2.4.2. Mô hình tổ chức dữ liệu
Quy tắc 2: Tập thực thể tham gia vào mối quan hệ hai
ngôi có cặp bản số (1,1) ----- (1,n) thì quan hệ sinh ra
bởi tập thực thể ở nhánh (1,1) sẽ nhận khóa của tập
thực thể ở nhánh (1,n) làm khóa ngoại
Nhân viên
(1,1) Thuộc (1,n) Đơn vị Chuyển thành
-Mã NV -Mã đơn vị
-Họ Tên -Tên đơn vị
-Ngày Sinh
Chuyển thành
Ví dụ:
Mô hình tổ chức dữ liệu của HTTT “Quản lý kho hàng”
2.4.2. Mô hình tổ chức dữ liệu
2.4.2. Mô hình tổ chức dữ liệu
1NF
0NF SỐPHIẾUXUẤT
SỐPHIẾUXUẤT NGÀY
NGÀY NGƯỜI MUA
NGƯỜI MUA ĐẠILÝ
ĐẠILÝ SỐCMND
SỐCMND ĐỊACHỈ
ĐỊACHỈ MỤCĐÍCH
MỤCĐÍCH
TÊNHÀNG (lặp) 1NF
MÃHÀNG (lặp)
SỐPHIẾUXUẤT
ĐƠNVỊ (lặp)
TÊNHÀNG
ĐƠNGIÁ (lặp)
MÃHÀNG
SỐLƯỢNG
(lặp) ĐƠNVỊ
ĐƠNGIÁ
SỐLƯỢN
G 156
3. Chuẩn hoá và kiểm tra lại mô hình ER
Ví dụ
3NF
2NF SỐPHIẾUXUẤT
SỐPHIẾUXUẤT NGÀY
NGÀY SỐ
NGƯỜI MUA CMND
ĐẠILÝ MỤCĐÍCH
SỐCMND
ĐỊACHỈ NGƯỜI MUA 3
MỤCĐÍCH ĐẠILÝNF
SỐCMND
2NF ĐỊACHỈ
SỐPHIẾUXUẤT
3NF
MẪHÀNG
SỐLƯỢNG SỐPHIẾUXUẤT
MẪHÀNG
2NF SỐLƯỢNG
MẪHÀNG 3NF
TÊNHÀNG
MẪHÀNG
ĐƠNVỊ
TÊNHÀNG
ĐƠNGIÁ
ĐƠNVỊ 160
ĐƠNGIÁ
Quá trình chuẩn hoá có thể mô tả bằng sơ đồ dưới đây.
Chuẩn hoá
thành 1NF
Tách các phụ thuộc
hàm bộ phận
Chuẩn hoá
thành
2NF Tách các phụ thuộc
hàm bắc cầu
Chuẩn hoá
161
thành
Ví dụ: chuẩn hóa một chứng từ nhập trong HTTT “Quản lý kho
hàng”
Ví0NF chứng từ hập trong2NF
dụ: chuẩn hóa một 1NF HTTT 3NF
uản lý kho
SỐPHIẾUNHẬP nSỐPHIẾUNHẬP “Q
SỐPHIẾUNHẬP hàng”
SỐPHIẾUNHẬP
MÃSỐ_NCC MÃSỐ_NCC MÃSỐ_NCC MÃSỐ_NCC
TÊN_NCC TÊN_NCC TÊN_NCC NGÀY
ĐỊACHỈ_NCC ĐỊACHỈ_NCC ĐỊACHỈ_NCC
NGÀY NGÀY NGÀY 3NF
TÊNHÀNG (lặp) MÃSỐ_NCC
MẪHÀNG (lặp) 1NF 2NF TÊN_NCC
ĐƠNVỊTÍNH (lặp) SỐPHIẾUNHẬP SỐPHIẾUNHẬP ĐỊACHỈ_NCC
ĐƠNGIÁ (lặp) TÊNHÀNG MẪHÀNG
SỐLƯỢNG (lặp) MẪHÀNG SỐLƯỢNG 3NF
ĐƠNVỊTÍNH SỐPHIẾUNHẬP
ĐƠNGIÁ 2NF MẪHÀNG
SỐLƯỢNG MẪHÀNG SỐLƯỢNG
TÊNHÀNG
ĐƠNVỊTÍ 3NF
NH MẪHÀNG
ĐƠNGIÁ TÊNHÀNG
ĐƠNVỊTÍNH
ĐƠNGIÁ
Chuẩn hóa chứng từ nhập 163
Chuyển sang mô hình dữ liệu quan hệ
164
2.4.4. Mô hình tổ chức về xử lý
Mục đích:
Mô hình tổ chức về xử lý nhằm xác định rõ các công việc do
ai làm, làm ở đâu, làm khi nào, làm theo phương thức nào?
Các khái niệm
a. Nơi làm việc:
• một hệ thống thông tin quản lý được chia thành nhiều bộ
phận, mỗi bộ phận được gọi là một nơi làm việc.
• Nơi làm việc bao gồm: vị trí, con người, trang thiết bị tại
nơi làm việc.
b. Phương thức xử lý:
là cách thức thực hiện công việc. Mỗi công việc có thể được
thực hiện bởi một trong ba phương thức xử lý:
• Xử lý thủ công: do con người trực tiếp thao tác trên đối
tượng.
• Xử lý tự động
• Xử lý tương tác người -máy
2.4.4. Mô hình tổ chức về xử lý
Thiết kế cơ sở dữ liệu
a. Thiết kế các trường
Các yêu cầu về việc thiết kế các trường
Tiết kiệm không gian nhớ
Biểu diễn được mọi giá trị có thể
Cài đặt các ràng buộc toàn vẹn của dữ liệu
Đặt giá trị mặc định (Default) để giảm
thiểu thời gian nhập dữ liệu
Chọn kiểu dữ liệu và độ rộng của trường
Khai báo độ rộng vừa đủ
Chọn đúng kiểu dữ liệu
Không làm phức tạp cấu trúc dữ liệu của hệ
thống.
2.5.1. Mô hình vật lý về dữ liệu
a. Mục đích:
Trả lời cho câu hỏi cuối cùng là: các công việc hoạt
động như thế nào?
Từ mô hình tổ chức xử lý đã có, người phân tích
sẽ
tiến hành xem xét, biến các chức năng, công việc
thành các đơn vị chương trình.
Ứng với mỗi đơn vị chương trình này người
phân
tích phải viết một đặc tả chi tiết để chuẩn bị cho việc
lập trình.
2.5.2. Mô hình vật lý về xử lý
b. Mô đun xử lý
Mô đun xử lý là thể hiện các công việc có liên quan
với nhau và được thực hiện liền mạch nhằm thực hiện
một chức năng nào đó.
Thông thường một mô đun xử lý thể hiện một công
việc có bản chất là cập nhật hoặc tra cứu dữ liệu và
thao tác trên một nhóm dữ liệu nhỏ.
Ví dụ, Chức năng làm phiếu xuất kho sẽ bao gồm các
mô đun sau:
Tra cứu danh sách các đại lý để kiểm tra khách hàng
Kiểm tra hàng tồn kho
Lấy yêu cầu để lập phiếu xuất và cập nhật tồn kho
2.5.2. Mô hình vật lý về xử lý ...
c. Phân rã mô đun
Mục đích:
Để dễ dàng trong việc mã hoá, cài đặt chương trình
và sửa chữa
Phân rã mô đun nhỏ đến một mức nào đó có thể
xuất hiện các mô đun chung, điều này sẽ giảm nhẹ
công sức lập trình sau này
Phân rã mô đun cũng gợi ra giao diện chọn chức
năng theo kiểu thực đơn trong chương trình tổng thể
2.5.2. Mô hình vật lý về xử lý
QUẢN LÝ KHO NHẬP HÀNG CẬP NHẬT SỐ LIỆU, CẬP NHẬT PHIẾU
NHẬP, CẬP NHẬT TỒN KHO
IN PHIẾU NHẬP
IN PHIẾU XUẤT
e. Mô tả các mô đun
Sau khi phân rã các mô đun, người phân tích phải
chuyển giao các kết quả phân tích thiết kế cho người
lập trình để chuẩn bị cài đặt.
Hình thức tài liệu xuất: Đĩa, màn hình, giấy in,..
Dạng tài liệu xuất
Có cấu trúc: Bảng biểu, phiếu
Không có cấu trúc: Trả lời theo nhu cầu
195
CHƯƠNG 3
Nhận xét:
Quá trình xây dựng một sản phẩm phần mềm hoặc
nâng cấp một sản phẩm đã có được gọi là quá trình
phát triển phần mềm (Software Development Process).
Quá trình phát triển một phần mềm là quá trình xác
định:
làm cái gì (WHAT?),
làm ở đâu (WHERE?)
làm khi nào (WHEN?)
làm như thế nào (HOW?).
198
3.1 QUÁ TRÌNH PHÁT TRIỂN PHẦN MỀM HĐT
Có 5 bước chính cần thực hiện trong quá trình phát
triển phần mềm theo hướng đối tượng:
1. Nghiên cứu hiện trạng và xác định các yêu
cầu
2. Phân tích hệ thống
3. Thiết kế hệ thống
4. Lập trình và kiểm thử hệ thống
5. Vận hành và bảo trì hệ thống.
199
3.1. QUÁ TRÌNH PHÁT TRIỂN PHẦN MỀM HĐT ...
3.1.1 Nghiên cứu hiện trạng và xác định các yêu cầu
Từ các yêu cầu của khách hàng chúng ta xác định
được mục tiêu của phần mềm cần phát triển.
Thường đó là các yêu cầu chức năng về những gì
mà hệ thống phải thực hiện. Ở giai đoạn này chưa cần
chỉ ra các chức năng đó thực hiện như thế nào.
Việc xác định đúng và đầy đủ các yêu cầu của bài
toán là nhiệm vụ rất quan trọng, nó làm cơ sở cho các
bước tiếp theo.
Do đó, phải đặc tả được các yêu cầu của hệ thống
(Sử dụng các Use Case để đặc tả các yêu cầu). 200
3.1.1 Nghiên cứu hiện trạng và xác định các yêu cầu
Các công việc cần phải làm trong giai đoạn này:
Hiểu rõ miền xác định của bài toán (Domain Understanding)
Nắm bắt các yêu cầu của khách hàng/người sử dụng
Phân loại (Classification): theo tầm quan trọng hay
theo chức năng chính của những người sử dụng.
Thẩm định (Validation): Kiểm tra xem các yêu cầu có
thống nhất với nhau và đầy đủ không, đồng thời tìm
cách giải quyết các mối mâu thuẫn giữa các yêu cầu
nếu có.
201
3.1.1 Nghiên cứu hiện trạng và xác định các yêu cầu
Tóm lại, giai đọan nghiên cứu sơ bộ, cần xem xét:
Các yêu cầu của NSD, những nguồn tài nguyên có
thể sử dụng, công nghệ, các ý tưởng của người sử
dụng đối với hệ thống mới.
Có thể thực hiện thảo luận, nghiên cứu, xem xét
khía cạnh thương mại, phân tích khả năng lời-lỗ
Thường trong giai đoạn này người ta cũng tiến
hành tạo một phiên bản thô của lịch trình và kế hoạch
sử dụng tài nguyên.
Kết quả của giai đoạn nghiên cứu sơ bộ là bản Báo
Cáo Kết Quả Nghiên Cứu Tính Khả Thi.
Khi hệ thống tương lai được chấp nhận dựa trên
bản báo cáo này cũng là lúc giai đoạn Phân tích bắt 203
đầu.
3.1.1 Nghiên cứu hiện trạng và xác định các yêu cầu
204
3.1.1 Nghiên cứu hiện trạng và xác định các yêu cầu
205
3.1.1 Nghiên cứu hiện trạng và xác định các yêu cầu
Mối quan hệ giữa các công việc trong pha phân tích các yêu cầu
206
2. Phân tích hướng đối tượng
Là giai đoạn quan trọng của quá trình phát triển
phần mềm, trong đó mô hình khái niệm phải được mô
tả chính xác.
Phân tích hướng đối tượng tập trung vào việc tìm
kiếm các đối tượng, khái niệm trong lĩnh vực bài toán
và xác định mối quan hệ của chúng trong hệ thống.
Phân tích hệ thống cần trả lời các câu hỏi sau:
Hệ thống gồm những thành phần, bộ phận, đối
tượng nào?
Hệ thống cần thực hiện những cái gì?
Kết quả chính của việc phân tích hệ thống hướng
đối tượng là: biểu đồ lớp, biểu đồ trạng thái, biểu đồ
trình tự, biểu đồ cộng tác và biểu đồ thành phần. 207
2. Phân tích hướng đối tượng ...
Tóm lại, mục tiêu cụ thể của giai đoạn phân tích là:
Xác định hệ thống cần phải làm gì.
Nghiên cứu đầy đủ các chức năng cần cung cấp và
những yếu tố liên quan.
Xây dựng một mô hình nêu bật bản chất vấn đề từ
một hướng nhìn có thực (trong đời sống thực).
Nhờ chuyên gia lĩnh vực đánh giá, góp ý.
Kết quả của giai đoạn phân tích là bản Đặc Tả Yêu
Cầu (Requirements Specifications).
208
3.1.3 Thiết kế hướng đối tượng
Hệ thống được tổ chức thành tập các đối tượng
tương tác với nhau và mô tả được cách để hệ
thống thực thi nhiệm vụ của bài toán.
Giai đoạn này cần trả lời các câu hỏi:
Hệ thống làm như thế nào? (HOW?)
Trong hệ thống có những lớp đối tượng nào, trách
nhiệm của chúng như thế nào?
Các đối tượng tương tác với nhau như thế nào?
Các nhiệm vụ mà mỗi lớp đối tượng phải thực hiện
như thế nào?
Dữ liệu nghiệp vụ và các giao diện được xây dựng
như thế nào?
Kiến trúc và cấu hình của hệ thống như thế nào?
209
3.1.3 Thiết kế hướng đối tượng
Tóm lại, nhiệm vụ chính của thiết kế hệ thống là:
Xây dựng các thiết kế chi tiết mô tả các thành phần
của hệ thống ở mức cao hơn (khâu phân tích) để
phục vụ cho việc cài đặt.
Đưa ra được kiến trúc của hệ thống để đảm bảo
cho hệ thống có thể thay đổi, có tính mở, dễ bảo trì,
thân thiện với NSD, ...
Những kết quả trên được thể hiện trong các biểu
đồ: biểu đồ lớp (chi tiết), biểu đồ hành vi, biểu đồ
thành phần và biểu đồ triển khai.
Trong các tài liệu thiết kế phải mô tả cụ thể
những
thành phần nào, làm những gì và làm như thế nào. 210
3.1.3 Thiết kế hướng đối tượng
Một số các công việc thường được thực hiện trong
giai đoạn thiết kế:
Thiết kế database
Thiết kế các chức năng, thủ tục mô tả các quá trình
xử lý từ input đến output.
Thiết kế các forms nhập dữ liệu tùy theo các thành
phần dữ liệu cần nhập.
Thiết kế các reports và những output mà hệ thống
mới phải sản sinh
Kết quả giai đoạn thiết kế là bản Đặc Tả Thiết Kế
(Design Specifications).
Bản Đặc Tả Thiết Kế Chi Tiết sẽ được chuyển sang
cho các lập trình viên để thực hiện giai đoạn xây 21
dựng phần mềm. 1
3.1.4 Lập trình và kiểm thử hệ thống
Trong giai đoạn này, mỗi thành phần đã được thiết
kế sẽ được lập trình thành những mô đun chương
trình (chương trình con).
Mỗi mô đun này sẽ được kiểm chứng hoặc thử
nghiệm theo các tài liệu đặc tả của giai đoạn thiết kế.
Công việc này được mô tả như sau:
213
3.1.4 Lập trình và kiểm thử hệ thống
Kiểm thử đơn vị độc lập
Công việc này do một thành viên khác đảm trách.
Cần chọn người không có liên quan trực tiếp đến
việc viết code của đơn vị chương trình cần thử
nghiệm để đảm bảo tính “độc lập”.
Kiểm thử hệ thống
Sau khi các thủ tục đã được thử nghiệm riêng, cần
phải thử nghiệm toàn bộ hệ thống.
Mọi thủ tục được tích hợp và chạy thử, kiểm tra
xem mọi chi tiết ghi trong Đặc Tả Yêu Cầu.
Dữ liệu kiểm thử cần được chọn lọc đặc biệt, kết
quả cần được phân tích để phát hiện các sai sót so
với bản thiết kế. 214
3.1.5 Vận hành và bảo trì hệ thống
Cài đặt hệ thống phần mềm trong môi trường sử
dụng của khách hàng
Chỉnh sửa phần mềm đúng như những gì đã thiết
kế và yêu cầu của người sử dụng
Về bảo trì phần mềm:
Nâng cao hiệu quả của hệ thống
Đảm bảo sự thích nghi đối với sự thay đổi của
môi trường của hệ thống hay sự sửa đổi cho phù
hợp với những thay đổi của chính sách, qui chế
mới
215
3.1. QUÁ TRÌNH PHÁT TRIỂN PHẦN MỀM HĐT ...
Qui trình xây dựng các biểu đồ UML trong phân tích, thiết kế hệ thống HĐT216
3.2. PHÂN TÍCH YÊU CẦU HỆ THỐNG
217
Mục đích của hệ thống HBH
Tăng nhanh hoặc tự động hoá việc bán hàng, ghi nhận các
mặt hàng: loại sản phẩm, mô tả sản phẩm, số lượng và xác
định giá bán, tính tiền, v.v., đáp ứng mọi yêu cầu của khách
hàng,
Thanh toán nhanh với khách hàng bằng các phương thức:
tiền mặt, thẻ tín dụng, hay séc.
Phân tích, xử lý các kết quả bán hàng nhanh và chính xác để
hỗ trợ quyết định trong các hoạt động kinh doanh.
Thực hiện tự động kiểm kê các mặt hàng trong kho, theo dõi
được những mặt hàng bán chạy, những mặt hàng tồn kho để
có được những quyết định kịp thời trong kinh doanh.
Tóm lại, hệ thống xây dựng nhằm tự động hoá các hoạt động
kinh doanh, phục vụ khách hàng nhanh hơn, tốt hơn và rẻ
hơn.
218
Trong giai đoạn phân tích
Đối với bài toán 1, giai đoạn OOA sẽ nhận biết được các
đối tượng như:
- Cửa hàng, siêu thị
- Khách hàng
- Mặt hàng
- Người thanh toán
- ...
Tương tác và quan hệ giữa các đối tượng trên là:
- Khách hàng chọn hàng
- Khách hàng trả tiền
- ...
219
BÀI TOÁN 2: HỆ THỐNG ATM
Ngân hàng VietinBank có các máy rút tiền tự động
(ATM) đặt ở những vị trí khác nhau trong thành
phố. Chúng được nối với Trung tâm tại trụ sở
Ngân hàng thông qua hệ thống mạng máy tính.
Máy tính trung tâm lưu trữ và quản trị CSDL khách
hàng, xử lý những công việc chuyên ngành của
ngân hàng và yêu cầu ATM trả tiền.
Máy rút tiền tự động bao gồm máy đọc thẻ từ, màn
hình và bàn phím để tương tác với người sử
dụng.
Khách hàng có thể rút tiền tự động, chuyển tiền,
xem số dư trong tài khoản và thực hiện thanh toán
với hệ thống tín dụng của Ngân hàng. 220
BÀI TOÁN 2: HỆ THỐNG ATM ...
Trong những trường hợp đặc biệt như bị mất thẻ,
hay muốn thay đổi số thẻ thì khách hàng có thể
thay đổi mật khẩu cá nhân (PIN) và tương tự như
vậy, khi khách hàng báo bị mất thẻ thì Ngân
hàng cũng có thể quyết định thay đổi số thẻ và
báo cho khách hàng biết để đảm bảo không cho
những người không phải chủ sở hữu rút được
tiền.
221
BÀI TOÁN 3: HỆ THỐNG ĐĂNG KÝ HỌC PHẦN
Đại học Huế cần xây dựng một hệ thống thông tin giúp sinh
viên (SV) đăng ký học phần (HP) mới. Hệ thống cho phép SV
đăng ký học phần và xem điểm từ một máy tính cá nhân được
kết nối vào hệ thống mạng của ĐHH. Các giáo viên cũng có thể
truy cập vào hệ thống này để biết được lớp dạy và nhập điểm
cho các HP.
Vào đầu mỗi học kỳ SV dựa vào TKB và giáo viên sẽ phụ trách
môn học để đăng ký HP được giảng dạy trong học kỳ đó.
Thông tin về mỗi HP bao gồm: tên HP, tên giáo viên giảng dạy,
Khoa chuyên môn, các HP tiên quyết,... để giup SV đăng ký.
Hệ thống mới cho phép SV chọn 4 học phần được mở trong
học kỳ tới. SV cũng có thể chọn 2 HP tự chọn trong trường hợp
không thể đăng ký theo nguyện vọng chính.
Số tối thiểu và tối đa SV cho mỗi HP là 30 và 60. Các HP có ít
hơn 30 SV sẽ bị hủy. Đầu mỗi HP SV có một khoảng thời gian
để thay đổi các HP đã đăng ký.
BÀI TOÁN 3: HỆ THỐNG ĐĂNG KÝ HỌC PHẦN
Khi quá trình đăng ký hoàn tất cho mỗi SV hệ thống sẽ gửi
thông tin đến ngân hàng VietinBank để SV có thể đóng học
phí qua thẻ ATM
Nếu một lớp bị hết chỗ trong quá trình đăng ký, SV sẽ được
thông báo về sự thay đổi trước khi xác nhận đăng ký HP
Cuối học kỳ SV có thể truy cập vào hệ thống để xem phiếu
điểm. Hiễn nhiên, mỗi SV được hệ thống cung cấp một tài
khoản cá nhân để bảo mật thông tin của mình.
Các giáo viên có thể truy cập vào hệ thống để biết TKB và
danh sách SV của HP sẽ dạy
Giáo viên có nhiệm vụ nhập các điểm QTHT, điểm thi, kiểm
tra sau khi HP kết thúc
223
Các công cụ để mô tả yêu cầu người dùng
224
Các chức năng, nhiệm vụ của hệ thống là gì?
Chức năng của hệ thống là những gì mà hệ thống
được yêu cầu thực hiện.
Các chức năng có thể phân loại theo lĩnh vực chức
năng để tránh sự nhầm lẫn giữa chúng. Các chức
năng hệ thống có thể chia thành:
Chức năng hiển (Evident): chọn hàng, tính
tiền,...
Chức năng ẩn (Hiddent): cập nhật dữ liệu, tồn
kho
Chức năng tuỳ chọn (optional): tăng mức độ thân
thiện của hệ thống nhưng không ảnh hưởng tới
225
giá trị cũng như các chức năng khác.
Các chức năng, nhiệm vụ của hệ thống là gì?
Chú ý:
Các chức năng của hệ thống phải được chia thành
các nhóm theo các mối liên hệ với nhau.
Dựa vào cách phân chia các chức năng để sau này
chia nhỏ hệ thống thành các gói, các hệ thống con
trong quá trình phân tích và thiết kế hệ thống.
Ví dụ: Các chức năng của hệ thống HBH có thể chia
thành hai nhóm chính:
Các chức năng bán hàng
Các chức năng thanh toán.
226
Bảng liệt kê các chức năng
227
Bảng liệt kê các chức năng
Các chức năng hệ thống thường được đánh số theo các qui
tắc tham chiếu (Reference Rule) để tiện cho việc sử dụng tham
chiếu trong các mục phân tích sau này.
228
3.3. ĐẶC TẢ CÁC YÊU CẦU CỦA HỆ THỐNG
1. Use Case
Use Case mô tả tập các hoạt động của hệ thống
theo quan điểm của các tác nhân (Actor). Nó mô tả
các yêu cầu của hệ thống và trả lời cho câu hỏi:
Hệ thống phải làm gì (What ?)
Một Use Case có thể bao gồm nhiều biểu đồ Use
Case
Use Case mô tả rõ ràng và nhất quán về việc hệ
thống cần phải làm gì (What?).
Use Case mô tả các yêu cầu về mặt chức năng của
hệ thống -các chức năng này có từ sự thỏa
thuận giữa khách hàng và nhóm phát triển phần
229
mềm.
2. Mục tiêu của Use Case
Làm cơ sở để:
người phân tích viên hiểu
người thiết kế xây dựng các kiến trúc
người lập trình cài đặt các chức năng
người kiểm thử kiểm tra các kết quả thực hiện
của hệ thống.
Làm công cụ giao tiếp cho những người phát triển,
đảm bảo hệ thống thỏa mãn đúng những yêu cầu
của Users
230
3. Ai cần Use Case? - Để làm gì?
Nhà phát triển cần đến các mô hình Use Case để
hiểu hệ thống cần phải làm gì, và qua đó có được
một nền tảng cho những công việc tương lai
Customers/Users quan tâm đến Use Case vì nó đặc
tả chức năng của hệ thống và mô tả xem hệ thống có
thể và sẽ được sử dụng như thế nào.
Tester cần đến Use Case để thử nghiệm và kiểm tra
xem hệ thống có đảm bảo sẽ thực hiện đúng chức
năng đã được đặc tả trong giai đoạn đầu.
Những người liên quan đến những hoạt động liên kết
đến chức năng của hệ thống như nhóm tiếp thị, bán
hàng, hỗ trợ khách hàng và nhóm soạn thảo tài liệu2.31
4. Cách thể hiện một biểu đồ Use Case
Một biểu đồ Use Case thể hiện:
Hệ thống
Actors Hệ thống
Tác nhân
Use Case. Use
Case
Ví dụ biểu đồ Use Case trong UML:
232
a. Hệ thống
Hệ thống là một thành phần của Use Case nên ranh
giới của hệ thống cần phải được xác định rõ ràng.
Một hệ thống không nhất thiết là một hệ thống phần
mềm; nó có thể là một chiếc máy, hoặc là một doanh
nghiệp.
Ký hiệu của hệ thống: hình chữ nhật có kèm theo tên
hệ thống
System
B o u n d a ry
UseCase
233
b. Tác nhân
Người hoặc một vật nào đó tương tác
với hệ thống, sử dụng hệ thống.
Một tác nhân có thể là người, thiết bị mà cũng có thể
là một hệ thống khác.
Tên gọi của tác nhân được mô tả bằng các danh từ
(chung) và thường phải đặc tả được vai trò của nó
đối với hệ thống.
Một tác nhân là một dạng tập thực thể (một lớp) chứ
không phải một thực thể. Tác nhân mô tả và đại
diện cho một vai trò, chứ không phải là một người
sử dụng thật sự và cụ thể của hệ thống.
234
c. Bảng chú giải
Dùng để giải thích các khái niệm, định nghĩa, thuật ngữ, ngôn
ngữ công việc trong hệ thống
235
5. Cách xác định các tác nhân và các Use Case
a. Để xác định các tác nhân là dựa trên các câu trả
lời những câu hỏi sau:
Ai sẽ sử dụng các chức năng chính của hệ thống?
Ai cần sự hỗ trợ của hệ thống để thực hiện các
công việc hàng ngày?
Ai quản trị, bảo dưỡng để đảm bảo cho hệ thống
hoạt động thường xuyên?
Hệ thống quản lý, sử dụng những thiết bị nào?
Hệ thống cần tương tác với những bộ phận, hệ
thống nào khác?
Ai hay cái gì quan tâm đến kết quả xử lý của
hệ
thống? 236
5. Cách xác định các tác nhân và các Use Case
237
Xác định các Use Case và các sự kiện
b. Xác định các Use Case: Danh sách các Use Case
Bán hàng, mua hàng (Buy Items) là nhiệm vụ của
hệ thống HBH liên quan trực tiếp tới khách hàng và
người bán hàng. Use Case Use Case này liên
quan đến cả người bán hàng và khách hàng.
Thanh toán, trả tiền mua hàng hay thu tiền là chức
năng của hệ thống phải thực hiện để thanh toán với
khách hàng bằng phương thức mà họ lựa chọn: trả
tiền mặt, thẻ tín dụng, hay trả bằng séc. Use Case
này cũng liên quan đến cả người bán hàng và
khách hàng.
240
Ví dụ1: Xác định các Actor và Use Case của HBH ...
b. Xác định các Use Case: Danh sách các Use Case
Đăng nhập hệ thống (Log in): Người bán hàng cần
sử dụng để nhập vào hệ thống và sử dụng nó để
bán hàng.
Khởi động, đóng hệ thống: Người quản lý thực hiện
để khởi động hay kết thúc hoạt động của hệ
thống.
Bổ sung NSD mới, Loại bỏ NSD: Người quản trị hệ
thống có thể bổ sung thêm người sử dụng mới
hay loại bỏ những NSD không còn cần sử dụng
hệ thống.
241
Các Actor và Use Case của hệ thống HBH
Tác nhân Use Case
Người bán hàng (Cashier) Đăng nhập hệ thống (Log In)
Thu tiền bán hàng (Cash Out)
243
Ví dụ2: Các Actor và Use Case của hệ thống ATM
244
Ví dụ2: Các Actor và Use Case của hệ thống ATM
b. Xác định các Use Case: Danh sách các Use Case
Rút tiền: những khách hàng có tiền trong tài khoản
của Ngân hàng, khi cần rút tiền thì nhập số PIN, nhập
số lượng tiền cần rút.
Chuyển tiền: khách hàng có thể chuyển tiền từ một tài
khoản khác về tài khoản của mình hoặc gửi tiền trực
tiếp vào tài khoản.
Xem số dư trong tài khoản: khách hàng biết được
mình còn bao nhiêu tiền trong tài khoản.
Thanh toán: khách hàng có thể sử dụng để thanh toán
với hệ thống tín dụng của Ngân hàng.
Thay đổi PIN: khách hàng, hoặc nhân viên Ngân hàng
245
có thể thay đổi PIN khi cần thiết.
Biểu đồ Use Case của hệ thống ATM
246
6. Đặc tả các Use Case
Bán hàng
Khách hàng Người bán hàng
249
Ví dụ
Use Case: Thu tiền (Cash Out)
Tác nhân: Khách hàng, người bán hàng.
Mô tả: Khách hàng có thể trả tiền theo 3 phương thức:
1. Trả tiền mặt (Pay by Cash)
3. Trả bằng thẻ tín dụng (Pay by Credit)
3. Trả bằng séc (Pay by Check)
Người bán nhận tiền mặt/thẻ tín dụng/sec rồi thanh
toán tiền thừa cho khách hàng sau khi thẻ tín
dụng/sec đã được kiểm duyệt.
Tham chiếu tới: Các chức năng R1.1, R1.2, R1.3,
R1.9, R3.1, R3.2, R3.3.
250
Use Case cho chức năng Thu tiền (Cash Out)
Pay by Check
Bộ phận kiểm
Bộ phận kiểm Pay by Credit duyệt sec
duyệt thẻ
<<uses>> Pay by Cash
<<uses>>
<<uses>>
251
Use Case cho chức năng Thu tiền (Cash Out)
Chú ý:
Ngoài những đặc tả nêu trên, ta còn có thể xây
dựng các kịch bản (scenario) hành động để mô tả các
sự kiện xảy ra trong hệ thống.
Mỗi kịch bản có thể mô tả theo hai luồng:
Luồng thực hiện của các tác nhân
Luồng tương ứng với hệ thống.
252
7. Mối quan hệ giữa các Use Case
253
8. Checkpoint - Use Case Model
Kiểm tra đã hoàn tất việc xác định yêu cầu của
người dùng chưa?
a. Kiểm tra về Use Case Model và Use Case
1.Use-case model có dễ hiểu không?
2.Sau khi nghiên cứu Use Case model, bạn có hình
thành được một ý tưởng rõ ràng về các chức năng
của hệ thống và cách thức mà chúng liên hệ với
nhau?
3.Đã xác định hết các actor chưa? Tất cả các yêu cầu
chức năng được thỏa mãn chưa?
4.Use-case model có chứa các hành vi vô dụng nào
không?
8. Checkpoint
260
3.5. CÁC NHÓM MẪU THIẾT KẾ ...
263
a. CÁC NHÓM MẪU THIẾT KẾ ...
264
b. CÁC MẪU THUỘC NHÓM KIẾN TẠO - CREATIONAL PATTERNS
266
2. Cấu trúc mẫu:
267
Trong đó:
AbstractFactory: là lớp trừu tượng, tạo ra các đối tượng thuộc
2 lớp trừu tượng là: AbstractProductA và AbstractProductB
ConcreteFactoryX: là lớp kế thừa từ AbstractFatory, lớp này sẽ
tạo ra một đối tượng cụ thể
AbstractProduct: là các lớp trừu tượng, các đối tượng cụ thể
sẽ là các thể hiện của các lớp dẫn xuất từ lớp này. 268
2. Cấu trúc mẫu:
1 game, trong đó
có thú ăn thịt và
thú ăn cỏ
Thú ăn thịt: Sư
tử, Sói
Thú ăn cỏ: Linh
dương, Bò rừng
Phân biệt theo
các châu
Châu Phi: Sư
tử, Linh dương
Châu Mỹ: Sói,
Bò rừng
269
The classes and/or objects participating in
this pattern are:
AbstractFactory (ContinentFactory)
declares an interface for operations that
create abstract products
ConcreteFactory (AfricaFactory,
AmericaFactory)
implements the operations to create
concrete product objects
AbstractProduct (Herbivore,
Carnivore)
declares an interface for a type of product
object
Product (Wildebeest, Lion, Bison, Wolf)
defines a product object to be created by
the corresponding concrete factory
implements the AbstractProduct interface
Client (AnimalWorld)
uses interfaces declared by
AbstractFactory and
270
AbstractProduct classes
Xem code in C# tại: http://www.dofactory.com/Patterns/PatternAbstract.aspx
Mẫu Abstract Factory
3. Tình huống áp dụng
Phía trình khách sẽ không phụ thuộc vào việc những
sản phẩm được tạo ra như thế nào.
Ứng dụng sẽ được cấu hình với một hoặc nhiều họ
sản phẩm.
Các đối tượng cần phải được tạo ra như một tập
hợp để có thể tương thích với nhau.
Chúng ta muốn cung cấp một tập các lớp và chúng
ta muốn thể hiện các ràng buộc, các mối quan hệ
giữa chúng mà không phải là các thực thi của chúng
(interface).
271
Mẫu Abstract Factory ...
4. Ví dụ:
Giả sử ta cần viết một ứng dụng quản lý địa chỉ và
số điện thoại cho các quốc gia trên thế giới. Điạ chỉ
và số địa thoại của mỗi quốc gia sẽ có 1 số điểm
giống nhau và 1 số điểm khác nhau. Ta xây dựng sơ
đồ lớp như sau:
272
Ta sẽ xây dựng các phương thức
tạo Address, và PhoneNumber cụ
thể trong các lớp:
• USAAddressPhoneFactory
• FrechAddressPhoneFactory.
Với phương thức
createProductAddress() của lớp
USAAddressPhoneFactory sẽ trả
về đối tượng của lớp USAAddress
Với phương thức
createProductAddress() của lớp
FrechAddressPhoneFactory sẽ trả
về đối tượng của lớp FrechAddress
Tương tự với PhoneNumber.
273
Mẫu Builder
1.Ý nghĩa:
Tách các thành phần của một đối tượng phức hợp,
để có thể cùng khởi tạo một lần mà có thể tạo nên
nhiều định dạng khác nhau.
274
2. Cấu trúc mẫu:
Trong đó,
Director: là lớp điều khiển tạo ra một đối tượng Product
Builder: là lớp trừu tượng cho phép tạo ra đối tượng Product từ
các phương thức nhỏ khởi tạo từng thành phần của Product
ConcreteBuilder: là lớp dẫn xuất của Builder, khởi tạo từng đối
tượng cụ thể, lớp này sẽ khởi tạo đối tượng. 275
Mẫu Builder ...
3. Tình huống áp dụng
Có cấu trúc bên trong phức tạp (đặc biệt là một biến
là một tập các đối tượng liên quan với nhau)
Có các thuộc tính phụ thuộc vào các thuộc tính
khác
Sử dụng các đối tượng khác trong hệ thống mà có
thể khó khởi tạo hoặc khởi tạo phức tạp.
4. Ví dụ
Ta lại xét đối tượng Address, có các thành phần sau:
Street, City và Region. Ta phân tách việc khởi tạo 1
đối tượng Address thành các phần : buildStreet, 276
buildCity và buildRegion.
Mẫu Builder ...
Trong đó:
AddressDirector: là lớp tạo ra đối tượng Address
AddressBuilder: là lớp trừu tượng cho phép tạo ra 1 đối tượng
Address bằng các phương thức khởi tạo từng thành phần của
Address
USAddressBuilder: là lớp tạo ra các Address.
sẽUSAddressBuilder
tạo ra địa chỉ theo chuẩn của USA 277
Mẫu Factory Method
1.Ý nghĩa:
Định nghĩa một phương thức chuẩn để khởi tạo đối
tượng, như là một phần của phương thức tạo,
nhưng việc quyết định kiểu đối tượng nào được tạo
ra thì phụ thuộc vào các lớp con.
278
2. Cấu trúc mẫu:
Trong đó,
Creator là lớp trừu tượng,
khai báo phương thức factoryMethod() nhưng không cài đặt
Product cũng là lớp trừu tượng
ConcreteCreatorA và ConcreteCreatorB là 2 lớp kế thừa từ lớp Creator để
tạo ra các đối tượng riêng biệt
ConcreteProductA và ConcreteProductB là các lớp kế thừa của lớp
Product, các đối tượng của 2 lớp này sẽ do 2 lớp ConcreteCreatorA và 279
ConcreteCreatorB tạo ra
Mẫu Factory Method ...
3. Tình huống áp dụng
Khi bạn muốn tạo ra một framework có thể mở rộng,
có nghĩa là nó cho phép tính mềm dẻo trong một số
quyết định như chỉ ra loại đối tượng nào được tạo
ra
Khi bạn muốn 1 lớp con, mở rộng từ 1 lớp cha,
quyết định lại đối tượng được khởi tạo.
Khi bạn biết khi nào thì khởi tạo một đối tượng
nhưng không biết loại đối tượng nào được khởi tạo
Bạn cần một vài khai báo chồng phương thức tạo
với danh sách các tham số như nhau, điều mà Java
không cho phép. Thay vì điều đó ta sử dụng các
280
Factory Method với các tên khác nhau.
4. Ví dụ: Xét lại ví dụ về các địa chỉ ở phần Abstract Pattern
281
4.3.4. Mẫu Prototype
1.Ý nghĩa:
Giúp khởi tạo đối tượng bằng cách copy một đối
tượng khác đã tồn tại (đối tượng này là “prototype” –
nguyên mẫu).
282
Mẫu Prototype
2. Cấu trúc mẫu:
Trong đó:
Prototype là lớp trừu tượng cài đặt phương thức myClone() là
phương thức copy bản thân đối tượng đã tồn tại.
ConcretePrototype1 và ConcretePrototype2 là các lớp kế thừa
lớp Prototype. 283
Mẫu Prototype
3. Tình huống áp dụng
Khi bạn muốn khởi tạo một đối tượng bằng cách sao
chép từ một đối tượng đã tồn tại.
4. Ví dụ: Xét lại ví dụ về các địa chỉ ở phần Abstract
Pattern
284
Mẫu Singleton
1. Ý nghĩa:
Mẫu này được thiết kế để đảm bảo cho một lớp chỉ
có thể tạo ra duy nhất một thể hiện của nó.
286
c. NHÓM CÁC MẪU CẤU TRÚC- Structural Patterns
290
4.4.2 Mẫu Bridge
Trong đó:
o Abstraction: là lớp trừu tượng khai báo các chức năng và cấu trúc cơ bản,
trong lớp này có 1 thuộc tính là 1 thể hiện của giao tiếp Implementation, thể
hiện này bằng các phương thức của mình sẽ thực hiện các chức năng
abstractionOp() của lớp Abstraction
oImplementation: là giao tiếp thực thi của lớp các chức năng nào đó của
Abstraction
o RefineAbstraction: là định nghĩa các chức năng mới hoặc các chức
năng đã
có trong Absrtaction.
o ConcreteImplement:
giao tiếp Implementationlà các lớp định nghĩa tường minh các thực thi 291
Mẫu Bridge
3. Tình huống áp dụng
Khi bạn muốn tạo ra sự mềm dẻo giữa 2 thành phần
ảo và thực thi của một thành phần, và tránh đi mối
quan hệ tĩnh giữa chúng.
Khi bạn muốn những thay đổi của phần thực thi sẽ
không ảnh hưởng đến client.
Bạn định nghĩa nhiều thành phần ảo và thực thi.
Phân lớp con một cách thích hợp, nhưng bạn muốn
quản lý 2 thành phần của hệ thống một các riêng biệt
292
Mẫu Composite
1. Ý nghĩa:
Mẫu này nhằm gom
các đối tượng vào
trong một cấu trúc
cây để thể hiện
được cấu trúc tổng
quát của nó. Trong
khi đó cho phép mỗi
phần tử của cấu trúc
cây có thể thực
hiện một chức năng
theo một giao tiếp
chung.
298
4. Ví dụ:
Giả sử trong thư viện có
các tài liệu: sách, video…
Các loại tài liệu này có các
thuộc tính khác nhau,
phương thức hiển thị của
giao tiếp LibraryItem sẽ
hiển thị các thông tin này.
Giả sử, ngoài các thông tin
thuộc tính trên, đôi khi ta
muốn hiển thị độc giả
mượn một cuốn sách (chức
năng hiển thị độc giả này
không phải lúc nào cũng
muốn hiển thị), hoặc muốn
xem đoạn video(không
299
thường xuyên).
Mẫu Façade
1. Ý nghĩa:
Cung cấp một giao
tiếp hợp nhất của
một tập các giao
tiếp trong hệ thống
con. Façade định
nghĩa một giao tiếp
mức cao hơn để
làm cho hệ thống
con dễ sử dụng
2. Cấu trúc mẫu:
300
Mẫu Façade
Trong đó:
Class1 và Class2 là
các lớp đã có trong hệ
thống
Façade là lớp sử
dụng các phương
thức của Class1 và
Class2 để tạo ra một
giao diện mới, thường
được sử dụng, đỡ
phức tạp hơn khi sử
dụng riêng Class1 và
Class2
301
Mẫu Façade
302
Mẫu Façade
4. Ví dụ:
Giả sử hệ thống cũ đã
có các lớp: Địa chỉ, Số điện
thoại, Tên tuổi về thông tin
của một người, giờ ta muốn
quản lý các thông tin
trên của một người, ta tận
dụng lại hệ thống cũ, xây
một lớp Người sử dụng lại
các lớp ở trên.
303
Mẫu Flyweight
1.Ý nghĩa:
Làm phương tiện dùng chung để quản lý một cách hiệu quả
một số lượng lớn các đối tượng nhỏ có các đặc điểm chung,
mà các đối tượng nhỏ này lại được sử dụng tuỳ thuộc vào
hoàn cảnh, điều kiện ngoài.
304
2. Cấu trúc mẫu:
4.4.6 Mẫu Flyweight
Trong đó:
o FlyweightFactory: tạo ra và quản lý các đối tượng Flyweight
o Flyweight là một giao tiếp định nghĩa các phương thức chuẩn
o ConcreteFlyweightX: là các lớp thực thi của Flyweight, các thể hiện của305
các lớp này sẽ được sử dụng tuỳ thuộc vào điều kiện ngoài.
Mẫu Flyweight
3. Tình huống áp dụng
Ứng dụng sử dụng nhiều đối tượng giống hoặc gần
giống nhau
Với các đối tượng gần giống nhau, những phần
không giống nhau có thể tách rời với các phần giống
nhau để cho phép các phần giống nhau có thể chia sẻ
Nhóm các đối tượng gần giống nhau có thể được
thay thế bởi một đối tượng chia sẻ mà các phần không
giống nhau đã được loại bỏ
Nếu ứng dụng cần phân biệt các đối tương gần
giống nhau trong trạng thái gốc của chúng
306
Mẫu Flyweight
4. Ví dụ:
Một ví dụ cổ điển của mẫu flyweight là các kí tự được
lưu trong một bộ xử lí văn bản (word processor). Mỗi kí tự đại
diện cho một đối tượng mà có dữ liệu là loại font (font face),
kích thước font, và các dữ liệu định dạng khác. Bạn có thể
tưởng tượng là, với một tài liệu (document) lớn với cấu trúc dữ
liệu như thế này thì sẽ bộ xử lí văn bản sẽ khó mà có thể xử
lí được. Hơn nữa, vì hầu hết dữ liệu dạng này là lặp lại, phải
có một cách để giảm việc lưu giữ này – đó chính là mẫu
Flyweight. Mỗi đối tượng kí tự sẽ chứa một tham chiếu đến
một đối tượng định dạng riêng rẽ mà chính đối tượng này sẽ
chứa các thuộc tính cần thiết. Điều này sẽ giảm một lượng lớn
sự lưu giữ bằng cách kết hợp mọi kí tự có định dạng giống
nhau trở thành các đối tượng đơn chỉ chứa tham chiếu đến
cùng một đối tượng đơn chứa định dạng chung đó. 307
Mẫu Flyweight
308
Mẫu Proxy
1. Ý nghĩa:
Đại diện một đối tượng phức tạp bằng một đối tượng đơn giản,
vì các mục đích truy xuất, tốc độ và bảo mật
2. Cấu trúc mẫu:
309
Mẫu Proxy
Trong đó:
oService: là giao tiếp định nghĩa các phương thức chuẩn cho một dịch vụ nào
đó
o RealService: là một thực thi của giao tiếp Service, lớp này sẽ khai báo
tường
yêu
minhcầu
cáctừphương
Servicethức của Service, lớp này xem như thực hiện tốt tất cả các310
o Proxy: kế thừa Service và sử dụng đối tượng của RealService
Mẫu Proxy
3. Tình huống áp dụng
Sử dụng mẫu Proxy khi bạn cần một tham chiếu
phức tạp đến một đối tượng thay vì chỉ một cách bình
thường
Remote proxy – sử dụng khi bạn cần một tham chiếu
định vị cho một đối tượng trong không gian địa
chỉ(JVM)
Virtual proxy – lưu giữ các thông tin thêm vào về một
dịch vụ thực vì vậy chúng có thể hoãn lại sự truy xuất
vào dịch vụ này
Protection proxy – xác thực quyền truy xuất vào một
đối tượng thực
311
Mẫu Proxy
4. Ví dụ:
Ví dụ lớp Image là một interface định nghĩa các phương thức xử lý
ảnh, nó có các lớp con là GIFImage và JPGImage.
Theo hướng đối tượng thì thiết kế như thế có vẻ hợp lý, Client
chỉ cần sử dụng lớp Image là đủ, còn tuỳ thuộc vào loại ảnh sẽ có các
phương thức khác nhau
Nhưng trong trường hợp, trên ứng dụng web chẳng hạn, một lúc
ta đọc lên hàng trăm ảnh các loại và ta còn muốn xử lý tuỳ vào một điều
kiện nào đó (ví dụ chỉ xử lý khi là ảnh JPG hoặc GIF). Nếu ta đặt điều kiện
IF Image (sau đó sẽ tùy điều kiện này rồi xử lý riêng) thì không hợp lý, nếu
đặt trong Client, nếu mỗi lần cần thay đổi IF ta lại sửa Client => không hợp
lý khi Client là một ứng dụng lớn.
Ta sử dụng Proxy, lớp ImageProxy chỉ là lớp đại diện cho Image,
kế thừa từ Image và sử dụng các lớp GIFImage hay JPGImage. Khi cần
thay đổi ta chỉ cần thay đổi trên Proxy mà không cần tác động đến Client
và Image.
312
Mẫu Proxy
313
d. NHÓM CÁC MẪU TƯƠNG TÁC- Behavioral Patterns
314
Mẫu Chain of Responsibility
1. Ý nghĩa: Mẫu này thiết lập một chuỗi bên trong một hệ
thống, nơi mà các thông điệp hoặc có thể được thực hiện
ở tại một mức nơi mà nó được nhận lần đầu hoặc là được
chuyển đến một đối tượng mà có thể thực hiện điều đóTạo
một giao diện trung gian để gắn kết vào hệ thống một lớp
đối tượng mong muốn nào đó.
2. Cấu trúc mẫu:
315
Mẫu Chain of Responsibility
Trong đó:
o Handler: là một giao tiếp định nghĩa phương thức sử dụng để chuyển thông
điệp qua các lần thực hiện tiếp theo.
o ConcreteHandler: là một thực thi của giao tiếp Handler. Nó giữ một tham
chiếu đến một Handler tiếp theo. Việc thực thi phương thức handleMessage có
thể xác định làm thế nào để thực hiện phương thức và gọi một
handlerMethod, chuyển tiếp thông điệp đến cho Handler tiếp theo hoặc kết 316
hợp cả hai
Mẫu Chain of Responsibility
3. Tình huống áp dụng
Có một nhóm các đối tượng trong một hệ thống có
thể đáp ứng tất cả các loại thông điệp giống nhau
Các thông điệp phải được thực hiện bởi một vài các
đối tượng trong hệ thống
Các thông điệp đi theo mô hình “thực hiện – chuyển
tiếp”, một vài sự kiện có thể được thực hiện tại
mức mà chúng được nhận hoặc tại ra, trong khi số
khác phải được chuyển tiếp đến một vài đối tượng
khác
317
Mẫu Chain of Responsibility
4. Ví dụ:
Hệ thống quản lý thông tin cá nhân có thể được sử dụng để
quản lý các dự án như là các liên hệ.
Ta hình dung một cấu trúc cây như sau; đỉnh là một dự án,
các đỉnh con là các tác vụ của dự án đó, và cứ như vậy, mỗi
đỉnh con tác vụ lại có một tập các đỉnh con tác vụ khác.
Để quản lý cấu trúc này ta thực hiện như sau:
-Ở mỗi đỉnh ta lưu các thông tin như sau: tên tác vụ, đỉnh cha,
tập các đỉnh con
-Ta xét thông điệp sau: duyệt từ đỉnh gốc (project cở sở) in ra
các thông tin
-Như vậy với thông điệp này, việc in thông tin ở một đỉnh là
chưa đủ, ta phải chuyển tiếp đến in thông tin các đỉnh con
của đỉnh gốc và chuyển tiếp cho đến khi không còn đỉnh con
thì mới dừng 318
Mẫu Chain of Responsibility
319
Mẫu Command
1. Ý nghĩa: Gói một mệnh lệnh vào trong một đối tượng mà
nó có thể được lưu trữ, chuyển vào các phương thức và
trả về một vài đối tượng khác.
2. Cấu trúc mẫu:
Trong đó:
o Command: là một giao tiếp định
nghĩa các phương thức cho Invoker sử
dụng
o Invoker: lớp này thực hiện các
phương thức của đối tượng Command
oReceiver: là đích đến của Command
và là đối tượng thực hiện hoàn tất yêu
cầu, nó có tất cả các thông tin cần thiết
để thực hiện điều này
oConcreteCommand: là một thực thi
của giao tiếp Command. Nó lưu giữa
một tham chiếu Receiver mong muốn
320
Mẫu Command
Luồng thực thi của mẫu Command như sau:
321
Mẫu Command
323
Mẫu Interpreter
1. Ý nghĩa:
Ý tưởng chính của Interpreter là triển khai ngôn ngữ máy
tính đặc tả để giải quyết nhanh một lớp vấn đề được định
nghĩa. Ngôn ngữ đặc tả thường làm cho vấn đề được giải
quyết nhanh hơn ngôn ngữ thông thường từ một cho đến
vài trăm lần.
Ý tưởng tương tự như vậy biểu diễn các biểu thức tính
toán theo cú pháp Ba Lan
324
Mẫu Command
Trong đó:
Expression: là một giao tiếp mà thông qua nó, client tương tác với các biểu
thức
o TerminalExpression: là một thực thi của giao tiếp Expression, đại diện
cho
các nốt cuối trong cây cú pháp
oNonterminalExpression: là một thực thi khác của giao tiếp Expression, đại
diện cho các nút chưa kết thúc trong cấu trúc của cây cú pháp. Nó lưu trữ một
tham chiếu đến Expression và triệu gọi phương thức diễn giải cho mỗi phần tử
con
oContext: chứa thông tin cần thiết cho một vài vị trí trong khi diễn giải. Nó có
thể phục vụ như một kênh truyền thông cho các thể hiện của Expression
oClient: hoặc là xây dựng hoặc là nhận một thể hiện của cây cú pháp ảo. Cây
cú pháp này bao gồm các thể hiện của TerminalExpression và
NoterminalExpression để tạo nên câu đặc tả. Client triệu gọi các phương thứ3c25
Mẫu Interpreter
3. Tình huống áp dụng
Có một ngôn ngữ đơn giản để diễn giải vấn đề
Các vấn đề lặp lại có thể được diễn giải nhanh bằng
ngôn ngữ đó
4. Ví dụ: Xét biểu thức 5 + 3 x 3 + 6, với bài tóan này ta có thể
chia thành các bài các bài tóan nhỏ hơn
-Tính 3 x 3 = a
-Sau đó tính 5 + a = b
-Sau đó tính b + 6
326
Mẫu Interpreter
327
References
1. http://www.uml.org.cn/c++/pdf/DesignPatterns.pdf
2. http://duydo.com/design-patterns-l%E1%BA%ADp-trinh-
vien-c%E1%BA%A7n-ph%E1%BA%A3i-bi%E1%BA%BFt/
Giới thiệu các mẫu thiết kế hướng đối tượng (Design Pattern)
3. http://duriangroup.wordpress.com/2007/10/27/gi%E1%BB%
9Bi-thi%E1%BB%87u-cac-m%E1%BA%ABu-
thi%E1%BA%BFt-k%E1%BA%BF-
h%C6%B0%E1%BB%9Bng-d%E1%BB%91i-
t%C6%B0%E1%BB%A3ng-design-pattern/
328
HẾT CHƯƠNG 3
329