Trường Đại Học Bách Khoa Tp. Hồ Chí Minh
Khoa Công Nghệ Thông Tin
Môn học
CÔNG NGHỆ PHẦN MỀM
-Trang 1-
Khoa Công Nghệ Thông Tin - Môn Công Nghệ Phần Mềm
GIỚI THIỆU MÔN HỌC
Đặc điểm
Mã số: 501095 Số tín chỉ: 2 Phân phối giờ: 2(2.1.4)
Môn học trước: Toán Tin Học (501302)
Tóm tắt nội dung
Các khái niệm cơ bản của Công Nghệ Phần Mềm: các mô hình phát triển
phần mềm, phân tích yêu cầu, thiết kế, kiểm tra…
2 trường phái chính: có cấu trúc (cổ điển) & hướng đối tượng
Chuẩn UML và việc áp dụng nó trong phương pháp hướng đối tượng
Thực hành tại phòng Lab: làm quen với công cụ Rational Rose
-Trang 2-
Khoa Công Nghệ Thông Tin - Môn Công Nghệ Phần Mềm
GIỚI THIỆU MÔN HỌC (t.t)
Tài liệu tham khảo
[1] Software Engineering - A practitioner’s approach, R.S.
Pressman, McGraw-Hill, 1997
[2] OMG Unified Modeling Language Specification, version 1.3,
Object Management Group (www.omg.org), 1999
[3]UML Toolkit, Hans-Erik Eriksson & Magnus Penker, 1998
[4] Object-Oriented Software Engineering, A Use-Case Driven
Approach, I. Jacobson, ACM Press/Addison-Wesley, 1992
[5] Object-Oriented Analysis and Design with Applications, G.
Booch, The Benjamin Cummings Publishing Company, 1994
-Trang 3-
Khoa Công Nghệ Thông Tin - Môn Công Nghệ Phần Mềm
GIỚI THIỆU MÔN HỌC (t.t)
Hình thức đánh giá
Thi giữa kỳ: trắc nghiệm không sử dụng
tài liệu, chiếm 20 % kết quả cuối cùng
Thi cuối kỳ: trắc nghiệm không sử dụng
tài liệu, chiếm 80 % kết quả cuối cùng
-Trang 4-
Khoa Công Nghệ Thông Tin - Môn Công Nghệ Phần Mềm
ĐỀ CƯƠNG
Chương 1: Giới thiệu về 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
Chương 3: Các khái niệm cơ bản của mô hình hướng đối tượng
Chương 4: Mô hình nghiệp vụ và thu thập yêu cầu
Chương 5: Phân tích yêu cầu hướng đối tượng
Chương 6: Cơ sở của thiết kế phần mềm và phương pháp thiết kế cổ điển
Chương 7: Thiết kế hướng đối tượng
Chương 8: Hiện thực và triển khai hệ thống
Chương 9: Kỹ thuật kiểm tra phần mềm
Chương 10: Chiến thuật kiểm tra phần mềm
-Trang 5-
Khoa Công Nghệ Thông Tin - Môn Công Nghệ Phần Mềm
Trường Đại Học Bách Khoa Tp. Hồ Chí Minh
Khoa Công Nghệ Thông Tin
Chương 1
GIỚI THIỆU VỀ
CÔNG NGHỆ PHẦN MỀM
✦
✦✦
✦ Một số khái niệm
✦
✦✦
✦ Các mô hình phát triển phần mềm
-Trang 6-
Khoa Công Nghệ Thông Tin - Môn Công Nghệ Phần Mềm - Chương 1: Giới thiệu về CNPM
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
-Trang 7-
Khoa Công Nghệ Thông Tin - Môn Công Nghệ Phần Mềm - Chương 1: Giới thiệu về CNPM
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
-Trang 8-
Khoa Công Nghệ Thông Tin - Môn Công Nghệ Phần Mềm - Chương 1: Giới thiệu về CNPM
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
-Trang 9-
Khoa Công Nghệ Thông Tin - Môn Công Nghệ Phần Mềm - Chương 1: Giới thiệu về CNPM
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
-Trang 10-
Khoa Công Nghệ Thông Tin - Môn Công Nghệ Phần Mềm - Chương 1: Giới thiệu về CNPM
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
craft
production
commercialization
science
professional
engineering
-Trang 11-
Khoa Công Nghệ Thông Tin - Môn Công Nghệ Phần Mềm - Chương 1: Giới thiệu về CNPM
ĐỊ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.
-Trang 12-
Khoa Công Nghệ Thông Tin - Môn Công Nghệ Phần Mềm - Chương 1: Giới thiệu về CNPM
ĐỊNH NGHĨA (t.t)
Đò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
-Trang 13-
Khoa Công Nghệ Thông Tin - Môn Công Nghệ Phần Mềm - Chương 1: Giới thiệu về CNPM
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.
-Trang 14-
Khoa Công Nghệ Thông Tin - Môn Công Nghệ Phần Mềm - Chương 1: Giới thiệu về CNPM
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
...
-Trang 15-
Khoa Công Nghệ Thông Tin - Môn Công Nghệ Phần Mềm - Chương 1: Giới thiệu về CNPM
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)
-Trang 16-
Khoa Công Nghệ Thông Tin - Môn Công Nghệ Phần Mềm - Chương 1: Giới thiệu về CNPM
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)
-Trang 17-
Khoa Công Nghệ Thông Tin - Môn Công Nghệ Phần Mềm - Chương 1: Giới thiệu về CNPM
MÔ HÌNH CMM
Initial
(Level 1)
Repeatable
(Level 2)
Defined
(Level 3)
Managed
(Level 4)
Optimized
(Level 5)
Risk
Competitiveness
-Trang 18-
Khoa Công Nghệ Thông Tin - Môn Công Nghệ Phần Mềm - Chương 1: Giới thiệu về CNPM
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
-Trang 19-
Khoa Công Nghệ Thông Tin - Môn Công Nghệ Phần Mềm - Chương 1: Giới thiệu về CNPM
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…
System Engineering
Requirement
Analysis
Software
Design
Coding
Test Maintenance
-Trang 20-
Khoa Công Nghệ Thông Tin - Môn Công Nghệ Phần Mềm - Chương 1: Giới thiệu về CNPM
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
MÔ HÌNH TUẦN TỰ TUYẾN TÍNH (t.t)
-Trang 21-
Khoa Công Nghệ Thông Tin - Môn Công Nghệ Phần Mềm - Chương 1: Giới thiệu về CNPM
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ả
Thảo luận với
khách hàng
Xây dựng
prototype
Đánh giá của
khách hàng
-Trang 22-
Khoa Công Nghệ Thông Tin - Môn Công Nghệ Phần Mềm - Chương 1: Giới thiệu về CNPM
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
Đánh giá
rủi ro
Phát triển sản phẩm
ở lần lặp tiếp theo
Hoạch đònh
đề tài
Đònh nghóa
quy trình
R
R
R
-Trang 23-
Khoa Công Nghệ Thông Tin - Môn Công Nghệ Phần Mềm - Chương 1: Giới thiệu về CNPM
MÔ HÌNH TĂNG DẦN
Phân tích yêu cầu
1
2
3
Kiểm tra hệ thống
Thiết kế kiến trúc
Phát triển module
Tích hợp
4
-Trang 24-
Khoa Công Nghệ Thông Tin - Môn Công Nghệ Phần Mềm - Chương 1: Giới thiệu về CNPM
MÔ HÌNH TĂNG DẦN (t.t)
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.
-Trang 25-
Khoa Công Nghệ Thông Tin - Môn Công Nghệ Phần Mềm - Chương 1: Giới thiệu về CNPM