Viện Điện tử - Viễn thông
Bộ Môn Điện tử - Kỹ thuật máy tính
Kỹ thuật phần mềm ứng dụng
Giới thiệu tổng quan
1
Các nội dung chính
•
•
•
•
Mục đích môn học
Các nội dung chính của môn học
Các yêu cầu của môn học
Tài liệu tham khảo
2
Mục đích môn học
• Các khái niệm cơ bản trong kỹ thuật phần
mềm (software engineering)
• Các bước cơ bản xây dựng phần mềm, từ lập
kế hoạch, thu thập các yêu cầu, 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
3
Các nội dung chính của môn học
• Các khái niệm cơ bản về kỹ thuật phần mềm
• Các mô hình phát triển phần mềm
• Các giai đoạn trong mô hình phát triển PM
4
Viện Điện tử - Viễn thông
Bộ Môn Điện tử - Kỹ thuật máy tính
Kỹ thuật phần mềm ứng dụng
Chương 1: Tổng quan môn học
Các nội dung chính
•
•
•
•
Giới thiệu chung
Các khái niệm cơ bản
Các loại phần mềm
Giới thiệu các mô hình tiến trình phổ biến
2
Giới thiệu chung
• Kỹ thuật phần mềm (hay kỹ nghệ phần mềm
– software engineering) là một chuyên ngành
kỹ thuật (engineering discipline) với trọng tâm
nhằm phát triển các hệ thống phần mềm chất
lượng cao một cách hiệu quả
• Phần mềm có đặc điểm là trừu tượng và
không chạm đến được (intangible). Điều này
làm cho phần mềm rất dễ trở nên phức tạp và
khó hiểu
3
Giới thiệu chung
• Khái niệm “Software Engineering” xuất hiện
lần đầu vào năm 1968 trong một cuộc họp bàn
về một vấn đề được gọi là “Cuộc khủng
hoảng phần mềm” (Software crisis)
• Chuyên ngành SE ra đời trong hoàn cảnh đó,
với sứ mạng tìm ra các biện pháp giúp ngành
công nghiệp phần mềm tránh được nguy cơ
khủng hoảng. Và thực sự, nó đã hoàn thành sứ
mạng này, và cái gọi là “cuộc khủng hoảng
phần mềm” đã không thực sự xảy ra.
4
Các khái niệm cơ bản
• 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
5
Các khái niệm cơ bản
• 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ên 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.
6
Các tầng của SE
Tools
Methods
Process
Quality Focus
7
Các tầng của SE
• Đảm bảo chất lượng (quality focus) 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
• Tầng Tiến trình (process) 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
• Các phương pháp (methods) kỹ thuật phần mềm cung cấp các chi
tiết kỹ thuật là làm thế nào để xây dựng được phần mềm
• Các công cụ (tools) cung cấp các phương tiện hỗ trợ tự động hoặc
bán tự động cho các giai đoạn hay các phương pháp. 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)
8
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)
9
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.
10
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?
11
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 (Prevention), còn gọi là tái kỹ thuật
phần mềm (software reengineering)
12
Tiến trình phần mềm
Lập kế hoạch dự án
Giai đoạn
định nghĩa
Thu thập các yêu cầu
Phân tích
Giai đoạn
Phát triển
Giai đoạn
Hỗ trợ
Thiết kế
Cài đặt và kiểm thử
Bảo trì
13
Tiến trình phần mềm
14
Tiến trình phần mềm
• Khung tiến trình chung (common process
framework): là mô hình chung cho các dự án phần
mềm khác nhau trong một tổ chức. Nó bao gồm:
– Các công việc trong khung (Framework activities)
gồm:
•
•
•
•
Các nhiệm vụ cụ thể (tasks)
Các mốc thời gian (milestones)
Các kết quả bàn giao (deliverables)
Các điểm kiểm tra chất lượng hệ thống (SQA points)
– Các công việc bao trùm (Umbrella activities) gồm:
• Quản lý chất lượng phần mềm
• QL cấu hình phần mềm
15
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.
16
Các loại phần mềm
• Phần mềm hệ thống (system software)
• Phần mềm thời gian thực (real time sw)
• Phần mềm quản lý (business sw): cũng được gọi là hệ
thông tin quản lý (management information system –
MIS)
• Phần mềm khoa học và công nghệ (engineering and
scientific sw)
• Phần mềm nhúng (embedded sw)
• Phần mềm văn phòng (office sw)
• Phần mềm Web (Web-based sw)
• Phần mềm trí tuệ nhân tạo (artificial intelligence sw)
• V.v.
17
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)
18
Mô hình tuyến tính cổ điển*
Thu thập các yêu cầu
Các yêu cầu hệ thống
Các yêu cầu phần mềm
Phân tích
Thiết kế chương trình
Cài đặt
Kiểm thử
Vận hành
19
Mô hình tuyến tính cổ điển
• Mô hình này có một số đặc điểm như sau:
– 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
20
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.
21
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 gia đoạn đầu của dự án phần mềm vì:
– 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ứ cũng 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,
cũng như khả năng thỏa mãn của khách hàng
mô hình bản mẫu
22
Mô hình bản mẫu
23
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.
24
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
25
Mô hình RAD
• Là mô hình tiến trình phát triển phần mềm tăng trưởng, nhưng nhấn
mạnh vào chu trình phát triển phần mềm có thời gian rất ngắn. Mô
hình này gồm các giai đoạn:
– Mô hình hóa nghiệp vụ (Business modeling): mô hình hóa các luồng
thông tin nghiệp vụ giữa các chức năng nghiệp vụ
– Mô hình hóa dữ liệu (Data modeling): từ các thông tin nghiệp vụ, các
thực thể dữ liệu, các thuộc tính của chúng, và các liên kết giữa các thực
thể này sẽ được xác định và được mô hình hóa.
– Mô hình hóa xử lý (Process modeling): Mô tả các chức năng xử lý
trên các đối tượng dữ liệu đã được xác định ở giai đoạn trên.
– Sản sinh ứng dụng (Application generation): RAD sử dụng các kỹ
thuật công nghệ phần mềm thế hệ thứ 4, cho phép dễ dàng sản sinh mã
chương trình từ các đặc tả và thiết kế trừu tượng. Các kỹ thuật này cũng
cho phép tái sử dụng các thành phần chương trình có sẵn (kết hợp mô
hình Component-based development).
– Kiểm thử và bàn giao (Testing and turnover): phần ứng dụng đã xây
dựng sẽ được kiểm tra và bàn giao cho bên tích hợp hệ thống.
26
Mô hình RAD
27
Mô hình RAD
•
u điểm:
– Tận dụng các công nghệ mới trong phát triển hệ thống,
cho phép hoàn thành hệ thống trong thời gian ngắn
hơn đáng kể.
– Khuyến khích việc tái sử dụng các thành phần của
chương trình
• Nhược điểm:
– Không phù hợp với các phần mềm mà không có sự
phân chia modul rõ ràng,
– Đòi hỏi tài nguyên và chi phí phát triển cao như số
lượng nhân lực nhiều, công cụ CASE thế hệ 4 đắt tiền
28
Mô hình tăng trưởng
• Là sự kết hợp của mô hình tuyến tính và triết
lý lặp lại của mô hình bản mẫu
• Phần mềm được chia thành các phần tăng
trưởng (increment), trong đó mỗi phần là một
sản phẩm hoàn chỉnh (đã chạy được và có thể
bàn giao cho người dùng). Đồng thời phần
tăng trưởng sau sẽ bổ sung thêm tính năng còn
thiếu trong những phần trước
29
Mô hình tăng trưởng
30
Mô hình tăng trưởng
•
u điểm
– Kết hợp được các ưu điểm của các mô hình tuyến tính
và làm bản mẫu
– Rất phù hợp khi số lượng nhân viên hạn chế, và người
dùng có đòi hỏi phải sớm có hệ thống thử nghiệm
• Nhược điểm
– Việc gấp gáp đưa ra các thành phần tăng trưởng cũng
có thể gây ra sự manh mún trong phân tích và thiết kế
– Khó khăn trong việc đảm bảo tính tương thích
(compatibility) giữa các thành phần tăng trưởng.
31
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.
32
Mô hình xoáy ốc
33
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.
34
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
35
Tóm tắt
• Các khái niệm cơ bản
• Các loại phần mềm
• Các mô hình tiến trình phổ biến
36
Thank you!
37
Viện Điện tử - Viễn thông
Bộ Môn Điện tử - Kỹ thuật máy tính
Kỹ thuật phần mềm ứng dụng
Chương 2: Quản trị dự án phần mềm
1
Các nội dung chính
• Các khía cạnh cần quản lý gồm 4 P:
– Con người (People)
– Sản phẩm phần mềm (Product)
– Tiến trình phần mềm (Process)
– Dự án (Project)
2
Con người
• Những người tham gia trong một dự án:
– Nhà quản trị cao cấp (senior managers): là người xác định vấn
đề nghiệp vụ và có ảnh hưởng rất quan trọng đến dự án.
– Nhà quản trị (về kỹ thuật) dự án (project managers): là người
lên kế hoạch, tổ chức, khuyến khích và kiểm tra công việc của
những nhân viên khác trong dự án.
– Nhân viên kỹ thuật (practitioners): là những người có những
kiến thức kỹ thuật cần thiết để tạo ra phần mềm
– Khách hàng (customers): là người xác định các yêu cầu cho
phần mềm và những cổ đông (stakeholders) có lợi ích liên quan
– Những người dùng cuối (end-users)
• Tổ chức về nhân sự trong một dự án:
– Thường tổ chức thành một hoặc nhiều team (nhóm), mỗi nhóm
có 1 team leader (trưởng nhóm).
3
Team – Vấn đề tổ chức
• Các cách tổ chức team:
– Dân chủ phi tập trung (Democratic decentralized – DD):
• Không có team leader thường trực
• Quyết định dựa trên sự thống nhất của nhóm
• Sự trao đổi diễn ra theo chiều ngang (horizontal communication)
– Phi tập trung có kiểm soát (Controlled decentralized CD):
• Có team leader thường trực
• Quyết định cũng hoạt động theo nhóm
• Sự trao đổi diễn ra theo cả hai chiều ngang và dọc
– Tập trung có kiểm soát (Controlled centralized – CC)
• Có leader thường trực
• Ra quyết định và điều phối là trách nhiệm của leader
• Sự trao đổi giữa leader và các thành viên khác là theo chiều dọc
4
Team – Vấn đề tổ chức
• Các tiêu chí quyết định cách tổ chức team:
– Mức độ khó của vấn đề cần giải quyết
– Kích thước của chương trình (size of the resultant
program)
– Thời gian tồn tại của nhóm
– Mức độ modul hóa của vấn đề
– Yêu cầu về chất lượng và độ tin cậy của hệ thống
– V.v.
5
Team
• Mục đích của việc tổ chức và quản lý team là để
tạo ra một team có năng suất làm việc cao (highperformance) và gắn kết (cohesiveness) tạo ra
một Team gắn bó (Jelled Team):
– Cần làm:
•
•
•
•
Có tổ chức phù hợp
Tin tưởng lẫn nhau
Các thôn g tin luôn rõ ràng và cởi mở
Phân chia công việc phù hợp
– Cần tránh:
• Chủ nghĩa làm việc đơn độc
• Thiếu tinh thần trách nhiệm
• Thái độ bất mãn
6
Team - Vấn đề điều phối và trao đổi
• Điều phối (coordination) và trao đổi
(communication) là rất cần thiết và quan trọng
do một số nhân tố:
– Mức độ của các nỗ lực phát triển (scale of
development efforts) là rất lớn
– Sự không chắc chắn thường xuyên xảy ra
– Tính tương thông (interoperability) là đặc tính
quan trọng của đa số các hệ thống
7
Team - Vấn đề điều phối và trao đổi
• Các kỹ thuật điều phối và trao đổi:
– Hình thức và không hình thức (formal & informal)
– Không liên quan và có liên quan đến cá nhân
(impersonal & interpersonal)
– Trao đổi điện tử
– Mạng xã hội
8
9
Sản phẩm
• Xác định phạm vi của sản phẩm phần mềm
(software scope), liên quan đến các mặt:
– Khung cảnh (context): là cái nhìn tổng quan về đường
ranh giới giữa sản phẩm cần phát triển và các thành
phần khác bên ngoài.
– Các mục đích về thông tin (information objectives):
là các yêu cầu cụ thể hơn về thông tin đầu vào và ra
của người dùng
– Các chức năng và hiệu năng (functions and
performance): là các yêu cầu về các chức năng cần
thực hiện, các ràng buộc về hiệu năng của chúng nếu
có.
10
Sản phẩm – Xác định phạm vi
Chức
năng A
Chức
năng B
Chức
năng C
11
Tiến trình phần mềm - Chọn tiến trình phù
hợp
• Chọn mô hình tiến trình phù hợp với phần
mềm cần phát triển
– Mô hình tuyến tính cổ điển
– Mô hình bản mẫu
– Mô hình RAD
– Mô hình tăng trưởng
– Mô hình xoáy ốc
12
Tiến trình phần mềm - Kết hợp tiến trình và
phần mềm
13
Tiến trình phần mềm – Chia tiến trình thành
các nhiệm vụ phù hợp
• Các bước trong các mô hình tiến trình thường
tương đối khái quát và trừu tượng, nên chúng
cần phải được xác định chi tiết hơn cho phù
hợp với từng dự án cụ thể.
• Điều này dẫn đến việc, từng công ty, tùy theo
loại hình phần mềm và dự án của mình, họ
thường đưa ra các mô hình tiến trình đầy đủ và
chi tiết phù hợp với hoàn cảnh thực tế của họ,
và nó sẽ trở thành Phương pháp luận phát
triển phần mềm của công ty đó.
14
Dự án (Project)
• Để quản lý thành công các dự án phần mềm, các nhà
quản lý cần nắm được các vấn đề giúp dự án thành
công, cũng như các vấn đề có thể dẫn đến thất bại.
• Có một số dấu hiệu giúp phát hiện việc quản lý dự án
đang có vấn đề nguy hại:
– Không hiểu rõ các yêu cầu của khách hàng
– Phạm vi của hệ thống xác định không đầy đủ
– Không có hay bất hợp lý trong việc ứng phó với các thay
đổi
– Thời gian thực hiện theo kế hoạch không hiện thực
– Thiếu nhân viên có các kinh nghiệm phù hợp
– V.v.
15
Tóm tắt
• Có 4 lĩnh vực mà nhà quản trị dự án cần quan
tâm:
– Con người
– Sản phẩm phần mềm
– Tiến trình phát triển
– Bản thân dự án
16
Thank you!
17
Viện Điện tử - Viễn thông
Bộ Môn Điện tử - Kỹ thuật máy tính
Kỹ thuật phần mềm ứng dụng
Chương 3: Kỹ thuật hệ thống (System
Engineering)
Các nội dung chính
•
•
•
•
•
Các khái niệm cơ bản
Sự phân cấp của kỹ thuật hệ thống
Kỹ thuật tiến trình nghiệp vụ
Kỹ thuật sản phẩm phần mềm
Kỹ thuật thu thập và xử lý yêu cầu
(requirements engineering)
Các khái niệm cơ bản
• Hệ thống máy tính (computer-based system):
– Định nghĩa: Là một tập hợp hay bố trí các phần tử mà
được tổ chức sao cho hoàn thành một mục tiêu xác định
nào đó qua việc xử lý thông tin [Pressman, p246]
– Các thành phần của hệ thống máy tính:
•
•
•
•
•
•
Phần mềm
Phần cứng
Con người
Cơ sở dữ liệu
Tài liệu
Thủ tục
Kỹ thuật hệ thống – Tính phân cấp
Business or
Product
World view
Domain of interest
System element
v
Domain view
Element view
Detail view
Kỹ thuật hệ thống – Phân loại
• Kỹ thuật tiến trình nghiệp vụ (Business Process
Engineering)
– Là kỹ thuật tập trung vào mặt nghiệp vụ của một tổ chức
– Mỗi nghiệp vụ có thể tạo ra nhiều sản phẩm phần mềm
• Kỹ thuật sản phẩm phần mềm (Product
Engineering)
– Là kỹ thuật tập trung vào việc sản xuất ra 1 sản phẩm phần
mềm cho một nghiệp vụ nào đó
Kỹ thuật tiến trình nghiệp vụ
• Mục đích: Là quá trình xác định các kiến trúc
cho phép một nghiệp vụ sử dụng thông tin một
cách hiệu quả.
• Các kiến trúc cần xác định:
– Kiến trúc dữ liệu (data architecture)
– Kiến trúc ứng dụng (application architecture)
– Hạ tầng thông tin (information infrastructure))
Kỹ thuật sản phẩm phần mềm
• Mục đích: là chuyển các yêu cầu của khách
hàng thành tập các tính năng (capabilities)
trong sản phẩm phần mềm.
• Tính chất:
– Nó cũng có tính phân cấp tương tự như kỹ thuật
tiến trình nghiệp vụ và kỹ thuật hệ thống
Kỹ thuật thu thập và xử lý yêu cầu
• Mục đích: là cơ chế phù hợp để giúp hiểu rõ khách
hàng cần gì, phân tích các yêu cầu, đánh giá tính khả
thi, đàm phán để đưa ra giải pháp hợp lý.
• Kỹ thuật này bao gồm 4 bước:
–
–
–
–
Thu thập các yêu cầu
Phân tích và đàm phán
Kiểm tra tính hợp lệ của các yêu cầu
Quản lý các yêu cầu
Requirements Engineering:
Thu thập các yêu cầu
• Mục đích: thu thập đầy đủ các loại yêu cầu
của hệ thống cần xây dựng
• Stakeholders: là bất kỳ cá nhân hay nhóm
người bị ảnh hưởng bởi hệ thống một cách trực
tiếp hay gián tiếp. Đây là những nguồn cung
cấp các yêu cầu cho hệ thống.
Requirements Engineering:
Thu thập các yêu cầu
• Phân loại các yêu cầu:
– Yêu cầu về chức năng (functional requirements):
mô tả các dịch vụ mà hệ thống có thể thực hiện
– Yêu cầu phi chức năng (non-functional
requirements): là các y/c liên quan đến các ràng
buộc như độ tin cậy, thời gian đáp ứng, độ an toàn,
tuân theo các tiêu chuẩn, v.v
Requirements Engineering:
Thu thập các yêu cầu
• Các khó khăn của việc thu thập y/c:
– Vấn đề xác định không rõ phạm vi của hệ thống:
• Không xác định rõ biên của hệ thống
– Vấn đề thấu hiểu hệ thống không đầy đủ:
•
•
•
•
Không rõ hệ thống cần làm gì
Không rõ vấn đề thực sự của hệ thống là gì
Mức độ hiểu khác nhau, dễ dẫn đến hiểu lầm, hiểu sai
Thường số lượng và chủng loại y/c khá nhiều, thậm chí có thể mâu
thuẫn với nhau
– Các yêu cầu lại luôn thay đổi:
• Do nhu cầu của người dùng
• Do sự thay đổi trong môi trường
Requirements Engineering:
Thu thập các yêu cầu
• Một số chỉ dẫn:
– Xác định rõ những người dùng có thể giúp mô tả
chi tiết các yêu cầu, cũng như các vấn đề của hệ
thống
– Xác định rõ môi trường kỹ thuật mà hệ thống sẽ
hoạt động trong đó (như kiến trúc tính toán, hệ
điều hành,v.v.)
– Tạo ra các kịch bản sử dụng (usage scenarios hay
use cases) nhằm giúp mô tả các y/c rõ ràng và chi
tiết hơn
Requirements Engineering:
Phân tích và đàm phán
• Phân tích y/c gồm:
– Phân loại các y/c: y/c chức năng, y/c dữ liệu, mức
độ ưu tiên của y/c
– Mô hình hóa các y/c: mô hình phân cấp chức năng,
biểu đồ luồng dữ liệu, mô hình thực thể-liên kết,
biểu đồ chuyển trạng thái
– Đặc tả các y/c
– Kiểm tra sự nhất quán (consistency), sự rõ ràng
(không nhập nhằng) của các y/c
Requirements Engineering:
Phân tích và đàm phán
• Đàm phán nhằm:
– Dung hòa các xung đột về y/c lợi ích giữa các
khách hàng với nhau cũng như với và nhà phát
triển
– Đánh giá lại các y/c, nhằm chọn giải pháp phù hợp
đáp ứng các y/c để giảm thiểu các rủi ro
Requirements Engineering:
Kiểm tra tính hợp lệ của các y/c
• Giai đoạn này nhằm kiểm tra:
– Tính rõ ràng, không nhập nhằng của các y/c
– Các y/c là nhất quán
– Các y/c tuân thủ các quy định của tổ chức, của các
tiêu chuẩn mà tổ chức đang tuân theo hoặc hướng
tới.
Requirements Engineering:
Quản lý các y/c
• Giai đoạn này nhằm xác định và kiểm soát
hiệu quả các thay đổi của các y/c. Nó gồm các
công việc:
– Phân loại và đánh số các y/c
– Xây dựng các bảng theo dõi (traceability tables),
có khả năng theo dõi các thay đổi của các y/c và
ảnh hưởng của chúng
– Cập nhật thường xuyên các bảng theo dõi khi có
thay đổi trong các y/c
Tóm tắt
• Tính phân cấp của kỹ thuật hệ thống cho phép
nhìn hệ thống ở nhiều mức khác nhau
• Mối liên hệ giữa Kỹ thuật tiến trình nghiệp vụ
và Kỹ thuật sản phẩm phần mềm
• Các bước cơ bản trong Kỹ thuật thu thập và xử
lý yêu cầu
Thank you!
Viện Điện tử - Viễn thông
Bộ Môn Điện tử - Kỹ thuật máy tính
Kỹ thuật phần mềm ứng dụng
Chương 4: Các khái niệm và các
nguyên tắc phân tích
Các nội dung chính
•
•
•
•
Giới thiệu về giai đoạn phân tích
Các bước trong giai đoạn phân tích
Một số kỹ thuật phân tích
Các nguyên tắc phân tích
Giới thiệu về giai đoạn phân
tích
• Mục đích:
– Xác định rõ vấn đề của hệ thống hiện tại
• Thời gian thực hiện kéo dài quá mức
• Thường xuyên có sai sót do thực hiện thủ công
– Từ đó đề xuất các giải pháp khả thi cho vấn đề
• Nhà phân tích cần chỉ rõ cho khách hàng tính khả thi
của giải pháp phần mềm đối với các vấn đề trên
Các bước phân tích
•
•
•
•
Xác định vấn đề
Đánh giá và tổng hợp các giải pháp
Mô hình hóa
Đặc tả
Các kỹ thuật phân tích
• Đặt câu hỏi:
– Chọn các câu hỏi từ khái quát cho đến chi tiết
• Câu hỏi khái quát: là những câu hỏi không trực tiếp
đến hệ thống đang làm cụ thể những gì, mà khái quát hệ
thống làm gì, ai đang dùng hệ thống, và những vấn đề
nổi cộm là gì
• Câu hỏi chi tiết: sẽ làm rõ hơn từng chức năng, từng
thông tin vào/ra hệ thống, từng hành vi của hệ thống, rồi
từng nghiệp vụ của từng người dùng
Các kỹ thuật phân tích
• FAST (Facilitated Application Specification
Techniques): kỹ thuật này có một số đặc điểm:
– Tạo nhóm liên kết (joint team): gồm các thành
viên là khách hàng và nhà phát triển
– Tổ chức các cuộc họp của nhóm liên kết: để các
thành viên có thể gặp nhau và thảo luận để cùng
phân tích các vấn đề và cùng tìm ra các giải pháp
Các kỹ thuật phân tích
• Use-case: còn gọi là kịch bản
– Là bản mô tả việc sử dụng hệ thống của một người
sử dụng
• Các bước xây dựng một UC:
– Xác định những người dùng (user) và vai trò của
mỗi người (actor). Mỗi người dùng có thể có nhiều
vai trò khác nhau
– Với mỗi vai trò của người dùng, xây dựng chi tiết
kịch bản sử dụng của người đó với hệ thống
Các nguyên tắc phân tích
• Thông tin của bài toán cần được biểu diễn và được
hiểu thấu
• Các chức năng của phần mềm phải được xác định
• Hành vi của phần mềm (dãy các sự kiện bên ngoài)
phải được biểu diễn
• Các mô hình mô tả thông tin, các chức năng và hành
vi phải được phân chia phân mức để có thể làm rõ các
thông tin chi tiết
• Tiến trình phân tích nên chuyển dần từ các thông tin
thiết yếu sang các chi tiết cài đặt
Thank you!
Chương 5
Mô hình dữ liệu quan hệ
Phần 1
Nội dung chính
Giới thiệu về Mô hình dữ liệu
Tổng quan về Mô hình dữ liệu quan hệ
2
2/19
Tổng quan về Mô hình dữ liệu
3/19
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/19
Tóm tắt lịch sử của các Mô hình dữ liệu
5/19
Tóm tắt lịch sử của các Mô hình dữ liệu
6/19
Tổng quan về Mô hình dữ liệu quan hệ
7/19
Quan hệ là gì?
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)
8/19
Quan hệ là gì?
Ví dụ: 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”
9/19
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ệ đó, cùng một số thông tin ràng
buộc của các thuộc tính.
Ví dụ: Lược đồ của quan hệ Customers ở
trên:
Customers(Customers ID, tax ID, name,
address)
10/19
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)
11/19
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ợ
12/19
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.
13/19
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ộ.
14/19
Khóa của quan hệ
Khóa (key) của một quan hệ r là một hoặc
một tập hợp các thuộc tính của r, sao cho
với một thể hiện của r, thì không tồn tại 2
bộ nào mà giá trị của các thành phần bằng
nhau trên khóa.
Hay nói cách khác, giá trị của các thành
phần trên Khóa của mỗi bộ trong một thể
hiện của quan hệ r là duy nhất.
15/19
Khóa của quan hệ
Có hai loại Khóa của quan hệ
Khóa của một thể hiện của quan hệ
Khóa của lược đồ của quan hệ: là khóa của mọi thể hiện của
QH đó
VD: với thể hiện s1 của quan hệ Student sau:
ID_SV
Name
Address
Class
20091111
Nguyễn Văn A
Hà nội
ĐT1
20091112 Nguyễn Hồng B
Quảng ninh
ĐT2
20091113 Trần Lê C
Hà tây
ĐT1
20091114 Võ Thị D
Bắc giang
ĐT2
Có các Khóa là:
K1 = ID_SV
K2 = Name
K3 = Address
16/19
Khóa của quan hệ
VD: nhưng với thể hiện s2 của quan hệ Student sau:
ID_SV
Name
Address
Class
20091111
Nguyễn Văn A
Hà nội
ĐT1
20091112
Nguyễn Hồng B
Quảng ninh
ĐT2
20091113
Nguyễn Văn A
Hà tây
ĐT1
20091114
Võ Thị D
Hà nội
ĐT2
thì chỉ còn một Khóa là:
K1 = ID_SV
K1 = ID_SV là Khóa của lược đồ Sinh viên,
Còn K2 và K3 chỉ là Khóa của thể hiện s1
17/19
Khóa của quan hệ
Tính chất:
Khóa của thể hiện thì chưa chắc đã là Khóa của lược
đồ
Còn Khóa của lược đồ thì cũng là Khóa của mọi thể
hiện của quan hệ
Khóa của lược đồ không phụ thuộc vào nội dung của
quan hệ, còn khóa của thể hiện thì phụ thuộc
18/19
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 đó
19/19
Tóm tắt
Quan hệ = bảng.
Cột của bảng = thuộc tính của quan hệ.
Bộ = hàng = bản ghi
Lược đồ QH = tên + tập các thuộc tính
Thể hiện của QH = nội dung của QH tại một thời điểm
Khóa của QH = tập con các thuộc tính của QH
Khóa của thể hiện
Khóa của lược đồ
Cơ sở dữ liệu quan hệ = tập các quan hệ
20/19
Chương 5: Mô hình dữ
liệu quan hệ
Đại số quan hệ - Một ngôn ngữ truy vấn
Nội dung chính
1.
2.
3.
Giới thiệu
Đại số quan hệ là gì?
Các phép toán trong đại số QH
1. Giới thiệu
Các thao tác dữ liệu trên mô hình quan hệ dựa
trên đại số quan hệ.
Đại số quan hệ là một phương pháp đơn giản và
hữu hiệu để xây dựng các quan hệ mới từ các
quan hệ hiện có.
Đại số quan hệ cũng là nền tảng lý thuyết của
ngôn ngữ truy vấn SQL.
2. Môn đại số là gì?
Môn đại số bao gồm:
Các phép toán (operators)
Các toán hạng nguyên tố (atomic operands)
Môn đại số cho phép chúng ta xây dựng các biểu
thức đại số.
Đại số quan hệ là gì?
Đại số quan hệ bao gồm:
Các phép toán trên đại số quan hệ
Các toán hạng có thể là:
Các biến đại diện cho các quan hệ
Các hằng
3. Các phép toán trong đại số QH
Tổng quan về các phép toán:
Các phép toán tập hợp: hợp, giao, hiệu
Các phép toán làm phân chia quan hệ: chọn nhằm lọc
ra một số bộ, và chiếu nhằm loại ra một vài thuộc tính.
Các phép toán trộn hai quan hệ: tích, và các phép nối
khác nhau
Phép đổi tên nhằm thay đổi tên và các thuộc tính của
quan hệ, nhưng không làm thay đổi nội dung của nó
Ký hiệu các phép toán
Phép toán
Hợp (Union)
Giao (Intersection)
Hiệu (Difference)
- or \
Chiếu (Projection)
Chọn (Selection)
(sigma)
Tích đề các (Product)
x
Đổi tên (Renaming)
(rô)
Ký hiệu
Ký hiệu các phép toán
Phép toán
Nối (Join)
Nối ngoài trái (Left outer join)
Nối ngoài phải (Right outer join)
Nối ngoài đầy đủ (Full outer join)
Nối nửa (Semi-join)
Ký hiệu
Các phép toán nguyên thủy
(Primitive operations)
Trong bất kỳ đại số nào, đều có các phép toán nguyên
thủy (cơ bản nhất), còn các phép toán khác đều có thể
được suy ra từ các phép toán nguyên thủy này
Trong đại số quan hệ, có 6 phép toán nguyên thủy:
Phép Chọn,
Phép Chiếu,
Phép Tích Đề Các,
Phép Hợp,
Phép Hiệu,
Phép Đổi tên
Các phép toán tập hợp (Set
operations)
Điều kiện tiên quyết: để thực hiện được các phép
toán này, 2 quan hệ R và S trước hết cần phải thỏa
mãn 2 điều kiện:
Chúng phải có lược đồ có số thuộc tính giống nhau, và
miền giá trị tương ứng của các thuộc tính cũng phải
giống nhau.
Thứ tự của các thuộc tính của 2 QH này cũng phải
giống nhau.
Khi đó 2 QH này gọi là Khả hợp.
Các phép toán tập hợp
Hợp (Union):
Giao (Intersection):
RS
RS
Hiệu (Difference):
R – S (R \ S)
Phép hợp
Ví dụ: {1,2} U {1,3} = {1,2,3}
Phép hiệu
Vd: {1,2,3,5} – {1,3,4} = {2,5}.
Phép giao
Intersection
Vd: {1,2,4,6} ∩ {1,2,6,7,8} = {1,2,6}
Phép chọn
R1 := σC (R2)
C là một biểu thức logic (điều kiện chọn).
R1 là tất cả các bộ có trong R2 mà thỏa mãn điều
kiện C (C nhận giá trị Đúng).
Phép chọn: ví dụ
Quan hệ Sells:
bar
Joe’s
Joe’s
Sue’s
Sue’s
JoeMenu :=
bar
Joe’s
Joe’s
beer
Bud
Miller
Bud
Miller
price
2.50
2.75
2.50
3.00
σbar=“Joe’s”(Sells):
beer
Bud
Miller
price
2.50
2.75
Phép chiếu
R1 := πL (R2)
L là một danh sách các thuộc tính của quan hệ R2.
R1 được tạo ra bằng cách trích ra từ mỗi bộ trong R2,
các thành phần thuộc các thuộc tính L. Từ mỗi bộ được
trích ra đó sẽ tạo thành một bộ mới của R1.
Loại bỏ các bộ giống nhau nếu có trong R1.
Phép chiếu: ví dụ
Quan hệ Sells:
bar
Joe’s
Joe’s
Sue’s
Sue’s
beer
Bud
Miller
Bud
Miller
Prices := πbeer, price(Sells):
beer
price
Bud
2.50
Miller
2.75
Miller
3.00
price
2.50
2.75
2.50
3.00
Phép tích Đề các
R3 := R1 Χ R2
Ghép đôi từng bộ t1 của R1 với từng bộ t2 của R2,
thành một bộ của R3
Lược đồ của R3 là ghép các thuộc tính của R1 và R2,
theo đúng thứ tự.
Tích Đề Các: ví dụ
R1(
A,
1
3
B)
2
4
R2(
B,
5
7
9
C)
6
8
10
R3(
A,
1
1
1
3
3
3
R1.B,
2
2
2
4
4
4
R2.B, C )
5
6
7
8
9
10
5
6
7
8
9
10
Phép đổi tên
Phép đổi tên ρ sẽ thay đổi tên của quan hệ và các
thuộc tính của nó
R1 := ρR1(A1,…,An)(R2): sẽ đổi tên R2 thành R1; và
các thuộc tính của R2 tương ứng sẽ thành
A1,…,An .
Ký hiệu ngắn gọn: R1(A1,…,An) := R2.
Phép đổi tên: ví dụ
Bars( name, addr
)
Joe’s Maple St.
Sue’s River Rd.
R(bar, addr) := Bars
R(
bar, addr
)
Joe’s Maple St.
Sue’s River Rd.
Các phép nối (joins)
Nối bằng:
Nối tự nhiên
Nối theta
R
S
R.A = S.B
R
S
R
S
C
Nối tự nhiên (natural join)
Là phép toán kết nối hai quan hệ bằng cách:
So sánh bằng giữa các thuộc tính cùng tên của 2 quan
hệ này,
Loại bỏ đi một trong 2 thuộc tính bằng nhau này.
Ký hiệu R3 := R1 ⋈ R2
Nối tự nhiên: ví dụ
Sells( bar,
Joe’s
Joe’s
Sue’s
Sue’s
beer, price )
Bud 2.50
Miller 2.75
Bud 2.50
Coors 3.00
BarInfo := Sells
BarInfo(
bar,
Joe’s
Joe’s
Sue’s
Sue’s
Bars( bar, addr
)
Joe’s Maple St.
Sue’s River Rd.
⋈ Bars
beer,
Bud
Milller
Bud
Coors
price,
2.50
2.75
2.50
3.00
addr
)
Maple St.
Maple St.
River Rd.
River Rd.
Thank you!
Chương 5: Mô hình dữ liệu
quan hệ - Lý thuyết thiết kế
Phần 3: Các bất thường trong quan hệ
và phụ thuộc hàm
1
Mục đích
Nắm được các vấn đề và khái niệm
Các bất thường trong một quan hệ (Anomalies)
Phụ thuộc hàm (Functional Dependencies)
Sự tách lược đồ quan hệ (Decomposition)
2/26
Các nội dung chính
1.
2.
3.
4.
Giới thiệu về các bất thường trong một quan hệ
Các phụ thuộc hàm
Các nguyên nhân gây ra các bất thường
Phép tách lược đồ QH
3/26
1. Các bất thường trong quan hệ
Hãy quan sát bảng 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
4/26
1. Các bất thường trong quan hệ
Từ bảng trên có thể nhận thấy một số bất thường:
Dư thừa (Redundancy): giá trị của một số thành phần trong các bộ
bị lặp lại không cần thiết như : Name, Class, Department
Bất thường khi cập nhật (Update Anomalie): xuất hiện khi cập
nhật giá trị cho một bộ hiện có, vì thực tế thực hiện của thao tác có
vẻ phức tạp hơn rất nhiều so với logic của thao tác đó.
Bất thường khi bổ sung (Insertion Anomalie): xuất hiện khi bổ
sung thêm một bộ mới.
Bất thường khi xóa (Deletion Anomalie): xuất hiện khi xóa một
bộ hiện có trong quan hệ.
5/26
1. 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ả
6/26
1. Các bất thường trong quan hệ
Vậy nguyên nhân của các bất thường này là gì?
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.
7/26
2. Phụ thuộc hàm
Định nghĩa
Ý nghĩa của PTH
Hệ tiên đề Amstrong
Một số loại PTH đặc biệt
Khóa và thuộc tính khóa
8/26
2. Phụ thuộc hàm
Định nghĩa về PTH (Functional Dependency)
Cho lược đồ quan hệ R(A1,A2,…An), và A = A1A2 …
An, và 2 tập các thuộc tính X và Y A. Chúng ta nói
rằng:
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]
X được gọi là Quyết định (determinant) của PTH.
9/26
2. Phụ thuộc hàm – ví dụ
Một số PTH từ bảng Student:
ID Name;
ID Class;
Class Department;
ID,Subject Mark
10/26
2. Phụ thuộc hàm – Ý nghĩa
Ý 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ộ t 1, t2 nào, sao cho
t1[X]=t2[X]
Hoặc nếu tồn tại 2 bộ t 1, 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].
11/26
2. Phụ thuộc hàm – Ý nghĩa
Ý nghĩa của PTH X Y:
Thế thì 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.
12/26
2. Phụ thuộc hàm – Ý nghĩa
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.
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
Từ r3, ta có PTH: (ID, Subject) Mark;
13/26
2. 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
14/26
2. 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.
15/26
2. Phụ thuộc hàm
Khóa và thuộc tính khóa
Khóa: Cho 1 lược đồ R. Một hay một tập thuộc tính
K của R được gọi là Khóa của R nếu nó thỏa mãn 2
điều kiện:
1.
2.
KR
K R là một PTH đầy đủ
Siêu khóa (SuperKey): K được gọi là siêu khóa của
R nếu nó chứa ít nhất một khóa của R.
Thuộc tính khóa (Prime attribute): 1 thuộc tính A là
thuộc tính khóa nếu nó thuộc một khóa bất kỳ. Trái
lại, thì nó là thuộc tính không khóa (hay thuộc tính
mô tả)
16/26
2. Phụ thuộc hàm
Khóa và thuộc tính khóa
Một số thuộc tính của Khóa
Một lược đồ quan hệ luôn có ít nhất một khóa, và thường
là có nhiều khóa.
Giá trị của mỗi bộ trên khóa/siêu khóa là duy nhất. Đó là
vì sao nó được gọi là Khóa.
17/26
3. 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
18/26
3. Nguyên nhân gây ra các bất
thường
Khóa 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, ví
như:
(ID, Subject) Name; PTH bộ phận vì ID Name
(ID, Subject) Department; PTH bắc cầu vì
(ID, Subject) Class và Class Department
19/26
3. 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
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 đồ!
20/26
4. Phép tách
Định nghĩa: cho một LĐQH R. Một phép R là sự
thay thế nó bằng các LĐ con (sub-schema) R1, R2,
…, Rn sao cho R = R1R2 …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)
21/26
4. Phép tách
Tách nối không mất thông tin: giả sử cho = (R1,R2, ..., Rn)
là 1 phép tách R. được gọi là tách nối không mất thông tin
nếu nó thỏa mãn:
thể hiện r của R thì biểu thức sau luôn thỏa mãn: :
r = R1(r) R2(r) ... Rn(r)
Bảo toàn các PTH: cho LĐ R với tập các PTH F. Phép tách
= (R1,R2, ..., Rn) được gọi là bảo toàn PTH nếu nó thỏa mãn:
F = R1(F) R2(F) … Rn(F)
Với Ri(F) = {X Y | X Y and XY Ri}
22/26
Ví dụ: tách bảng Student thành 3
bảng S1, S2 và S3
S3
S1
ID
Name
Class
E1-001
Nguyen Van A
E1
E1-002
Tran Thi B
E1
E2-001
Nguyen Ho C
E2
IT1-001
Tran Thi B
IT1
IT1-002
Le Van D
IT1
S2
Class
Department
E1
Electronics
E2
Electronics
IT1
IT
ID
Subject
Mark
E1-001
Electronic Circuit
8
E1-001
Digital Technique
7
E1-002
Digital Technique
9
E1-002
Electronic Circuit
8
E2-001
Digital Technique
6
IT1-001
Electronic Circuit
10
IT1-002
Digital Technique
8
23/26
4. 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)
24/26
Tóm tắt
Các bất thường trong lược đồ quan hệ
Phụ thuộc hàm và nguyên nhân của các bất
thường
Phép tách và các tính chất của nó
25/26
Thank you!
26/26
Chương 5: Mô hình dữ liệu
quan hệ - Lý thuyết thiết kế
Phần 4: Chuẩn hóa và các dạng chuẩn
(Normalization & Normal Forms)
Mục đích
Giúp nắm được các khái niệm và vấn đề:
Các dạng chuẩn (Normal Forms): 1NF, 2NF,
3NF, BCNF
Bao đóng (Closure)
Giải thuật tìm tất cả các khóa
Tại sao và làm thế nào để chuẩn hóa
2/33
Các nội dung chính
1.
2.
3.
4.
5.
Các dạng chuẩn
Bao đóng
Thuật toán tìm toàn bộ các khóa
Tập phụ thuộc hàm tối thiểu
Các phương pháp chuẩn hóa
3/33
1. Chuẩn hóa và các dạng chuẩn
Định nghĩa các dạng chuẩn
Dạng chuẩn 1 (1NF - First NF)
Dạng chuẩn 2 (2NF - Second NF)
Dạng chuẩn 3 (3NF - Third NF)
Dạng chuẩn Boyce-Codd (BCNF - Boyce-Codd NF)
Các phương pháp chuẩn hóa
Phép tách (Decomposition)
Phép ghép (Composition)
4/33
1. Dạng chuẩn 1 (1NF)
Định nghĩa:
Giá trị nguyên tố (Atomic Value): Là giá trị mà
không thể bị chia nhỏ hơn được nữa
Một thuộc tính là nguyên tố nếu miền giá trị của nó là
nguyên tố. Thuộc tính nguyên tố cũng còn được gọi là
thuộc tính đơn.
Dạng chuẩn 1: một LĐQH R là ở dạng chuẩn 1 nếu
như mọi thuộc tính của nó đều nhận giá trị nguyên tố.
Lưu ý: sau này mặc định ta coi các LĐQH đều đã
ở dạng chuẩn 1.
5/33
1. Dạng chuẩn 2 (2NF)
Định nghĩa: một LĐQH R là ở dạng chuẩn 2 nếu
nó thỏa mãn 2 điều kiện:
R đã ở dạng chuẩn 1
Mọi thuộc tính không khóa của R đều phụ thuộc hàm
đầy đủ vào khóa của R
Vd1: cho QH R(A,B,C,D) với tập các PTH F:
AB C; B D;
Hỏi R có ở dạng chuẩn 2 không?
6/33
1. Dạng chuẩn 2
Vd2: cho QH R(A,B,C,D) với tập các PTH F:
A B; B C; C D;
Hỏi R có ở dạng chuẩn 2 không?
Vd3: QH Student(ID, Name, Class, Dept, Subject,
Mark) với các PTH F:
ID Name,Class;
Class Dept;
ID, Subject Mark
Hỏi Student có ở dạng chuẩn 2 không?
7/33
1. Dạng chuẩn 3 (3NF)
Định nghĩa: có 2 cách tương đương để đ/n dạng
chuẩn 3:
Cách thứ nhất: 1 QH R là ở dạng chuẩn 3 nếu thỏa
mãn:
1.
2.
R đã ở dạng chuẩn 2
Mọi thuộc tính không khóa của R đều phụ thuộc hàm
trực tiếp vào khóa
8/33
1. Dạng chuẩn 3
Định nghĩa:
Cách thứ hai: 1 QH R là ở dạng chuẩn 3 nếu thỏa
mãn:
1.
2.
R đã ở dạng chuẩn 1
Với mọi PTH có dạng XA thuộc R (với X là một tập
các thuộc tính, còn A là một thuộc tính) thì Hoặc X là
một siêu khóa, hoặc A là thuộc tính khóa.
9/33
1. Dạng chuẩn 3
Vd2: Xét QH R(A,B,C,D) với tập các PTH F:
A B; B C; C D;
Hỏi R có ở dạng chuẩn 2, chuẩn 3 không?
Vd4: Xét QH R(A,B,C,D) với tập các PTH F:
AB C; CD A;
Hỏi R có ở dạng chuẩn 2, chuẩn 3 không?
10/33
1. Dạng chuẩn Boyce-Codd
(BCNF)
Định nghĩa: một LĐ QH R là ở dạng chuẩn BC
nếu nó thỏa mãn:
1.
2.
R đã ở dạng chuẩn 1,
Với mọi PTH có dạngXA in R (với X là một tập
thuộc tính, và A là một thuộc tính) thì X là siêu khóa.
11/33
1. Dạng chuẩn Boyce-Codd
Vd4: Xét QH R(A,B,C,D) với tập các PTH F:
Vd5: xét QH R(A,B,C,D) với các PTH F:
AB C; CD A;
Hỏi R có ở dạng chuẩn 3, chuẩn BC không?
AB C; AB D;
Hỏi R có ở dạng chuẩn BC không?
12/33
So sánh giữa các dạng chuẩn
1NF
2NF
3NF
BCNF
13/33
2. Bao đóng (Closure)
Định nghĩa: cho QH R với tập PTH F, và tập
thuộc tính XR. Ta gọi bao đóng của X (ký hiệu
X+) được định nghĩa như sau:
X+ = {B | X B F}
Vd: cho R(A,B,C,D), với các PTH F:
AB; BCAD;
X=(A)
thì
X+=(A,B)
X=(AC)
thì
X+=(A,B,C,D)
14/33
2. Bao đóng – Thuật toán tìm bao
đóng
Đầu vào: R(A1,A2,…An) với tập PTH F; XR
Đầu ra: X+
Giải thuật:
Bước 1: X+ := X;
Bước 2: While ( YA F so that (YX+and AX+))
X+:=X+A
Bước 3: return X+
15/33
2. Bao đóng - ứng dụng
Giúp tìm khóa trong quan hệ, bởi vì K+ = R
16/33
3. Giải thuật tìm tất cả các khóa
của lược đồ quan hệ
Một tính chất của khóa: cho LĐQH R với tập
các PTH F. Ta gọi AL, AR tương ứng là các hợp
(unions) của các thuộc tính thuộc vế trái và vế
phải của các PTH trong F. Chúng ta có thể giả sử
rằng R=ALAR. Nếu K là một khóa của R thì nó
luôn thỏa mãn:
AL\AR K AL
AL
AR
17/33
3. Giải thuật tìm tất cả các khóa
của lược đồ quan hệ
Vd: R(A,B,C,D,E), với F:
AB; BCAD;CDE;
Ta có: AL=(ABCD); AR=(ABDE)
AL\AR = C;
Ta tìm được 2 khóa của R là:
K1=AC;
K2=BC;
18/33
3. Giải thuật tìm tất cả các khóa
của lược đồ quan hệ
Đầu vào: QH
R(A1,A2,…An) với tập các
PTH F;
Đầu ra: Tất cả các khóa của
R
Giải thuật:
Bước 1: Tính AL và AR của
R.
Bước 2: K := AL\ AR; X:=
AL AR
Nếu (K+=R) thì K là khóa
duy nhất;
Return K;
Else
Bước 3: While (K+R) {
Lấy ra một thuộc
tính Ai từ X;
K:=KAi;
}
Ta sẽ có thêm một khóa K ở
đây;
Lặp lại Bước 3 cho đến khi
đã lấy hết các trường hợp
19/33
Bài tập
Tìm tất cả các khóa của
LĐQH:
R (A,B,C,D,E,F) với các PTH F:
ABC;
BCD;
BDAE;
ACF;
Lời giải:
AL = ABCD; AR = CDAEF
AL\AR = B; ALAR = ACD
B+ = B R
(BA)+=BACDEF=R K1= AB
(BC)+=BCDAEF=R K2=BC
(BD)+=BDAECF=R K3=BD
Kết luận: Lược đồ R có 3 khóa
K1,K2 và K3 như trên
20/33
4. Tập PTH cơ sở tối thiểu
(Minimal Basis)
Tập PTH cơ sở (Basis): cho QH R với tập các PTH F.
Một tập PTH bất kỳ mà tương đương với F thì được gọi
là một cơ sở của F.
Tập cơ sở tối thiểu (Minimal basis /canonical set): là một
tập PTH thỏa mãn 3 điều kiện:
Vế phải của tất cả các PTH chỉ có một thuộc tính.
Nếu loại bỏ đi bất kỳ PTH nào, thì các PTH còn lại không đủ là
cơ sở của F (không có PTH dư thừa).
Với mọi PTH, nếu loại bỏ đi bất kỳ thuộc tính nào khỏi vế trái
của PTH đó, thì các PTH còn lại không đủ là cơ sở của F (không
chứa PTH bộ phận)
21/33
Ví dụ
Cho LĐQH R(A,B,C,D,E,F)
với tập F:
ABCD; CEF;
BCDE; EF;
Hãy tìm cơ sở tối thiểu của F?
Giải: Sử dụng tính chất tách ta
có:
1. ABC; 5. BCD;
2. ABD; 6. BCE;
3. CE;
7. EF;
4. CF;
Do 3., nên PTH 6. bị loại ra.
Do 3. và 7., nên 4. bị loại ra.
Do 1. và 5., nên 2. bị loại ra.
Cuối cùng, ta có tập cơ sở tối
thiểu của F là:
1. ABC;
2. BCD;
3. CE;
4. EF;
22/33
4. Tập PTH cơ sở tối thiểu
Giải thuật tìm tập cơ sở tối thiểu:
Đầu vào : QH R với tập PTH F.
Đầu ra: tập PTH cơ sở tối thiểu của F
Giải thuật:
Bước 0: Loại bỏ các PTH tầm thường (XY mà YX).
Bước 1: Với mỗi PTH có vế phải nhiều hơn 1 thuộc tính, thì
chuyến nó thành các PTH có vế phải có 1 thuộc tính theo tính
chất tách.
Bước 2: Loại bỏ các PTH dư thừa từ Bước 1.
Bước 3: Loại bỏ các PTH bộ phận từ Bước 2.
23/33
5. Các phương pháp chuẩn hóa
(Normalization Mehods)
Có 2 cách tiếp cận trái ngược nhau:
Tách (Decomposition): tách một lược đồ lớn thành các
lược đồ con nhỏ hơn ở dạng chuẩn mong muốn
(thường là dạng chuẩn 3).
Ghép (Composition): Từ các thuộc tính đơn lẻ, ta xây
dựng các lược đồ quan hệ ở dạng chuẩn 3.
24/33
5. Chuẩn hóa- Phương pháp tách
R
1NF
Loại bỏ các
PTH bộ
phận
R1
R2
…
Rm
2NF
Loại bỏ các
PTH bắc cầu
R1
R2
…
Rn
3NF
25/33
5. Chuẩn hóa- Phương pháp tách
Giải thuật:
Đầu vào: QH R với tập các
PTH F mà chưa ở dạng chuẩn
3.
Đầu ra: một phép tách R sao
cho bảo toàn F, nối không mất
thông tin, và mọi LĐ con đều
ở dạng chuẩn 3.
Giải thuật:
- Bước 1: Với mỗi PTH bộ
phận hay bắc cầu của một
thuộc tính không khóa A vào
khóa K của R, ta có thể tìm
được một tập các thuộc tính
XK sao cho XA là PTH
đầy đủ hay trực tiếp và không
tồn tại YX mà YA.
Từ XA, ta tách thành 2 QH
R1 và R2 sao cho:
R1=XA; R2=R\A;
- Bước 2: Lặp lại bước 1 cho
mỗi lược đồ con mà chưa ở
dạng chuẩn 3.
Lưu ý 1: điều kiện “không tồn
tại YX sao cho YA” nhằm
đảm bảo rằng không có PTH
nào bị mất trong quá trình tách.
Lưu ý 2: Các LĐ mà có chung
khóa có thể lại được ghép lại
thành một lược đồ với khóa
chung đó, và hợp các thuộc tính
của các lược đồ.
26/33
Ví dụ
QH Student(ID, name, class, dept, subject, mark) với
tập các PTH F:
IDname;
IDclass;
classdept;
ID,subjectmark;
QH này đã ở dạng chuẩn 3 chưa?
Nếu chưa, hãy tách nó thành các lược đồ con ở dạng chuẩn 3?
27/33
Ví dụ (tiếp)
Giải:
Trước tiên tìm khóa của QH K=(ID,subject).
Do đó các thuộc tính không khóa gồm (name, class, dept,
mark)
Do name PTH bộ phận vào K, ta tìm thấy IDname là
PTH đầy đủ. Từ đây, ta chia QH thành 2 QH: S1(ID,name)
và S2(ID, class, dept, subject, mark). S1 đã ở dạng chuẩn 3,
nhưng S2 thì chưa.
Tương tự trên, S2 có thể được chia thành các QH sau:
S3(ID,class); S4(class, dept); S5(ID,subject,mark);
Sau khi đổi lại tên các QH, rồi gộp các QH có chung khóa,
cuối cùng ta có các QH sau:
S1(ID,name,class); S2(class, dept); S3(ID,subject,mark);
28/33
5. Chuẩn hóa – Phương pháp
ghép
Giải thuật:
Đầu vào: một QH R chưa ở dạng chuẩn 3, với tập các PTH
F.
Đầu ra: phép tách R mà bảo toàn các PTH, nối không mất,
và các lược đồ con đều ở dạng chuẩn 3.
Giải thuật:
1.
2.
1.
Tìm tập cơ sở tối thiểu của F. Sau đó đánh thứ tự các PTH từ
1 đến n.
Với mỗi PTH thứ i X A, i=1..n, ta tạo một QH với lược đồ
Ri = (XA).
Nếu chưa có lược đồ nào trong số được tạo ra ở bước 2 chứa
siêu khóa của R, thì bổ sung thêm một lược đồ là khóa của R.
29/33
Ví dụ
QH Student(ID, name, class, dept, subject, mark) với
tập các PTH F:
IDname;
IDclass;
classdept;
ID,subjectmark;
QH này đã ở dạng chuẩn 3 chưa?
Nếu chưa, hãy tách nó thành các lược đồ con ở dạng chuẩn 3?
30/33
Ví dụ (tiếp)
Giải:
Tìm cơ sở tối thiểu: F đã là cơ sở tối thiểu.
Từ 4 PTH của F, ghép lại ta sẽ có 4 quan hệ:
S1(ID,name); S2(ID,class);
S3(class, dept); S4(ID,subject,mark);
Do S1 và S2 có chung khóa ID, nên có thể ghép chúng lại
thành một quan hệ mới: S1(ID,name,class). Cuối cùng, ta
có 3 quan hệ:
S1(ID,name,class);
S2(class, dept);
S3(ID,subject,mark);
31/33
Ví dụ (tiếp)
S1: Student
ID
S3: Examination
Name
Class
E1-001
Nguyen Van A
E1
E1-002
Tran Thi B
E1
E2-001
Nguyen Hong C
E2
IT1-001
Tran Thi B
IT1
IT1-002
Le Van D
IT1
S2: Class
Class
Department
E1
Electronics
E2
Electronics
IT1
IT
ID
Subject
Mark
E1-001
Electronic Circuit
8
E1-001
Digital Technique
7
E1-002
Digital Technique
9
E1-002
Electronic Circuit
8
E2-001
Digital Technique
6
IT1-001
Electronic Circuit
10
IT1-002
Digital Technique
8
32/33
Thank you!
33/33
Chương 6
Mô hình Thực thể & Liên kết
Phần 1: Giới thiệu
Mục đích
Nắm được:
Ý nghĩa của mô hình thực thể liên kết (MH
TTLK)
Cấu tạo của MH TTLK
Cách xây dựng MH TTLK
Vận dụng MH TTLK vào giai đoạn mô hình
hóa dữ liệu
2
Các nội dung chính
1. Mục đích của mô hình thực thể liên kết
2. Cấu tạo của MH TTLK
3
1. Mục đích của mô hình thực thể liên kết
Nó được dùng trong giai đoạn Phân tích hệ thống,
ngay sau giai đoạn Thu thập các yêu cầu của hệ
thống.
Nó được dùng để phân tích yêu cầu về dữ liệu, nhằm
làm rõ loại y/c này của người sử dụng.
Nó được dùng làm công cụ để hỗ trợ việc trao đổi,
thống nhất các y/c về dữ liệu giữa nhà phát triển và
người dùng.
Nó đóng vai trò trung gian giữa các y/c dữ liệu trừu
tượng ở giai đoạn khảo sát và các chi tiết dữ liệu ở
giai đoạn thiết kế.
4
1. Mục đích của mô hình thực thể liên kết
Khảo sát hệ
thống
Thu thập
các yêu
cầu
Các Kịch bản
sử dụng
Từ điển dữ
liệu
Phân tích hệ
thống
Phân tích
dữ liệu
Mô hình
thực
thể liên
kết
Thiết kế hệ
thống
Thiết kế dữ
liệu
Mô hình
quan hệ
5
1. Mục đích của mô hình thực thể liên kết
Cụ thể hơn, mô hình này sẽ giúp:
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
6
2. 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:
1.Thực thể (Entities)
2.Liên kết (Relationships)
3.Thuộc tính (Attributes)
7
Thực thể và tập thực thể
Một thực thể là:
Điều gì đó mà quan trọng đối với nghiệp vụ, nên dữ liệu về nó cần phải
được biết.
Tên của các thứ mà bạn có thể liệt kê.
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ể (Entity Set): 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ể
(entity type).
Ký hiệu: thực thể và kiểu 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”
8
Ví dụ
Tập thực thể
PERSON
PRODUCT
JOB
SKILL LEVEL
Thực thể
Bill Clinton, Obama
Chair, Table, Motor
Violinist, Programmer
Good, Bad
9
Các thuộc tính của thực thể
Khái niệm:
Một thuộc tính (an attribute) 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
production
Title
Movies
10
Ví dụ: Các thuộc tính
11
Thuộc tính khóa
ID
Year of
production
Title
Movies
12
Ví dụ – Thực thể, Tập thực thể, Thuộc tính
ID
Title
Year of
production
Movies
Title =
“Mission
Impossible”
ID = 1
The movie
“Mission Impossible”
Year of
production =
1996
13
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
14
Liên kết (Relationship)
Số ngôi của liên kết:
Là số thực thể tham gia liên kết đó
Ví dụ:
• Đạ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
15
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
16
Liên kết (Relationship)
Thuộc tính của liên kết: thông tin chi tiết bổ
sung thêm cho liên kết
Duration
Directors
Directs
Movies
Cost
17
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.
18
Ví dụ về các loại liên kết
Tự liên kết
elder brother
brotherhood
Person
Liên kết 2 ngôi
Class
younger brother
has
Student
19
Ví dụ về các loại liên kết
Liên kết ISA:
name
address
dob
Person
isa
roll#
school
Student
20
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
21
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
22
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
23
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.
24
Lực lượng của Liên kết 2 ngôi
Ký hiệu
1:1
1:N
M:N
X
X
X
1
1
1
N
M
N
Y
X
Y
Y
X
Y
Y
X
Y
25
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
26
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.
27
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ó
28
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ó
29
Ví dụ: Mô hình TT LK – Từ điển dữ liệu
Tên dữ liệu
Bí danh
Khoa
Bộ môn
Giáo viên
BM
GV
Trưởng BM
TBM
Lớp học
LH
Phòng học
PH
Thời khóa biểu TKB
Khối lượng
giảng dạy
KLGD
Mô tả
= Tên khoa + Văn phòng + Điện thoại +
Fax
= Tên BM + Văn phòng
=TênGV + Ngày sinh + Địa chỉ + Chức
danh + (Chức vụ)
Là một giáo viên có chức vụ là trưởng
BM
= Tên lớp + Khóa học + Số Lượng SV
Tên phòng + SL chỗ ngồi
= Năm học + Học kỳ + {Khoa + {lớp
học + phòng học + tiết học}m}n
= TKB + {Giáo viên}mxn
30
Ví dụ: Mô hình TT LK – Các thực thể
Tên thực
thể
Khoa
Tên sử
dụng
TKhoa
Bộ môn
Giáo viên
TBoMon
TGiaoVien
Lớp học
Phòng học
Trưởng BM
TLopHoc
TPhong
TTrBM
Các thuộc tính
Tên khoa, Văn phòng, Điện thoại,
Fax
Tên BM, Văn phòng
TênGV, Ngày sinh, Địa chỉ, Chức
danh, Chức vụ
Tên lớp, Khóa học, Số Lượng SV
Tên phòng, SL chỗ ngồi
Gồm các thuộc tính của Giáo viên,
Ngày nhậm chức, Ngày thôi chức
31
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.
32
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 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.
33
Ví dụ: Mô hình TT LK – Các liên kết
Khoa
Khoa
Giáo viên
1
1
N
Có
Có
Thuộc
N
Bộ môn
N
Lớp học
1
Bộ môn
1
ISA
Trưởng
Bộ môn
1
LĐạo
34
Ví dụ: Mô hình TT LK – Các liên kết
Năm học
Khoa
Học kỳ
Tiết học
Lớp học
TKB
Phòng học
TKB
N
KLGD
M
Giáo viên
35
Ví dụ: Mô hình TT LK – Hoàn thiện
1
Khoa
N
1
N
N
TKB
1
N
1
Lớp học
1
N
1
KLGD
Phòng học
N
N
Bộ môn
1
1
N
Giáo viên
1
1
Trưởng
Bộ môn
36
Tóm tắt
Ý nghĩa của Mô hình TTLK
Các thành phần của Mô hình:
Thực thể
Liên kết
Các thuộc tính
Cách xây dựng Mô hình
37
38
Chương 6
Mô hình thực thể liên kết
Phần 2: Các nguyên tắc thiết kế và chuyển
đổi sang mô hình quan hệ
Nội dung chính
Các nguyên tắc thiết kế cơ bản
Cách chuyển từ mô hình thực thể liên kết sang
mô hình quan hệ
3
4
2
Nhắc lại các giai đoạn phát triển hệ thống
Khảo sát hệ
thống
Thu thập
các yêu
cầu
Các Kịch bản
sử dụng
Từ điển dữ
liệu
Phân tích hệ
thống
Phân tích
dữ liệu
Mô hình
thực
thể liên
kết
Thiết kế hệ
thống
Thiết kế dữ
liệu
Mô hình
quan hệ
3
Các nguyên tắc thiết kế
1.
2.
3.
4.
5.
Trung thành
Tránh dư thừa
Giữ cho mô hình đơn giản
Chọn đúng loại liên kết
Chọn loại thành phần phù hợp
4
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.
5
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
6
Ví dụ: dư thừa
name
Beers
name
N
ManfBy
1
addr
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ể
7
Ví dụ: không còn dư thừa
name
Beers
name
N
ManfBy
1
addr
Manfs
Thông tin về nhà sản xuất chỉ còn xuất hiện
đúng 1 lần
8
Ví dụ: giảm dư thừa với liên kết ISA
name
dob
roll#
name
Student
school
ID
addr
Person
school
name
emp#
dob
addr
company
dob
Student
Employee
Employee
company
addr
9
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.
10
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.
Trường
1
Có
N
Khoa
11
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.
12
Ví dụ: Chọn đúng loại liên kết
title
Salary
year
Movies
Contracts
N
length
genre
1
Studios
name
addr
name
addr
Stars
Liệu có cần thêm các liên kết
giữa Movies và Studios, cũng
như giữa Movies và Stars
không?
Nếu có thì liên kết Contracts có
cần thiết nữa không?
13
Nguyên tắc 5: Chọn loại thành phần phù hợp
Đôi khi không dễ quyết định xem 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 nào 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
14
Chuyển đổi từ mô hình thực thể liên kết sang
mô hình quan hệ
1. Chuyển từ thực thể sang quan hệ
2. Chuyển từ liên kết sang quan hệ
15
Chuyển từ thực thể sang quan hệ
Quy tắc:
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
school
Student (roll#, name, dob,
addr, school)
addr
16
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 viên
Sinh viên
1
N
Khoa
Học
Học
N
1
Khoa
N
1
Khóa
Khóa
17
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:
• Tên liên kết Tên quan hệ
• 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.
18
Ví dụ
ID_SV
Sinh viên
ID_Khóa
M
Học
N
Tên SV
Khóa
Tên khóa
ID_SV
Sinh viên
Sinh viên (ID_SV, Tên SV);
ID_Lớp
M
Học
1
Lớp
Khóa (ID_Khóa, Tên khóa);
Học (ID_SV, ID_Khóa);
Sinh viên (ID_SV, Tên SV,
ID_Lop);
Lớp (ID_Lớp, Tên lớp);
Tên SV
Tên lớp
19
Chuyển từ liên kết sang quan hệ
Với liên kết ISA: 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.
20
Ví dụ - Theo góc nhìn Thực thể/Liên kết
Chuyển cây liên kết sau:
name
address
dob
Ta sẽ có 3 quan hệ:
ID
Person
Person(ID, name,
address, dob)
isa
roll#
emp#
Student
school
isa
Employee
Student(ID, roll#, school)
Employee(ID, emp#,
company)
company
21
Ví dụ - Theo Hướng đối tượng
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ể
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)
22
Ví dụ - Sử dụng giá trị NULL
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))
23
Tóm tắt chương
Các thành phần cơ bản của mô hình thực thể liên kết
Các nguyên tắc xây dựng mô hình
Các phương pháp chuyển đổi từ mô hình TTLK sang
mô hình quan hệ.
24
Viện Điện tử - Viễn thông
Bộ Môn Điện tử - Kỹ thuật máy tính
Kỹ thuật phần mềm ứng dụng
Chương 7: Phân tích hệ thống
Phần 1: Giới thiệu chung
Các nội dung chính
• Xác định lại vấn đề của hệ thống hiện tại
• Đề xuất giải pháp phù hợp
• Các thành phần cần phân tích:
– Phân tích chức năng
– Phân tích dữ liệu
– Phân tích hành vi
Xác định lại vấn đề của hệ thống hiện tại
• Sau giai đoạn khảo sát kỹ lưỡng các y/c và
hoạt động của hệ thống hiện tại, thì bắt đầu
giai đoạn phân tích là giai đoạn thích hợp để
làm rõ hơn vấn đề của hệ thống hiện tại, để từ
đó xác định chi tiết và đầy đủ hơn giải pháp
phần mềm để giải quyết các vấn đề đó.
• Các vấn đề của HT hiện tại chủ yếu nảy sinh
do phương thức làm việc cũ, cũng như theo
các cơ chế QL cũ không hiệu quả.
Xác định lại vấn đề của hệ thống hiện tại
• Các vấn đề cần phát hiện:
– Chu trình làm việc cũ có chỗ không hợp lý
– Công việc chồng chéo
– Tốc độ thực hiện thường xuyên chậm chạp, không
đáp ứng được y/c của người dùng và khách hàng
– Thường xảy ra sai sót do phải thực hiện thủ công
– Việc kiểm tra, kiểm soát gặp khó khăn
Đề xuất giải pháp phù hợp
• Đề xuất giải pháp phần mềm cho hệ thống mới
nhằm giải quyết các vấn đề đã xác định ở trên:
– Đưa ra chu trình làm việc hợp lý hơn nếu cần
– Phân công nhiệm vụ cụ thể và rõ ràng hơn để tránh
chồng chéo
– Phần mềm nên tập trung vào các khâu mà đang có
vấn đề chậm chạp, hoặc thường xuyên có sai sót
– Hệ thống mới cũng nên bổ sung các tính năng hỗ
trợ việc kiểm tra, giám sát của các nhà quản lý
Đề xuất giải pháp phù hợp
• Sau khi đề xuất giải pháp cho HT mới, cần có
các cuộc gặp chính thức với khách hàng để
thống nhất giải pháp:
– Trình bầy giải pháp mới cho khách hàng
– Kiến nghị với KH về các điều chỉnh cần thiết đối
với chu trình cũ nếu có
– Lắng nghe ý kiến phản hồi, để có các điều chỉnh
cần thiết, nhằm làm tăng tính khả thi của giải pháp
đó.
– Cùng nhau đi đến thống nhất giải pháp mới
Phân tích chức năng
• Mục đích:
– Làm rõ các thành phần chức năng của hệ thống mới và các
thành phần liên quan như đối tượng sử dụng, dữ liệu trao
đổi, trong đó chức năng đóng vai trò trung tâm
– Làm rõ mối quan hệ giữa các chức năng với nhau và với
các thành phần khác
Phân tích chức năng
• Các phương pháp:
– Theo mức độ trừu tượng:
• Phân tích đại thể
• Phân tích chi tiết
– Theo góc nhìn:
• Phân tích tĩnh: chỉ tập trung xác định các chức năng
của hệ thống, không quan tâm việc thực hiện các chức
năng đó như thế nào
• Phân tích động: ngoài chức năng, còn xác định các
thành phần khác như đối tượng sử dụng, dữ liệu, và mối
quan hệ giữa chúng khi thực hiện chức năng như thế
nào
Phân tích chức năng
• Công cụ sử dụng:
– Phân tích tĩnh và đại thể: biểu đồ phân cấp chức
năng (BPC)
– Phân tích động: biểu đồ luồng dữ liệu (BLD)
– Phân tích chi tiết: các đặc tả chức năng:
• Đặc tả chức năng (PSpec)
• Các bảng quyết định
Phân tích chức năng –
Biểu đồ phân cấp chức năng
• Là mô hình phân tích đại thể và tĩnh về các
chức năng của hệ thống
• Xác định mối quan hệ bao hàm giữa các chức
năng: chức năng đại thể bao hàm các chức
năng chi tiết hơn tạo ra cây phân cấp các
chức năng
• Việc phân cấp chức năng này thường được
dùng để xác định menu chính của phần mềm
sau này
Phân tích chức năng –
Biểu đồ luồng dữ liệu (BLD)
• Là mô hình phân tích động hệ thống
• Xác định rõ những đối tượng mà hệ thống mới sẽ
phục vụ (người dùng, tác nhân ngoài)
• Làm rõ các thành phần chức năng của hệ thống mới
• Xác định rõ mối quan hệ giữa các đối tượng và các
chức năng: đối tượng nào dùng chức năng nào và
dùng như thế nào các luồng dữ liệu vào/ra hệ
thống
• Xác định mối quan hệ giữa các chức năng như: thứ tự
thực hiện, đồng bộ, thông tin trao đổi các luồng
thông tin nội bộ
Phân tích chức năng –
Các đặc tả chức năng
• Đặc tả chức năng (PSpec):
Mô tả chi tiết hoạt động bên trong của mỗi
chức năng, có vai trò như giải thuật thực hiện
chức năng đó
• Các bảng quyết định:
Dùng để mô tả chi tiết các tình huống có nhiều
lựa chọn trong các đặc tả chức năng
Phân tích dữ liệu
• Mục đích:
– Làm rõ các thành phần dữ liệu của hệ thống và mối
quan hệ giữa chúng
• Phương pháp:
– Phân tích hướng dữ liệu: chỉ tập trung làm rõ phần
dữ liệu và các ràng buộc nghiệp vụ trong đó
• Công cụ:
– Từ điển dữ liệu
– Mô hình thực thể liên kết
Phân tích hành vi
• Mục đích:
– Xác định các trạng thái của hệ thống, và các sự
kiện gây ra sự thay đổi các trạng thái đó
– Xác định các hành động cần làm khi có một sự
kiện nào đó xảy ra
– Thường được dùng để mô tả các hệ thống mà thời
điểm, thứ tự xuất hiện các sự kiện là không xác
định (ngẫu nhiên bất kỳ), như các hệ thống điều
khiển thời gian thực
• Công cụ:
– Biểu đồ chuyển trạng thái
Tóm tắt
• Xác định chi tiết và cụ thể hơn các vấn đề của
hệ thống hiện tại
• Đưa ra giải pháp phần mềm hợp lý giải quyết
thỏa đáng các vđ trên
• Đi vào phân tích các thành phần của hệ thống:
– Phân tích chức năng
– Phân tích dữ liệu
– Phân tích hành vi
Xin cảm ơn!
Viện Điện tử - Viễn thông
Bộ Môn Điện tử - Kỹ thuật máy tính
Kỹ thuật phần mềm ứng dụng
Chương 7: Phân tích hệ thống
Phần 2: Phân tích về chức năng
1
Các nội dung chính
• Phân tích tĩnh thuần túy chức năng: Biểu đồ
phân cấp chức năng
• Phân tích động và tổng thể: các biểu đồ luồng
dữ liệu
• Phân tích chi tiết: đặc tả tiến trình
• Phân tích hành vi: biểu đồ chuyển trạng thái
2
Biểu đồ phân cấp chức năng
• Mục đích:
– Xác định mối quan hệ bao hàm giữa các chức
năng: chức năng đại thể bao hàm các chức năng
chi tiết hơn tạo ra cây phân cấp các chức năng
– Việc phân cấp chức năng này thường được dùng để
xác định menu chính của phần mềm sau này
3
Biểu đồ phân cấp chức năng
• Cấu trúc:
Mức 0
CN chính
CN con 1
CN con 2
CN con 3
CN con 1.1
CN con 2.1
CN con 3.1
CN con 1.2
CN con 2.2
CN con 3.2
Mức 1
Mức 2
CN con 2.3
4
Biểu đồ phân cấp chức năng
• Phương pháp xây dựng:
– Đầu vào:
• các kịch bản sử dụng;
• phần mô tả khái quát các chức năng của hệ thống;
– Đầu ra: BPC
– Nội dung:
• Xác định mối quan hệ bao hàm giữa các chức năng, từ
đó xác định số mức của biểu đồ
• Xác định các chức năng của từng mức
5
Biểu đồ phân cấp chức năng
• Bản chất mối quan hệ bao hàm: chức năng A
bao hàm chức năng B:
– Ý nghĩa 1: chức năng B là một bộ phận cần thiết
của chức năng A
– Ý nghĩa 2: chức năng A là trừu tượng để gộp nhóm
các chức năng, trong đó có chức năng B
• Các phương pháp gộp nhóm:
– Gộp theo người dùng
– Gộp theo loại chức năng: đầu vào (nhập DL), đầu
ra (báo cáo), xử lý
6
Ví dụ: BPC cho hệ thống QL KLGD
QLKLGD
Cập nhật
Danh mục
Cập nhật
KLGD
Khoa
Thời KB
Bộ môn
Cập nhật
KLGD
Lớp học
Môn học
Phòng học
Phân công
KLGD
Báo cáo
BC KLGD Khoa
BC KLGD Bộ
môn
BC KLGD Giáo
viên
Phân cho BM
Phân cho GV
7
Biểu đồ luồng dữ liệu
• Mục đích:
– Là mô hình phân tích động hệ thống
– Xác định rõ những đối tượng mà hệ thống mới sẽ phục vụ
(người dùng, tác nhân ngoài)
– Làm rõ các thành phần chức năng của hệ thống mới
– Xác định rõ mối quan hệ giữa các đối tượng và các chức
năng: đối tượng nào dùng chức năng nào và dùng như thế
nào các luồng dữ liệu vào/ra hệ thống
– Xác định mối quan hệ giữa các chức năng như: thứ tự thực
hiện, đồng bộ, thông tin trao đổi các luồng thông tin nội
bộ
8
Biểu đồ luồng dữ liệu – Cấu tạo
• Tác nhân ngoài/trong
Người dùng
• Chức năng/tiến trình
Xử lý
• Luồng dữ liệu
• Kho dữ liệu
Tên luồng
dữ liệu
Kho dữ liệu
9
Biểu đồ luồng dữ liệu - Cấu tạo
• Tác nhân ngoài (đối tác – actor): là đối tượng
ở bên ngoài hệ thống, nhưng có nhu cầu trao
đổi thông tin với hệ thống. Đây thường là
những người dùng cuối của hệ thống
• Tác nhân trong: là một chức năng hoặc hệ
con đã được mô tả ở trang khác của mô hình,
nhưng lại có trao đổi thông tin với các thành
phần trong trang hiện tại
10
Biểu đồ luồng dữ liệu - Cấu tạo
• Chức năng/tiến trình:
– Có nhiệm vụ tiếp nhận và biến đổi luồng dữ liệu vào theo
một quy tắc nào đó, rồi đưa thông tin ra
• Luồng dữ liệu:
– Biểu diễn luồng thông tin trao đổi từ nguồn thông tin đến
đích thông tin. Trong đó nguồn và đích có thể là các thành
phần của biểu đồ
• Kho dữ liệu:
– Biểu diễn nơi lưu trữ thông tin trong một thời gian nào đó,
và cũng đồng thời giúp đồng bộ hoạt động của các tiến
trình
11
Biểu đồ luồng dữ liệu – Ví dụ
Đăng
nhập
Thông tin đăng nhập
Sinh viên
Cập nhật
hồ sơ
Kq
HS SV
Hồ sơ SV
Tìm kiếm
hồ sơ
12
Biểu đồ luồng dữ liệu – Các mức
• Biểu đồ mức 0 (mức khung cảnh): là biểu đồ
mức cao nhất. mức này chỉ có 1 tiến trình
duy nhất là hệ thống cần xây dựng, được nối
với các tác nhân bằng các luồng dữ liệu ngoài
• Biểu đồ mức 1 (mức đỉnh): là kết quả của việc
phân rã chức năng duy nhất trong mức 0, thành
các tiến trình con. mức này có thể bắt đầu có
nhu cầu xuất hiện các Kho dữ liệu
• Các biểu đồ mức 2,3,v.v: làm tương tự như
cho biểu đồ mức đỉnh
13
Biểu đồ luồng dữ liệu – Mức 0
(1)
Sinh viên
(2)
Quản lý
Sinh viên
(3)
(4)
Giáo vụ
•(1): là dữ liệu mà SV có thể cập nhật như hồ sơ SV; cũng có các thông tin mà SV
muốn tìm kiếm như Lịch học, Lịch thi, Kết quả thi,v.v
•(2): là dữ liệu về các kết quả tìm kiếm trên
•(3): là dữ liệu mà GVụ có thể cập nhật và tìm kiếm như hồ sơ SV, hồ sơ GV, Kết quả
kiểm tra, thi của SV, Lịch giảng dạy, Lớp học,v,v
•(4): là dữ liệu về các kết quả tìm kiếm trên
14
Biểu đồ luồng dữ liệu – Mức 1
Giáo
vụ
Quản lý
hồ sơ
Hồ sơ SV
Quản lý
học
Lịch học
Sinh
viên
Quản lý
thi
15
Đặc tả tiến trình
• Xem tài liệu tham khảo
16
Biểu đồ chuyển trạng thái
• Xem tài liệu tham khảo
17
Cảm ơn!
18
Viện Điện tử - Viễn thông
Bộ Môn Điện tử - Kỹ thuật máy tính
Kỹ thuật phần mềm ứng dụng
Chương 8: Thiết kế hệ thống
Phần 1: Giới thiệu chung
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
2
Mục đích của giai đoạn Thiết kế
• Là quá trình chuyển các y/c 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/c 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
nh hưởng xấu đến chất lượng và tiến độ làm phần
mềm
3
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)
4
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 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
• Trừu tượng thủ tục
• Trừu tượng dữ liệu
• Trừu tượng điều khiển
5
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)
– Việc làm mịn giúp cho việc chuyển đổi này diễn ra
một cách không đột ngột và dễ dàng quản lý.
6
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
7
Modul hóa
Quan hệ giữa modul hóa và chi phí phần mềm
8
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)
9
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.
10
Các loại cố kết và mức độ của chúng
Mức độ
Thấp
Vừa
Cao
Loại cố kết
Ý nghĩa
Cố kết trùng
khớp
Modul bao gồm một dãy các công việc mà liên
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
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 tg.
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
Cố kết truyền
thông
Khi các công việc trong một modul cùng sử dụng
một phần nào đó của một cấu trúc dữ liệu
Cố kết thủ tục
rõ ràng
Khi modul đó chỉ thực hiện một công việc
11
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:
12
Ví dụ về mức độ cố kết
Chọn
cách
nhập
Nhập từ bàn
phím
BT dạng
trung tố
Nhập từ tệp
In ra màn
hình
Ghi ra tệp
Chuyển bt
sang dạng
hậu tố
BT dạng
hậu tố
Chọn
cách
xuất
Giá trị BT
Tính giá trị
biểu thức
13
Mức độ cố kết thấp: trùng khớp
Chọn
cách
nhập
Nhập từ bàn
phím
BT dạng
trung tố
Nhập từ tệp
In ra màn
hình
Ghi ra tệp
Chuyển bt
sang dạng
hậu tố
BT dạng
hậu tố
Chọn
cách
xuất
Giá trị BT
Tính giá trị
biểu thức
Một modul làm toàn bộ các công việc
14
Mức độ cố kết vừa: thủ tục
modul
nhập BT
Chọn
cách
nhập
Nhập từ bàn
phím
BT dạng
trung tố
Nhập từ tệp
In ra màn
hình
Ghi ra tệp
modul xuất BT
Chuyển bt
sang dạng
hậu tố
BT dạng
hậu tố
Chọn
cách
xuất
Giá trị BT
Tính giá trị
biểu thức
modul
tính giá
trị BT
15
Mức độ cố kết cao: thủ tục rõ ràng
Nhập từ bàn
phím
Chọn cách
nhập
BT dạng
trung tố
Nhập từ tệp
In ra màn
hình
Chuyển bt
sang dạng
hậu tố
BT dạng
hậu tố
Chọn cách
xuất
Giá trị BT
Tính giá trị
biểu thức
Ghi ra tệp
16
Mức độ tương liên
• Khái niệm:
Mức độ tương liên của một modul đơ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.
17
Mức độ tương liên
Mức độ
Loại
Thấp
Tương liên
dữ liệu
Là khi một modul truyền tham số đến modul
khác
Tương liên
điều khiển
Là khi một modul truyền một thông tin điều
khiển (cờ điều khiển) đến modul khác
Tương liên
ngoài
Là khi một modul phụ thuộc vào một thiết bị
bên ngoài (như các t/b nhập/xuất)
Tương liên
chung dữ
liệu
Là khi một số modul tham chiếu/chia sẻ đến
cùng một đối tượng dữ liệu toàn cục
Tương liên
nội dung
Là khi một modul sử dụng dữ liệu hay điều
khiển 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
Vừa
Cao
Ý nghĩa
18
Cảm ơn!
19
Viện Điện tử - Viễn thông
Bộ Môn Điện tử - Kỹ thuật máy tính
Kỹ thuật phần mềm ứng dụng
Chương 8: Thiết kế hệ thống
Phần 2: TK cơ sở dữ liệu
Các nội dung chính
• Các bước thiết kế một CSDL
• Ví dụ minh họa
Thiết kế Cơ sở dữ liệu
1. Chuyển từ mô hình thực thể liên kết sang mô hình quan hệ.
2. Xác định các phụ thuộc hàm từ các ràng buộc dữ liệu và các
quy tắc nghiệp vụ.
3. Chuẩn hóa các lược đồ quan hệ, đưa chúng về các lược đồ ở
dạng chuẩn 3.
4. Bổ sung thêm các thuộc tính khóa nếu cần, nhất là khi quan
hệ có nhiều thuộc tính khóa.
5. Xác định chi tiết các miền giá trị cho các thuộc tính, từ đó
xác định kiểu dữ liệu cho chúng. Lập bảng mô tả chi tiết các
kiểu dữ liệu của từng thuộc tính cho từng quan hệ (bảng)
3
Ví dụ về TK CSDL
Tên thực
thể
Tên sử
dụng
Khoa
Bộ môn
Giáo viên
TKhoa
TBoMon
TGiaoVien
Lớp học
Phòng học
TLopHoc
TPhong
Trưởng BM
TTrBM
Thời khóa biểu
TKB
Khối lượng
giảng dạy
KLGD
Các thuộc tính
Tên khoa, Văn phòng, Điện thoại, Fax
Tên BM, Văn phòng
TênGV, Ngày sinh, Địa chỉ, Chức danh,
Chức vụ, Ngày chức danh, Ngày chức vụ
Tên lớp, Khóa học, Số Lượng SV
Tên phòng, SL chỗ ngồi
Gồm các thuộc tính của Giáo viên, Ngày
nhậm chức, Ngày thôi chức
Năm học, Học kỳ, Khoa, Lớp học, Phòng
học, Môn học, Tiết học
TKB, Giáo viên
4
Ví dụ về TK CSDL
1
N
Khoa
1
N
N
TKB
1
N
1
Lớp học
1
N
1
KLGD
Phòng học
N
N
Bộ
1
ôn
1
N
Giáo viên
1
1
Trưởng Bộ
môn
5
Các bảng được suy ra
Bảng Khoa
Thuộc tính
Tên khoa, Văn phòng, Điện thoại, Fax
Ràng buộc & Quy tắc nghiệp vụ
Mỗi khoa có 1 văn phòng
Và thường mỗi VP thuộc về một khoa,
vì việc chuyển địa điểm làm việc của
khoa rất hiếm khi xảy ra
Mỗi văn phòng có một số fax và có thể
có nhiều số điện thoại
Chuẩn hóa:
Khóa: K = (Tên khoa, Điện thoại);
Vi phạm chuẩn 2 và 3
Tách thành 3 quan hệ:
Khoa (Tên khoa, Văn phòng);
VănPhòng (Văn phòng, Fax);
ĐiệnThoạiKhoa (Tên khoa, Điện thoại);
Phụ thuộc hàm
Tên khoa Văn
phòng;
Văn phòng Fax
Ghi chú: có thể cân
nhắc việc ghép 2 bảng
Khoa và Văn phòng do
mối qhệ giữa 2 bảng
này.
6
Các bảng được suy ra
Bảng Giáo viên
Thuộc tính
Ràng buộc & Quy tắc
nghiệp vụ
Mỗi GV có 1 ngày sinh
Mỗi GV có thể có nhiều địa
chỉ, nhưng ở mỗi thời điểm
thì chỉ có 1 chức danh và
nhiều nhất là 1 chức vụ (có
thể không có).
TênGV, Ngày sinh, Địa chỉ, Chức danh,
Ngày chức danh, Chức vụ, Ngày chức vụ
Phụ thuộc hàm
TênGV Ngày sinh;
TênGV, Ngày chức danh Chức danh;
TênGV, Ngày chức vụ Chức vụ
Chuẩn hóa:
Khóa duy nhất: K = (TênGV, Địa chỉ, Ngày chức danh, Ngày chức vụ)
Vi phạm chuẩn 2; Tách thành 4 quan hệ:
GiáoViên (TênGV, Ngày sinh);
GV-Địa chỉ (TênGV, Địa chỉ, Ngày chức danh, Ngày chức vụ);
GV-Chức danh (TênGV, Ngày chức danh, chức danh);
GV-Chức vụ (TênGV, Ngày chức vụ, chức vụ);
7
Ghép 2 bảng Bộ môn và Trưởng BM
Bảng Bộ môn
Thuộc tính
Ràng buộc & Quy tắc
nghiệp vụ
Mỗi Bộ môn có 1 Văn
phòng
Mỗi trưởng BM có 1 ngày
nhậm chức và 1 ngày thôi
chức
mỗi thời điểm thì 1 BM
chỉ có 1 trưởng BM
TênBM, Văn phòng, Trưởng BM, Ngày
nhậm chức, Ngày thôi chức
Phụ thuộc hàm
TênBM Văn phòng;
Trưởng BM Ngày nhậm chức, ngày
thôi chức
Tên BM, Ngày nhậm chức Trưởng BM
Chuẩn hóa:
Khóa: K1 = (TênBM, Trưởng BM); K2 = (Tên BM, Ngày nhậm chức)
Vi phạm chuẩn 2; Tách thành các quan hệ:
Bộ môn (Tên BM, Văn phòng);
TrưởngBM (TrưởngBM, Ngày nhậm chức, Ngày thôi chức);
BM-TrưởngBM (Tên BM, Ngày nhậm chức, Trưởng môn);
8
Các bảng được suy ra
Bảng TKB
Thuộc tính
Ràng buộc & Quy tắc
nghiệp vụ
Mỗi lớp học thuộc một
khoa
Mỗi môn học của một lớp
trong một năm học và 1
học kỳ thì học ở 1 tiết học
phải học ở 1 phòng
Năm học, Học kỳ, Tên Khoa , Tên
lớp, Tên phòng, Môn học, Tiết học
Phụ thuộc hàm
Tên lớp Tên Khoa;
Năm học, Học kỳ, Tên lớp, Môn học, Tiết
học Tên phòng;
Chuẩn hóa:
Khóa duy nhất: K = (Năm học, Học kỳ, Tên lớp, Tên phòng, Tiết học)
Vi phạm chuẩn 2; Tách thành các quan hệ:
Lớp học (Tên lớp, Tên khoa);
TKB (Năm học, Học kỳ, Tên lớp, Tên phòng, Tiết học, Tên phòng);
9
Bổ sung các thuộc tính khóa và xác
định miền giá trị cho các thuộc tính
Bảng Khoa
Bảng Văn phòng
Thuộc tính
Kiểu dữ liệu
Ràng buộc
Thuộc
tính
Kiểu dữ liệu
Ràng buộc
ID
int
PK
ID
int
PK
TênKhoa
Varchar(200)
Not NULL
Tên VP
Varchar(200)
Not NULL
ID_VP
int
FK to
VănPhòng(ID)
Fax
Varchar(20)
Dãy các chữ
số liên tiếp
Bảng ĐiệnThoạiKhoa
Thuộc tính
Kiểu dữ liệu
Ràng buộc
ID
int
PK
ID_Khoa
Int
FK to Khoa(ID)
ĐiệnThoại
Varchar(20)
Dãy các chữ số
liên tiếp
10
Cảm ơn!
Viện Điện tử - Viễn thông
Bộ Môn Điện tử - Kỹ thuật máy tính
Kỹ thuật phần mềm
Chương 8: Thiết kế phần mềm
Phần 3: Thiết kế kiến trúc
Thiết kế kiến trúc phần mềm
• Khái niệm về kiến trúc phần mềm:
• Các phong cách kiến trúc
• Các phương pháp thiết kế
2
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
3
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
4
Kiến trúc phần mềm
• Các phong cách kiến trúc
– Kiến trúc lấy dữ liệu làm trung tâm (data-centered
architectures)
– Kiến trúc luồng dữ liệu (data flow architectures)
– Kiến trúc gọi và trả về (call and return
architectures)
• Main module/sub module
• Remote procedure call
5
Kiến trúc lấy dữ liệu làm trung tâm
6
Kiến trúc luồng dữ liệu
7
Kiến trúc gọi và trả về
8
Kiến trúc gọi và trả về
• Kiến trúc này còn được gọi là “cấu trúc
chương trình”, hay “phân cấp điều khiển”
• Một số khái niệm liên quan:
– Fan-in: của một module là độ đo số lượng module
khác mà điều khiển/gọi module đó
– Fan-out: của một module là độ đo số lượng
module mà module đó điều khiển/gọi
– Chiều sâu (depth): xác định số mức điều khiển/gọi
– Độ rộng (width): xác định phạm vi điều khiển/gọi
9
Thiết kế kiến trúc phần mềm
• Phương pháp được sử dụng:
“Thiết kế có cấu trúc” (structured design)
• Đặc điểm của phương pháp:
Có hướng luồng dữ liệu, cung cấp cách thuận
tiện để chuyển từ các biểu đồ luồng dữ liệu
sang mô hình kiến trúc phần mềm
10
Thiết kế có cấu trúc
Các
biểu đồ
luồng
DL
1. Xác định kiểu
luồng thông tin
2. Xác định các
biên của luồng
3. Chuyển BLD
sang lược đồ cấu
trúc chương trình
5. Đặc tả các
module và luồng
điều khiển
4. Tinh chỉnh lược
đồ cấu trúc CT
Các đặc tả
module
LĐ cấu trúc
chương trình
11
Các kiểu luồng thông tin
• Luồng biến đổi (transform flow)
Luồng vào
Trung tâm
biến đổi
Luồng ra
• Luồng giao tác (transaction flow)
– Là loại luồng biến đổi đặc biệt, trong đó có một
luồng vào và có nhiều luồng ra
12
Luồng giao tác
13
Chuyển luồng biến đổi
• Bước 1: Làm mịn các biểu đồ luồng dữ liệu
đến mức cần thiết
• Bước 2: Xác định các biên của luồng dữ liệu
để xác định trung tâm biến đổi và các luồng
vào và ra
• Bước 3: Chuyển đổi BLD sang lược đồ cấu
trúc
• Bước 4: Tinh chỉnh LĐCT
14
Chuyển luồng biến đổi – Bước 1
15
Chuyển luồng biến đổi – Bước 1
16
Chuyển luồng biến đổi – Bước 1
17
Chuyển luồng biến đổi – Bước 2
18
Chuyển luồng biến đổi – Bước 3
19
20
Chuyển luồng biến đổi – Bước 4
21
Chuyển luồng biến đổi – Bước 4
22
Chuyển luồng giao tác – Bước 2
23
Chuyển luồng giao tác – Bước 3
24
Chuyển luồng giao tác – Bước 3
25
Tóm tắt
• Kiến trúc phần mềm và vai trò của việc thiết
kế KTPM
• Các phong cách kiến trúc
• Phương pháp thiết kế có cấu trúc
• Các loại luồng dữ liệu
– Luồng biến đổi
– Luồng giao tác
• Cách chuyển đổi từ BLD sang lược đồ cấu trúc
chương trình
26
Cảm ơn!
27
Viện Điện tử - Viễn thông
Bộ Môn Điện tử - Kỹ thuật máy tính
Kỹ thuật phần mềm
Chương 8: Thiết kế phần mềm
Phần 4: Thiết kế giao diện
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, 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 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
12
Các bước thiết kế giao diện
13
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”
14
Cảm ơn!
15
Đại học Bách khoa Hà Nội
Viện Điện tử - Viễn thông
Kỹ thuật phần mềm ứng dụng
Chương 9: Ngôn ngữ SQL
Phần 1: Câu truy vấn đơn
Nội dung chính
Tổng quan về SQL
Transact SQL (T-SQL) của Microsoft
2
Tổng quan về SQL
SQL (viết tắt của “Structured Query Language” – Ngôn ngữ truy
vấn có cấu trúc) là tập các lệnh cho phép người dùng và cả các
chương trình thực hiện các truy vấn dữ liệu trong cơ sở dữ liệu.
Về mặt lịch sử, ban đầu nó có tên gọi là SEQUEL, (Structured
English Query Language) do Donald D. Chamberlin và
Raymond F. Boyce tại hãng IBM phát triển vào đầu những năm
70 của thế kỷ trước. Sau này nó mới được đổi tên thành SQL (và
vẫn được phát âm là "sequel").
Ngày nay, nó là ngôn ngữ chuẩn hóa của các hệ quản trị cơ sở dữ
liệu quan hệ.
3
Các phiên bản SQL*
Year
Name
Alias
Comments
1986
SQL-86
SQL-87
First published by ANSI. Ratified by ISO in 1987.
1989
SQL-89
FIPS 127-1
Minor revision, adopted as FIPS 127-1.
1992
SQL-92
SQL2, FIPS
127-2
Major revision (ISO 9075), Entry Level SQL-92 adopted as FIPS 127-2.
1999
SQL:1999
SQL3
Added regular expression matching, recursive queries, triggers, support for
procedural and control-of-flow statements, non-scalar types, and some objectoriented features.
2003
SQL:2003
Introduced XML-related features, window functions, standardized sequences, and
columns with auto-generated values (including identity-columns).
2006
SQL:2006
ISO/IEC 9075-14:2006 defines ways in which SQL can be used in conjunction
with XML. It defines ways of importing and storing XML data in an SQL
database, manipulating it within the database and publishing both XML and
conventional SQL-data in XML form. In addition, it provides facilities that permit
applications to integrate into their SQL code the use of XQuery, the XML Query
Language published by the World Wide Web Consortium (W3C), to concurrently
access ordinary SQL-data and XML documents.
2008
SQL:2008
Defines more flexible windowing functions, clarifies SQL 2003 items that were
still unclear [1]
4
Transact SQL (T-SQL)
Transact-SQL (T-SQL) *: là mở rộng của ngôn
ngữ SQL do Microsoft và Sybase phát triển, được
sử dụng trong các hệ quản trị CSDL như SQL
Server
T-SQL
SQL
5
Các thành phần ngôn ngữ của TSQL
T - SQL
DDL
(Data Definition Language)
DML
(Data Manipulation Language)
DCL
(Data Control Language)
6
Các thành phần ngôn ngữ của TSQL
7
Lệnh SELECT
Lệnh SELECT là một lệnh đa
năng để truy vấn dữ liệu trong
CSDL. Nó cho phép thực hiện
tất cả các thao tác cơ bản trong
đại số quan hệ như:
Chiếu (Projection)
Chọn (Selection)
Nối (Joining)
Hợp (Union)
Trừ (Except)
Lệnh SQL đơn giản nhất: in
ra toàn bộ nội dung của 1
bảng:
SELECT *
FROM table-name;
8
Phân loại:
Lệnh SELECT
Lệnh đơn: là câu lệnh mà chỉ truy vấn thông tin từ
1 bảng
Lệnh phức: là câu lệnh truy vấn thông tin từ nhiều
bảng
Lệnh truy vấn con (sub-query, hay còn gọi là
lệnh SELECT lồng nhau): là câu lệnh SELECT mà
bên trong nó cũng lại chứa 1 hay nhiều câu lệnh
SELECT khác
9
Ghi chú
Mỗi một lệnh (statement) trong SQL bao gồm một số
mệnh đề (clause)
Ví dụ:
SELECT *
FROM employees
là một câu lệnh gồm có 2 mệnh đề
Cú pháp trong SQL KHÔNG phân biệt chữ hoa với
chữ thường
Với các từ khóa nên viết hoa để dễ phân biệt với các
từ khác
10
Lệnh đơn
1.
2.
3.
4.
5.
Phép chiếu trong SQL
Phép chọn trong SQL
Đối sánh mẫu (Pattern matching) trong SQL
Giá trị NULL và ‘Unknown’
Sắp xếp đầu ra
11
Cú pháp lệnh SELECT
SELECT [ ALL | DISTINCT ]
* | {column_name | expression [alias],…}
FROM table
SELECT xác định các thuộc tính (cột) cần xuất ra
ALL: là lựa chọn mặc định, cho phép các hàng có giá trị trùng nhau
cũng được xuất ra
DISTINCT: các hàng có giá trị trùng nhau chỉ được xuất ra 1 lần
FROM xác định một hay nhiều bảng chứa các thông tin cần
tìm
12
Ví dụ: SELECT tất cả các cột
SELECT *
FROM PC
13
Phép chiếu trong SQL
Trong mệnh đề SELECT, thay vì sử dụng “*”
để liệt kê toàn bộ các thuộc tính, ta có thể liệt
kê từng thuộc tính mà muốn xuất ra.
VD:
SELECT model, speed, price
FROM
PC
14
Có thể mở rộng phép chiếu
sử dụng bí danh và biểu thức
SELECT model, price [price in USD],
price*20000 [price in VND]
FROM
PC
15
Bí danh (Alias)
Là biện pháp cho phép đổi tên các thuộc tính (cột),
hay tên các bảng trong câu lệnh SELECT
Nó có thể đi kèm với từ khóa AS (không bắt buộc)
Trong trường hợp bí danh có khoảng trắng thì cần đặt
nó trong cặp “bí danh” hoặc [bí danh]
16
Loại bỏ các bộ trùng lặp với từ khóa DISTINCT
Bảng PC
SELECT DISTINCT speed
FROM
PC
SELECT DISTINCT speed,hdd
FROM
PC
17
Phép chọn trong SQL
SELECT [ ALL | DISTINCT ]
* | {column_name | expression [alias],…}
FROM table
WHERE condition
Trong đó:
[condition ]: biểu thức logic biểu diễn điều kiện chọn.
18
Các ví dụ cho lệnh chọn
19
Các ví dụ cho lệnh chọn
20
Các phép toán trong SQL
Các phép toán số học: +,-,*,/,
Các phép toán so sánh: <,>,<=,>=,=,<> hoặc !=,
BETWEEN .. AND
Phép đối sánh mẫu: LIKE
Các phép toán logic: AND, OR, NOT
Các phép toán tập hợp: IN, UNION,
INTERSECTION, EXCEPT (MINUS)
21
Đối sánh mẫu
Khi so sánh các chuỗi, ngoài các phép toán quan hệ
thông thường (<,>,=,v.v), SQL còn cung cấp khả
năng so sánh theo mẫu (pattern), nó được gọi là “đối
sánh mẫu” (pattern matching).
Cú pháp như sau:
trong đó:
s LIKE p
s: là chuỗi ta muốn đem so sánh
p: là một mẫu cần so sánh. Nó có thể chứa các ký bất kỳ và
2 loại ký tự mẫu đại diện đặc biệt:
• “%”: đại diện cho một chuỗi bất kỳ, kể cả chuỗi rỗng
• “_”: đại diện cho đúng 1 ký tự bất kỳ
22
Một số ví dụ
Bảng Employees trong CSDL NorthWind
23
Một số ví dụ
Tìm các nhân viên có FirstName bắt đầu là ký tự ‘A’?
SELECT EmployeeID, LastName, FirstName,Title
FROM
Employees
WHERE FirstName LIKE 'A%'
24
Một số ví dụ
Tìm các nhân viên có LastName có độ dài ít nhất 2 ký
tự và có ký tự cuối cùng là ‘n’ ?
SELECT EmployeeID, LastName, FirstName,Title
FROM
Employees
WHERE LastName LIKE '%_n'
25
Giá trị NULL và logic UNKNOWN
NULL là giá trị đặc biệt được đưa vào để biểu diễn giá trị cho
các thuộc tính mà không có giá trị.
NULL không thuộc miền giá trị của bất kỳ kiểu dữ liệu nào,
nên thực ra nó không được coi như một “giá trị” thực sự cho
một thuộc tính, mà chỉ có ý nghĩa đánh dấu là thuộc tính này
chưa có giá trị (chưa được khởi tạo, cũng như chưa được cập
nhật giá trị).
Do đó, việc so sánh một giá trị với NULL có thể không trả về
giá trị logic TRUE hay FALSE như các giá trị thông thường.
Chính vì vậy, các hệ QTCSDL đưa thêm vào một giá trị logic
thứ ba để biểu diễn tình huống này và gọi nó là Unknown
26
Bảng giá trị logic với ‘Unknown’
27
Sắp xếp kết quả tìm kiếm
SELECT [ ALL | DISTINCT ]
* | {column_name | expression [alias],…}
FROM table
[WHERE conditions]
[ORDER BY {expression [ASC | DESC] ,…} ]
Sử dụng mệnh đề ORDER BY, nó phải là mệnh đề cuối cùng
trong lệnh SELECT.
Expression: Xác định một hoặc nhiều thuộc tính trong số các
thuộc tính mà ta muốn sắp xếp. Khi có nhiều thuộc tính, thì
việc sắp xếp sẽ lần lượt theo thứ tự xuất hiện của các thuộc
tính.
28
Ví dụ
In d/s nhân viên có sắp xếp theo LastName:
SELECT EmployeeID, LastName, FirstName, Title, TitleOfCourtesy
FROM
Employees
ORDER BY LastName
29
Ví dụ
In d/s nhân viên có sắp xếp theo TitleOfCourtesy (theo thứ tự giảm
dần) và FirstName:
SELECT EmployeeID, LastName, FirstName, Title, TitleOfCourtesy
FROM
Employees
ORDER BY TitleOfCourtesy DESC, 3
30
Tóm tắt
31
Đại học Bách khoa Hà Nội
Viện Điện tử - Viễn thông
Viện Điện tử - Viễn thông
Bộ môn Điện tử - Kỹ thuật máy tính
Kỹ thuật phần mềm ứng dụng
Chương 9: Ngôn ngữ SQL
Phần 2: Câu truy vấn trên nhiều bảng
Lệnh SELECT
Lệnh SELECT là một lệnh
đa năng để truy vấn dữ
liệu trong CSDL. Nó cho
phép thực hiện tất cả các
thao tác cơ bản trong đại
số quan hệ như:
•Chiếu (Projection)
•Chọn (Selection)
•Nối (Joining)
•Các phép toán tập hợp
(Hợp, giao, trừ)
Phép nối (join)
Phép nối (join)
• Phân loại:
– Tích Đề các: cross join
– Nối bằng: equi-join
• Nối tự nhiên: natural join
– Nối không bằng: theta-join
– Nối trong: inner join
– Nối ngoài: outer join
Tích Đề các
Bảng PC
Bảng Product
Tính PC x Product
SELECT *
FROM PC, Product
Tích Đề các: PC x Product
Tránh trùng tên bảng và thuộc tính đặt bí danh
Bảng PC
Tìm các cặp PC có ổ cứng bằng nhau:
SELECT p1.model [model 1], p2.model [model 2]
FROM PC p1, PC p2
WHERE (p1.model < P2.model ) AND
(p1.hdd = P2.hdd)
Nối bằng
Bảng PC
Bảng Product
Liệt kê chi tiết thông tin về các sản phẩm
của các nhà sản xuất
Product ⋈ PC
Product.model =
PC.model
Nối bằng
Product ⋈ PC
Product.model =
PC.model
SELECT *
FROM PC, Product
WHERE PC.model =
Product.model
SELECT *
FROM PC JOIN Product
ON PC.model =
Product.model
Cách 1: dùng logic chọn
Cách 2: dùng lệnh JOIN
Kết quả
SELECT *
FROM PC, Product
WHERE PC.model =
Product.model
SELECT *
FROM PC JOIN Product
ON PC.model =
Product.model
Sử dụng bí danh trong lệnh JOIN
SELECT Pr.maker, PC.model, speed, hdd, screen, price
FROM PC JOIN Product Pr
ON PC.model = Pr.model
Nối không bằng
• Trong t/h nối không bằng, thì tương tự như t/h
nối bằng, ta cũng có thể sử dụng 1 trong 2
cách:
– Sử dụng điều kiện nối trong mệnh đề WHERE,
– Hoặc sử dụng lệnh JOIN với điều kiện nối (ON)
không bằng
Nối trong và nối ngoài
• Nối trong (INNER JOIN):
– kết quả chỉ ghép các bộ khớp nhau (matching
tuples) trong 2 bảng thành phần (phép JOIN ở trên
mặc định chính là INNER JOIN)
• Nối ngoài (OUTER JOIN): Kết quả chứa 2
thành phần:
– Thành phần 1 như INNER JOIN
– Thành phần 2 chứa cả các bộ không khớp nhau
trong 2 bảng thành phần
Nối ngoài
SELECT *
FROM A OUTER JOIN B
ON A.X = B.Y;
• Phân loại:
– Left Outer Join: chứa các bộ không khớp của
bảng bên trái A
– Right Outer Join: chứa các bộ không khớp của
bảng bên phải B
– Full Outer Join: chứa các bộ không khớp của cả
hai bảng A và B
Ví dụ
CLASS
CLASS_ID CLASS_NAME
106
Lop 106
107
Lop 107
201
Lop 201
202
Lop 202
Các bộ
không khớp
STUDENT
CLASS_ID ID NAME
106
1A
106
2B
107
3C
107
4D
5E
6F
7G
8H
Left Outer Join
SELECT *
FROM Class LEFT OUTER JOIN Student
ON Class.Class_ID = Student.Class_ID;
CLASS
CLASS_ID CLASS_NAME
106
Lop 106
106
Lop 106
107
Lop 107
107
Lop 107
201
Lop 201
202
Lop 202
STUDENT
CLASS_ID ID NAME
106
1A
106
2B
107
3C
107
4D
RIGHT OUTER JOIN
SELECT *
FROM Class RIGHT OUTER JOIN Student
ON Class.Class_ID = Student.Class_ID;
CLASS
CLASS_IDCLASS_NAME
106
Lop 106
106
Lop 106
107
Lop 107
107
Lop 107
STUDENT
CLASS_ID ID
106
1
106
2
107
3
107
4
5
6
7
8
NAME
A
B
C
D
E
F
G
H
FULL OUTER JOIN
SELECT *
FROM Class FULL OUTER JOIN Student
ON Class.Class_ID = Student.Class_ID;
CLASS
CLASS_IDCLASS_NAME
106
Lop 106
106
Lop 106
107
Lop 107
107
Lop 107
201
202
Lop 201
Lop 202
STUDENT
CLASS_ID ID
106
1
106
2
107
3
107
4
5
6
7
8
NAME
A
B
C
D
E
F
G
H
Tóm tắt
• Các phép nối
– Nối trong
– Nối ngoài
– Nối bằng
– Nối không bằng
– Tích Đề Các