You are on page 1of 273

VIỆN ĐIỆN TỬ - VIỄN THÔNG

School of Electronics and telecommunications

KỸ THUẬT PHẦN MỀM


ỨNG DỤNG

Giảng viên: TS. Nguyễn Thị Kim Thoa


Học kỳ: 20211

1
Giới thiệu môn học
• 2 tín chỉ = 45 Tiết
• Điểm QT= một phần BTL + ý thức học trên lớp + một số bài
kiểm tra không báo trước
• Điểm cuối kỳ = Bài tập lớn
• Mục đích môn học:
̶ Các khái niệm cơ bản trong kỹ thuật phần mềm
̶ Các bước cơ bản xây dựng phần mềm, từ lập kế hoạch, phân
tích, thiết kế cho đến bảo trì phần mềm
̶ Có kỹ năng thực hành làm phần mềm theo nhóm

2
Tài liệu tham khảo

1. Software Engineering _a practitioner's approach (5th edition),


Roger Pressman
2. Nguyễn Văn Ba, Phân tích thiết kế HTTT - NXB ĐHQG Hà Nội
3. Thạc Bình Cường, Phân tích thiết kế HTTT - NXB Khoa học và kỹ
thuật
4. Đinh Thế Hiển, Phân tích thiết kế HTTT - NXB Thống kê
5. Ngô Trung Việt, Phân tích và thiết kế hệ thống quản lý- kinh
doanh – nghiệp vụ, nxb Giao thông Vận tải
6. Lê Tiến Vương, Nhập môn CSDL quan hệ
7. Nguyễn Bá Tường, Cơ sở dữ liệu lý thuyết và thực hành - NXB
ĐHQG
3
Chương 1. Giới thiệu tổng quan

Khái niệm và các giai đoạn tiến hóa phần mềm

Các ứng dụng của phần mềm

Khái niệm kỹ thuật phần mềm

Các lớp của kỹ thuật phần mềm

Tiến trình phần mềm

4
Khái niệm phần mềm
• Máy tính: Thực hiện các nhiệm vụ rất khác nhau bằng cách sử
dụng các phần mềm khác nhau

=> Phần mềm tạo ra sự khác biệt giữa các máy tính và cũng quyết
định năng lực của máy tính.

• Phần mềm: là một cấu phần quan trọng của một hệ thống
thông tin, nó là cách gọi khác của chương trình. Nó bao gồm
tập lệnh để từng bước hướng dẫn máy tính làm việc nhằm
chuyển đổi dữ liệu thành thông tin.

5
Sản phẩm phần mềm
• Sản phẩm chung
̶ Hệ thống độc lập được tiếp thị và bán cho bất kỳ khách hàng
nào muốn mua chúng.
̶ Ví dụ: phần mềm PC như phần mềm soạn thảo văn bản,
chương trình đồ họa, công cụ quản lý dự án; Phần mềm
CAD;
• Sản phẩm tùy chỉnh
̶ Phần mềm được ủy quyền bởi một khách hàng cụ thể để đáp
ứng nhu cầu riêng của họ.
̶ Ví dụ: hệ thống điều khiển nhúng, phần mềm kiểm soát
không lưu, hệ thống giám sát giao thông.
6
Tại sao phần mềm quan trọng?

• Nền kinh tế của TẤT CẢ các quốc gia phát triển đều phụ
thuộc vào phần mềm.
• Ngày càng có nhiều hệ thống được điều khiển bằng phần
mềm (giao thông, y tế, giáo dục, viễn thông, quân sự, công
nghiệp, giải trí,…)
• Chi tiêu cho phần mềm chiếm một phần đáng kể GNP ở tất
cả các nước phát triển.

7
Chi phí phần mềm

• Chi phí phần mềm thường chi phối chi phí của hệ thống máy
tính. Chi phí phần mềm trên PC thường lớn hơn chi phí phần
cứng.
• Phần mềm tốn nhiều chi phí để bảo trì hơn là để phát triển.
• Đối với các hệ thống có tuổi thọ cao, chi phí bảo trì có thể
gấp vài lần chi phí phát triển.
• Kỹ thuật phần mềm quan tâm đến việc phát triển phần mềm
hiệu quả về chi phí.

8
Các giai đoạn tiến hóa phần mềm

• 1950 đến 1960: những năm đầu


̶ Phần cứng thay đổi liên tục

̶ Phương thức chính là xử lý theo lô

̶ Lập trình “theo bản năng”

̶ Môi trường lập trình có tính chất cá nhân

• 1960 đến giữa những năm 1970


̶ Xuất hiện hệ thống đa nhiệm, đa người sd

̶ Hệ thống thời gian thực

̶ Xuất hiện thế hệ đầu tiên của hệ quản trị CSDL

̶ Việc bảo trì phần mềm tiêu tốn công sức và tài nguyên
9
Các giai đoạn tiến hóa phần mềm

• 1970 đến đầu những năm 1990


̶ Hệ thống phân tán
̶ Mạng toàn cục và cục bộ, liên lạc số giải thông cao
̶ Công nghệ chế tạo các bộ vi xử lý tiến bộ nhanh
̶ Thị trường phần cứng đi vào ổn định
• Thời kỳ sau 1990
̶ Kỹ nghệ hướng đối tượng
̶ Quy mô và độ phức tạp của những hệ thống phần
mềm mới cũng tăng đáng kể
̶ Ra ứng dụng thực tế Phần mềm trí tuệ nhân tạo

10
Các ứng dụng của phần mềm

• Phần mềm hệ thống

• Phần mềm thời gian thực

• Phần mềm nghiệp vụ

• Phần mềm khoa học và kỹ thuật

• Phần mềm nhúng

• Phần mềm cho máy tính cá nhân

• Phần mềm trí tuệ nhân tạo

• Phần mềm phục vụ KTPM

11
Phần mềm hệ thống

• Phục vụ chương trình khác

• Xử lý các cấu trúc thông tin phức tạp nhưng xác định

• Giao tiếp với các thiết bị phần cứng

• Sử dụng nhiều bởi các người dùng

• Giao tiếp với nhiều thiết bị ngoại vi

12
Phần mềm thời gian thực
• Là các chương trình giám sát/phân tích/điều khiển các sự
kiện trong thế giới thực ngay khi nó xảy ra.

• Bao gồm các thành tố:


̶ Thành phần thu thập dữ liệu: để thu và định dạng thông tin từ
môi trường ngoài

̶ Thành phần phân tích: để biến đổi thông tin theo yêu cầu của
ứng dụng

̶ Thành phần kiểm soát hoặc đưa ra đáp ứng môi trường ngoài

̶ Thành phần điều phối: để điều hòa các thành phần khác sao
cho có thể duy trì việc đáp ứng thời gian thực
13
Phần mềm nghiệp vụ

• Phục vụ các hoạt động kinh doanh hay các nghiệp vụ của
tổ chức, doanh nghiệp

• Là lĩnh vực ứng dụng phần mềm lớn nhất

• Là các hệ thống thông tin quản lý gắn chặt với CSDL, các
ứng dụng tương tác như xử lý giao tác cho các điểm bán
hàng.

14
Phần mềm khoa học và kỹ thuật

• Đặc trưng bởi số lượng thuật toán rất lớn

• Thường đòi hỏi phần cứng có năng lực tính toán cao

• Ứng dụng trong các lĩnh vực khoa học khác nhau

• Thiết kế có sự hỗ trợ của máy tính, các hệ thống mô


phỏng, và các ứng dụng tương tác khác bắt đầu tính đến
thời gian thực và các đặc điểm của phần mềm hệ thống

15
Phần mềm nhúng

• Trong các thiết bị thông minh

• Nằm trong bộ nhớ và được sử dụng để điều khiển thiết bị

• Thực hiện các chức năng một cách hạn chế và đóng kín

• Đặc trưng của phần mềm nhúng


̶ Nằm trong bộ nhớ chỉ đọc

̶ Có các đặc trưng của phần mềm thời gian thực và phần
mềm hệ thống

16
Phần mềm cho máy tính cá nhân

• Phát triển mạnh trong khoảng hơn 1 thập kỷ trở lại đây

• Yếu tố giao diện người-máy rất được chú trọng

• Một số ứng dụng


̶ phần mềm xử lý văn bản

̶ phần mềm xử lý bảng tính

̶ phần mềm xử lý đồ hoạ

̶ phần mềm giải trí đa phương tiện

̶ …

17
Phần mềm trí tuệ nhân tạo

• Sử dụng các thuật toán phi số để giải quyết các vấn đề phức
tạp mà tính toán hay phân tích trực tiếp không quản lý nổi

• Các ứng dụng chính: hệ chuyên gia (hay hệ thống dựa trên
tri thức, các hệ thống nhận dạng (tiếng nói và hình ảnh),
chứng minh định lý, mô phỏng và các trò chơi

18
Phần mềm phục vụ KTPM

• Ví dụ: chương trình dịch, phần mềm gỡ rối, các công


cụ hỗ trợ phân tích thiết kế (CASE)...

• Có thể xuất hiện dưới dạng phần mềm máy tính cá


nhân, phần mềm hệ thống hoặc là phần mềm nghiệp
vụ.

19
Đặc điểm của phần mềm
• Là hàng hóa vô hình

• Không hao mòn nhưng giá trị suy giảm theo thời gian

• Phần mềm vốn chứa lỗi tiềm tàng

• Lỗi phần mềm dễ được phát hiện bởi người ngoài

• Chức năng của phần mềm thường biến hóa, thay đổi theo
thời gian

• Hiệu ứng làn sóng trong thay đổi phần mềm

• Phần mềm vốn chứa ý tưởng và sáng tạo của tác giả/nhóm
làm ra nó

• Có thể sao chép rất đơn giản 20


Đặc điểm của phần mềm

Phần mềm tốt

21
Các chỉ tiêu cơ bản để đánh giá phần
mềm tốt

• Phản ánh đúng yêu cầu người dùng (tính hiệu quả)

• Chứa ít lỗi tiềm tàng

• Giá thành không vượt quá giá ước lượng ban đầu

• Dễ vận hành, sử dụng

• Tính an toàn và độ tin cậy cao

22
Đặc điểm của phần mềm

Cấu trúc phần mềm là cấu trúc phân cấp

23
Khái niệm kỹ thuật phần mềm

Kỹ thuật phần mềm (Software Engineering): Là một chuyên


ngành kỹ thuật mà quan tâm đến tất cả các khía cạnh của việc
sản xuất phần mềm, với mục tiêu sản xuất ra các sản phẩm
phần mềm đa dạng, chất lượng cao, một cách hiệu quả nhất.

24
Tầm quan trọng của kỹ thuật phần
mềm
• Ngày càng có nhiều cá nhân và xã hội dựa vào các hệ thống
phần mềm tiên tiến.

=> cần có khả năng sản xuất các hệ thống đáng tin cậy, kinh
tế và nhanh chóng.

• Về lâu dài, việc sử dụng các phương pháp và kỹ thuật công


nghệ phần mềm cho hệ thống phần mềm thường rẻ hơn là
chỉ viết chương trình như thể đó là một dự án lập trình cá
nhân.

• Đối với hầu hết các loại hệ thống, phần lớn chi phí là chi phí
thay đổi phần mềm sau khi nó được đưa vào sử dụng.
25
Thành phần của phần mềm
Phần mềm (sản phẩm phần mềm), bao gồm:
̶ Chương trình (Program): là phần được thi hành trên máy
tính

̶ Dữ liệu (Data): gồm các cấu trúc dữ liệu, cơ sở dữ liệu lưu


giữ các dữ liệu vào và ra của chương trình

̶ Tài liệu (Documentation): tài liệu hệ thống, tài liệu người


dùng

26
Các lớp của kỹ thuật phần mềm

Tools

Methods

Process Model

Quality Focus

27
Quality Focus

Đảm bảo chất lượng sản phẩm hay dịch vụ luôn là một
nhiệm vụ sống còn của các công ty hay tổ chức. Do đó,
mọi nền tảng công nghệ và kỹ thuật đều phải lấy việc đảm
bảo chất lượng là mục tiêu hướng tới, và kỹ thuật phần
mềm cũng không thể nằm ngoài mục tiêu này

28
Process Model

Lớp mô hình tiến trình có nhiệm vụ định nghĩa một khung


các giai đoạn và các hoạt động cần thực hiện, cũng như
các kết quả kèm theo chúng. Tầng này đóng vai trò nền
tảng để kết nối các phương pháp, công cụ trong các bước
thực hiện cụ thể, để có thể tạo ra các phần mềm có chất
lượng và đúng thời hạn

29
Methods

Chỉ ra cách làm về mặt kỹ thuật để xây dựng phần


mềm, được sử dụng trong các bước: lập kế hoạch, ước
lượng dự án, phân tích yêu cầu hệ thống và phần mềm,
thiết kế cấu trúc dữ liệu, kiến trúc chương trình và thủ
tục thuật toán, mã hóa kiểm thử và bảo trì

30
Tools

• Cung cấp sự hỗ trợ tự động hay bán tự động để phát


triển phần mềm theo từng phương pháp khác nhau

• Các hệ thống phần mềm hỗ trợ trong công nghệ phần


mềm được gọi là CASE (computer-aided software
engineering)

31
Tiến trình phần mềm

• Là một dãy các giai đoạn và các hoạt động trong đó,
cũng như các kết quả kèm theo. Kết quả cuối cùng chính
là phần mềm cần phải xây dựng, đáp ứng được các yêu
cầu của người dùng, và hoàn thành theo đúng kế hoạch
về thời gian và ngân sách

• Có ba giai đoạn chính trong tiến trình phần mềm:


̶ Giai đoạn định nghĩa (definition phase)

̶ Giai đoạn phát triển (development phase)

̶ Giai đoạn hỗ trợ (support phase)

32
Tiến trình phần mềm

Lập kế hoạch dự án

Giai đoạn Thu thập các yêu cầu

định nghĩa Phân tích

Thiết kế
Giai đoạn
Phát triển Cài đặt và kiểm thử

Giai đoạn
Hỗ trợ Bảo trì

33
Tiến trình phần mềm

Giai đoạn định nghĩa: tập trung vào làm rõ Cái gì, bao
gồm
̶ Thông tin gì cần xử lý, bao gồm thông tin đầu vào và đầu
ra.

̶ Các chức năng gì cần thực hiện.

̶ Hành vi nào của hệ thống sẽ được mong đợi.

̶ Các tiêu chuẩn hợp lệ nào để đánh giá được sự đúng đắn
và thành công của hệ thống.

34
Tiến trình phần mềm

Giai đoạn phát triển: tập trung vào Làm thế nào, bao
gồm
̶ Kiến trúc hệ thống (system architecture) được tổ chức thế
nào.

̶ Các chức năng được cài đặt và liên kết với nhau thế nào.

̶ Tổ chức các cấu trúc dữ liệu, cơ sở dữ liệu thế nào.

̶ Chuyển từ thiết kế sang cài đặt thế nào?

̶ Việc kiểm thử sẽ được thực hiện thế nào?

35
Tiến trình phần mềm

Giai đoạn hỗ trợ: còn gọi là giai đoạn bảo trì, tập trung
vào việc ứng phó với các thay đổi của hệ thống phần mềm,
bao gồm
̶ Sửa lỗi (Correction)

̶ Làm thích ứng (Adaptation)

̶ Nâng cấp (Upgrade)

̶ Phòng ngừa, còn gọi là tái kỹ thuật phần mềm (software


reengineering)

36
Mô hình tiến trình phần mềm

• Mô hình tiến trình (process model) Là một chiến lược


phát triển phần mềm , bao gồm các cách thức kết hợp,
sử dụng tiến trình phần mềm, cách vận dụng các phương
pháp và các công cụ trong mỗi giai đoạn phát triển.

• Mô hình tiến trình cũng còn được gọi là mẫu tiến trình
(process paradigm), hay mô hình phát triển phần mềm.

37
Các mô hình tiến trình

• Mô hình tuyến tính cổ điển (mô hình thác nước –


Waterfall model)

• Mô hình bản mẫu (Prototyping model)

• Mô hình RAD (Rapid Application Development model)

• Mô hình tăng trưởng (Incremental model)

• Mô hình xoáy ốc (Spiral model)

38
Mô hình tuyến tính cổ điển

Lập kế hoạch

Phân tích

Thiết kế

Triển khai

Kiểm thử

Hệ thống

39
Mô hình tuyến tính cổ điển

Một số đặc điểm:


̶ Các bước được tiến hành tuần tự, kết thúc bước trước thì
mới thực hiện đến bước sau

̶ Thời gian thực hiện mỗi bước thường kéo dài do phải làm
thật hoàn chỉnh

̶ Thường chỉ tiếp xúc với người dùng vào giai đoạn đầu và
giai đoạn cuối. Người dùng thường không tham gia vào
các bước ở giữa, như từ thiết kế, cài đặt và đến tích hợp

40
Mô hình tuyến tính cổ điển
• Ưu điểm:
̶ Đơn giản và rõ ràng
̶ Đóng vai trò như một mẫu tham chiếu cho các mô hình khác
̶ Vẫn còn được sử dụng rộng rãi cho đến nay
• Nhược điểm:
̶ Không dễ dàng cho việc thu thập đầy đủ và tường minh tất cả các yêu
cầu hệ thống ngay từ ban đầu
̶ Người dùng phải chờ đến cuối cùng mới có được hệ thống để dùng, nên
thời gian chờ đợi là khá lâu, có khi đến hàng năm. Khi đó có thể có các
yêu cầu mới đã phát sinh, dễ dẫn khả năng hệ thống không còn đáp
ứng được kỳ vọng của người dùng.
̶ Dễ dẫn đến tình trạng “blocking states”, tức là khi có một nhóm bị chậm
tiến độ, thì các nhóm khác phải chờ, và thời gian chờ đợi thậm chí vượt
quá thời gian làm việc.
41
Mô hình phát triển song song
Lập kế hoạch

Thiết kế
Phân tích

Triển khai
Thiết kế

Thiết kế Kiểm thử

Triển khai Phân hệ 3

Thiết kế Kiểm thử

Phân hệ 2
Triển khai Tích hợp
hệ thống

Kiểm thử

Phân hệ 1
Hệ thống 42
Mô hình phát triển song song

• Cải tiến vấn đề thời gian từ pha phân tích đến khi sản
phẩm được hoàn thiện và chuyển giao cho người dùng.

• Tiến hành phân tích và thiết kế sơ bộ tổng thể hệ thống


và chia thành các hệ thống con gọi là các phân hệ.

• Mỗi hệ thống con sẽ đồng thời được thiết kế, xây dựng và
kiểm thử riêng.

• Sau khi tất cả hệ thống con hoàn thành sẽ có một công


đoạn tích hợp hệ thống để tạo thành hệ thống hoàn
chỉnh
43
Mô hình phát triển song song
• Ưu điểm
̶ Thời gian xây dựng hệ thống giảm đi đáng kể

̶ Người dùng nhanh nhận được hệ thống của mình hơn, giảm được
rủi ro phải làm lại từ đầu hay hủy bỏ dự án do yêu cầu nghiệp vụ
thay đổi khi hệ thống đang được xây dựng

• Nhược điểm
̶ Gặp vấn đề khi phải quay lại các pha trước

̶ Khối tài liệu được tạo ra rất nhiều

̶ Có thể gặp vấn đề tích hợp hệ thống

44
Mô hình phát triển theo giai đoạn
Lập kế hoạch
Phân tích

Phân tích
Thiết kế

Triển khai

Phân tích
Kiểm thử

Thiết kế

Hệ thống
(Phiên bản 1)
Triển khai

Phân tích

Kiểm thử

Thiết kế

Hệ thống
Triển khai (Phiên bản 2)

Kiểm thử

Hệ thống
(Phiên bản 3) 45
Mô hình phát triển theo giai đoạn

• Chia hệ thống thành các phiên bản khác nhau, xây dựng lần lượt
từng phiên bản.
• Giai đoạn phân tích:
– Xác định tất cả khái niệm về hệ thống mới
– Phân loại yêu cầu cho các giai đoạn phát triển khác nhau.
– Các yêu cầu quan trọng nhất được liệt kê và đưa vào phiên bản đầu
tiên.
• Phiên bản 1 sẽ được phân tích, thiết kế, triển khai và kiểm thử như
một hệ thống hoàn chỉnh.
• Kết thúc phiên bản 1, hệ thống được triển khai cho khách hàng
• Tiến hành đồng thời công việc phân tích, thiết kế, triển khai và
kiểm thử cho các chức năng cần bổ sung thêm cho phiên bản 1 để
thu được phiên bản 2. Quá trình này sẽ tiếp tục tương tự cho các
phiên bản tiếp theo cho đến khi thu được một hệ thống hoàn chỉnh
hoặc không thể sử dụng được nữa. 46
Mô hình phát triển theo giai đoạn
• Ưu điểm
̶ Nhanh chóng có được phiên bản của hệ thống để triển khai cho
khách hàng ngay cả khi hệ thống vẫn còn được xây dựng.
̶ Trong quá trình triển khai các phiên bản trước, nếu phát sinh lỗi
hoặc nghiệp vụ thay đổi cũng sẽ lập tức được cập nhật trong các
phiên bản tiếp theo.
• Nhược điểm
̶ Giai đoạn đầu người dùng sử dụng hệ thống là một sản phẩm
chưa hoàn thiện.
̶ Cần phải xác định được đâu là yêu cầu cần thiết nhất để đưa
ngay vào giai đoạn đầu tiên.
̶ Trong trường hợp mọi yêu cầu đều phải xây dựng xong thì mới có
thể triển khai được thì phương pháp này kém hiệu quả. 47
Mô hình bản mẫu

Thông thường trong thực tế, các yêu cầu của hệ thống khó có
thể xác định rõ ràng và chi tiết ngay trong giai đoạn đầu của dự
án phần mềm:
̶ Người dùng cũng chỉ đưa ra các mục tiêu tổng quát của phần
mềm, chứ chưa định rõ được một cách chi tiết các chức năng cụ
thể, hay các thông tin chi tiết đầu vào, đầu ra như thế nào.
̶ Nhà phát triển cũng chưa xác định rõ ràng ngay các yêu cầu,
cũng như chắc chắn về chất lượng phần mềm, khả năng thỏa
mãn của khách hàng
 mô hình bản mẫu

48
Mô hình bản mẫu

49
Mô hình bản mẫu
Gồm các giai đoạn:
̶ Thu thập các yêu cầu (requirements gathering): khách hàng và nhà
phát triển sẽ gặp nhau để xác định ra các mục tiêu tổng thể của phần
mềm. Sau đó họ sẽ định ra phần nào đã rõ, phần nào cần phải định
nghĩa thêm.
̶ Thiết kế nhanh (quick design): thiết kế này tập trung vào những phần
mà khách hàng có thể nhìn thấy được (giao diện, các dữ liệu vào, ra).
Sau đó, từ thiết kế này, một bản mẫu sẽ được xây dựng.
̶ Kiểm tra và đánh giá bản mẫu: Bản mẫu này sẽ được dùng để cho
phép người dùng đánh giá, nhằm làm rõ hơn các yêu cầu của họ.
Đồng thời, thông qua bản mẫu, người phát triển hệ thống cũng hình
dung cụ thể hơn về những yêu cầu của khách hàng, cũng như khả
năng cài đặt và hiệu quả hoạt động của hệ thống.
50
Mô hình bản mẫu
• Ưu điểm:
̶ Cho phép người dùng xác định yêu cầu của mình rõ ràng và cụ thể
hơn, đồng thời nhà phát triển cũng nắm được chính xác hơn các yêu
cầu đó.
̶ Cả người dùng và nhà phát triển thường đều thích mô hình này, do
người dùng luôn cảm nhận được hệ thống thực sẽ như thế nào, và nhà
phát triển cũng luôn có cái để xây dựng và dần hoàn thiện.
• Nhược điểm:
̶ Để có được bản mẫu nhanh, việc thiết kế cũng được làm nhanh, nên
thường được làm không cẩn thận. Điều này dễ dẫn đến các thiết kế có
tính chắp vá, không có cái nhìn tổng thể và dài hạn.
̶ Việc làm bản mẫu nhanh cũng thường kéo theo việc lựa chọn các công
cụ cài đặt vội vàng, không cẩn thận, (như ngôn ngữ lập trình, hệ quản
trị cơ sở dữ liệu,v.v). Điều này sẽ ảnh hưởng đến các giai đoạn phát
triển sau khi quy mô và yêu cầu của hệ thống ngày càng lớn lên
51
Mô hình xoáy ốc

• Cũng là một mô hình tiến hóa kết hợp đặc tính lặp lại của
mô hình bản mẫu và tính hệ thống của mô hình thác
nước cổ điển

• Mô hình này cũng cho phép tạo ra một dãy các phiên bản
tăng trưởng (incremental release). Tuy nhiên khác với mô
hình tăng trưởng, các phiên bản đầu tiên của mô hình
xoáy ốc thường chỉ là các mô hình trên giấy hoặc bản
mẫu (prototype). Đến các phiên bản sau thì mới là các
bản chạy được và càng ngày càng hoàn chỉnh.
52
Mô hình xoáy ốc

53
Mô hình xoáy ốc

• Mô hình này phân chia thành các giai đoạn, được gọi là
các vùng nhiệm vụ (task regions).

• Số lượng vùng nhiệm vụ có thể thay đổi, và thường có từ


3 cho đến 6 vùng.

• Mỗi vùng lại bao gồm một tập các nhiệm vụ (set of
tasks), và số lượng cũng thay đổi tùy theo tính chất của
dự án.

54
Mô hình xoáy ốc

• Ưu điểm:
̶ Linh hoạt, dễ thích ứng với các loại phần mềm và các nhu cầu
sử dụng khác nhau, nhất là các phần mềm quy mô lớn

̶ Có khá đầy đủ các bước trong tiến trình phát triển, nhất là việc
chú trọng phân tích tính rủi ro (risk) của phần mềm cả về mặt
kỹ thuật và quản lý

• Hạn chế:
̶ Phức tạp, cần khá nhiều thời gian để hiểu và vận dụng được một
cách hiệu quả

̶ Khó khăn trong việc quản lý nhiều chu trình phát triển

55
VIỆN ĐIỆN TỬ - VIỄN THÔNG
School of Electronics and telecommunications

KỸ THUẬT PHẦN MỀM ỨNG DỤNG


Chương 2
Các pha trong phát triển phần mềm
Phần 1
Khảo sát hiện trạng và xác lập dự án

1
Khảo sát hiện trạng và xác lập dự án

Mục đích:
̶ Tìm được sự mô tả hệ thống bằng văn bản, đề xuất ra phương
án thực hiện, cuối cùng là ký được một hợp đồng và hình thành
1 dự án mang tính khả thi.
̶ Thường gồm 2 giai đoạn:
o Khảo sát sơ bộ nhằm xác định tính khả thi của dự án
o Khảo sát chi tiết nhằm xác định chính xác những gì sẽ thực hiện
và khẳng định những lợi ích kèm theo

2
Khảo sát hiện trạng và xác lập dự án

Các bước tiến hành:

3
Khảo sát hiện trạng và xác lập dự án

Nội dung khảo sát và đánh giá hiện trạng:


̶ Tìm hiểu môi trường XH, kinh tế, kỹ thuật của hệ thống, nghiên
cứu cơ cấu tổ chức của cơ quan đó
̶ Nghiên cứu chức trách, nhiệm vụ, các trung tâm ra quyết định
và điều hành, sự phân cấp các quyền hạn
̶ Thu thập, nghiên cứu các hồ sơ, sổ sách, các tệp cùng với các
phương thức xử lý thông tin trong đó
̶ Thu thập và nghiên cứu các qui tắc quản lý, các qui định, các
công thức làm căn cứ cho quá trình xử lý thông tin
̶ Thu thập các chứng từ giao dịch và mô tả các chu trình lưu
chuyển và xử lý 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 các đòi hỏi về thông tin, các ý kiến, dự đoán, nguyện
vọng trong tương lai
̶ Đánh giá phê phán hiện trạng, đề ra hướng giải quyết
4
Khảo sát hiện trạng và xác lập dự án
Việc khảo sát thường được tiến hành trên 4 đối tượng:
̶ Thao tác thừa hành: những người trực tiếp với những thao tác
của hệ thống ; họ có kỹ năng, nghiệp vụ cao, nhận biết được
những khó khăn, phức tạp và nhiều vấn đề chuyên sâu trong
công việc.
̶ Điều phối quản lý: những người quản lý trực tiếp về một mảng
công việc nào đó, chẳng hạn quản đốc phân xưởng ; họ hiểu
được tình hình cơ quan ở thời điểm hiện tại nhưng không có
khả năng nhìn nhận được các vấn đề xảy ra trong tương lai
̶ Lãnh đạo: những người ra quyết định nên họ có yêu cầu về các
thông tin trợ giúp
̶ Chuyên gia cố vấn : những người nhận thức được sự phát triển
và vận động của hệ thống trong những môi trường

5
Khảo sát hiện trạng và xác lập dự án
• Phát hiện những yếu kém của hiện trạng
̶ Hệ thống thiếu cái gì, (chức năng, phương tiện, nhân lực)
̶ Kém hiệu quả, hiệu suất công việc thấp
̶ Phương pháp xử lý không chặt chẽ, di chuyển thông tin vòng
vèo
̶ Cơ cấu tổ chức bất hợp lý
̶ Giấy tờ, tài liệu trình bày kém gây ùn tắc làm cho hệ thống
quá tải, gây tổn phí về vật tư, thiết bị, con người
• Các yêu cầu nảy sinh
̶ Khắc phục những yếu kém trên
̶ Những yêu cầu về thông tin chưa được đáp ứng
̶ Những nguyện vọng của nhân viên
̶ Các dự kiến và các kế hoạch phát triển về quy mô của đơn vị
6
Xác định phạm vi, khả năng và mục tiêu
của dự án

• Xác định phạm vi (khoanh vùng dự án)


̶ Chỉ rõ hệ thống mới tiến hành trong phạm vi nào?
o Trong toàn bộ cơ quan
o Trong từng bộ phận

• Khả năng và hạn chế thực hiện dự án


̶ Về mặt tài chính: Kinh phí cho phép triển khai.
̶ Về con người: Khả năng quản lý, nắm bắt kỹ thuật mới, khả
năng về đào tạo, tiếp nhận công nghệ mới
̶ Về trang thiết bị kỹ thuật cho phép
̶ Về mặt thời gian: Các ràng buộc của hệ thống về thời gian hoàn
thành.
̶ Về môi trường: Các yếu tố ảnh hưởng về môi trường, xã hội.

7
Xác định phạm vi, khả năng và mục tiêu
của dự án

Mục tiêu của dự án:


̶ Khắc phục yếu kém hệ thống cũ
̶ Đáp ứng được yêu cầu trong tương lai
̶ Mang lại lợi ích kinh tế
̶ Thoả mãn được hạn chế về chi phí và con người
̶ Thể hiện được chiến lược phát triển lâu dài

8
Phân tích tính khả thi

• Khả thi về mặt kỹ thuật:


̶ Trả lời câu hỏi “Chúng ta có thể xây dựng được hệ thống
này không?”.
̶ Lý do cản trở việc xây dựng thành công hệ thống?
o Sự hiểu biết của người dùng và của người phân tích với ứng dụng
o Hiểu không rõ về công nghệ
o Dự án có quy mô càng lớn thì càng có nhiều rủi ro
o Sự tương thích của dự án với công nghệ hiện có của tổ chức

9
Phân tích tính khả thi

• Khả thi về kinh tế


̶ Trả lời câu hỏi “Chúng ta có nên xây dựng hệ thống này
không?”
̶ Xác định loại chi phí và lợi nhuận
̶ Xác định giá trị chi phí và lợi nhuận

10
Phân tích tính khả thi

• Khả thi về mặt tổ chức


̶ Trả lời câu hỏi: “Nếu chúng ta xây dựng hệ thống, nó có
được triển khai hay không, ai sẽ là người dùng,…”
̶ Cách đánh giá:
o Các mục tiêu của dự án có phù hợp với mục tiêu của nghiệp vụ hay
không
o Tiến hành phân tích các bên liên quan

11
Quản trị dự án

• Xác định quy mô dự án

• Xây dựng và quản lý kế hoạch công việc

• Phân công công việc

• Điều phối các hoạt động của dự án

12
VIỆN ĐIỆN TỬ - VIỄN THÔNG
School of Electronics and telecommunications

KỸ THUẬT PHẦN MỀM ỨNG DỤNG


Chương 2
Các pha trong phát triển phần mềm
Phần 2
Tìm hiểu yêu cầu

1
Tìm hiểu yêu cầu
• Mục đích:
̶ Tìm hiểu xem phải phát triển cái gì, chứ không phải là
phát triển như thế nào.
̶ Kết quả của bước nghiên cứu yêu cầu là tạo ra đặc tả yêu
cầu của phần mềm - là tài liệu ràng buộc giữa khách hàng
và người phát triển.

• Tại sao phải tìm hiểu yêu cầu?

– Khách hàng chỉ có những ý tưởng còn mơ hồ về phần


mềm cần phải xây dựng

– Khách hàng rất hay thay đổi các yêu cầu của mình

2
Tìm hiểu yêu cầu

• Các yêu cầu về phần mềm (Software)

• Các yêu cầu về phần cứng (Hardware)

• Các yêu cầu về dữ liệu (Data)

• Các yêu cầu về con người (People, Users)

3
Tìm hiểu yêu cầu

• Khái niệm:
̶ là một bản kê chỉ ra hệ thống phải làm gì hay hệ thống
phải có những đặc tính gì.
̶ thường tập trung vào nhu cầu của nghiệp vụ nên thường
được gọi là yêu cầu nghiệp vụ
̶ ở bước thiết kế, các yêu cầu nghiệp vụ mở rộng theo
hướng kỹ thuật và chúng mô tả hệ thống sẽ được xây
dựng như thế nào
̶ Yêu cầu trong giai đoạn thiết kế thường được đưa ra bởi
người phát triển và thường được gọi là yêu cầu hệ thống

4
Tìm hiểu yêu cầu

• Gồm 2 loại:
̶ Yêu cầu về mặt chức năng
o Chỉ ra các chức năng mà hệ thống cần có.
o Ví dụ:
 Hệ thống phải có khả năng tìm kiếm hàng hóa trong
kho
 Lập báo cáo chi phí thực tế và chi phí phát sinh
̶ Yêu cầu phi chức năng
o Hoạt động, hiệu năng, tính bảo mật, và khía cạnh văn
hóa, chính trị
o Thường được sử dụng trong giai đoạn thiết kế

5
Tìm hiểu yêu cầu
Yêu cầu phi Mô tả Ví dụ
chức năng
Hoạt động Môi trường vật lý và kỹ thuật để Hệ thống được triển khai trên mạng Internet.
triển khai hệ thống Người dùng sử dụng các trình duyệt web để sử dụng các dịch
vụ
Phải có khả năng kết nối dữ liệu với các hệ thống quản lý kế
toán
Hiệu năng Tốc độ, dung lượng và độ tin Hệ thống phải hoạt động tin cậy 24h/ngày x365 ngày/năm.
cậy Kết quả trả về cho khách hàng không quá 1 phút sau khi khách
hàng yêu cầu.
Tại một thời điểm phải có khả năng phục vụ tối đa 1000 khách
hàng.

Bảo mật Ai có thể truy cập vào hệ thống Khách hàng có thể xem, tìm kiếm sản phẩm và đặt hàng
Chỉ có cán bộ kho mới có thể nhập dữ liệu về hàng hóa
Chỉ có người quản lý mới có thể duyệt đơn hàng của khách
hàng.

Văn hóa & chính Các yếu tố về văn hóa, chính trị, Phải hỗ trợ xử lý cả 2 loại tiền tệ là USD và VNĐ
trị luật pháp ảnh hưởng đến hệ Ngôn ngữ sử dụng là tiếng Việt
thống Không được vi phạm bản quyền của các hệ thống tương tự
khác.

Ví dụ một số yêu cầu phi chức năng 6


Kỹ thuật tìm hiểu yêu cầu

• Phỏng vấn

• Phiên làm việc JAD (Join Application Development)

• Bản câu hỏi sẵn

• Quan sát

• Phân tích tài liệu

7
Phỏng vấn

– Là phương pháp được sử dụng nhiều nhất trong thực tế

– Các bước thực hiện


– Lựa chọn người được phỏng vấn
– Thiết kế/chuẩn bị các câu hỏi
o Câu hỏi đóng
o Câu hỏi mở
o Câu hỏi thăm dò
– Chuẩn bị cho cuộc phỏng vấn
– Tiến hành phỏng vấn
– Thực hiện các công việc tiếp theo sau phỏng vấn

8
Ví dụ câu hỏi phỏng vấn

Loại câu hỏi Ví dụ

Câu hỏi đóng Trung bình có bao nhiêu cuộc gọi điện để đặt hàng/ngày?
Thông tin gì còn thiếu trên báo cáo doanh thu hàng tháng?

Câu hỏi mở Ông/bà nghĩ gì về hệ thống hiện tại?


Ông/bà mong muốn hệ thống mới sẽ được cải tiến ra sao?

Câu hỏi thăm dò Tại sao?


Ông/bà có thể đưa ra ví dụ được không?

Ví dụ về 3 loại câu hỏi

9
Phiên làm việc JAD (Join Application
Development)

• Được IBM đề xuất và bắt đầu sử dụng từ những năm cuối


của thập kỷ 1970s
• Là phương pháp tổ chức một phiên làm việc gồm một số
người sử dụng, người quản lý, nhóm dự án cùng làm việc để
đưa ra yêu cầu của hệ thống
• Là cách hiệu quả nhất để thu thập yêu cầu người sử dụng
• Giảm đến 50% vấn đề không thể kiểm soát được sự thay đổi
• Tránh được các yêu cầu đưa ra quá chi tiết hoặc quá mơ hồ
• Là cách tổ chức hiệu quả khi sử dụng các công cụ (phần
mềm) để tổ chức các buổi làm việc JAD trên mạng (e-JAD)
• Sử dụng e-JAD có thể giảm thời gian so với các buổi làm việc
JAD truyền thống từ 50%-80% 10
Bản câu hỏi sẵn

• Là một bản câu hỏi đã được chuẩn bị và in sẵn rồi gửi


đến cho từng người trả lời

• Thường được sử dụng khi:


̶ người hỏi và người trả lời không thể trực tiếp gặp nhau
̶ hoặc khi số lượng người được hỏi quá nhiều

• Được thực hiện bằng giấy tờ hoặc thông qua các


phương tiện CNTT như là Web, email, file đính, SMS

• Phải đảm bảo nội dung câu hỏi sao cho người được hỏi
không thể hiểu sai vấn đề cần trả lời

11
Quan sát

• Là cách quan sát các quy trình nghiệp vụ đang được thực
hiện trong thực tế

• Là cách tốt nhất để thu thập thông tin về hệ thống hiện tại

• Cần chú ý không làm ảnh hưởng đến những người đang
làm việc

• Chỉ nên dùng khi cần hiểu rõ hoặc bổ sung thêm thông tin
cho kết quả của các cách trên

12
Phân tích tài liệu

• Được gọi là cách quan sát không chính thức

• Cung cấp các thông tin cần xử lý cho người phân tích
thông qua các tài liệu

• Các tài liệu có thể nghiên cứu chính


̶ Các mẫu biểu
̶ Mẫu báo cáo
̶ Các văn bản liên quan đến công việc hiện tại của tổ chức

13
VIỆN ĐIỆN TỬ - VIỄN THÔNG
School of Electronics and telecommunications

KỸ THUẬT PHẦN MỀM ỨNG DỤNG


Chương 2
Các pha trong phát triển phần mềm
Phần 3
Phân tích hệ thống - Phân tích chức năng

1
Phân tích hệ thống
• Phân tích toàn bộ các yêu cầu đã xác định ở bước
nghiên cứu yêu cầu.

• “Số hoá" từng yêu cầu đó thành ngôn ngữ mà người


thiết kế, lập trình có thể hiểu được

• Công cụ “Số hóa”:


̶ Các biểu đồ xác định luồng dữ liệu
̶ Biểu đồ mô tả các đối tượng cũng như chức năng tổng
quát của hệ thống.

2
Công cụ phân tích theo cấu trúc

• Sơ đồ chức năng.

• Sơ đồ luồng dữ liệu.

• Từ điển dữ liệu.

• Chỉ định quá trình.

3
Sơ đồ chức năng

• Thể hiện:
̶ một cách nhìn khái quát, dễ hiểu, từ đại thể đến chi tiết
về các chức năng, nhiệm vụ cần thực hiện
̶ quá trình triển khai sơ đồ luồng dữ liệu
̶ quyết định tần suất xuất hiện của các tiến trình nhỏ hơn
trong sơ đồ luồng dữ liệu

• Sơ đồ chức năng chỉ cho ta biết cần làm gì (What) chứ


không cho ta biết cần làm như thế nào (How).

4
Ví dụ về sơ đồ chức năng
Hệ thống quản lý nhà xe/công ty xe hợp đồng du lịch

1. Quản lý 2. Quản lý 3. Quản lý 4. Quản lý 5. Quản lý 6. Quản lý 7. Quản lý 8. Quản lý 9. Báo cáo,
nhân viên tài xế xe hợp đồng hợp đồng điều xe thu chi lương thống kê

1.1. Nhập 2.1. Nhập 4.1. Nhập 6.1. Nhập tt 7.1. Nhập 9.1. Báo cáo
3.1. Nhập 5.1. Cập nhật 8.1. Lập bảng
thông tin thông tin thông tin phiếu thu phiếu chi h/ doanh thu,
thông tin xe lịch chạy xe lương
nhân viên tài xế hợp đồng hợp đồng đồng lợi nhuận

1.2. Cập nhật 4.2. Thanh 7.2. Nhập 9.2. Báo cáo
2.2. Nhập 3.2. Nhập 5.2. Cập nhật 8.2. Cập nhật
thông tin toán hợp 6.3 thống kê phiếu chi lợi nhuận
lịch làm việc lịch chạy xe lịch tài xế lương
nhân viên đồng mua xe mới theo đầu xe

1.3. Tìm 2.3. Cập nhật 3.3. Nhập tt 6.3. Nhập 7.3. Nhập 9.3. Báo cáo
4.3. Thống
kiếm thông thông tin bảo hành sửa phiếu thu xe phiếu thu sửa nhân viên, tài
kê hợp đồng
tin nhân viên tài xế chữa khác chữa, xăng dầu xế nghỉ việc

7.4. Nhập
2.4. Tìm 3.4. Tìm 6.4. Tìm 9.4. Báo cáo
phiếu chi
kiếm kiếm kiếm chi tiêu
khác

7.5. Thống
kê chi

7.6. Tìm
kiếm

5
Sơ đồ luồng dữ liệu (DFD)
• Mô tả dòng thông tin trong hệ thống
• hỗ trợ bốn hoạt động chính:
̶ Phân tích
̶ Thiết kế
̶ Truyền thông
̶ Sưu liệu
• Thể hiện
̶ Hệ thống cần thực hiện các chức năng nào?
̶ Sự liên quan giữa các chức năng?
̶ Hệ thống cần truyền đi cái gì?
̶ Các đầu vào nào cần truyền tới các đầu ra nào?
̶ Hệ thống cần thực hiện dạng công việc nào?
̶ Hệ thống nhận thông tin để làm việc từ đâu?
̶ Hệ thống gửi kết quả công việc đến đâu? 6
Yêu cầu của sơ đồ luồng dữ liệu

• Thể hiện được tất cả các chức năng của hệ thống

• Thật đơn giản để cả người sử dụng và người phân tích hệ


thống đều có thể hiểu được

• Toàn bộ sơ đồ được trình bày cân đối trên một trang (đối
với hệ thống nhỏ)

• Các chức năng hệ thống của cùng một mức cần được trình
bày trên một trang (đối với hệ thống lớn)

• Nên dùng công cụ máy tính để trình bày sơ đồ

7
Các ký pháp trong sơ đồ luồng dữ liệu

Quá trình (tiến trình)

Thể hiện luồng dữ liệu

Kho dữ liệu

Vào ra dữ liệu và tương tác giữa hệ thống và


người sử dụng (Tác nhân)

8
Các ký pháp trong sơ đồ luồng dữ liệu

• Quá trình(tiến trình):


̶ Chỉ ra một phần của hệ thống chuyển đầu vào thành đầu ra.
̶ Tên quá trình mô tả quá trình làm gì, thông thường tên quá
trình được đặt dưới dạng động từ thể hiện bản chất xử lý
thông tin.

• Dòng (luồng dữ liệu)


̶ Mô tả sự chuyển động của thông tin từ một phần này của hệ
thống tới phần khác của hệ thống
̶ Tên quá trình được đặt dưới dạng danh từ đại diện cho dòng
thông tin di chuyển.

9
Các ký pháp trong sơ đồ luồng dữ liệu

• Kho:
̶ Kho sử dụng để mô hình hoá một tập hợp dữ liệu ở trạng thái
tĩnh.
̶ Tên kho thể hiện kho là tập hợp nhiều gói dữ liệu được dòng
đưa đến kho hoặc từ kho ra. Tên kho thường được đặt là danh
từ thể hiện thông tin gì được lưu trữ trong kho.
• Nhân tố ngoài:
̶ Nhân tố ngoài (còn gọi là thực thể ngoài) có thể là người, là
nhóm người hoặc một tổ chức không thuộc lĩnh vực nghiên cứu
của hệ thống (chúng có thể ở trong hoặc ở ngoài hệ thống)
nhưng có một sự liên hệ nhất định nào đó với hệ thống
̶ Chỉ ra giới hạn của hệ thống và nhận diện mối quan hệ của hệ
thống với thế giới bên ngoài
̶ Tên nhân tố ngoài thường chỉ người hoặc nhóm người của tổ
chức (phòng, ban,…) hoặc tên của hệ thống khác có trao đổi
thông tin với hệ thống đang xét. 10
Các mức của sơ đồ luồng dữ liệu

• Mức ngữ cảnh

• Mức đỉnh

• Mức tiếp theo (1.x,…)

11
Các mức của sơ đồ luồng dữ liệu
• Mức ngữ cảnh (Context diagram): Sơ đồ luồng dữ liệu mức
ngữ cảnh chỉ chứa đúng 1 tiến trình (gọi là tiến trình 0) tổng
quát hoá toàn bộ chức năng của hệ thống trong mối quan hệ
với các thực thể ngoài
• Mức đỉnh (Top level diagram): Sơ đồ luồng dữ liệu mức đỉnh
là sơ đồ dòng dữ liệu cho ta cái nhìn chi tiết hơn về hệ thống
thông tin so với sơ đồ mức ngữ cảnh
• Mức dưới đỉnh (Lower level diagram): Sơ đồ mức dưới đỉnh
phân rã sơ đồ luồng dữ liệu mức đỉnh một cách chi tiết hơn.
Sau đó lại tiếp tục phân rã các sơ đồ luồng dữ liệu mức dưới
đỉnh vừa nhận được thành các mức thấp hơn. Quá trình
phân rã sẽ dừng lại khi ta nhận được các chức năng cơ bản
(functional primitive) trên sơ đồ 12
Kỹ thuật chia mức

13
Ví dụ về các mức DFD

14
Một số chỉ dẫn xây dựng mô hình DFD

• Chọn các tên có ý nghĩa cho các quá trình, dòng, kho và
nơi kết thúc (thực thể ngoài /trong).

• Đánh số các quá trình.

• Vẽ lại DFD nhiều lần.

• Tránh các DFD quá phức tạp.

• Đảm bảo các DFD chính xác khi đứng độc lập và chính
xác cả khi kết hợp với bất kỳ DFD nào.

15
Một số qui định khi xây dựng sơ đồ luồng dữ
liệu

• Mỗi sơ đồ phải được thể hiện trong phạm vi một trang.

• Tên quá trình trong mỗi sơ đồ ngữ cảnh phải là tên của hệ
thống thông tin.

• Sử dụng tên duy nhất cho mỗi tập ký hiệu.

• Hạn chế tối đa các đường cắt nhau.

• Sử dụng các tên viết tắt khi có dùng từ điển dữ liệu được
máy tính hoá

• Sử dụng số tham chiếu duy nhất cho mỗi ký hiệu quá trình
thay vì chữ viết tắt cho các ký hiệu DFD khác.

• Mọi luồng dữ liệu phải bắt đầu hoặc kết thúc tại một tiến 16
Ví dụ về sơ đồ luồng dữ liệu

17
Các phương tiện để đặc tả chức năng

• Đặc tả chức năng (P-Spec)

• Các bảng quyết định và cây quyết định

• Các sơ đồ khối

• Các ngôn ngữ có cấu trúc

18
Đặc tả chức năng (P-SPec)

• Một đặc tả chức năng thường được trình bày một cách ngắn
gọn, không vượt quá một trang A4, và gồm hai phần:
̶ Phần đầu đề gồm:
• Tên chức năng;
• Các dữ liệu vào;
• Các dữ liệu ra.
̶ Phần thân mô tả nội dung xử lý, ở đó thường sử dụng các
phương tiện mô tả sau đây (liệt kê theo trật tự ưu tiên giảm
dần):
• Các phương trình toán học.
• Các bảng quyết định hay cây quyết định.
• Các sơ đồ khối.
• Các ngôn ngữ tự nhiên cấu trúc hóa.
• (Không nên sử dụng ngôn ngữ tự do).
19
Ví dụ về P-Spec

20
Bảng quyết định và cây quyết định

21
Bảng quyết định và cây quyết định

22
Sơ đồ khối

23
Ngôn ngữ có cấu trúc

Lặp Lấy một thí sinh từ kho các thí sinh


Tra cứu điểm của thí sinh
Nếu Điểm thí sinh ≥ Điểm chuẩn
Thì DS đỗ  thí sinh
Không thì DSrớt  thí sinh
Đến khi Hết thí sinh

24
Từ điển dữ liệu

• Là một danh sách có tổ chức của tất cả các phần tử dữ


liệu thuộc về hệ thống cùng các định nghĩa chính xác,
đầy đủ sao cho cả người sử dụng và người phân tích hệ
thống cùng có chung cách hiểu về tất cả các đầu vào,
đầu ra, các thành phần lưu trữ, các tính toán trung gian.

25
Từ điển dữ liệu

• Từ điển dữ liệu định nghĩa các phần tử dữ liệu bằng


cách mô tả:
̶ Ý nghĩa của các dòng dữ liệu, các kho dữ liệu có mặt
trong DFD
̶ Thành phần của tập hợp kết hợp của dữ liệu di chuyển
trên dòng
̶ Thành phần của các tập hợp dữ liệu trong các kho
̶ Chỉ định các giá trị hợp lệ và các đơn vị của các bó thông
tin cơ bản trong các dòng dữ liệu và các kho dữ liệu
̶ Chi tiết mối quan hệ giữa các kho được nhấn mạnh trong
sơ đồ thực thể liên kết

26
Tài liệu của pha phân tích
• Mô tả chi tiết các công cụ và kỹ thuật sử dụng để hoàn thành
việc phân tích
• Cung cấp sự mô tả đặc biệt các yêu cầu của hệ thống mà
người sử dụng có thể đánh giá và chấp nhận.
• Cung cấp nguồn thông tin cơ bản cho người thiết kế hệ thống
• Giải thích mục đích và phạm vi của hệ thống
• Đưa ra các yêu cầu mà người thiết kế cần thực hiện.
• Nội dung chính bao gồm:
̶ Kết hợp các yêu cầu mới
̶ Các công cụ và tài liệu hỗ trợ
̶ Tổng kết quá trình phân tích
27
VIỆN ĐIỆN TỬ - VIỄN THÔNG
School of Electronics and telecommunications

KỸ THUẬT PHẦN MỀM ỨNG DỤNG


Chương 2
Các pha trong phát triển phần mềm
Phần 4
Phân tích hệ thống - Phân tích dữ liệu

1
Mô hình thực thể và liên kết

Khảo sát hệ
thống Phân tích hệ
thống Thiết kế hệ
thống

Thu thập
Phân tích Thiết kế
các yêu
dữ liệu dữ liệu
cầu

Các Kịch Mô
bản sử dụng hình
Mô hình
thực quan hệ
Từ điển dữ thể liên
liệu kết
2
Mục đích của mô hình thực thể và liên
kết

• Xác định rõ các đơn vị thông tin nghiệp vụ của hệ thống

• Xác định rõ các mối quan hệ, ràng buộc giữa các đơn vị
thông tin này

• Trình bày rõ ràng và cô đọng các thông tin trên

• Từ đó giúp phát hiện sớm, và tránh được các sai sót,


hiểu lầm về các y/c hệ thống

3
Cấu tạo của mô hình thực thể liên kết

Gồm có 3 thành phần chính:


• Thực thể (Entities)

• Liên kết (Relationships)

• Thuộc tính (Attributes)

4
Thực thể và tập thực thể
• Một thực thể là:
̶ Thành phần quan trọng đối với nghiệp vụ, nên dữ liệu về nó cần phải
được biết.
̶ Có thể là một đối tượng cụ thể hoặc trừu tượng.
̶ Thường là danh từ.
• Một tập thực thể: là một tập hợp các thực thể cùng một loại.
Tập thực thể còn được gọi là Kiểu thực thể.
• Ký hiệu: thực thể và tập thực thể đều được biểu diễn bằng
một hình chữ nhật.
• Ví dụ:

The movie
“Mission Movies
Impossible” 5
Các thuộc tính của thực thể
• Khái niệm:
̶ Một thuộc tính của một thực thể là một chi tiết thông tin về thực
thể đó.
̶ Thuộc tính cũng biểu diễn các thông tin cần thiết cho nghiệp vụ,
nhưng gắn liền với thực thể, chứ không đứng độc lập như thực thể.
̶ Một thuộc tính có các giá trị mà thuộc một miền giá trị nào đó (kiểu
dữ liệu của nó).
• Ký hiệu:

Year of
Title production

Movies

6
Thuộc tính khóa

ID

Year of
Title production

Movies

7
Ví dụ – Thực thể, Tập thực thể, Thuộc
tính

ID
Year of
Title production

Movies

Title =
ID = 1 Year of
“Mission
Impossible” production
= 1996
The movie
“Mission Impossible”

8
Liên kết (Relationship)
• Khái niệm:
̶ Nó biểu diễn mối quan hệ (ràng buộc) giữa hai hay nhiều thực
thể.
̶ Nó cần thiết cho nghiệp vụ
• Ví dụ:
̶ Đạo diễn chỉ đạo làm Phim
̶ Diễn viên tham gia đóng Phim
̶ Đào diễn mời Diễn viên tham gia đóng Phim
• Số ngôi của liên kết:
̶ Là số thực thể tham gia liên kết đó
̶ Ví dụ:
o Đạo diễn chỉ đạo làm Phim: liên kết 2 ngôi;
o Đào diễn mời Diễn viên tham gia đóng Phim: LK 3 ngôi

9
Liên kết (Relationship)
• Ký hiệu:
̶ Đạo diễn chỉ đạo làm Phim: liên kết 2 ngôi;
̶ Đào diễn mời Diễn viên tham gia đóng Phim: LK 3 ngôi

Directors Directs Movies

Directors Invites Movies

Actors

10
Các loại liên kết

• Tự liên kết (Self-relationship): là liên kết giữa các thực thể


của cùng một tập thực thể.

• Liên kết 2 ngôi (Binary relationship): là liên kết giữa các thực
thể thuộc 2 tập thực thể.
̶ Liên kết Lớp con (Subclass, hay còn gọi là ISA): là một loại liên kết 2
ngôi đặc biệt.

• Liên kết nhiều ngôi (Multiway relationship): là liên kết giữa


các thực thể thuộc từ 3 tập thực thể trở lên.

11
Ví dụ về các loại liên kết
• Tự liên kết

elder
brother
Person brotherhood

younger
• Liên kết 2 ngôi brother

Class has Student

12
Ví dụ về các loại liên kết
• Liên kết ISA:

address
name dob

Person

isa
roll# school

Student

13
Ví dụ về các loại liên kết
• Liên kết nhiều ngôi:
̶ Một sinh viên tham gia một khóa học trong một lớp học

Class attends Student

Course

14
Lực lượng của Liên kết

• Khái niệm:
̶ Lực lượng (multiplicity) của một liên kết là số lượng các thực
thể của từng tập thực thể tham gia vào liên kết đó.

• Thường có 3 trường hợp:


̶ Không (0): khi có thể không có thực thể nào của tập thực thể
tham gia liên kết, hay cũng nói việc tham gia liên kết của tập
thực thể này là không bắt buộc.

̶ Một: khi có đúng một thực thể của một tập thực thể tham gia

̶ Nhiều: khi có nhiều hơn 1 thực thể của một tập thực thể tham
gia

15
Ví dụ về lực lượng
• Xét liên kết: Đạo diễn chỉ đạo làm Phim:
̶ Một đạo diễn có thể chỉ đạo Không, Một, hoặc Nhiều bộ phim
̶ Một bộ phim phải được chỉ đạo bởi ít nhất Một đạo diễn

Directors 1..N Directs 0..N


Movies

16
Lực lượng của Liên kết 2 ngôi

• Có 3 loại liên kết 2 ngôi giữa hai tập thực thể X và Y:


̶ Một Một (1:1): mỗi thực thể trong X có quan hệ với đúng một
thực thể trong Y và tương tự ngược lại.

̶ Một Nhiều (1:N): mỗi thực thể trong X có quan hệ với nhiều
thực thể trong Y. Nhưng ngược lại mỗi thực thể trong Y có quan
hệ với đúng một thực thể trong X.

̶ Nhiều Nhiều (M:N): mỗi thực thể trong X có quan hệ với nhiều
thực thể trong Y và tương tự ngược lại.

17
Lực lượng của Liên kết 2 ngôi

• Ký hiệu

1 1
1:1 X Y X Y

1 N
1:N X Y X Y

M N
M: X Y X Y
N

18
Xây dựng mô hình thực thể liên kết

Gồm các bước:

1. Xác định các thực thể và các thuộc tính của chúng

2. Xác định các liên kết và các thuộc tính

3. Hoàn thiện mô hình

19
Xác định các thực thể

• Phương pháp:
̶ Rà soát trong các Kịch bản sử dụng, và nhất là Từ điển dữ liệu
để xác định các đơn vị dữ liệu, đó sẽ là các thực thể và các
thuộc tính tiềm năng

̶ Cân nhắc mức độ quan trọng của các thực thể và các thuộc tính
tiềm năng đó đối với hệ thống

̶ Chọn ra các thực thể và các thuộc tính của chúng

• Lưu ý: cần phân biệt giữa các thực thể và thuộc tính.

20
Xác định các liên kết

• Phương pháp:
̶ Xác định các mối quan hệ giữa các thực thể, để từ đó xác định
ra loại liên kết

̶ Xác định lực lượng của các thực thể tham gia

̶ Xác định các thuộc tính của các liên kết nếu có

21
Hoàn thiện mô hình

• Cân nhắc rồi thống nhất việc lựa chọn Thực thể | Liên kết |
Thuộc tính trong mô hình

• Cân nhắc việc bổ sung/loại bỏ các thành phần của mô hình

• Trong quá trình này, có thể cần phải chuyển đổi giữa Liên
kết và Thực thể, hoặc giữa Thuộc tính và Thực thể

• Vẽ mô hình cuối cùng gồm toàn bộ các thành phần của nó

22
Ví dụ: Mô hình TT LK – Từ điển dữ liệu

Tên dữ liệu Bí danh Mô tả


Khoa = Tên khoa + Văn phòng + Điện thoại +
Fax
Bộ môn BM = Tên BM + Văn phòng
Giáo viên GV =TênGV + Ngày sinh + Địa chỉ + Chức
danh + (Chức vụ)
Trưởng BM TBM Là một giáo viên có chức vụ là trưởng
BM
Lớp học LH = Tên lớp + Khóa học + Số Lượng SV
Phòng học PH Tên phòng + SL chỗ ngồi
Thời khóa biểu TKB = Năm học + Học kỳ + {Khoa + {lớp
học + phòng học + tiết học}m}n
Khối lượng KLGD = TKB + {Giáo viên}mxn
giảng dạy

23
Ví dụ: Mô hình TT LK – Các thực thể

Tên thực Tên sử Các thuộc tính


thể dụng
Khoa TKhoa Tên khoa, Văn phòng, Điện thoại,
Fax
Bộ môn TBoMon Tên BM, Văn phòng
Giáo viên TGiaoVien TênGV, Ngày sinh, Địa chỉ, Chức
danh, Chức vụ
Lớp học TLopHoc Tên lớp, Khóa học, Số Lượng SV
Phòng học TPhong Tên phòng, SL chỗ ngồi
Trưởng BM TTrBM Là một Giáo viên có Chức vụ là
trưởng BM

24
Ví dụ: Mô hình TT LK – Các liên kết

• Liên kết 1:N giữa Khoa và Bộ môn: Một Khoa có nhiều


Bộ môn, nhưng ngược lại một Bộ môn thuộc đúng một
Khoa.
• Liên kết 1:N giữa Bộ môn và Giáo viên: Một Bộ môn có
nhiều Giáo viên, nhưng ngược lại một Giáo viên thuộc
đúng một Bộ môn.
• Liên kết 1:N giữa Khoa và Lớp học: Một Khoa có nhiều
Lớp học, nhưng ngược lại một Lớp học thuộc đúng một
Khoa.
• Liên kết ISA giữa Trưởng Bộ môn với Giáo viên: vì
Trưởng Bộ môn cũng là một Giáo viên.
• Liên kết 1:1 giữa Trưởng Bộ môn và Bộ môn: mỗi Bộ
môn có một Trưởng Bộ môn, và ngược lại mỗi Trưởng Bộ
môn lãnh đạo một Bộ môn.
25
Ví dụ: Mô hình TT LK – Các liên kết

• Thời khóa biểu là liên kết nhiều ngôi giữa các thực thể:
Khoa, Lớp học và Phòng học. Liên kết này sẽ bổ sung
thêm các thuộc tính là Năm học, Học kỳ và Tiết học.
• Khối lượng giảng dạy là liên kết M:N giữa TKB và Giáo
viên: Một TKB sẽ phân KLGD cho nhiều Giáo viên, và
ngược lại một Giáo viên tham gia giảng dạy theo nhiều
TKB.

26
Ví dụ: Mô hình TT LK – Các liên kết

1 N
Khoa Có Bộ môn

1 N
Khoa Có Lớp học

Giáo N 1
Thuộc Bộ môn
viên
1
IS
A

Trưởng Bộ 1
LĐạo
môn

27
Ví dụ: Mô hình TT LK – Các liên kết

Học kỳ
Năm học Tiết học

Khoa TKB Lớp học

Phòng học

N M Giáo
TKB KLGD
viên

28
Ví dụ: Mô hình TT LK – Hoàn thiện

1 N
1 N N 1
Khoa TKB Lớp học
1 N 1
N
1

Phòng học KLGD


N
N 1
1 N Giáo
Bộ môn
viên
1

1 Trưởng Bộ
môn
29
Các nguyên tắc thiết kế mô hình TTLK

1. Trung thành
2. Tránh dư thừa
3. Giữ cho mô hình đơn giản
4. Chọn đúng loại liên kết
5. Chọn loại thành phần phù hợp

30
Nguyên tắc 1: Trung thành

• Luôn luôn, các phân tích và thiết kế cần phải phản ánh
chân thực các mô tả của hệ thống nghiệp vụ.

• Với mô hình TTLK, điều này có nghĩa là các thành phần


của nó cũng phải phản ánh sự thực này.

 Nên đặt tên các Thực thể, Liên kết và Thuộc tính càng
gần với thực tế càng tốt.

31
Nguyên tắc 2: Tránh dư thừa

• Không để tình trạng cùng một thông tin lại xuất hiện ở
nhiều chỗ khác nhau trong mô hình

• Có thể gộp các thực thể có thông tin chung, và kết hợp
với liên kết ISA để giảm dư thừa

32
Ví dụ: dư thừa

name name addr

N 1
Beers ManfBy Manfs

manf

Thông tin về nhà sản xuất đã xuất hiện 2 lần, ở


thuộc tính và ở thực thể

33
Ví dụ: không còn dư thừa

name name addr

N 1
Beers ManfBy Manfs

Thông tin về nhà sản xuất chỉ còn xuất hiện


đúng 1 lần

34
Ví dụ: giảm dư thừa với liên kết ISA

name
dob
roll#
name
dob
Student ID

school addr
Person addr

school company
name dob
emp# Student Employee
Employee
addr
company

35
Nguyên tắc 3: Giữ mô hình đơn giản

• Không bổ sung thêm các thành phần mới khi không


thực sự cần thiết.
• Cần lưu ý cân bằng việc phát triển hệ thống hiện tại và
nhu cầu nâng cấp hệ thống trong tương lai.

36
Ví dụ: Thực thể không cần thiết

• Trong hệ thống quản lý Khối lượng giảng dạy cho một


Trường, thì có thể có thực thể Trường và Khoa, và một
Trường thì có thể có nhiều Khoa. Nhưng trong hệ thống
chỉ có 1 thực thể Trường nên việc tạo ra tập thực thể
Trường là không cần thiết.

1 N
Trường Có Khoa

37
Nguyên tắc 4: Chọn đúng loại liên kết

• Khi giữa các thực thể có thể tồn tại nhiều liên kết khác
nhau, thì chỉ cần chọn các liên kết cơ bản nhất. Còn các
liên kết còn lại mà có thể suy được từ các liên kết cơ
bản thì nên bỏ đi.

38
Ví dụ: Chọn đúng loại liên kết

Salary
title year name addr

Movies Contracts Stars

N
length genre 1 • Liệu có cần thêm các liên
kết giữa Movies và Studios,
Studios cũng như giữa Movies và
Stars không?
• Nếu có thì liên kết Contracts
name addr có cần thiết nữa không?

39
Nguyên tắc 5: Chọn loại thành phần phù hợp

• Đôi khi không dễ quyết định biểu diễn một thông tin dưới
dạng nào của mô hình TTLK, vì dường như dạng nào
cũng có thể được. Khi đó cần chọn dạng phù hợp nhất,
mà tiêu chuẩn có thể dựa vào các nguyên tắc trên.
• Cần phân biệt giữa thực thể, thuộc tính và liên kết để
chọn cho phù hợp:
̶ Thực thể có thể tồn tại độc lập và cần có thêm thông tin chi tiết
cho nó (các thuộc tính).
̶ Các thuộc tính không đứng độc lập, mà cần bổ sung, hay là bộ
phận của thực thể hay liên kết nào đó.
̶ Liên kết cũng không tồn tại độc lập, mà phụ thuộc vào các thực
thể thành phần

40
VIỆN ĐIỆN TỬ - VIỄN THÔNG
School of Electronics and telecommunications

KỸ THUẬT PHẦN MỀM ỨNG DỤNG


Chương 2
Các pha trong phát triển phần mềm
Phần 5
Thiết kế hệ thống – Giới thiệu

1
Nội dung chính

• Mục đích của thiết kế

• Các nguyên tắc thiết kế

• Các phần cần thiết kế


– Thiết kế CSDL  CSDL ít nhất ở dạng chuẩn 3

– Thiết kế kiến trúc  Lược đồ cấu trúc chương trình

– Thiết kế giao diện  các menu, form nhập, mẫu báo cáo, thông
báo
Mục đích của giai đoạn Thiết kế
• Là quá trình chuyển các yêu cầu của phần mềm sang dạng
biểu diễn của phần mềm mà nó có thể được đánh giá về chất
lượng trước khi cài đặt.

• Thiếu thiết kế, việc cài đặt có thể gặp các vấn đề:
– Thiếu kế hoạch cài đặt: không biết rõ thứ tự cài đặt các thành phần,
do đó gây ra sự lộn xộn và khó khăn trong việc ước lượng và phân
công công việc

– Không rõ ràng: chưa hiểu rõ các yêu cầu sẽ được cài đặt thế nào

– Khó nâng cấp và bảo trì: khi có lỗi, rất khó xác định nó nằm ở phần
nào. Khi muốn nâng cấp cũng không biết cần nâng cấp ở đâu, ảnh
hưởng của nó đến hệ thống hiện tại thế nào
Các nguyên tắc thiết kế

• Sự trừu tượng (abstraction)

• Làm mịn (tinh chỉnh từng bước - refinement)

• Modul hóa (modularity)


Các nguyên tắc thiết kế

• Sự trừu tượng:
– Là sự tập trung vào một vấn đề ở một mức khái quát nào đó, và bỏ
qua các chi tiết mức thấp hơn không liên quan

– Quá trình thiết kế hệ thống đòi hỏi nhiều mức trừu tượng khác nhau

– Với phần mềm thì có 3 loại trừu tượng

o Trừu tượng thủ tục

o Trừu tượng dữ liệu

o Trừu tượng điều khiển


Các nguyên tắc thiết kế

• Làm mịn (tinh chỉnh từng bước - refinement)


– Là quá trình làm chi tiết hóa từng thành phần của một biểu diễn nào
đó, để dần đưa nó sang biểu diễn ở dạng chi tiết hơn (giảm mức độ
trừu tượng)

– Khi các nhiệm vụ đã được làm mịn thì dữ liệu cũng phải được làm
mịn, được phân rã hay cấu trúc lại.
Các nguyên tắc thiết kế

• Modul hóa (modularity):


– Là quá trình phân chia hệ thống/phần mềm thành các thành phần
riêng rẽ có tên và tương đối độc lập

– Là một kỹ thuật cơ bản nhất để quản lý một cách hiệu quả độ phức
tạp của hệ thống

– Modul hóa tốt có thể giúp giảm thiểu thời gian và chi phí phát triển hệ
thống
Modul hóa

Quan hệ giữa modul hóa và chi phí phần mềm


Module hóa hiệu quả

• Che dấu thông tin


– Là cách thiết kế làm sao để thông tin trong một modul (cả chức
năng và dữ liệu) là không nhìn thấy và không truy nhập được từ
các thành phần bên ngoài mà không có nhu cầu về thông tin đó

• Độc lập chức năng (functional independence)


– Là tính chất phản ánh mức độ đơn nhất về chức năng và đơn
giản về giao diện của một modul. Nó được đo lường theo 2 tiêu
chuẩn:

– Mức độ cố kết (cohesion)

– Mức độ tương liên (coupling)


Mức độ cố kết

• Khái niệm:

Mức độ cố kết của một modul là một đơn vị đo về sức


mạnh chức năng của modul đó. Mức độ này càng cao thì
tính độc lập chức năng cũng càng cao.
Các loại cố kết và mức độ của chúng

Mức Loại cố kết Ý nghĩa


độ
Cố kết trùng Modul bao gồm một dãy các công việc mà liên
khớp quan rất ít đến nhau
Cố kết logic Modul bao gồm một dãy các công việc mà có liên
Thấp quan đến nhau một cách logic
Cố kết thời gian Modul bao gồm một dãy các công việc mà phải
hoàn thành trong cùng một khoảng thời gian.
Cố kết thủ tục Các công việc trong modul đó liên quan đến
nhau và phải được thực hiện theo một trật tự
nhất định
Vừa
Cố kết truyền Khi các công việc trong một modul cùng sử dụng
thông một phần nào đó của một cấu trúc dữ liệu

Cao Cố kết thủ tục Khi modul đó chỉ thực hiện một công việc
rõ ràng
Ví dụ về mức độ cố kết

• Bài toán: viết một chương trình tính giá trị một biểu thức
số học mà có thể được nhập từ bàn phím hay từ một tệp
văn bản. Kết quả đưa ra cũng có thể đưa ra màn hình
hoặc ghi vào tệp văn bản.

• Sơ đồ cho giải thuật của bài toán trên được cho ở hình
sau:
Ví dụ về mức độ cố kết

Nhập từ
bàn phím BT dạng
Chọn Chuyển bt
trung tố
cách sang dạng
nhập hậu tố
Nhập từ tệp

BT dạng
In ra màn hậu tố
hình Giá trị
Chọn BT Tính giá trị
cách
biểu thức
xuất
Ghi ra tệp
Mức độ cố kết thấp: trùng khớp

Nhập từ
Chọn bàn phím BT dạng
Chuyển bt
cách trung tố
sang dạng
nhập hậu tố
Nhập từ tệp
BT dạng
hậu tố
In ra màn
hình Giá trị
Chọn BT Tính giá trị
cách
biểu thức
xuất
Ghi ra tệp

Một modul làm toàn bộ các công việc


Mức độ cố kết vừa: thủ tục

modul Nhập từ
nhập BT bàn phím BT dạng
Chọn Chuyển bt
cách trung tố
sang dạng
nhập hậu tố
Nhập từ tệp
BT dạng
In ra màn hậu tố
hình Giá trị
Chọn
BT Tính giá trị
cách
biểu thức
xuất
Ghi ra tệp
modul
tính giá
modul xuất BT trị BT
Mức độ cố kết cao: thủ tục rõ ràng

Nhập từ
bàn phím BT dạng
Chọn cách Chuyển bt
trung tố
nhập sang dạng
hậu tố
Nhập từ tệp
BT dạng
hậu tố
In ra màn
hình Giá trị
Chọn cách BT Tính giá trị
xuất biểu thức
Ghi ra tệp
Mức độ tương liên

• Khái niệm:

Mức độ tương liên của một modul là đơn vị đo lường


mức độ kết nối của modul đó với các modul khác. Điều
này phụ thuộc vào độ phức tạp của giao diện, điểm truy
nhập hay tham chiếu của modul.
Mức độ tương liên
Mức Loại Ý nghĩa
độ
Tương liên dữ Là khi một modul truyền tham số đến modul khác
Thấp liệu
Tương liên Là khi một modul truyền một thông tin điều khiển
điều khiển (cờ điều khiển) đến modul khác
Vừa
Tương liên Là khi một modul phụ thuộc vào một thiết bị bên
ngoài ngoài (như các thiết bị nhập/xuất)
Tương liên Là khi một số modul tham chiếu/chia sẻ đến cùng
chung dữ liệu một đối tượng dữ liệu toàn cục
Tương liên nội Là khi một modul sử dụng dữ liệu hay điều khiển
Cao dung thông tin trong phạm vi của một modul khác;
Nó cũng xuất hiện khi có tồn tại lệnh rẽ nhánh
trong modul
VIỆN ĐIỆN TỬ - VIỄN THÔNG
School of Electronics and telecommunications

KỸ THUẬT PHẦN MỀM ỨNG DỤNG


Chương 2
Các pha trong phát triển phần mềm
Phần 6
Thiết kế hệ thống – Thiết kế cơ sở dữ liệu

1
Nội dung chính

• Tổng quan về Mô hình dữ liệu quan hệ

• Chuẩn hóa dữ liệu

• Chuyển từ mô hình thực thể liên kết sang mô hình quan hệ


2

2
Tổng
2
quan về Mô hình dữ liệu quan hệ

3
Mô hình dữ liệu là gì?

• Mô hình dữ liệu (Data Model) là cách ký hiệu để mô tả


dữ liệu hay thông tin. Nói chung, nó gồm có ba phần:
– Cấu trúc của dữ liệu (Structure of the data)

– Các thao tác trên dữ liệu (Operations on data)

– Các ràng buộc (Constraints)

4
Tóm tắt lịch sử của các Mô hình dữ liệu

5
Mô hình dữ liệu quan hệ
(Relational Data Model)

• Quan hệ (relation) là một bảng hai chiều:


– Các cột gọi là các thuộc tính (attribute)

– Các hàng gọi là các bản ghi (record) hay bộ (tuple)

• Ví dụ: Quan hệ Customers (bảng Customers)


– Mỗi hàng biểu diễn cho một CUSTOMER

– Mỗi cột biểu diễn cho một thuộc tính của CUSTOMER và được gọi là
“thuộc tính”

6
Mô hình dữ liệu quan hệ
(Relational Data Model)

• Lược đồ (Schema)
– Lược đồ của một quan hệ là thông tin về cấu trúc của quan hệ đó
– Nó bao gồm tên và tập các thuộc tính của quan hệ đó.
– Ví dụ: Lược đồ của quan hệ Customers ở trên:
o Customers(Customers ID, tax ID, name, address)

• Bộ và thành phần
– Một hàng của một quan hệ được gọi là một bộ (tuple) hay
bản ghi (record)
– Một giá trị của một thuộc tính trong một bộ được gọi là một
thành phần (component)

7
Mô hình dữ liệu quan hệ
(Relational Data Model)

• Miền giá trị (Domains)


– Miền giá trị của một thuộc tính là tập tất cả các giá trị mà thuộc
tính đó có thể nhận

– Nên khái niệm miền giá trị tương đương với khái niệm kiểu dữ
liệu (data type)

– Ở mức cài đặt trong một hệ quản trị CSDL, thì miền giá trị của
các thuộc tính của một quan hệ cần phải chọn sao cho nằm
trong số các kiểu dữ liệu mà hệ QT CSDL đó hỗ trợ

8
Mô hình dữ liệu quan hệ
(Relational Data Model)
• Biểu diễn tương đương của quan hệ
– Quan hệ là tập hợp của các bộ (sets of tuples), chứ không phải
danh sách của các bộ (lists of tuples)
– Do vậy, thứ tự của các bộ trong quan hệ không quan trọng, mà
quan trọng là nội dung của các bộ. Đồng thời nếu có 2 bộ có giá
trị bằng nhau trên mọi thuộc tính thì coi như 1 bộ bị thừa

• Thể hiện của quan hệ


– Thể hiện của quan hệ (instance of a relation) là tập các bộ
của quan hệ đó tại một thời điểm
– Thể hiện của một quan hệ phản ánh nội dung của quan hệ
đó, và nó thay đổi khi có các thao tác cập nhật nội dung
quan hệ như thêm, sửa hay xóa bộ.
9
Cơ sở dữ liệu quan hệ

• CSDL quan hệ (Relational Database): Là tập hợp các


quan hệ và các ràng buộc giữa chúng, mà có liên quan
đến một hệ thống thông tin (phần mềm) nào đó

10
Các bất thường trong quan hệ
• Quan sát quan hệ Student
ID Name Class Department Subject Mark
1 E1-001 Nguyen Van A E1 Electronics Electronic Circuit 8
2 E1-001 Nguyen Van A E1 Electronics Digital Technique 7
3 E1-002 Tran Thi B E1 Electronics Digital Technique 9
4 E1-002 Tran Thi B E1 Electronics Electronic Circuit 8
5 E2-001 Nguyen Ho C E2 Electronics Digital Technique 6
6 IT1-001 Tran Thi B IT1 IT Electronic Circuit 10
7 IT1-002 Le Van D IT1 IT Digital Technique 8

– Dư thừa (Redundancy)
– Bất thường khi cập nhật (Update Anomalie)
– Bất thường khi bổ sung (Insertion Anomalie)
– Bất thường khi xóa (Deletion Anomalie)
Các bất thường trong quan hệ

• Hậu quả của các bất thường trên


– Sự không nhất quán dữ liệu có nguy cơ rất cao
– Tốn chỗ lưu trữ do dư thừa
– Các thao tác cơ bản trên CSDL không hiệu quả

• Nguyên nhân của các bất thường trên


=> Khái niệm Phụ thuộc hàm có thể giúp chúng ta hiểu
nguyên nhân, cũng như giúp tìm ra giải pháp cho vấn
đề trên.

12
Phụ thuộc hàm
• Định nghĩa về PTH (Functional Dependency)
– Cho lược đồ quan hệ R(A1,A2,…An), và A = A1A2 … An, và 2
tập các thuộc tính X và Y  A. Chúng ta nói rằng:
o X  Y (X xác định hàm Y, hay Y phụ thuộc hàm vào X), nếu  thể hiện r
của R, thì không tồn tại 2 bộ t1, t2, sao cho t1[X]=t2[X] và t1[Y]  t2[Y]
o Nói cách khác: tập các thuộc tính Y phụ thuộc hàm vào tập các thuộc
tính X khi và chỉ khi ứng với mỗi bộ giá trị của X trong R chỉ xác định
đúng một giá trị của Y tại mọi thời điểm
– X được gọi là Quyết định (determinant) của PTH.
• Một số PTH từ bảng Student:
– ID  Name;
– ID  Class;
– Class  Department;
– (ID, Subject)  Mark
13
Phụ thuộc hàm

• Ý nghĩa của một PTH X  Y trong lược đồ R:  thể hiện


r của R thì:
– Hoặc không có bất kỳ 2 bộ t1, t2 nào, sao cho t1[X]=t2[X]
– Hoặc nếu tồn tại 2 bộ t1, t2 mà t1[X]=t2[X], thì t1[Y]=t2[Y]
– Trong cả hai trường hợp,  bộ t, với mỗi giá trị của t[X] thì chỉ
có một giá trị của t[Y], do đó nếu biết trước giá trị t[X], thì có
thể xác định giá trị t[Y].

14
Phụ thuộc hàm
• PTH đến từ đâu?
– Nó xuất phát các quy tắc nghiệp vụ (hay logic nghiệp vụ) của cơ sở
dữ liệu. Các quy tắc nghiệp vụ này sẽ quy định các phụ thuộc giữa các
thuộc tính, và từ đó sẽ tạo ra các phụ thuộc hàm.

• Ví dụ: một số quy tắc nghiệp vụ trong lược đồ Student:


– r1: Mỗi sinh viên có một ID duy nhất.
– r2: Mỗi sinh viên chỉ có duy nhất 1 tên và chỉ thuộc về một lớp.
o Từ r1 và r2, ta có các PTH sau:
ID  Name; ID  Class
– r3: Với mỗi môn học, mỗi sinh viên chỉ thi một lần
o Từ r3, ta có PTH: (ID, Subject)  Mark;

15
Phụ thuộc hàm

• Hệ tiên đề Amstrong
– Tính phản xạ:  Y  X thì X  Y (PTH tầm thường)
– Tính tăng trưởng:  X, Y, Z, nếu X  Y thì XZ  YZ (XZ = X  Z)
– Tính bắc cầu:  X, Y, Z, nếu X  Y và Y  Z thì X  Z

• Các hệ quả:
– Tính hợp : nếu X  Y và X  Z thì X  YZ
– Tính tách: nếu X  Y và Z  Y thì X  Z
– Tính tựa bắc cầu: nếu X  Y và YW  Z thì XW  Z

16
Phụ thuộc hàm

• Một số loại PTH đặc biệt


– PTH bộ phận và PTH đầy đủ: X  Y được gọi là PTH bộ phận
nếu X’  X sao cho X’  Y. Trái lại, nếu không tồn tại X’ như trên
thì PTH này là đầy đủ.
– PTH bắc cầu và PTH trực tiếp: X  Y được gọi là PTH bắc cầu
(hay gián tiếp) nếu  Z  XY sao cho X Z và Z  Y. Trái lại, nếu
không tồn tại Z như trên thì PTH này là trực tiếp.
– Lưu ý: Sau đây, khi nói phụ thuộc hàm có nghĩa đó là phụ thuộc
hàm đầy đủ và trực tiếp

17
Khóa
• Có một số loại khóa như sau:
– Siêu khóa (Super Keys).

– Khóa ứng viên (Candidate Kyes).

– Khóa chính (Primary Kyes).

– Khóa ngoại.

18
Khóa

• Siêu khóa
– Là một hay một tập các cột xác định duy nhất một hàng trong
bảng
– SK là siêu khóa của R khi với mọi t1, t2 thuộc bất kỳ thể hiện r của
R ta luôn có t1[SK] ≠ t2[SK]
– SK là siêu khóa củaR <=> SK xác định hàm mọi thuộc tính của R
(SK -> R).
Ví dụ: Cho lược đồ DMSV(MaSV, SoCMTND, Ho_ten_sv,
Ngay_Sinh, Dia_chi, Que_quan).

Hãy xác định các siêu khóa trong lược đồ trên.

19
Khóa

• Khóa ứng viên (khóa ứng cử): Là một tập con của siêu khóa (cũng là một
siêu khóa), nhưng không thể thu lại thành một siêu khóa khác
Ví dụ ta có tập các khóa ứng viên{ (MaSV),(SoCMTND)}.
• Khóa chính:Là một khóa được lựa chọn một cách tùy ý từ tập các khóa
ứng viên, và được sử dụng trong các chỉ mục của bảng đó.
• Khóa ngoại: Một thuộc tính của quan hệ R1 được gọi là một khoá ngoại
lai nếu nó không phải là khoá chính của quan hệ R1 nhưng các giá trị của
nó là các giá trị của khoá chính trong một quan hệ R2 nào đó
• Khóa ngoại lai dùng để chứa dữ liệu dùng cho việc liên kết với các bảng
khác trong CSDL.

20
Khóa

Ví dụ về các khóa

Khóa chính Khóa ứng viên Khóa ngoại

DMSV(MaSV, SoCMTND, Ho_ten_sv, Dia_Chi, Que_Quan, MaLop)

Siêu khóa

DSLOP(MaLop, Ten_lop, Lop_truong)

21
Khóa

• Thuộc tính khóa (Prime attribute): một thuộc tính A là


thuộc tính khóa nếu nó tham gia vào thành phần của
khóa chính hoặc khóa ứng cử. Trái lại, thì nó là thuộc
tính không khóa (hay thuộc tính mô tả)

22
Nguyên nhân gây ra các bất thường

ID Name Class Department Subject Mark

1 E1-001 Nguyen Van A E1 Electronics Electronic Circuit 8


2 E1-001 Nguyen Van A E1 Electronics Digital Technique 7
3 E1-002 Tran Thi B E1 Electronics Digital Technique 9
4 E1-002 Tran Thi B E1 Electronics Electronic Circuit 8

5 E2-001 Nguyen Ho C E2 Electronics Digital Technique 6


6 IT1-001 Tran Thi B IT1 IT Electronic Circuit 10
7 IT1-002 Le Van D IT1 IT Digital Technique 8

23
Nguyên nhân gây ra các bất thường

• Khóa chính của quan hệ Student:


– K = (ID, Subject)

• Nhận xét: các thuộc tính dư thừa là các thuộc tính phụ
thuộc hàm bộ phận hoặc bắc cầu vào Khóa chính, ví dụ
như:
– (ID, Subject)  Name, Class, Department; PTH bộ phận vì
ID  Name, ID Class, ID Department
– Class  Department

24
Nguyên nhân gây ra các bất thường

• Là sự tồn tại của các phụ thuộc bộ phận hoặc bắc cầu
vào khóa chính

• Giải pháp: Cần loại bỏ các loại PTH này trong quan hệ,
nhưng làm thế nào?
 Phép tách lược đồ!

25
Phép tách

• Định nghĩa: cho một LĐQH R. Một phép tách R là sự thay


thế nó bằng các LĐ con (sub-schema) R1, R2, …, Rn sao
cho R = R1R2 …Rn. Ký hiệu phép tách là: (R) =
(R1,R2, ..., Rn) ( called rho)

• Một số tính chất muốn có của phép tách:


– Tách nối không mất thông tin (Loseless-join decomposition)
– Bảo toàn các PTH (Preservation of FDs)

26
Ví dụ: tách bảng Student thành 3 bảng S1,
S2 và S3

S1 S3
ID Name Class ID Subject Mark
E1-001 Nguyen Van A E1 E1-001 Electronic Circuit 8
E1-002 Tran Thi B E1
E1-001 Digital Technique 7
E2-001 Nguyen Ho C E2
E1-002 Digital Technique 9
IT1-001 Tran Thi B IT1
E1-002 Electronic Circuit 8
IT1-002 Le Van D IT1
E2-001 Digital Technique 6
S2
IT1-001 Electronic Circuit 10
Class Department
E1 Electronics IT1-002 Digital Technique 8
E2 Electronics
IT1 IT
Phép tách

• Một phép tách tốt cần phải::


– Loại bỏ tất cả các bất thường
– Lưu giữ được các tính chất mong muốn

• Làm thế nào đạt được?


 Quá trình chuẩn hóa và các dạng chuẩn
(Normalization and Normal Forms)

28
2 Chuẩn hóa dữ liệu

29
Khái niệm chuẩn hóa
• Chuẩn hóa: Mô hình quan hệ chỉ chấp nhận duy nhất các quan hệ thoả
mãn điều kiện “Mọi giá trị trong quan hệ - nghĩa là tất cả các giá trị của
các thuộc tính trong tất cả các bộ - đều phải là nguyên tố (atomic) (nghĩa
là không chia nhỏ được nữa)” .

• Nói một cách khác, tại mỗi vị trí cắt nhau của một hàng và một cột trong
bảng tồn tại đúng một giá trị và không bao giờ là một tập các giá trị.

• Dạng chuẩn (normal form): Là trạng thái của một quan hệ có được do áp
dụng những quy tắc liên quan đến phụ thuộc hàm của quan hệ đó.

• Chuẩn hoá dữ liệu: là quá trình phân rã lược đồ quan hệ chưa chuẩn hoá
(có dạng chuẩn thấp) thành các lược đồ quan hệ nhỏ hơn nhưng ở dạng
chuẩn cao hơn (có cấu trúc tốt hơn)

30
Mục đích của việc chuẩn hóa

• Loại bỏ các dữ liệu dư thừa trong các bảng.

• Xóa bỏ các dị thường trong các thao tác cập nhật dữ liệu.

• Tối ưu hóa cấu trúc của các bảng.

31
Các dạng chuẩn
• Dạng chuẩn 1(1 Normal Form - 1NF): Một bảng đạt chuẩn 1 khi và chỉ khi
tất cả các cột trong bảng chỉ chứa giá trị nguyên tố, nghĩa là không có
nhóm lặp (các cột) bên trong một hàng của bảng.

• Kết luận:
– Mọi lược đồ quan hệ đều
thuộc dạng chuẩn 1.

– Dạng chuẩn 1 có thể dẫn


đến sự trùng lặp dữ liệu.
Do đó gây ra các dị
thường về cập nhật dữ
liệu.

32
Các dạng chuẩn

• Dạng chuẩn 2 (2 Normal Form - 2NF): Lược đồ quan hệ R được gọi là


thuộc dạng chuẩn 2 nếu nó đã ở dạng chuẩn 1 và mọi thuộc tính không
khóa của R phụ thuộc hàm đầy đủ vào khóa chính của R.

33
Các dạng chuẩn

• Kết luận:
– Mọi lược đồ quan hệ thuộc dạng chuẩn 2 cũng thuộc dạng chuẩn 1.

– Còn xuất hiện sự trùng lặp dữ liệu. Do đó gây ra các dị thường về cập nhật
dữ liệu.
34
Các dạng chuẩn
• Dạng chuẩn 3(3 Normal Form - 3NF): Lược đồ quan hệ R được gọi là
thuộc dạng chuẩn 3 nếu:
– R thuộc dạng chuẩn 2.
– Mọi thuộc tính không khóa của R không phụ thuộc bắc cầu vào khóa chính
của R.
Ví dụ: Lược đồ dưới đây thuộc dạng chuẩn 2 nhưng không thuộc dạng chuẩn 3, vì tồn tại
phụ thuộc hàm bắc cầu:

Rõ ràng: MaNV  MaPB, MaPB  TenPB => MaNV  TenPB, Sau khi chuẩn hóa sang
dạng 3NF chúng ta nhận được các lược đồ sau:
35
Các dạng chuẩn

• Kết luận:
– Mọi lược đồ quan hệ thuộc dạng chuẩn 3 cũng thuộc dạng chuẩn 2.

– PTH bắt cầu là nguyên nhân dẫn đến trùng lặp dữ liệu.

– Dạng chuẩn 3 là dạng chuẩn tối thiểu trong thiết kế CSDL

36
Lược đồ khái niệm

Cho cơ sở dữ liệu sau:

37
Lược đồ khái niệm

38
5 Các phép toán trên CSDL quan hệ

• Chèn (insert)

• Loại bỏ (delete)

• Thay đổi (change)

Trong mô hình CSDL quan hệ được nêu trên, các phép toán
này được áp dụng cho từng bộ của các quan hệ lưu trữ trong
máy

39
Các phép toán trên CSDL quan hệ

• Phép chèn (INSERT)


– Phép chèn thêm một bộ t vào quan hệ r {A1, ..., An} có dạng:
r=rt
– Ta có thể biểu diễn chi tiết phép chèn như sau:
INSERT (r; A1 = d1, A2 = d2, ..., An = dn)
– Trong đó: Ai với i = 1, ..., n là tên các thuộc tính và di với di 
dom(Ai) là các giá trị thuộc miền trị tương ứng của thuộc tính Ai.

– Ví dụ, để thêm một bộ t4 = (S4, Clark, 20, London) vào quan hệ S ta


làm như sau:
INSERT(S; S# = S4, SNAME = Clark, STATUS = 20, CITY = London)

40
Các phép toán trên CSDL quan hệ
– Nếu xem thứ tự các trường là cố định, khi đó có thể biểu diễn phép
chèn dưới dạng không tường minh như sau:
INSERT (r; d1, d2, ..., dn)
– Mục đích của phép chèn là thêm một bộ vào một quan hệ nhất định

– Kết quả của phép toán này có thể gây ra một số sai sót với những lý
do sau đây:
o Bộ mới cần thêm vào không phù hợp với lược đồ quan hệ đã cho

o Một số giá trị của một số thuộc tính nằm ngoài miền giá trị của thuộc tính đó

o Giá trị khoá của bộ mới có thể là giá trị đã có trong quan hệ đang lưu trữ

– Do vậy, tuỳ từng hệ thống cụ thể sẽ có những cách khắc phục riêng

41
Các phép toán trên CSDL quan hệ

• Phép loại bỏ (DEL)


– Phép loại bỏ (DEL) là phép xoá một bộ ra khỏi một quan hệ cho trước

– Giống như phép chèn, phép loại bỏ có dạng:


r=r-t
– Ta có thể biểu diễn chi tiết phép loại bỏ như sau:
DEL (r; A1 = d1, A2 = d2, ..., An = dn)
– Hoặc nếu xem thứ tự các trường là cố định thì:
DEL (r; d1, d2, ... dn)
– Ví dụ, cần loại bỏ bộ tương ứng với P2, S3 trong quan hệ SP ta làm
như sau:
DEL (SP; S# = S3, P# = P2, QTY = 200)

42
Các phép toán trên CSDL quan hệ
– Tuy nhiên, không phải lúc nào phép loại bỏ cũng cần đầy đủ tất cả các
loại thông tin của bộ cần loại bỏ

– Nếu có giá trị về bộ đó tại các thuộc tính khoá K = {B1, B2,..., Bj} thì
phép loại bỏ chỉ cần viết:
DEL (r; B1 = f1, B2 = f2, ..., Bj = fj)
– Ví dụ, trong phép loại bỏ nêu trên, vì (S#, P#) là khoá của quan hệ SP
nên ta chỉ cần viết:
DEL (SP; S# = S3, P# = P2)

43
Các phép toán trên CSDL quan hệ

• Phép thay đổi (CHANGE hoặc UPDATE)


– Trong thực tế không phải lúc nào cũng chỉ dùng phép chèn hoặc loại
bỏ đi một bộ mà nhiều khi chỉ cần sửa đổi một số giá trị nào đó tại
một số thuộc tính, lúc đó cần thiết phải sử dụng phép thay đổi
("Change" hay viết tắt là CH)

– Gọi tập {C1, ..., Cp}  {A1, ..., An} là tập các thuộc tính mà tại đó các
giá trị của bộ cần thay đổi, khi đó phép thay đổi có dạng:
r = r - t  t'
– Hay ta có thể biểu diễn chi tiết phép loại bỏ như sau:
CH (r; A1 = d1, A2 = d2, ..., An = dn; C1 = e1, C2 = e2, ..., Cp = ep)

44
Các phép toán trên CSDL quan hệ
– Nếu K = {B1, ..., Bm} là khoá của quan hệ, khi đó chỉ cần viết:
CH (r; B1 = f1, B2 = f2, ..., Bm = fm; C1 = e1, C2 = e2, ..., Cp = ep)
– Ví dụ: Cần thay đổi địa chỉ hãng cung cấp S1 từ London thành
Amsterdam trong quan hệ S. Khi đó phép thay đổi có dạng như sau:
CH (S; S# = S1; CITY = Amsterdam)
– Cũng có thể không dùng phép thay đổi mà dùng tổ hợp của phép loại
bỏ và phép chèn một bộ mới

– Do vậy, sai sót đối với phép thay đổi cũng sẽ xảy ra tương tự như với
phép chèn và phép loại bỏ

45
Các bước đưa về dạng chuẩn 3NF

• Buớc 1: Chuyển quan hệ chưa chuẩn hóa thành 1 tập quan hệ tương
đương ở dạng 1NF.
– Cách 1: Loại bỏ các nhóm lặp bằng cách đưa dữ liệu thích hợp vào các cột
trống của các hàng chứa dữ liệu lặp
o Cách này thường được gọi là “làm phẳng” (flattening)

o Bằng cách này sữ dư thừa đã được đưa vào quan hệ kết quả, tuy nhiên sự dư thừa này sẽ
được loại bỏ trong quá trình chuẩn hóa

– Cách 2:
o Chỉ định một hoặc một nhóm các thuộc tính làm khóa chính cho bảng chưa chuẩn hóa

o Loại bỏ các nhóm lặp bằng cách mang nhóm các thuộc tính lặp lại cùng bản copy của khóa
chính sang một quan hệ tách biệt

o Nhận diện các khóa chính của các quan hệ mới

o Nếu bảng chưa chuẩn hóa có chưa hơn một nhóm lặp lại hay các nhóm lặp lại lồng nhau thì
cách này được lặp đi lặp lại cho đến khi không còn nhóm lặp nữa.

46
Các bước đưa về dạng chuẩn 3NF

• Bước 2. Tạo các ánh xạ của quan hệ gốc 1NF để hạn chế mọi phụ thuộc
hàm không đầy đủ vào khoá chính để tạo ra một tập các quan hệ 2NF
theo các bước sau:
– Từ quan hệ ban đầu, đối với mỗi thuộc tính của khoá chính, ta tạo một quan
hệ tách biệt
– Tiếp tục tạo các quan hệ tách biệt mới với tất cả các kết hợp của các thuộc
tính của khoá chính cho đến khi tạo được quan hệ với toàn bộ khoá chính
gốc
– Chỉ định thuộc tính hoặc kết hợp các thuộc tính này làm khoá chính cho các
quan hệ mới
– Trong quan hệ gốc, tìm sự phụ thuộc hàm đầy đủ của từng thuộc tính trong
các thuộc tính còn lại vào các khoá chính mới tìm ra và đặt nó vào quan hệ
tương ứng với khoá chính mới này
• Khi đã xét hết các thuộc tính còn lại trong quan hệ gốc thì bỏ đi các
quan hệ mà chỉ có các thuộc tính khoá mà không có các thuộc tính
không khoá khác

47
Các bước đưa về dạng chuẩn 3NF

• Bước 3: Tạo các ánh xạ của các quan hệ 2NF này để hạn chế mọi
phụ thuộc hàm bắc cầu của các thuộc tính không khoá vào khoá
chính. Kết quả sẽ tạo nên một tập các quan hệ 3NF.
– Từ quan hệ 2NF ban đầu, mang bản copy của thuộc tính quyết định
cùng tất cả các thuộc tính không khoá mà phụ thuộc hàm vào thuộc
tính quyết định này sang một quan hệ mới với thuộc tính quyết định
sẽ được chỉ định làm khoá chính của quan hệ mới

48
Các bước đưa về dạng chuẩn 3NF

• Lưu ý:

– Trường hợp quan hệ đã ở dạng 3NF nhưng có các khoá ứng cử phủ
nhau thì chưa thể khẳng định là đã ở dạng chuẩn BCNF

– Nếu tồn tại thuộc tính quyết định mà không phải là khoá ứng cử thì
phải mang bản copy của thuộc tính quyết định cùng các thuộc tính
phụ thuộc hàm đầy đủ vào nó sang một quan hệ mới

• Mục đích chính của quá trình này là giảm được sự dư thừa thông
tin, và do đó tránh được các vấn đề dị thường với các phép toán
lưu trữ như đã bàn đến ở trên

49
Các quy tắc toàn vẹn dữ liệu

• C.J. Date:
– Qui tắc Toàn vẹn thực thể (Entity Integrity Rule - EI):
o Không một thành phần nào của các thuộc tính dùng làm khoá chính trên
một bảng dữ liệu được là null

– Qui tắc Toàn vẹn quy chiếu (Referential Integrity Rule - RI):
o Nếu một bảng dữ liệu bao gồm một khoá ngoại lai (FK) khớp với một
khoá chính (PK) trên một bảng dữ liệu T nào đó, thì mỗi trị của FK phải
hoặc:
– bằng trị của khoá chính trên một hàng nào đó của bảng dữ liệu T,
hoặc
– hoàn toàn null (Điều này không nên có vì không kết nối vào đâu)

• Cần tuân thủ các quy tắc toàn vẹn dữ liệu này trong 3 phép toán
thao tác CSDL 50
Các quy tắc toàn vẹn dữ liệu
• Phép toán Chèn (Insert): Nếu người sử dụng cố thử đưa vào một bộ với
khoá ngoại lai không khớp với trị của khoá chính của bảng dữ liệu tương
ứng thì để đảm bảo các quy tắc toàn vẹn dữ liệu, ta có thể cho áp dụng
một trong 3 nguyên tắc sau đây:
– Gạt bỏ việc thêm hàng này và yêu cầu người sử dụng đưa vào thông tin của
khoá chính trên bảng dữ liệu tương ứng

o Nguyên tắc này được gọi là nguyên tắc phụ thuộc (DEPENDENT)

– Tự động chuyển người sử dụng qua một chương trình khác để cho phép
người sử dụng thêm vào quan hệ tương ứng một hàng mới với khoá chính
cần thiết

o Nguyên tắc này được gọi là nguyên tắc tự động (AUTOMATIC)

– Chấp nhận bộ mới với khoá ngoại lai là null, nếu đồng ý chấp nhận null đối
với khoá ngoại lai

o Nguyên tắc này được gọi là nguyên tắc làm rỗng (NULLIFY)
51
Các quy tắc toàn vẹn dữ liệu
• Phép toán Thay đổi (Update): Để xác định sẽ xử lý như thế nào khi người
sử dụng cố tình thay đổi khoá chính có liên hệ với một khoá ngoại lai, có
thể chọn một trong 3 hướng giải quyết sau đây:
– Tự động thay đổi giá trị của khoá ngoại lai cho khớp với giá trị mới của
khoá chính
o Nguyên tắc này được gọi là nguyên tắc thác đổ hay dây chuyền
(CASCADE)
– Chỉ cho phép thay đổi giá trị khoá chính ở hàng hiện không có giá trị
của khoá chính khớp với giá trị hiện có của khoá ngoại lai tương ứng
o Nguyên tắc này được gọi là nguyên tắc hạn chế (RESTRICT)
– Cho khoá ngoại lai về null đối với các hàng có giá trị của khoá ngoại
lai hiện khớp với giá trị của khoá chính cần thay đổi, nếu đồng ý chấp
nhận null đối với khoá ngoại lai
o Đây là nguyên tắc làm rỗng (NULLIFY) 52
Các quy tắc toàn vẹn dữ liệu
• Phép toán Xoá (Delete): Nếu người sử dụng cố tình xoá một hàng chứa giá
trị của khoá chính mà ít nhất có một bảng dữ liệu hiện đang sử dụng giá trị
này cho khoá ngoại lai thì quy tắc toàn vẹn dữ liệu có thể tăng cường bằng
một trong ba nguyên tắc sau đây (cũng tương tự như với phép thay đổi ở
trên):
– Tự động xoá tất cả các hàng trong tất cả các bảng dữ liệu có giá trị của
khoá ngoại lai trùng với giá trị của khoá chính cần xoá
o Nguyên tắc này được gọi là nguyên tắc thác đổ hay dây chuyền
(CASCADE)
– Chỉ cho phép xoá giá trị khoá chính ở hàng hiện không có giá trị của
khoá chính khớp với giá trị hiện có của khoá ngoại lai tương ứng
o Nguyên tắc này được gọi là nguyên tắc hạn chế (RESTRICT)
– Cho khoá ngoại lai về null đối với các hàng có giá trị của khoá ngoại
lai hiện khớp với giá trị của khoá chính cần xoá, nếu đồng ý chấp nhận
null đối với khoá ngoại lai
53
o Đây là nguyên tắc làm rỗng (NULLIFY)
2
Chuyển từ Mô hình thực thể liên kết
sang Mô hình quan hệ

54
Chuyển từ thực thể sang quan hệ

• Tên thực thể  Tên quan hệ


• Các thuộc tính của thực thể Các thuộc tính của QH.

name
dob
roll#
Student (roll#, name, dob,
Student addr, school)
school addr

55
Chuyển từ liên kết sang quan hệ

• Chuyển liên kết nhiều ngôi thành các liên kết hai ngôi:
– Coi liên kết như tập thực thể

Sinh
Sinh viên
viên Sinh viên
1
N
N 1
Khoa
Khoa Học Học Khoa
N
1
Khóa
Khóa Khóa

56
Chuyển từ liên kết sang quan hệ

• Chuyển liên kết 2 ngôi:


– Liên kết 1:1: nên ghép 2 thực thể này lại để thành một thực thể
chung, rồi chuyển thực thể chung này thành QH
– Liên kết M:N:
o Tên liên kết  Tên quan hệ
o Thuộc tính của quan hệ =  các thuộc tính khóa của các thực thể thành viên.

– Liên kết 1:N: chỉ cần thêm thuộc tính khóa của thực thể ở đầu 1 vào
thực thể ở đầu N, thì liên kết này có thể được bỏ đi.

57
Chuyển từ liên kết sang quan hệ

Ví dụ về chuyển liên kết hai ngôi:


Sinh viên (ID_SV, Tên
ID_SV ID_Khóa
SV);
M N
Sinh viên Học Khóa Khóa (ID_Khóa, Tên
khóa);

Tên SV Tên khóa Học (ID_SV, ID_Khóa);

ID_SV ID_Lớp
Sinh viên (ID_SV, Tên SV,
M 1
Sinh viên Học Lớp
ID_Lop);

Tên SV Tên lớp Lớp (ID_Lớp, Tên lớp);

58
Chuyển từ liên kết sang quan hệ

• Chuyển liên kết ISA sang quan hệ: không cần phải
tạo quan hệ mới cho loại liên kết này, nhưng các thực thể
tham gia một cây liên kết này cần được xử lý đặc biệt
theo 1 trong 3 cách như sau:
– Theo góc nhìn Thực thể/Liên kết: với mỗi thực thể E trong cây
liên kết, tạo một quan hệ mà chứa các thuộc tính khóa của gốc và
các thuộc tính thuộc về E.
– Theo cách tiếp cận hướng đối tượng: Coi các thực thể như các
đối tượng thuộc về một lớp. Với mỗi cây con của cây liên kết, thì
tạo ra một quan hệ mà chứa tất cả các thuộc tính của cây con đó.
– Sử dụng giá trị rỗng (NULL values): tạo ra một quan hệ duy
nhất bao gồm tất cả các thuộc tính của các thực thể trong cây liên
kết.

59
Chuyển từ liên kết sang quan hệ

• Ví dụ chuyển cây liên kết sau:


address
name dob

ID Person

isa isa
roll# emp#

Student Employee

school
company

60
Chuyển từ liên kết sang quan hệ

– Theo góc nhìn Thực thể/liên kết ta được các quan hệ

Person(ID, name, address, dob)


Student(ID, roll#, school)
Employee(ID, emp#, company)

61
Chuyển từ liên kết sang quan hệ

– Theo góc nhìn Thực thể/liên kết ta được các quan hệ:
o Cây liên kết trên có 4 cây con:
 Một mình Person
 Person và Student
 Person và Employee
 Cả 3 tập thực thể
o Từ đó ta sẽ có 4 quan hệ:
 Person(ID, name, address, dob)
 PersonS(ID, name, address, dob, roll#, school)
 PersonE(ID, name, address, dob, emp#, company)
 PersonSE(ID, name, address, dob, roll#, school , emp#,
company)

62
Chuyển từ liên kết sang quan hệ

– Theo cách sử dụng giá trị rỗng: Từ cây liên kết, ta tạo ra
1 quan hệ duy nhất:

Person(ID, name, address, dob, roll#, school , emp#,


company))

63
VIỆN ĐIỆN TỬ - VIỄN THÔNG
School of Electronics and telecommunications

KỸ THUẬT PHẦN MỀM ỨNG DỤNG


Chương 2
Các pha trong phát triển phần mềm
Phần 7
Thiết kế hệ thống – Thiết kế giao diện

1
Các nội dung chính

• Các loại giao diện

• Tầm quan trọng của giao diện

• Các quy tắc thiết kế giao diện

• Các bước thiết kế

2
Các loại giao diện

• Giao diện giữa các module chương trình

• Giao diện giữa các modul và các thiết bị/hệ thống bên ngoài

• Giao diện người máy: giao diện giữa người sử dụng và phần
mềm

3
Tầm quan trọng của giao diện

• Là bộ mặt của phần mềm: cần rõ ràng, sáng sủa, thân


thiện.

• Là nơi cung cấp các chức năng cho người dùng: cần đầy đủ
các chức năng, dễ sử dụng và sử dụng an toàn.

• Là nơi cung cấp các trợ giúp: cần hiểu được các nhu cầu trợ
giúp và giúp đỡ kịp thời và hiệu quả.

• Là công cụ sử dụng hàng ngày: nên cần khả năng tùy biến
và linh hoạt để tránh nhàm chán và sử dụng ngày càng hiệu
quả.

4
Các quy tắc thiết kế

• Các quy tắc vàng:


1. Luôn đặt người dùng vào vị trí điều khiển

2. Giảm thiểu gánh nặng ghi nhớ của người dùng

3. Tạo giao diện nhất quán

5
Quy tắc 1: Luôn đặt người dùng vào vị trí điều khiển

• Ý nghĩa:
– Giao diện cần phải giúp người dùng luôn duy trì quyền điều
khiển chương trình, chứ không phải bị điều khiển bởi chương
trình

– Việc thiết kế giao diện cần đứng từ góc độ người dùng và vì


người dùng, chứ không chỉ ở góc độ của người phát triển hệ
thống dùng chương trình.

6
Quy tắc 1: Luôn đặt người dùng vào vị trí điều khiển

• Các nguyên tắc cho phép cụ thể hóa quy tắc 1:


– Xác định các chế độ tương tác (interaction modes) phù hợp, sao cho
chúng không bắt người dùng phải thực hiện các hành động không
mong muốn hay không cần thiết

– Cung cấp nhiều loại tương tác linh hoạt: cho phép người dùng có nhiều
lựa chọn loại hình tương tác, như bàn phím, chuột, cảm ứng, giọng
nói,v.v.

– Cho phép tương tác có thể bị ngắt và làm lại (undo)

– Cho phép giao diện có thể tùy biến và tiến hóa theo sở thích và kinh
nghiệm của người dùng

– Che dấu các chi tiết kỹ thuật bên trong không cần thiết khỏi người dùng
thông thường
7
Quy tắc 2: Giảm thiểu gánh nặng ghi nhớ của người
dùng

• Ý nghĩa:
– Quy tắc này giúp người dùng sử dụng hệ thống cảm thấy thoải
mái hơn, thao tác chính xác hơn, giảm thiểu công sức phải nhớ,
cũng như các lỗi do việc nhớ không chính xác

8
Quy tắc 2: Giảm thiểu gánh nặng ghi nhớ của người
dùng

• Các nguyên tắc cụ thể:


– Giảm thiểu yêu cầu ghi nhớ ngắn hạn: như các hành động đã
thực hiện, các dữ liệu đã nhập, các cửa sổ trước,v.v

– Thiết lập các giá trị mặc định có ý nghĩa

– Xác định các shortcut trực quan và dễ nhớ

– Hé mở thông tin theo một cách dần dần

9
Quy tắc 3: Tạo giao diện nhất quán

• Ý nghĩa:
– Các giao diện của một hệ thống cần phải theo một phong cách
thống nhất nào đó, như các form nhập liệu theo một cách bố trí
nhất định, các báo cáo có cùng định dạng nhất định, các cửa sổ
có cùng phong cách nhất định

– Tính nhất quán của giao diện sẽ làm người dùng cảm thấy thân
thiện hơn, dễ sử dụng hơn, thích nghi nhanh hơn. Đồng thời nó
cũng giảm thiểu các sai sót, thời gian làm quen của người dùng
với hệ thống

10
Quy tắc 3: Tạo giao diện nhất quán

• Các nguyên tắc cụ thể:


– Cho phép người dùng đặt công việc hiện tại trong khung cảnh
có ý nghĩa: giao diện luôn cho phép NSD biết họ đang ở đâu và
đang làm gì, cái gì đã làm, cái gì sẽ làm tiếp theo

– Duy trì sự nhất quán trong một họ các ứng dụng

– Hạn chế thay đổi các phong cách giao diện mà đã tạo được ấn
tượng tốt với người dùng. Chỉ nên thay đổi khi có lý do chính
đáng

11
Các kiểu tương tác của người dùng

• Thao tác trực tiếp (direct manipulation)

• Chọn menu (menu selection)

• Điền vào form (form fill-in)

• Ngôn ngữ lệnh (command language)

• Ngôn ngữ tự nhiên (natural language)

12
Các kiểu tương tác của người dùng

Các kiểu tương tác của người dùng


Kiểu Ưu điểm Nhược điểm Ví dụ ứng dụng
tương
tác
Thao tác Tương tác nhanh Có thể khó cài đặt. Video games
trực tiếp và trực quan Chỉ phù hợp khi có ẩn dụ hình ảnh Hệ thống CAD
Dễ học cho các tác vụ và các đối tượng.

Chọn Tránh lỗi người Thao tác chậm đối với người sử Phần lớn các hệ thống
menu dùng dụng có kinh nghiệm. thông dụng
Yêu cầu gõ ký tự ít Có thể trở nên phức tạp nếu có
nhiều lựa chọn menu.
Điền vào Nhập dữ liệu đơn Tốn nhiều không gian màn hình Khai thuế, xử lý nợ cá
form giản Rắc rối xảy ra khi các lựa chọn nhân
Dễ học của người dùng không khớp với
Kiểm tra được các trường của form.
Ngôn ngữ Mạnh và linh động Khó học Hệ điều hành, hệ
lệnh Quản lý lỗi kém. thống
điều khiển và lệnh
Ngôn ngữ Người sử dụng Yêu cầu gõ nhiều. Hệ thống truy vấn
tự bình thường có thể Hệ thống hiểu ngôn ngữ tự nhiên thông tin
nhiên dùng được. không tin cậy được
Dễ mở rộng
13
Các bước thiết kế giao diện

• Phân tích môi trường, người dùng, các công việc

• Thiết kế giao diện

• Cài đặt giao diện

• Kiểm tra tính hợp lệ của giao diện

14
Các bước thiết kế giao diện

15
Phân tích người dùng, tác vụ, môi trường
• Nếu không hiểu người dùng muốn làm gì với hệ thống, ta khó có thể thiết
kế nên một giao diện hiệu quả.

• Phân tích người dùng phải được mô tả sao cho cả người dùng và người
thiết kế có thể hiểu được.

• Sử dụng kịch bản trong đó mô tả các tình huống sử dụng hệ thống cũng là
một cách để mô tả các phân tích này

• Các kỹ thuật phân tích:

– Phân tích tác vụ: Mô hình hóa các bước để hoàn thành một tác vụ.

– Phỏng vấn: Hỏi người sử dụng về công việc họ làm.

– Quan sát: Quan sát người sử dụng tại nơi làm việc.

16
Phân tích tác vụ theo cây phân cấp

17
Phỏng vấn
• Thiết kế phỏng vấn dưới dạng cấu trúc linh động, dựa vào
các câu hỏi mở.

• Người dùng có thể cung cấp thông tin mà họ nghĩ là cần


thiết, không chỉ là những thông tin mà bạn nghĩ cần phải thu
thập.

• Phỏng vấn theo nhóm cho phép người dùng thảo luận với
nhau về những gì họ làm.

18
Quan sát

• Quan sát người dùng tại nơi làm việc và đặt câu hỏi về công
việc của họ (không có kịch bản sẵn ).

• Có giá trị vì nhiều tác vụ người dùng trực quan và họ thấy


khó khăn khi diễn đạt và giải thích.

• Hỗ trợ cho việc hiểu vai trò xã hội và ảnh hưởng về mặt tổ
chức lên công việc.

19
Tạo protype cho giao diện người dùng

• Mục tiêu là cho phép người dùng có những trải nghiệm trực
tiếp với giao diện.

• Không có những kinh nghiệm này, không thể đánh giá được
tính sử dụng của một giao diện.

• Xây dựng prototype có thể có hai giai đoạn:


– Giai đoạn đầu, xây dựng prototype trên giấy

– Sau đó, thiết kế được tinh chỉnh, phát triển các bản mẫu tự động hóa
với độ phức tạp ngày càng tăng.

20
Xây dựng prototype trên
giấy

• Đi một lượt qua các kịch bản và phác thảo các giao diện.

• Sử dụng kỹ thuật storyboard để biểu diễn một chuỗi các


tương tác với hệ thống.

• Xây dựng prototype trên giấy là cách hiệu quả để lấy


phản hồi từ khách hàng.

21
Các kỹ thuật xây dựng prototype

• Xây dựng dựa vào kịch bản:


– Phát triển một tập các kịch bản và màn hình bằng công cụ như
Macromedia Director

– Khi người dùng tương tác với prototype này,màn hình sẽ chuyển qua
một màn hình khác.

• Lập trình trực quan:


– Sử dụng một ngôn ngữ chuyên dụng để phát triển giao diện nhanh
như Visual Basic.

• Xây dựng dựa vào internet:


– Sử dụng web browser và các script liên quan.

22
Đánh giá giao diện

• Nên tiến hành đánh giá UI để xem giao diện đó đã hợp lý


hay chưa.

• Đánh giá đầy đủ rất tốn kém và thường không thực tế đối
với đa số hệ thống.

• Về lý tưởng, một giao diện nên được đánh giá dựa vào đặc
tả tính sử dụng. Tuy nhiên, các đặc tả như vậy hiếm khi
được tạo ra.

23
Các thuộc tính về tính sử dụng

Thuộc tính Mô tả
Tính có thể học được Một người dùng mới mất bao lâu để sử dụng
được hệ thống có hiệu quả?

Tốc độ thao tác Tốc độ trả lời của hệ thống có đáp ứng tốt được
công việc của người dùng hay không?

Tính chịu lỗi Mức độ chịu lỗi của hệ thống đối với lỗi người
dùng như thế nào?

Khả năng khôi phục Hệ thống khôi phục từ lỗi người dùng tốt đến
mức nào?

Tính tương thích Hệ thống gắn bó với một mô hình làm việc đến
đâu?

24
Các kỹ thuật đánh giá đơn giản

• Câu hỏi để lấy phản hồi từ người dùng.

• Quay video về việc sử dụng hệ thống và đánh giá.

• Cài các mã thu thập thông tin về các tiện ích sử dụng và lỗi
người dùng.

• Cung cấp chức năng trong chương trình để thu thập phản
hồi trực tuyến từ người dùng.

25
Các bước thiết kế giao diện

• Tham khảo chi tiết trong sách “Software Engineering – A


practitioner’s approach”

26
VIỆN ĐIỆN TỬ - VIỄN THÔNG
School of Electronics and telecommunications

KỸ THUẬT PHẦN MỀM ỨNG DỤNG


Chương 2
Các pha trong phát triển phần mềm
Phần 8
Thiết kế hệ thống – Thiết kế kiến trúc

1
Kiến trúc phần mềm

• Khái niệm:
“Là một cấu trúc bao gồm các thành phần phần mềm, các
tính chất có thể thấy được từ bên ngoài của các thành
phần này, và các liên kết giữa chúng”
• Các thành phần phần mềm có thể gồm:
– Các module

– Các cấu trúc dữ liệu, cơ sở dữ liệu

2
Kiến trúc phần mềm

• Mục đích sử dụng:


– Để đánh giá tính hiệu quả của phần mềm trong việc đáp ứng các
y/c của hệ thống
– Cân nhắc để chọn ra kiến trúc phù hợp nhất giữa các kiến trúc
khác nhau
– Giúp dự trù sớm và tương đối chính xác các tài nguyên cần chuẩn
bị cho giai đoạn cài đặt phần mềm
– Đóng vai trò như thiết kế tổng thể, làm nền tảng cho các thiết kế
chi tiết sau đó
– Giúp giảm thiểu các rủi ro trong quá trình xây dựng phần mềm sau
này

3
Kiến trúc phần mềm

• Các mô hình kiến trúc


– Mô hình Model-View-Controller (MVC)

– Mô hình kiến trúc phân tầng

– Mô hình Repository

– Mô hình client–server

– Mô hình pipe and filter

4
Mô hình Model-View-Controller (MVC)

Tên Mô hình MVC (Model-View-Controller)


Mô tả Tách riêng phần biểu diễn và phần tương tác ra khỏi dữ liệu hệ thống. Hệ
thống được cấu trúc hóa thành ba component logic tương tác với nhau.
- Model component: quản lý dữ liệu hệ thống và các thao tác trên dữ trên
dữ liệu đó.
- View component: định nghĩa và quản lý cách dữ liệu được biểu diễn tới
người dùng như thế nào.
- Controller component: Quản lý tương tác người dùng ( ví dụ như ấn phím,
nhấp chuột, ...) và chuyển các tương tác này tới View và Model.
Sử Được sử dụng khi có nhiều cách biểu diễn và tương tác với dữ liệu. Cũng
dụng được sử dụng khi chưa biết được các yêu cầu tương lai cho tương tác và
khi nào biểu diễn dữ liệu.
Ưu Cho phép dữ liệu thay đổi độc lập với việc biểu diễn của nó và ngược lại. Hỗ
điểm trợ biểu diễn theo nhiều cách khác nhau trên cùng một dữ liệu.
Nhược Có thể chứa code bổ sung và code sẽ phức tạp hơn khi mô
điểm hình dữ liệu và mô hình tương tác đơn giản.

5
Mô hình Model-View-Controller (MVC)

6
Ví dụ: Kiến trúc ứng dụng Web sử dụng mô hình MVC

7
Mô hình kiến trúc phân tầng
• Được sử dụng để mô hình hóa giao diện của các hệ thống
con.

• Tổ chức hệ thống thành một tập các tầng, mỗi tầng cung
cấp một tập các dịch vụ.

• Hỗ trợ việc phát triển dần dần các hệ thống con trên các
tầng khác nhau. Khi giao diện của tầng thay đổi, chỉ các
tầng lân cận mới bị ảnh hưởng.

8
Mô hình kiến trúc phân tầng

Tên Kiến trúc phân tầng


Mô tả Tổ chức hệ thống thành các tầng, mỗi tầng chứa các chức năng
liên quan đến nhau. Một tầng cung cấp các dịch vụ cho tầng trên
của nó vì vậy các tầng thấp nhất biểu diễn các dịch vụ lõi được sử
dụng trong toàn bộ hệ thống.
Sử Được sử dụng khi xây dựng các tính năng mới dựa trên những hệ
dụng thống có sẵn; khi việc phát triển được dàn trải trên nhiều nhóm
khi khác nhau và mỗi nhóm chịu trách nhiệm về chức năng của một
nào tầng; khi có một yêu cầu về bảo mật ở nhiều mức độ.
Ưu Cho phép thay thế các phần miễn là interface được duy trì. Các
điểm chức năng dư thừa (ví dụ như phân quyền) có thể được cung cấp ở
mỗi tầng để tăng độ tin cậy của hệ thống.

Nhược Thực tế, cung cấp một sự phân chia rõ rệt giữa các tầng thường rất
điểm khó khăn và tầng cao hơn có thể tương tác trực tiếp với tầng thấp
hơn hơn là thông qua một tầng bên dưới nó. Hiệu năng cũng có
thể là một vấn đề vì nhiều mức diễn giải của một yêu cầu dịch vụ
khi nó được thực hiện tại mỗi tầng.
9
Mô hình phân tầng tổng quát

10
Mô hình Repository

• Các hệ thống con phải trao đổi dữ liệu với nhau. Có hai
khả năng:
– Việc chia sẻ dữ liệu được thực hiện ở cơ sở dữ liệu trung tâm
hay còn gọi là kho dữ liệu, kho này được truy cập bởi tất cả các
hệ thống con.

– Mỗi hệ thống con duy trì một cơ sở dữ liệu riêng và chuyển dữ


liệu trực tiếp tới các hệ thống con khác.

• Khi có một lượng lớn dữ liệu cần chia sẻ, mô hình về


chia sẻ là mô hình phổ biến nhất và là cơ chế chia sẻ dữ
liệu hiệu quả nhất.
11
Mô hình Repository

Tên Kiến trúc repository


Mô tả Tất cả các dữ liệu trong hệ thống được quản lý ở một kho trung tâm, kho
này được truy cập bởi tất cả các component của hệ thống. Các component
không tương tác trực tiếp với nhau, chỉ thông qua kho chung thôi.

Sử Sử dụng mô hình này khi ta có một hệ thống trong đó một lượng lớn thông
dụng tin được sinh ra phải được lưu trữ trong một thời gian dài. Ta cũng có thể
khi sử dụng nó trong các hệ thống hướng dữ liệu trong đó dữ liệu trong kho
nào kích hoạt hành động hay công cụ.
Ưu Các component có thể độc lập với nhau – chúng không cần biết sự tồn tại
điểm của các component khác. Các thay đổi xảy ra ở một component không ảnh
hưởng tới các component khác. Tất cả các dữ liệu có thể được quản lý một
cách nhất quán (ví dụ như backup dữ liệu được thực hiện đồng thời) vì tất
cả dữ liệu được lưu trữ ở cùng một nơi.
Nhược Các vấn đề xảy ra trên kho chung ảnh hưởng đến toàn hệ thống. Có thể
điểm không hiệu quả trong việc tổ chức các giao tiếp thông qua kho. Phân tán
kho trên nhiều máy tính có thể khó khăn.

12
Một kiến trúc repository cho một IDE

13
Mô hình client - server

• Các mô hình hệ thống phân tán chỉ ra cách dữ liệu và


các xử lý được phân tán trên nhiều component như thế
nào.

• Tập hợp các server độc lập cung cấp các dịch vụ cụ thể
ví dụ như in ấn, quản trị dữ liệu, ...

• Tập hợp các khách hàng triệu gọi các dịch vụ này.

• Hệ thống mạng cho phép người dùng truy cập vào các
server.

14
Mô hình client - server

Tên Mô hình client - server


Mô tả Trong một kiến trúc client–server, chức năng của hệ thống được tổ chức
thành các dịch vụ, mỗi dịch vụ được đặt trên một server riêng lẻ. Khách
hàng là người sử dụng các dịch vụ này và truy cập vào các server để sử
dụng dịch vụ.

Sử Được sử dụng khi dữ liệu trong một cơ sở dữ liệu chia sẻ phải truy cập từ
dụng nhiều nơi. Vì các server được truy cập từ nhiều nơi khác nhau, có thể được
khi sử dụng khi tải trên hệ thống thay đổi.
nào
Ưu Ưu điểm chính là server được phân tán trên mạng. Chức năng chung (dịch
điểm vụ in ấn chẳng hạn) có thể có sẵn cho tất cả các khách hàng và không cần
thiết phải cài đặt toàn bộ các dịch vụ.

Nhược Mỗi dịch vụ là một điểm đơn gây lỗi vì vậy dễ bị tấn công từ chối dịch vụ
điểm hoặc lỗi server. Hiệu năng có thể không dự đoán trước được do nó phụ
thuộc vào mạng cũng như hệ thống. Có thể có các vấn đề về quản lý nếu
server được sở hữu bởi các tổ chức khác nhau.

15
Ví dụ về mô hình client - server cho
một thư viện phim ảnh

16
Mô hình pipe filter
• Các chuyển đổi chức năng xử lý các đầu vào và tạo ra các đầu ra.
• Các biến thể của phương pháp này rất phổ biến. Khi các chuyển đổi là tuần
tự, đây là mô hình xử lý khối tuần tự mà các hệ thống xử lý dữ liệu sử
dụng.
• Không thật sự phù hợp với các hệ thống tương tác.

17
Mô hình pipe filter
Tên Mô hình pipe filter
Mô tả Việc xử lý dữ liệu trong một hệ thống được tổ chức sao cho mỗi
component xử lý (filter) là rời rạc và tiến hành một loại xử lý dữ
liệu. Dòng dữ liệu (pipe) đi từ một component đến một component
khác để xử lý.
Sử Thường sử dụng trong các ứng dụng xử lý dữ liệu ( cả ứng dụng
dụng xử lý khối và xử lý giao tác) trong đó các đầu vào được xử lý ở
khi các giai đoạn rời rạc để tạo ra các đầu ra tương ứng.
nào
Ưu Dễ hiểu và hỗ trợ việc tái sử dụng chuyển đổi. Kiểu dòng dữ liệu
điểm phù hợp với cấu trúc của của nhiều quy trình công việc. Tiến hóa
bằng cách thêm vào các chuyển đổi là dễ dàng. Có thể cài đặt
theo kiểu hệ thống tuần tự hoặc song song.
Nhược Format của dữ liệu truyền đi phải được chấp thuận trong việc giao
điểm tiếp giữa các chuyển đổi. Mỗi chuyển đổi phải phân tích cú pháp
đầu vào của nó và chuyển nó thành đầu ra ở dạng được chấp
nhận. Điều này gây khó khăn trong việc tái sử dụng các chuyển
đổi hàm mà cấu trúc dữ liệu không tương thích.
18
Ví dụ về mô hình pipe filter

19

You might also like