Bài giảng Công nghệ phần mềm - Chương: Phân tích và đặc tả yêu cầu - Lê Thị Mỹ Hạnh

NỘI DUNG

„ Đại cương về phân tích và đặc tả

„ Nền tảng của phân tích

„ Phân tích và nắm bắt yêu cầu

„ Đặc tả yêu cầu

„ Thẩm định yêu cầu

„ Một số phương pháp và công cụ hỗ trợPhân tích và đặc tả

„ Xác định và phân tích yêu cầu là khâu kỹ

thuật đầu tiên của quá trình phát triển phần

mềm.

„ Xác định các chức năng/dịch vụ mà khách hàng

yêu cầu từ hệ thống

„ Các ràng buộc mà hệ thống được phát triển và

vận hành.

„ Là sự phối hợp của nhà phát triển và khách

hàng.

„ Quyết định chất lượng phần mềm đạt được

và chi phí bỏ ra.

pdf 65 trang yennguyen 7460
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Công nghệ phần mềm - Chương: Phân tích và đặc tả yêu cầu - Lê Thị Mỹ Hạnh", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Công nghệ phần mềm - Chương: Phân tích và đặc tả yêu cầu - Lê Thị Mỹ Hạnh

Bài giảng Công nghệ phần mềm - Chương: Phân tích và đặc tả yêu cầu - Lê Thị Mỹ Hạnh
1Phân tích và đặc tả yêu cầu
Lê Thị Mỹ Hạnh
Khoa Công nghệ Thông tin
Trường Đại học Bách khoa, Đà Nẵng
NỘI DUNG
„ Đại cương về phân tích và đặc tả
„ Nền tảng của phân tích
„ Phân tích và nắm bắt yêu cầu
„ Đặc tả yêu cầu
„ Thẩm định yêu cầu
„ Một số phương pháp và công cụ hỗ trợ
2Phân tích và đặc tả
„ Xác định và phân tích yêu cầu là khâu kỹ
thuật đầu tiên của quá trình phát triển phần 
mềm.
„ Xác định các chức năng/dịch vụ mà khách hàng 
yêu cầu từ hệ thống
„ Các ràng buộc mà hệ thống được phát triển và
vận hành.
„ Là sự phối hợp của nhà phát triển và khách 
hàng.
„ Quyết định chất lượng phần mềm đạt được 
và chi phí bỏ ra.
Phân tích và đặc tả
‰Mục đích: Đặc tả yêu cầu phần mềm 
‰Cơ sở cho việc mời thầu (cần có giải 
thích)
‰cơ sở để ký kết hợp đồng (cần đầy 
đủ chi tiết)
‰Làm tư liệu phục vụ thiết kế và triển 
khai (cần đầy đủ , chính xác, không 
mâu thuẫn)
3Yêu cầu là gì?
‰ Các yêu cầu là các mô tả từ mức trừu tượng rất 
cao đến một đặc ta rất chi tiết về dịch vụ mà hệ
thống cần cung cấp cũng như các ràng buộc lên sự
phát triển và họat động của nó.
‰ Yêu cầu là:
‰ Năng lực của phần mềm mà người sử dụng cần để giải quyết 
vấn đề đặt ra nhằm đạt được mục đích xác định
‰ Năng lực của phần mềm cần có nhằm thỏa mãn một hợp 
đồng, một chuẩn, một đặc tả.
Bài toán
•Hiểu vấn đề
•Chi tiết hóa
•Biểu diễn lại Đặc tả
Vai trò
„ Có vai trò đặc biệt quan trọng trong 
tiến trình phát triển phần mềm.
4Phân loại yêu cầu
„ Yêu cầu người dùng
„ Diễn đạt bằng ngôn ngữ tự nhiên và sơ đồ
„ Nêu rõ dịch vụ hệ thống cung cấp và các ràng 
buộc trong hoạt động của nó.
„ Yêu cầu hệ thống
„ Mô tả đủ chi tiết về các dịch vụ hệ thống
„ Như một hợp đồng giữa khách hàng và nhà thầu
„ Đặc tả phần mềm
„ Mô tả chi tiết về phần mềm làm cơ sở cho thiết kế
và cài đặt
„ Dành cho người phát triển
Đối tượng đọc yêu cầu
Ö Yêu cầu viết ra cần đáp ứng được tất cả
các đối tượng này.
5Các loại yêu cầu
„ Các yêu cầu chức năng
„ Mô tả các chức năng hay các dịch vụ mà hệ thống 
phần mềm cần cung cấp.
„ Các yêu cầu phi chức năng
„ Mô tả các ràng buộc đặt lên dịch vụ và quá trình 
phát triển hệ thống (về chất lượng, về môi trường, 
chuẩn sử dụng, qui trình phát triển..)
„ Các yêu cầu miền/lĩnh vực
„ Những yêu cầu đặt ra từ miền ứng dụng, phản 
ánh đặc trưng của miền đó.
Yêu cầu chức năng
„ Mô tả chức năng hay các dịch vụ của hệ thống
„ Chúng phụ thuộc vào:
„ Loại phần mềm sẽ được xây dựng
„ Sự mong muốn của khách hàng
„ Loại hệ thống mà phần mềm trợ giúp
„ Mức độ các yêu cầu
„ Trừu tượng: hệ thống làm gì
„ Chi tiết: dịch vụ cụ thể hệ thống thực hiện 
6Yêu cầu chức năng
„ Ví dụ
„ Người sử dụng có thể tìm kiếm tài liệu dựa trên từ
khóa có trong tài liệu hoặc tên tài liệu
„ Hệ thống cần cug cấp cho người sử dụng phương 
tiện hiển thị dễ dàng các tài liệu từ CSDL
„ Hệ thống phải đọc được các dịnh dạng khác nhau 
của tài liệu: text, doc, pdf, ppt, bảng tính excel,..
Yêu cầu chức năng
„ Sự không chính xác của yêu cầu
„ Yêu cầu không được phát biểu chính xác
„ Yêu cầu nhập nhằng có thể được hiểu khác nhau giữa người 
sử dụng và người phát triển
„ Ví dụ: yêu cầu “hiển thị dễ dàng”
„ Người sử dụng: có thể hiển thị các loại tài liệ khác nhau
„ Người phát triển: cung cấp giao diện hiển thị tài liệu ở chế độ 
văn bản
„ Trên nguyên tắc yêu cầu phải thỏa mãn
„ Đầy đủ: yêu càu phải mô tả đầy đủ các chức năng cần thiết
„ Gắn bó: các yêu cầu không mâu thuẫn nhau
„ Thực tế không đơn giản để có các yêu cầu đầy dủ và
gắn bó
7Yêu cầu phi chức năng
„ Định nghĩa các tính chất và ràng buộc của hệ thống
„ Yêu cầu tiến trình
„ Phương pháp thiết kế
„ Ngôn ngữ lập trình
„ Công cụ sử dụng
„ Thời gian trả lời
„ Độ tin cậy
„ Yêu cầu về lưu trữ dữ liệu
„ Yêu cầu phi chức năng có thể quan trọng hơn yêu cầu phi chức 
năng
„ Nếu yêu cầu phi chức năng không được đáp ứng hệ thống trở nên 
vô dụng
Yêu cầu phi chức năng
„ Yêu cầu về sản phẩm
„ Tốc độ, độ tin cậy, bộ nhớ cần, giao diện
„ Yêu cầu về tổ chức, tiến trình phát triển
„ Các chuẩn áp dụng, phương pháp thiết kế, 
ngôn ngữ lập trình, mô hình tiến trình,..
„ Yêu cầu từ bên ngoài
„ Về chi phí, về bản quyền, liên kết,..
8Các loại yêu cầu phi chức năng
Yêu cầu
Phi chức năng
Yêu cầu
Sản phẩm
Yêu cầu
về tổ chức
Yêu cầu
từ bên ngoài
Yêu cầu
Khả dụng
Yêu cầu
Hiệu quả
Yêu cầu
Tin cậy
Yêu cầu
Khả chuyển
Yêu cầu hoạt 
động bên trong
Yêu cầu
Đạo lý
Yêu cầu
Pháp lý
Yêu cầu 
chuyển giao
Yêu cầu
Triển khai
Yêu cầu 
về chuẩn
Yêu cầu
Cá nhân
Yêu cầu 
về an toàn
Yêu cầu
về hiệu năng
Yêu cầu 
không gian
Yêu cầu phi chức năng
„ Ví dụ
„ Yêu cầu về sản phẩm
„ Phần mềm chỉ nên yêu cầu tối đa 256 MB bộ nhớ
„ Yêu cầu vê tổ chức
„ Yêu cầu phải đáp ứng chuẩn DO178
„ Yêu cầu bên ngoài
„ Hệ thống không được để lộ thông tin cá nhân của 
khách hàng ra bên ngoài
9Yêu cầu người sử dụng 
(user requirements)
„ Nên mô tả
„ Yêu cầu chức năng
„ Yêu cầu phi chức năng
„ Dể hiểu đối với người sử dụng
„ Không có kiến thức chi tiết về kỹ thuật/tin học
„ Nên mô tả
„ Bằng ngôn ngữ tự nhiên
„ Biểu đồ, bảng biểu
Ngôn ngữ tự nhiên (NNTN)
„ Ưu điểm
„ Dễ hiểu
„ Dễ sử dụng
„ Hạn chế
„ Không rỏ ràng, thiếu chính xác
„ Nhập nhẵng
„ Lẫn lộn giữa yêu cầu chức năng và yêu cầu phi 
chức năng
„ Quá mềm dẻo
„ Có thể trình bày nhiều cách
10
Giải pháp thay thế cho NNTN 
„ Ngôn ngữ có cấu trúc
„ Sử dụng ngôn ngữ gần gũi với ngôn ngữ
lập trình
„ Các mô hình
„ Các ký hiệu đồ họa
„ Ký hiệu tóan học
„ Ngôn ngữ hình thức
Yêu cầu hệ thống
(System Requirements)
„ Là đặc tả chi tiết hơn yêu cầu người sử
dụng
„ Phục vụ cơ bản cho bước thiết kế
„ Có thể sử dụng làm một phần của hợp 
đồng
„ Có thể sử dụng các mô hình để mô tả
11
Tài liệu yêu cầu
„ Chỉ mô tả về chức năng (các hành vi bên 
ngòai) của hệ thống và các ràng buộc 
(WHAT)
„ Không mô tả về phương thức cài đặt (HOW) 
– không phải là tài liệu thiết kế
„ Phải dễ thay đổi
„ Khó xác định được đầy đủ, chính xác ngay
„ Phải qua nhiều bước xét duyệt lại
„ Sử dụng như là tài liệu tham khảo khi bảo trì
„ Đặc tả trả lời các sự kiện không mong đợi
Tài liệu yêu cầu
„ Khó khăn
„ Khách hàng chỉ có khái niệm mơ hồ
„ người phát triển phải chi tiết hóa thành các yêu 
cầu phần mềm có thể xây dựng được
„ Khách hàng rất hay thay đổi yêu cầu
„ người phát triển cần tỉnh táo để xác định đúng 
các yêu cầu
„ Các yêu cầu thường mang tính đặc thù
„ Khó hiểu, khó định nghĩa
„ Không có chuẩn biểu diễn
12
Tài liệu yêu cầu
„ Khó khăn
„ Hệ thống đa người sử dụng
„ Các yêu cầu đa dạng, mức ưu tiên khác nhau
„ Yêu cầu mâu thuẫn nhau
„ Người đặt hành khác người sử dụng thật sự
„ Không nắm vững yêu cầu
Cấu trúc của tài liệu yêu cầu
„ Giới thiệu
„ Thuật ngữ
„ Định nghĩa yêu cầu người sử dụng
„ Kiến trúc hệ thống
„ Đặc tả yêu cầu hệ thống
„ Mô hình hệ thống
„ Phát triển/thay đổi của hệ thống
„ Phụ lục
„ Chỉ mục
13
Định dạng của tài liệu yêu cầu
„ Theo chuẩn IEEE 830-1984
1. Giới thiệu
2. Mô tả chung
3. Yêu cầu chi tiết
Định dạng của tài liệu yêu cầu
1. Giới thiệu
1.1. Mục đích
1.2. Phạm vi
1.3. Định nghĩa (định nghĩa, từ viết tắt)
1.4. Tài liệu tham khảo
1.5. Mô tả cấu trúc tài liệu
14
Định dạng của tài liệu yêu cầu
2. Mô tả chung
2.1. Tổng quan về sản phẩm
2.2. Chức năng sản phẩm
2.3. Đối tượng người dùng
2.4. Ràng buộc tổng thể
2.5. Giả thiết và sự lệ thuộc
Định dạng của tài liệu yêu cầu
3. Yêu cầu chi tiết
3.1. Yêu cầu về chức năng
3.1.1. Chức năng 1
3.1.1.1. Giới thiệu
3.1.1.2. Dữ liệu vào
3.1.1.3. Xử lý
3.1.1.4. kết quả
3.1.2. Chức năng 2
3.1.n. Chức năng n
3.2. Yêu cầu về giao diện ngoài
3.2.1. Giao diện người dùng
3.2.2. Giao diện phân cứng
3.2.3. Giao diện phần mềm
3.2.4. Giao diện truyền thông
3.3. Yêu cầu hiệu suất
3.4 Ràng buộc thiết kế
3.5. Thuộc tính: - bảo mật
- bảo trì
3.6. Yêu cầu khác
Phụ lục
15
Các công đoạn phân tích và đặc tả
Phân tích bài tóan
Thu thập yêu cầu
Nghiên cứu khả thi Phân tích 
yêu cầu
Xác định
yêu cầu
Đặc tả
yêu cầu
Báo cáo 
khả thi Tài liệu mô 
tả hệ thống
Tài liệu định 
nghĩa yêu cầu
Tài liệu đặc
tả yêu cầuThẩm định
Tài liệu yêu cầu
Quá trình 
hình thành 
yêu cầu
Tiến trình phân tích yêu cầu
Hiểu miền 
ứng dụng
Thẩm định
yêu cầu
Phân loại
yêu cầu
Sắp xếp
ưu tiên
Đặc tả
yêu cầu
Thu thập 
yêu cầu
Giải quyết 
mâu thuẩn
Tài 
liệu 
mô 
tả
HT
16
Phân tích bài tóan
„ Mô tả nghiệp vụ
„ Mô tả các luồng nghiệp vụ, các xử lý và vai 
trò của con người trong hệ thống hiện tại
„ Hiểu được nghiệp vụ
„ Chủ yêu tập trung vào các miền cần tự 
động hoá
„ Hỗ trợ cho việc xác định các thay đổi và cải 
tiến yêu cầu trong hệ thống mới
Phân tích bài tóan
„ Mô tả hệ thống
„ Mô tả hệ thống đề xuất
„ Mô tả luồng thông tin giữa hệ thống đề xuất và 
môi trường của nó
„ Đáp ứng được các mô tả nghiệp vụ
„ Cải tiến nghiệp vụ hiện tại
„ Dựa trên mô tả nghiệp vụ hiện tại
17
Thu thập yêu cầu
„ Xác định tính khả thi của hệ thống
„ Kinh tế
„ Kỹ thuật
„ Vận hành
„ Xác định những người liên quan đến hệ
thống và những người sử dụng cuối
„ Xác định các ràng buộc khi sử dụng hệ
thống đề xuất
Thu thập yêu cầu
„ Xác định phương pháp thu thập yêu cầu
„ Phỏng vấn
„ Xác định các yêu cầu nhập nhằng
„ Có thể sử dụng kỹ thuật nguyên mẫu
„ Xác định các yêu cầu khác mà khách 
hàng không yêu cầu rỏ
„ Ví dụ: giao diện dễ sử dụng
18
Thu thập yêu cầu
„ Kết quả của bước thu thập yêu cầu
„ Phát biểu về sự cần thiết và tính khả thi
„ Giới hạn lĩnh vực/chức năng của phần 
mềm
„ Danh sách những người liên quan/sử dụng 
phần mềm
„ Mô tả môi trường sẽ vận hành phần mềm
„ Danh sách các yêu cầu phần mềm đề xuất
„ Các ràng buộc phần mềm đề xuất
Thu thập yêu cầu
„ Các kỹ thuật thu thập yêu cầu
„ Phỏng vấn
„ Thực hiện các cuộc họp/hội thảo
„ Chuẩn bị bảng câu hỏi điều tra
„ Chức năng mong đợi
„ Thời gian yêu cầu hoàn thành dự án
„ Kết quả một tiến trình nghiệp vụ
„ Quan sát họat động nghiệp vụ hiện tại
„ Đến nơi làm việc của khách hàng để khảo sát, quay 
phim,..
„ Tham khảo các chuyên gia trong lĩnh vực
„ Hiểu rỏ các nghiệp vụ chuyên môn phức tạp
19
Thu thập yêu cầu
„ Phỏng vấn
„ Hiểu rỏ nghiệp vụ hiện tại
„ Hiểu rỏ chi tiết yêu cầu
„ Hiểu rỏ mong muốn thực sự của khách hàng
„ Chuẩn bị
„ Lập danh sách đối tượng, hẹn gặp, lập kế hoạch, chuẩn bị câu 
hỏi, phương tiện,..
„ Câu hỏi
„ Câu hỏi đóng – mở
„ Câu hỏi ngắn gọn, tập trung vào chủ đề
„ Cách thức tiến hành
„ Theo nhóm, ít nhất hai người
„ Phân công hỏi và ghi chép
Nghiên cứu khả thi
„ Mục tiêu của nghiên cứu khả thi là đi đến kết 
luận:
„ Có nên phát triển hệ thống hay không?
„ Nội dung nghiên cứu khả thi tập trung vào 
những câu hỏi sau:
„ Hệ thống xây dựng sẽ giúp gì cho tổ chức?
„ Hệ thống xây dựng sử dụng công nghệ nào và kinh 
phí bao nhiêu?
„ Hệ thống cần tích hợp với hệ thống nào đang sử
dụng?
20
Nghiên cứu khả thi
„ Báo cáo khả thi được viết dựa trên thông tin, 
báo cáo thu thập được, những đánh giá ban 
đầu về hệ thống hiện tại và phác họa các 
phương án dự kiến.
„ Câu hỏi đặt ra cho người của tổ chức:
„ Cái gì xảy ra nếu hệ thống không được triển khai?
„ Những vấn đề gì đang đặt ra cần giải quyết?
„ Hệ thống được đề xuất giúp họ như thế nào?
„ Những tích hợp gì cần phải có?
„ Công nghệ mới gì, kỹ năng gì cần có?
„ Những tiện ích gì cần sự trợ giúp từ hệ thống?
Phân tích yêu cầu
Những khó khăn của phân tích
„ Khách hàng thường mơ hồ về các yêu cầu, không 
biết mình muốn cụ thể gì, dễ lẫn lộn giữa yêu cầu và
mong muốn.
„ Họ thể hiện yêu cầu theo thuật ngữ riêng
„ Khách hàng đa dạng có thể đưa ra các yêu cầu mâu 
thuẫn.
„ Những yếu tố tổ chức và chính sách có thể ảnh 
hưởng đến yêu cầu
„ Yêu cầu thường mang tính đặc thù, khó hiểu, khó có
chuẩn chung.
„ Các yêu cầu thay đổi trong quá trình phân tích: môi 
trường nghiệp vụ thay đổi,..
21
Phân tích yêu cầu
„ Đôi khi còn gọi là phát hiện yêu cầu.
„ Nhà kỹ thuật cùng với khách hàng (người 
dùng, kỹ sư, nhà quản lý, chuyên gia,..-người 
liên quan) làm rõ lĩnh vực ứng dụng, các dịch 
vụ mà hệ thống cần cung cấp và các ràng 
buộc trong họat động của nó.
„ Xây dựng các mô hình phân tích để làm rõ 
các yêu cầu miền.
Phân tích yêu cầu
„ Phân loại yêu cầu
„ Chức năng
„ Phi chức năng
„ Yêu cầu chức năng xuất phát từ các yêu cầu 
của khách hàng và nghiệp vụ trong hệ thống 
hiện tại
„ Yêu cầu phi chức năng thường không lộ rõ
„ Thường do người phát triển đề xuất
22
Phân tích yêu cầu
Mục tiêu, mong muốn và yêu cầu
„ Mục tiêu, mong muốn: là cái hướng tới.
„ Ví dụ: “Xây dựng giao diện thân thiện”
„ Yêu cầu: là cái cụ thể kiểm tra được
„ Ví dụ: “Giao diện đồ họa có các lệnh được chọn 
bằng menu”
„ Nhiệm vụ của người phân tích là các xác định 
đúng, đầy đủ và chính xác các yêu cầu.
Nguyên lý phân tích yêu cầu
Nguyên lý 1: Mô hình hóa miền thông tin
„ Phải hiểu và biểu diễn được miền thông tin 
(problem domain)
„ định danh dữ liệu (đối tượng, thực thể)
„ định nghĩa các thuộc tính
„ thiết lập các mối quan hệ giữa các dữ liệu
ÖTừ điển dữ liệu, mô hình thực thể mối quan 
hệ,mô hình khái niệm
23
Nguyên lý phân tích yêu cầu
Nguyên lý 2: Mô hình hóa chức năng
„ Bản chất của phần mềm là biến đổi thông tin
„ định danh các chức năng (biến đổi thông tin)
„ xác định cách thức dữ liệu (thông tin) di chuyển 
trong hệ thống (luồng dữ liệu)
„ xác định các tác nhân tạo dữ liệu (nguồn) và tác 
nhân tiêu thụ dữ liệu (đích)
ÖMô hình phân rã chức năng, mô hình luồng 
dữ liệu
Nguyên lý phân tích yêu cầu
Nguyên lý 3: Mô hình hóa hành vi
„ Phần mềm (hệ thống) có trạng thái (hành vi)
„ xác định các trạng thái của hệ thống
„ ví dụ: giao diện đồ họa, section trong ứng dụng web
„ xác định các dữ kiện làm thay đổi hành vi hệ
thống
„ ví dụ: bàn phím, chuột, các cổng thông tin...
ÖBiểu đồ trạng thái
24
Nguyên lý phân tích yêu cầu
Nguyên lý 4: Phân hoạch các mô hình
„ Làm mịn, phân hoạch và biểu diễn các 
mô hình ở các mức khác nhau
„ làm mịn các mô hình dữ liệu
„ tạo cây (mô hình) phân rã chức năng
„ biểu diễn hành vi ở các mức chi tiết khác 
nhau
ÖMô hình luồng dữ liệu các mức 1,2,3,..
Nguyên lý phân tích yêu cầu
Nguyên lý 5: Tìm hiểu vấn đề bản chất
„ Nhìn nhận bản chất của yêu cầu (làm 
gì, điều kiện gì,..)
„ Không quan tâm đến cách thức cài đặt 
(làm như thế nào)
25
Phân hoạch yêu cầu
Có thể phân hoạch yêu cầu theo hai cách
„ Phân loại theo đặc trưng:
„ Yêu cầu tương hỗ: chịu ảnh hưởng của môi trường
„ Yêu cầu nảy sinh:nhận ra trong quá trình phát triển
„ Yêu cầu hệ quả:là kết quả của việc áp dụng hệ thống dựa 
trên máy tính
„ Yêu cầu tương thích:phụ thuộc vào hệ khác hay tiến trình tổ
chức
„ Phân loại theo mức độ quan trọng: chính, phụ
Thẩm định yêu cầu
„ Thẩm định yêu cầu liên quan tới việc kiểm 
tra tính đúng đắn, tính đầy đủ, tính hiện 
thực và kiểm tra được của yêu cầu.
1. Thỏa mãn được nhu cầu của người dùng?
2. Yêu cầu không mâu thuẫn nhau?
3. Yêu cầu phải đầy đủ (chức năng, ràng buộc)?
4. Yêu cầu là hiện thực?
5. Yêu cầu có thể kiểm tra được?
26
Thẩm định yêu cầu
„ Thường xuyên thẩm định yêu cầu
„ Cả khách hàng và người phát triển 
đều phải thẩm định yêu cầu
„ Việc thẩm định có thể tổ chức hình 
thức hoặc không hì ... toán 
học và các kí hiệu đồ họa
„ Đặc tả hình thức (formal)
„ Đặc tả bằng mô hình
„ Đặc tả bằng ngôn ngữ hình thức hoá
„ Đặc tả bằng công thức tóan học
33
Đặc tả hình thức hay không hình thức?
„ Đặc tả hình thức
„ Chính xác (toán học)
„ Hợp thức hóa hình thức (công cụ hóa)
„ công cụ trao đổi: khó đọc, khó hieu
„ khó sử dụng
„ Đặc tả không hình thức
„ Dễ hiểu, dễ sử dụng
„ Mềm dẻo
„ Thiếu sự chính xác
„ Không chặc chẽ, Nhập nhằng
Đặc tả phi hình thức
„ Ví dụ: chức năng kiểm tra lỗi chính tả
„ Yêu cầu: thông báo các lỗi chính tả khi duyệt
„ Đặc tả:
„ Các lỗi chính tả được gạch đỏ bên dưới
„ Các lỗi soạn thảo được gạch xanh bên dưới
„ Lỗi chính tả:
„ Từ đơn không có trong từ điển
„ Lỗi soạn thảo
„ Thừa dấu cách
„ Không viết hoa đầu câu
34
Ứng dụng đặc tả hình thức
„ ứng dụng trong các giai đoạn sớm của 
tiến trình phát triển
„ Hạn chế lỗi trong phát triển phần mềm
„ Ứng dụng chủ yếu trong phát triển các 
hệ thống “quan trọng” (critical system)
„ Hệ thống điều khiển
„ Hệ thống nhúng
„ Hệ thống thời gian thực
Các kỹ thuật đặc tả hình thức
„ Biểu đồ luồng dữ liệu
„ Biểu đồ thực thể kết hợp
„ Làm bản mẫu
„ Máy trạng thái hữu hạn
„ Mạng Petri
„ Điều kiện trước sau
„ Kiểu trừu tượng
„ Ngôn ngữ đặc tả Z
35
Biểu đồ phân rã chức năng
„ Function Decomposition Diagram – FDD
„ Xác định phạm vi của hệ thống
„ Phân hoạch chức năng
„ Tạo nền tảng cho thiết kế kiến trúc hệ
thống
Chức năng
Bán hàng
Liên kết
Nhận đơn Gửi đơn Gom, gửi hàng
Biểu đồ phân rã chức năng
„ Ví dụ: biểu diễn các chức năng của hệ
thống cửa hàng nước giai khát
Hệ quản lý cửa 
hàng
Bán hàng Kế toán Quản lý tồn 
kho
Quản lý nhập 
hàng
Quản lý 
xuất
Báo cáo 
tồn
Bán lẽ Quản lý đơn 
hàng
Quản công 
nợ
Chức năng
Quan hệ bao 
hàm
36
Biểu đồ dòng dữ liệu
„ Data Flow Diagram – DFD
„ Mô tả cách thức dữ liệu di chuyển và được xử lý, 
lưu trữ trong hệ thống
„ DFD dễ viết, dễ đọc, dễ hiểu được sử dụng phổ
biến
„ DFD được xây dựng từ các hình vẽ và các kí hiệu 
qui ước.
„ Có nhiều mức chi tiết khác nhau (phân tích có cấu 
trúc)
„ Có nhiều cách xây dựng DFD, thông dụng là 
phương pháp DeMarco-Yourdon, Gane Sarson và
Merise (pháp)
Biểu đồ dòng dữ liệu
„ Một số phương pháp vẽ DFD
37
Biểu đồ dòng dữ liệu
„ DFD – Các thành tố
„ Quá trình (Process)
„ Mô tả hoạt động (activities) hay phép biến đổi 
(Transform) một hoặc nhiều dòng dữ liệu vào (input) 
thành một hoặc nhiều dòng dữ liệu ra (output)
„ Quá trình không chỉ ra chi tiết logic hay thủ tục xử lý
„ Trong sơ đồ DFD, quá trình có thể là một người sử dụng 
hoặc máy tính xử lý
„ Ví dụ:
„ Nhận yêu cầu khách hàng
„ Thủ tục giao hàng
„ Thông báo
„ Xử lý điểm
1
Mô tả quá trình
Biểu đồ dòng dữ liệu
„ DFD – Các thành tố
„ Thực thể (Entity)
„ Xác định ranh giới, phạm trù hay phạm vi, ngữ cảnh của 
hệ thống đang xét
„ Cung cấp cái vào cho hệ thống và lấy cái ra từ hệ thống
„ Các thực thể có thể nằm bên trong hay bên ngoài, tạo 
thành các nguồn hay các đích cho hệ thống
„ Mỗi thực thể có thể là một người, tổ chức hoặc một hệ
thống khác tương tác với hệ thống đang xét
„ Ví dụ:
„ Khách hàng
„ Học viên
„ Giáo viên
Tên thực thể
38
Biểu đồ dòng dữ liệu
„ DFD – Các thành tố
„ Kho dữ liệu (data stores):
„ Chỗ chứa các thông tin được lưu theo thời gian, được xử
lý thủ công hay tự động
„ Đó là các tập tin, cơ sở dữ liệu hay bất cứ các hình thức 
lưu trữ dữ liệu nào (bảng biểu báo cáo, từ điển, hộp thư, 
danh bạ,..)
„ Ví dụ:
„ Hồ sơ học viên
„ Sổ nợ
„ Kết quả tuyển sinh
Tên kho dữ liệu
Biểu đồ dòng dữ liệu
„ DFD – Các thành tố
„ Dòng dữ liệu (Data flows)
„ Phương tiện luân chuyển thông tin thể hiện cái vào và
cái ra, thể hiện sự tương tác trong hệ thống
„ Có thể là báo cáo, biểu mẫu, vân bẳn, thư tín, thông 
điệp hay dữ liệu nói chung
„ Được tạo thành từ các vật mang thông tin (giấy, màn 
hình,..) có cùng bản chất
„ Đi từ tơi phát (nguồn) đến nơi nhận (đích)
„ Ví dụ:
„ Yêu cầu cho vay
„ Tra lời vay
„ Báo kết quả thi
Dữ liệu chuyển
39
Biểu đồ dòng dữ liệu
„ Ví dụ: DFD hệ thống mua bán hàng
Biểu đồ dòng dữ liệu
„ Ví dụ: DFD hệ thống tài chính cá nhân
40
Biểu đồ dòng dữ liệu
„ DFD – Các bước thực hiện
„ Phân rã chức năng hệ thống
„ Liệt kê các tác nhân, các khoản mục dữ
liệu
„ Vẽ DFD cho các mức
„ Làm mịn DFD cho các mức từ DFD ngữ
cảnh
Biểu đồ dòng dữ liệu
„ DFD – Một số nguyên tắc
„ Các tiến trình phải có luồng vào và luồng ra
„ Không có luồng dữ liệu giữa các tác nhân –
tác nhân, tác nhân – kho dữ liệu, kho dữ liệu 
– kho dữ liệu.
„ Luồng dữ liệu không quay lại nơi xuất phát
„ Làm mịn cần đảm bảo đầy đủ các yếu tố của 
bước trước (tác nhân, luồng dữ liệu, kho dữ
liệu).
41
Biểu đồ dòng dữ liệu
„ Các mức DFD
Biểu đồ thực thể quan hệ
„ ERD – Entity Relation Diagram
„ Phân tích dữ liệu độc lập với xử lý
„ Nghiên cứu miền thông tin
„ Tạo ra mô hình trừu tượng hướng khách 
hàng
„ Xác định mối liên hệ giữa các dữ liệu
42
Biểu đồ thực thể quan hệ
„ ER – khái niệm
„ Thực thể: 
„ Là các đối tượng thế giới thực mà
chúng ta muốn xử lý
„ Có thể là đối tượng thực hoặc trừu tượng
„ Thuộc tính: 
„ là các đặc điểm, tính chất của thực thể
„ Quan hệ: 
„ Mối liên hệ giữa các thực thể
„ Là thông tin cần lưu trữ, xử lý
„ Kế thừa: quan hệ thừa kế giữa các thực thể
Tên thực thể
Thuộc tính1
Thuộc tính 2
Biểu đồ thực thể quan hệ
„ ER – ví dụ
NGK
ĐĐHÀNG_NGK
ĐẶT
KHÁCH_HÀNG
LOẠI_NGKTHUỘC
CỦA
(0,n)
(1,n)
(1,1) (0,n)
(1,n)(1,1)
NGK(MA_NGK, TEN_NGK, HIEU, LOAI, DVTINH, DON_GIA)
ĐĐHANG_NGK(SO_DDH, NGAY_DAT, KHACH_HANG, NGAYGIAO, TRANG THAI)
CHITIET_DDH(MA_NGK, SO_DDH, SL_DAT, DONGIA_DAT)
43
Biểu đồ thực thể quan hệ
„ ER – Xác định thực thể quan hệ
„ Thực thể: 
„ Là các danh từ (trong câu mô tả các yêu cầu)
„ Có các thuộc tính khóa (xác định duy nhất)
„ Quan hệ
„ Hoạt động xảy ra giữa các thực thể
„ Có nghĩa với họat động của hệ thống
„ Là động từ
Biểu đồ thực thể quan hệ
„ ER – Các bước
„ Mô tả thực thể và sự liên kết giữa các thực 
thể
„ Mô tả thực thể và các mối quan hệ
„ Mô tả thực thể, các mối quan hệ và các 
thuộc tính
44
Từ điển dữ liệu
„ Phương pháp có tính hình thức để mô 
tả dữ liệu mà hệ thống xử lý
„ Ký pháp để mô tả các dữ liệu điều 
khiển và miền giá trị của chúng
„ Chứa đựng các thông tin về nơi (modul) 
và cách thức xử lý dữ liệu
„ Thường được tạo bằng các công cụ trợ
giúp
Từ điển dữ liệu
„ Các khoản mục từ điển dữ liệu
„ Tên (name): tên dữ liệu
„ Bí danh (alias):tên gọi khác của dữ liệu
„ Vị trí (where): tên các modul xử lý
„ Cách thức (how): vai trò của dữ liệu và
cách thức xử lý
„ Ký pháp (Description): ký pháp mô tả dữ
liệu
„ Format: Kiểu dữ liệu,giá trị mặc định,
45
Từ điển dữ liệu
„ Từ điển dữ liệu – ví dụ Integrated
office 
phone 
system
Telephone number System output
alphanumeric dataFormat:
telephone no. = [ local extension | outside no. | 0 ] 
outside no. = 9 + [ service code | domestic no. ] 
service code = [ 211 | 411 | 611 | 911 ] 
domestic no. = ( ( 0 ) + area code ) + local number 
area code = *three numeral designator*
Description:
Read_phone_number(input)
Display_phone_number(output)
Analyze_long_distance_calls (input)
Where/ How used:
Phone number, numberAliases:
Telephone numberName:
Bảng từ điển dữ liệu
Làm bản mẫu trong phân tích 
„ Trong nhiều trường hợp, mô hình chạy 
thử là phương pháp duy nhất để xác 
định yêu cầu
„ Phần mềm lớn, phức tạp ⇒ bản mẫu
(trực quan)
„ Bản mẫu phần mềm:phát triển yêu cầu
„ Bản mẫu phần cứng: kiểm tra thiết kế
46
Làm bản mẫu trong phân tích 
„ Các bước thực hiện
„ Bước 1: Đánh giá yêu cầu và xác định có nên làm 
bản mẫu không; độ phức tạp, chủng loại, khách 
hàng
„ Bước 2: Biểu diễn vắn tắt yêu cầu (yêu cầu chức 
năng, yêu cầu phi chức năng)
„ Bước 3: Thiết kế nhanh kiển trúc, cấu trúc dữ liệu
„ Bước 4: Phát triển, kiểm thử
„ Sử dụng các thành phần sẵn có
„ Dùng các ngôn ngữ bậc cao
„ Các thuật tóan dễ cài đặt
„ Bước 5: Người dùng đánh giá (bước quan trọng???)
„ Bước 6: Lặp lại bước2-5 cho đến khi đủ yêu cầu
Làm bản mẫu trong phân tích 
„ Ưu điểm
„ Loại bớt hiểu nhầm
„ Phát hiện thiếu hụt chức năng
„ Ví dụ: soạn thảo kéo theo kiểm tra chính tả
„ Phát hiện các điểm yếu
„ Khó sử dụng
„ Thao tác không an toàn
„ Kiểm tra tính khả thi, hữu ích
„ Có thể xây dựng được không
„ Có thực sự cần không
„ Làm cơ sở cho đặc tả: làm giống như thế này nhưng tốt hơn
„ Huấn luyện người sử dụng
„ Hỗ trợ kiểm thử (so sánh kết quả)
ÖLàm bản mẫu là kỹ thuật tránh rủi ro
47
Làm bản mẫu trong phân tích 
„ Nhược điểm
„ Các yêu cầu phi chức năng thường không 
được thể hiện đầy đủ
„ Làm tăng chi phí:cần phải ước lượng chi 
phí chính xác của bản mẫu
„ Các yêu cầu thay đổi quá nhanh làm bản 
mẫu trở nên vô nghĩa
„ Người dùng không sử dụng bản mẫu theo 
cách thông thường (kết quả đánh giá
không có giá trị)
Làm bản mẫu trong phân tích 
„ Ngôn ngữ làm bản mẫu
„ Java
„ Visual Basic
„ Prolog, Lisp, Python
„ Các ngôn ngữ script khác
„ Perl, PHP, shell script
48
Làm bản mẫu trong phân tích 
„ Bản mẫu giao diện/trực quan
„ Sử dụng các ngôn ngữ, công cụ trực quan
„ VB
„ Delphi, J Buider
„ FrontPage
„ Sử dụng lại một lượng lớn các thư viện sẵn 
có
„ Tính cấu trúc không cao, khó tích hợp kết 
quả của nhiều nhóm, khó bảo trì
Máy trạng thái hữu hạn
„ Finite State Machine
„ Mô tả các luồng điều khiển
„ Biểu diễn dạng đồ thị
„ Bao gồm:
„ Tập hợp các trạng thái S (các nút của đồ thị)
„ Tập hợp các dữ liệu vào I (các nhãn của các cung)
„ Tập hợp các chuyển tiếp T: S x I -> S (các cung có 
hướng của đồ thị)
„ Khi có một dữ liệu vào một trạng thái sẽ chuyển sang 
trạng thái khác
49
Máy trạng thái hữu hạn
ON
HOOK
OFF
HOOK DIALING
RINGING
BUSY
CONNECTED
Handset
lifted Handset 
replaced
Number
dialed
Number
dialed
Handset 
replaced
Handset 
replaced
Handset 
replaced
Handset 
replaced
Line 
in use
Last number
dialed
Caller
answers
Caller
hangs up
„ Ví dụ 1: 
Máy trạng thái hữu hạn
„ Ví dụ 2:
50
Máy trạng thái hữu hạn
„ Ví dụ 2:
Máy trạng thái hữu hạn
„ Ví dụ 2:
51
Máy trạng thái hữu hạn
„ Biểu diễn hệ thống phức tạp
„ Hạn chế khi đặc tả những hệ thống 
không đồng bộ
„ Các thành phần của hệ thống hoạt động 
song song hoặc cạnh tranh
Điều kiện trước/sau
(Pre/Post Condition)
„ Được dùng để đặc tả các hàm hoặc mô đun
„ Đặc tả các tính chất của dữ liệu trước và sau 
khi thực hiện hàm
„ Pre-condition: đặc tả các ràng buộc trên tham số
trước khi hàm được thực hiện
„ Post-condition: đặc tả các ràng buộc trên tham số
sau khi hàm được thực hiện
„ Có thể sử dụng ngôn ngữ phi hình thức, hình 
thức hoặc ngôn ngữ lập trình để đặc tả các 
điều kiện.
52
Điều kiện trước/sau
„ Ví dụ: đặc tả hàm tìm kiếm
Function search(a: danh sách phần tử kiểu K,
size: số phần tử của danh sách,
e: phần tử kiểu K,
result: kiểu Boolean)
pre ∀i, 1≤i≤size, a[i] ≤ a[i+1]
post result = (∃i, 1≤i≤size, a[i] = e)
Điều kiện trước/sau
„ Bài tập: đặc tả các hàm
„ Sắp xếp một danh sách số nguyên
„ Đảo ngược các phần tử của danh sách
„ Đếm số phần tử có giá trị e trong một danh sách số
nguyên
53
Kiểu trừu tượng
(Abstract type)
„ Mô tả dữ liệu và các thao tác trên dữ liệu đó ở một 
mức trừu tượng độc lập với cách cài đặt dữ liệu bởi 
ngôn ngữ lập trình
„ Đặc tả một kiểu trừu tượng gồm:
„ Tên của kiểu trừu tượng 
„ Dùng từ khóa sort
„ Khai báo các kiểu trừu tượng đã tồn tại được sử dụng
„ Dùng từ khóa import
„ Các thao tác trên kiểu trừu tượng
„ Dùng từ khóa operations
Kiểu trừu tượng
„ Ví dụ 1: đặc tả kiểu trừu tượng Boolean
„ Một thao tác không có tham số là một hằng số
„ một giá trị của kiểu trừu tượng được định 
nghĩa biểu diễn bởi kí tự “_”
54
Kiểu trừu tượng
„ Ví dụ 2: đặc tả kiểu trừu tượng Vector
Kiểu trừu tượng
„ Các thao tác trên kiểu trừu tượng chỉ được 
định nghĩa mà không chỉ ra ngữ nghĩa của nó
„ Tức là ý nghĩa của thao tác
„ Sử dụng các tiên đề để chỉ ra ngữ nghĩa của 
các thao tác
„ Sử dụng từ khóa axioms
„ Định nghĩa các ràng buộc mà một thao tác 
được định nghĩa
„ Sử dụng từ khóa precondition
55
Kiểu trừu tượng
„ Ví dụ 2: đặc tả kiểu trừu tượng Vector
Kiểu trừu tượng
„ Bài tập:
„ Đặc tả kiểu trừu tượng Cây nhị phân
„ Đặc tả kiểu trừu tượng Tập hợp
56
Kiểu trừu tượng
„ sort Circle
„ Import Integer, float
„ Operations
„ Init : Integer x Integer x float -> Circle
„ Unit_Circle: ->Circle
„ Bankinh: Circle -> float
„ Get_X: Circle -> Integer
„ Get_Y: Circle -> Integer
„ Zoom: Circle x float -> Circle
„ Tinh_tien:Circle x Integer x Integer -> Circle
Kiểu trừu tượng
„ axioms
„ Bankinh(Unit_Circle) = 1
„ Get_x(Unit_Circle) = Get_Y(Unit_Circle) = 0
„ Bankinh(Init(x, y, r)) = r
„ Get_X(Init(x, y, r)) = x
„ Get_Y(Init(x, y, r)) = y
„ C = Init(x,y,r) => Bankinh(Tinhtien(C, dx, dy)) = r
„ C = Init(x,y,r) => Get_X(Tinhtien(C, dx, dy)) = x + dx
„ C = Init(x,y,r) => Get_Y(Tinhtien(C, dx, dy)) = y + dy
„ C = Init(x,y,r) =>Bankinh(Zoom(C, dr)) = r + dr
„ C = Init(x,y,r) =>Get_X(Zoom(C, dr)) = x
„ C = Init(x,y,r) =>Get_Y(Zoom(C, dr)) = y
„ With
„ C: Circle ; x, y,dx, dy: integer; r, dr: float
57
Mạng Petri (Petri Nets)
„ Thích hợp để mô tả các hệ thống không 
đồng bộ với những họat động đồng thời
„ Mô tả luồng điều khiển của hệ thống
„ Đề xuất năm 1962 bởi Carl Adam
„ Có loại
„ Mạng Petri (cổ điển)
„ Mạng Petri mở rộng
Mạng Petri
„ Gồm các phần tử
„ Một tập hữu hạn các nút (O)
„ Một tập hữu hạn các chuyển tiếp (†)
„ Một tập hữu hạn các cung (→)
„ Các cung nối các nút với các chuyển tiếp hoặc 
ngược lại
„ Mỗi nút có thể chứa một hoặc nhiều thẻ
(z)
58
Mạng Petri
„ Ví dụ:
Mạng Petri
„ Mạng Petri được định nghĩa bởi sự đánh dấu các nút 
của nó
„ Việc đánh dấu các nút được tiến hành theo nguyên 
tắc sau:
„ Mỗi chuyển tiếp có các nút vào và các nút ra
„ Nếu tất cả các nút vào của một chuyển tiếp có ít nhất một 
thẻ, thì chuyển tiếp này có thể vượt qua được.
„ Nếu chuyển tiếp này được thực hiện thì tất cả các nút vào 
của chuyển tiếp sẽ bị lấy đi một thẻ, và một thẻ sẽ được 
thêm vào tất cả các nút ra của chuyển tiếp
„ Nếu chuyển tiếp là có thể vượt qua thì chọn chuyển tiếp nào 
cũng được
59
Mạng Petri
„ Ví dụ
Mạng Petri
„ Ví dụ
60
Mạng Petri
„ Ví dụ
Mạng Petri
„ Ví dụ 1: Mô tả hoạt động của đèn giao thông
61
Mạng Petri
„ Ví dụ 1: Mô tả hoạt động của 2 đèn giao thông
Mạng Petri
„ Ví dụ 1: Mô tả hoạt động an toàn của 2đèn giao thông
62
Mạng Petri
„ Ví dụ 1: Mô tả hoạt động an toàn của 2đèn giao thông
Mạng Petri
„ Ví dụ 2: Chu kì sống của con người
63
Mạng Petri
„ Ví dụ 3: Viết thư và đọc thư
Mạng Petri
„ Ví dụ 4:
„ Hệ thống cần mô tả bao gồm một nhà sản xuất, một nhà
tiêu thụ và môt kho hàng chỉ chứa được nhiều nhất hai sản 
phẩm
„ Nhà sản xuất có 2 trạng thái:
„ P1: đang sản xuất
„ P2: không sản xuất
„ Nhà tiêu thụ có 2 trạng thái:
„ C1: có sản phẩm để tiêu thụ
„ C2: không có sản phẩm để tiêu thụ
„ Kho hàng có 3 trạng thái
„ Chứa 0 sản phẩm
„ Chứa 1 sản phẩm
„ Chứa 2 sản phẩm
64
Mạng Petri
„ Ví dụ 4: mô tả tách rời mỗi thành phần
Mạng Petri
„ Ví dụ 4: Mô tả kết hợp các thành phần
65
So sánh các kỹ thuật đặc tả

File đính kèm:

  • pdfbai_giang_cong_nghe_phan_mem_chuong_phan_tich_va_dac_ta_yeu.pdf