CÔNG NGHỆ PHẦN MỀM
Chương 1: Giới thiệu về Công nghệ phần mềm
2
Nội dung
1.1. Một số khái niệm
1.1.1. Khủng hoảng phần mềm
1.1.2. Định nghĩa
1.1.3. Chu trình (process), phương pháp (method), công cụ
(tool)
1.1.4. Một cách nhìn tổng quan về công nghệ phần mềm
1.1.5. Mô hình CMM
1.2. Các mô hình phát triển phần mềm
1.2.1. Mô hình tuần tự tuyến tính
1.2.2. Mô hình prototype
1.2.3. Mô hình xoắn ốc
1.2.4. Mô hình tăng dần
1.2.3. Mô hình RAD
3
KHỦNG HOẢNG PHẦN MỀM
Phần mềm được viết ngay từ khi xuất hiện các hệ máy tính và
ngôn ngữ lập trình đầu tiên
Trên thực tế sản xuất phần mềm không đáp ứng kịp yêu cầu
của người sử dụng
4
KHỦNG HOẢNG PHẦN MỀM (t.t)
Các dữ liệu quan sát được
Cứ 6 đề án triển khai thì có 2 bị huỷ bỏ
Trung bình thời gian thực hiện thực tế bị kéo dài 50 % (cá
biệt 200-300%)
Các đề án lớn dễ thất bại
3/4 các hệ thống lớn có lỗi khi thực thi
Quá trình phân tích yêu cầu (5 % công sức): để lại 55 % lỗi,
có 18 % phát hiện được
Quá trình thiết kế (25 % công sức): để lại 30 % lỗi, có 10 %
phát hiện được
Quá trình mã hoá, kiểm tra và bảo trì: để lại 15 % lỗi, có 72
% phát hiện được
5
KHỦNG HOẢNG PHẦN MỀM (t.t)
Nguyên nhân
Phát triển phần mềm giống như một nghệ thuật, chưa được
xem như một ngành khoa học
Quá trình phát triển phần mềm chưa được thống nhất
Phải viết lại s/w mỗi khi có sự thay đổi về ngôn ngữ, h/w
hoặc o/s
Chưa đạt được 1 chuẩn cho việc đo lường hiệu suất và sản
phẩm
Độ phức tạp của phần mềm quá cao đối với 1 "kiến trúc sư"
Kỹ thuật đặc tả để lại sự nhập nhằng trong các yêu cầu
phần mềm
Làm việc nhóm không đúng kỷ luật gây ra các lỗi
6
KHỦNG HOẢNG PHẦN MỀM (t.t)
Hướng tới công nghệ sản xuất phần mềm chuyên nghiệp
7
ĐỊNH NGHĨA
Định nghĩa cổ điển (của Fritz Bauer)
Công Nghệ Phần Mềm là sự thiết lập và sử dụng các nguyên
tắc khoa học nhằm mục đích tạo ra các phần mềm một cách
kinh tế mà các phần mềm đó hoạt động hiệu quả và tin cậy trên
các máy tính.
8
ĐỊNH NGHĨA (tt)
Định nghĩa khác: Công Nghệ Phần Mềm
Là các quy trình đúng kỷ luật và có định lượng được áp dụng
cho sự phát triển, thực thi và bảo trì các hệ thống thiên về phần
mềm
Tập trung vào quy trình, sự đo lường, sản phẩm, tính đúng thời
gian và chất lượng
9
CHU TRÌNH
Chu trình (process) định nghĩa một bộ khung các tiêu chuẩn
phải được thiết lập để triển khai công nghệ phần mềm.
10
PHƯƠNG PHÁP
Phương pháp (method) chỉ ra cách thực hiện những công việc
cụ thể ("how to"):
phân tích yêu cầu
thiết kế
xây dựng chương trình
kiểm tra
sửa lỗi
11
CÔNG CỤ
Công cụ (tool) cung cấp các hỗ trợ tự động hay bán tự động
đối với chu trình và phương pháp
Các công cụ được tích hợp tạo thành CASE (Computer Aided
Software Engineering)
12
MỘT CÁCH NHÌN TỔNG QUAN VỀ CNPM
Gồm 3 giai đoạn lớn
Giai đoạn định nghĩa: Phân tích hệ thống (system engineering),
Hoạch định đề tài (software project management), Phân tích
yêu cầu (requirement analysis).
Giai đoạn phát triển: Thiết kế phần mềm (software design), sinh
mã (code generation), kiểm tra phần mềm (software testing)
Giai đoạn bảo trì: Sửa lỗi (correction), thay đổi môi trường thực
thi (adaptation), tăng cường (enhancement)
13
MÔ HÌNH CMM
14
CÁC MÔ HÌNH PHÁT TRIỂN PHẦN MỀM
Mô hình tuần tự tuyến tính: cổ điển
Mô hình prototyping: prototype
Mô hình xoắn ốc: đánh giá rủi ro
Mô hình tăng dần: các bước lặp
Mô hình RAD: thời gian phát triển ngắn
15
MÔ HÌNH TUẦN TỰ TUYẾN TÍNH
Mô hình phát triển phần mềm đầu tiên
Các công việc tiếp nối nhau một cách tuần tự
Đặt nền móng cho các phương pháp phân tích, thiết kế, kiểm
tra…
16
MÔ HÌNH TUẦN TỰ TUYẾN TÍNH (tt)
Bộc lộ một số khuyết điểm
Bản chất của phát triển phần mềm là quá trình lặp đi lặp lại
chứ không phải tuần tự
Bắt buộc khách hàng đặc tả tất cả yêu cầu một cách chính
xác và đầy đủ ngay từ ban đầu
Khách hàng thường phải chờ đợi rất lâu để thấy được phiên
bản đầu tiên của sản phẩm
Tồn tại "delay" trong nhóm làm việc
17
MÔ HÌNH PROTOTYPING
Prototype như là một cơ chế để
nhận diện chính xác yêu cầu của
khách hàng
Prototype có thể bị "throw-away"
Một số khuyết điểm
Khách hàng hối thúc nhà
phát triển hoàn thành sản phẩm
một khi thấy được các prototype
đầu tiên
Các prototype thường không
hoạt động hiệu quả
18
MÔ HÌNH XOẮN ỐC
Được thực hiện theo một chuỗi lặp kiểu xoắn ốc, mỗi lần lặp
cải thiện sản phẩm
Có phương pháp đánh giá rủi ro
Có thể áp dụng prototype
Mỗi lần lặp được cải thiện cho thích nghi với bản chất của đề
án
19
MÔ HÌNH TĂNG DẦN
20
MÔ HÌNH TĂNG DẦN (tt)
Các bước (iteration) đầu tập trung vào yêu cầu của phần mềm
và thiết lập một kiến trúc ổn định cho hệ thống (ít phải thay đổi
sau này)
Các bước sau tập trung vào việc xây dựng sản phẩm để cuối
cùng chuyển sang giai đoạn kiểm tra hệ thống
Mỗi bước hiện thực một phần cụ thể trong toàn bộ yêu cầu của
hệ thống
Quá trình xây dựng và chiến thuật kiểm tra theo kiểu tăng dần
và dựa trên phương pháp kiểm tra hồi quy.
21
MÔ HÌNH RAD
Rapid Application Development là mô hình tuần tự tuyến tính
có thời gian phát triển rất ngắn
Sử dụng các thành phần có sẵn càng nhiều càng tốt
Sử dụng công cụ lập trình ở dạng tự động sinh mã chứ không
phải các ngôn ngữ truyền thống
CÔNG NGHỆ PHẦN MỀM
Chương 2: Phân tích yêu cầu theo phương pháp
cổ điển
23
Giới thiệu
Khách hàng và nhà phát triển gặp nhau để thảo luận về yêu
cầu của hệ thống phần mềm cần xây dựng
Nhà phát triển kiểm chứng lại (validate) yêu cầu và biểu diễn
nó bằng mô hình phân tích
Mô hình phân tích (WHAT?): các chức năng, dữ liệu input &
output, các trạng thái khác nhau
24
Nội dung
2.1. Các yếu tố căn bản của mô hình phân tích
2.2. Mô hình chức năng và dòng thông tin
2.2.1. Lược đồ dòng chảy dữ liệu với các ký hiệu cơ bản
2.2.2. Mở rộng của Ward và Mellor
2.2.3. Mở rộng của Hatley & Pirbhai
2.3. Mô hình hành vi phần mềm
2.4. Kỹ thuật phân tích yêu cầu
2.4.1. Xây dựng DFD
2.4.2. Viết PSPEC
2.5. Từ điển dữ liệu
25
CÁC YẾU TỐ CĂN BẢN CỦA MÔ HÌNH
PHÂN TÍCH
Mô hình chức năng và dòng thông tin: DFD, PSPEC
Mô hình dữ liệu: ERD, đặc tả đối tượng dữ liệu
Mô hình hành vi: STD, CSPEC