Bài Giảng
Giả
Công Nghệ Phần Mềm
Software Engineering
Giáo viên & Giao tiếp
p ggiảngg dạy
ạy
ThS Nguyễn Cao Trí –
[email protected]
http://www.cse.hcmut.edu.vn/~caotri
Room 109 A5 – Trung tâm Kỹ thuật Điện toán
Tel: 8647256 – 5370 Mobile: 091 391 6290
Hobbies: Automation , Flying Model
http://www.rc-easy.net
• Tài liệu download trên website file:
file: TailieudientuCNPMTailieudientuCNPMPrintableVersion..ppt
PrintableVersion
• Học thế nào? Î Hỏi ngay trên lớp
• Bảng mã sử dụng là Unicode dựng sẵn
• Các bài tập nộp bằng email, dạng file *.ZIP
• Email phải ghi rõ nội dung file đính kèm là gì bằng tiếng Việt
Trường Đại Học Bách Khoa - Khoa Công Nghệ Thông Tin
Copyright 2004 – Th.S Nguyễn Cao Trí –
[email protected]
2
Giới thiệu
ệ môn học
ọ
• Nội dung môn học
– Giới thiệu các khái niệm cơ bản về công nghệ phần mềm
– Mục tiêu của sản xuất
ấ phần
ầ mềm
ề và công nghệ phần
ầ mềm
ề
– Các mô hình sản xuất phần mềm
– Quy trình sản xuất và quản lý dự án phần mềm
• Tài liệu tham khảo
– Introduction to Software Engineering – Ronald J. Leach – CRC
Press
ess ((Thưư vviện
ệ A2 MS:
S: 907580
9075802004)
00 )
– Software Engineering – Ian Sommerville – Fifth edition (Thư viện A3
MS: 200032)
• Hình thức kiểm tra
– Giữa kỳ + Cuối kỳ + Bài tập
– Hình thức kiểm tra: trắc nghiệm khách quan – open book
– Đánh giá kêt quả: tương đối - phi tuyến
Trường Đại Học Bách Khoa - Khoa Công Nghệ Thông Tin
Copyright 2004 – Th.S Nguyễn Cao Trí –
[email protected]
3
???????? & !!!!!!!!
•
•
•
•
Công
Công
ô
Công
Công
Nghiệp & Công Nghệ
Nghiệp
ệ Phần
ầ Mềm
ề (CNpPM)
Nghệ Phần Mềm (CNPM)
nghiệp phần mềm & các công nghiệp khác
– Giống
– Khác
• Có hay không (những) công nghệ cho sản xuất phần
mềm?
• Có cần thiết phải có công nghệ cho sản xuất phần mềm
không,
ô
khi sản
ả xuất
ấ phần
ầ mềm
ề là
à hoạt động
ộ sản
ả xuất
ấ “đặc
ặ
biệt” vì không thể nói làm một phần mềm như sản xuất
một lon coca.
coca.
Trường Đại Học Bách Khoa - Khoa Công Nghệ Thông Tin
Copyright 2004 – Th.S Nguyễn Cao Trí –
[email protected]
4
Đặc
ặ tính của sản p
phẩm p
phần mềm
• Software = Program
• Software product = Program + Document + Support
• Loại sản phẩm phần mềm
– Generic Product: là sản phNm đóng gói và bán rộng rãi trên thị trường.
– Bespoke
B
k P
Product:
d t là sản
ả phNm
hN được
đ
phát
hát triển
t iể theo
th yêu
ê cầu
ầ đặc
đặ thù của
ủ
từng khách hàng.
• Các đặc tính quan trọng của sản phẩm phần mềm
– M
Maintainability:
i i bili phần
hầ mềm
ề có
ó thể
hể thay
h đổi thuận
h ậ tiện
iệ theo
h yêu
ê cầu
ầ của
ủ
người dùng
– Dependability: tính ổn định, bảo mật và an toàn của phần mềm. Không
gây tổn hại về vật chất hay kinh thế cho hệ thống.
thống
– Efficiency: Sử dụng hiệu quả tài nguyên của hệ thống cho công việc
– Usability: giao diện và phương thức phải phù hợp với người dùng đồng
thời đáp ứng đúng yêu cầu của người dùng
Trường Đại Học Bách Khoa - Khoa Công N ghệ Thông Tin
Copyright 2004 – Th.S N guyễn Cao Trí –
[email protected]
5
Software - Đủ hayy Thiếu?
• Phần mềm được viết ngay từ khi có những máy tính
programable đầu
ầ tiên.
tiên
ê . Được quan tâm
â và
à phát
á triền
ề từ
ừ rất
ấ
sớm
• Có rất nhiều phần mềm đã được viết
Î Không thiếu phần mềm
• Thực
ự tế việc
ệ sản xuất p
phần mềm không
g đáp
p ứng
g kịp
ịp yyêu
cầu của người sử dụng
dụng::
– Không đủ về số lượng
– Thiếu về chất lượng
– Không kịp về thời gian
Î Phần mềm không đáp ứng đủ cho người dùng
Trường Đại Học Bách Khoa - Khoa Công N ghệ Thông Tin
Copyright 2004 – Th.S N guyễn Cao Trí –
[email protected]
6
Nguyên
g y nhân khách quan
q
• Số lượng phần mềm phải được hiểu là số đầu/loại phần mềm được sử
dụng cho từng mục tiêu ứng dụng
dụng..
• Nhu cầu sử dụng phần mềm là rất lớn
– Nhiều ngành nghề cần dùng phần mềm máy tính
– Mỗi
ỗ ngành nghềề cần
ầ nhiều
ề loại phần
ầ mềm
ề khác nhau
– Mội loại phần mềm cần nhiều cấp độ khác nhau theo trình độ người dùng
• Chất lượng phần mềm cũng chưa đáp ứng tốt hoàn toàn người sử
dụng
dụng::
– Tính customize rất cao của sản phẩm phần mềm.
– Trình độ sử dụng khác nhau và điều kiện hạ tầng ứng dụng khác nhau
• Nhu cầu phần mềm thường rất cấp bách
– Tầm nhìn và chiến lược chưa đầu đủ của người sử dụng
– Không có kế hoạch lâu dài
– Phải thay đổi theo từng đối tượng người dùng
Trường Đại Học Bách Khoa - Khoa Công N ghệ Thông Tin
Copyright 2004 – Th.S N guyễn Cao Trí –
[email protected]
7
Nguyên
g y nhân chủ quan
q
• Tính chuyên nghiệp trong sản xuất phần mềm chưa cao
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 200300%)
– Các đề án lớn dễ thất bại
– 3/4 các
á hệ thống
thố lớn
lớ có
ó lỗi khi thực
th 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
Trường Đại Học Bách Khoa - Khoa Công N ghệ Thông Tin
Copyright 2004 – Th.S N guyễn Cao Trí –
[email protected]
8
Nguyên
g y nhân chủ quan
q
((tt))
Lý do của những hệ quả trê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
– Quy trình phát triển phần mềm chưa được thống nhất
– Phải viết
iết lại
l i s/w
/ mỗi
ỗi khi có
ó sự thay
th đổi vềề ngôn
ô ngữ,
ữ h/w
h/ hoặc
h ặ 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ạii 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
Î CẦN
Ầ PHẢI
Ả CÓ
Ó MỘT/NHIỀU
Ộ
Ề CHUẨN
Ẩ QUY TRÌNH
Ì
TRONG SẢN
Ả
XUẤT PHẦN MỀM ĐỂ NÂNG CAO TÍNH CHUYÊN NGHIỆP CỦA
NỀN SẢN XUẤT ĐẶC BIỆT NÀY
Î CẦN CÔNG NGHỆ CHO CÔNG NGHIỆP PHẦN MỀM
Trường Đại Học Bách Khoa - Khoa Công N ghệ Thông Tin
Copyright 2004 – Th.S N guyễn Cao Trí –
[email protected]
9
Định
ị nghĩa
g
“Công
g nghệ
g ệp
phần mềm”
• 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
ệ q
quả và tin cậy
ậy trên các máyy tính
tính..
• Công nghệ phần mềm là một quy trình có hệ thống
được sử dụng trong quá trình phân tích, thiết kế, hiện
thực, kiểm tra và bảo trì để bảo đảm các sản phẩm phần
mềm được sản xuất và hoạt động
động:: hiệu quả, tin cậy, hữu
dụng, nâng cấp dễ dàng (modificable), khả chuyển
(portable), khả kiểm tra (testable), cộng tác được với các
hệ thống khác (interoperable) và vận hành đúng (correct)
(correct)..
Trường Đại Học Bách Khoa - Khoa Công N ghệ Thông Tin
Copyright 2004 – Th.S N guyễn Cao Trí –
[email protected]
10
Cụ
ụ thể
• Efficiency:
Efficiency: Phần mềm được sản xuất trong thời gian và điều kiện vừa phải.
phải. Phần
mềm vận hành đúng mức độ yêu cầu về công việc và thời gian.
gian.
• Reliablity:
Reliablity: Phần mềm vận hành ổn định và tương tác được với các hệ thống ứng
dụng
• Usability
Usability:: Phần mềm có thể dùng được bởi người sử dụng và với môi trường mà
người sử dụng đang có.
có. Chú ý tới giao diện, điều kiện hệ thống,
thống,…
…
• Modifiability:
Modifiability: Phần mềm có thể được thay đổi dể dàng, nhanh chóng khi yêu cầu
của người sử dụng thay đổi
đổi..
• Portability:
Portability: Phần mềm có thể chuyển đổi dễ dàng sang các hệ thống khác mà không
cần phải điều chỉnh lớn.
lớn. Chỉ cần recompile nều cần thiết là tốt nhất
nhất..
• Testability
Testability:: Phần
Phầ mềmcó
ề ó thể d0ược
ượ kiểm
kiể tra
t dễ dàng
dà
dàng.. Tốt nhất
hất là được
đượ modul
d l hóa
hó .
hóa.
• Reusability:
Reusability: Phần mềm hay một phần có thể được tái sử dụng cho các ứng dụng
khác. Các modul có thiết kế tốt, độc lập và giao tiến đơn giản, cả về tình tương thích
khác.
công nghệ phát triển
Trường Đại Học Bách Khoa - Khoa Công N ghệ Thông Tin
Copyright 2004 – Th.S N guyễn Cao Trí –
[email protected]
11
Cụ
ụ thể ((tt))
• Maintainability:
Maintainability: thiết kế của phần mềm có thể được hiểu dễ dàng cũng như chuyển
giao
i thuận
th ậ tiện
tiệ cho
h người
ười khác
khá trong
t
quá
á trình
t ì h điề
điều chỉnh,
hỉ h nâng
â cấp
ấ hay
h thay
th đổi theo
th
yêu cầu.
cầu.
• Interoperability:
Interoperability: Phần mềm vận hành ổn định và đúng như mong đợi
đợi.. Trên hệ
thống nhiều người dùng (multi users) phần mềm vẫn hoạt động được với các vận hành
khác của hệ thống
thống..
• Correctness:
Correctness: Phần mềm phải tính toán đúng và tạo ra kết quả đúng và đúng với
mục tiêu ứng dụng của người dùng
dùng..
• Các yêu cầu khác:
khác:
– Đúng tiến độ
– Sử dụng hợp lý nguồn nhân lực phát triển
– Chi phí phát triển thấp nhất
Trường Đại Học Bách Khoa - Khoa Công N ghệ Thông Tin
Copyright 2004 – Th.S N guyễn Cao Trí –
[email protected]
12
Nội
ộ dung
g công
g việc
ệ của Software Engineering
g
g
Công việc của software engineering bao gồm:
•
•
•
•
•
Phân tích hệ thống/vấn đề
Xác định các yêu cầu
Thiết kế phần mềm
Viết phần mềm (coding)
Kiểm tra và tích hợp hệ
thống
• Cài đặt và chuyển giao
phần
hầ mềm
ề
• Lập tài liệu
• Bảo trì
Trường Đại Học Bách Khoa - Khoa Công N ghệ Thông Tin
Copyright 2004 – Th.S N guyễn Cao Trí –
[email protected]
•
•
•
•
Quản lý chất lượng
Huấn luyện
yệ
Dự đoán tài nguyên
Quản trị dự án
13
Một
ộ định
ị nghĩa
g
khác của CNPM
• CNPM là các quy trình đúng kỷ luật và có định lượng được
á dụng cho sự phát
áp
á 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
trình,, sự đo lường
lường,, sản phẩm
phẩm,, tính
đúng thời gian và chất lượng
Qui trình
Đo lường
Tiê chuẩn
Tiêu
h ẩ
Trường Đại Học Bách Khoa - Khoa Công N ghệ Thông Tin
Copyright 2004 – Th.S N guyễn Cao Trí –
[email protected]
Thời gian
Quản lý
Chất lượng
Dịch vụ
14
Mô hình p
phát triển p
phần mềm
Các công đoạn chính tổng quát bao gồm 4 giai đoạn
• Giai đoạn đặc tả
tả:: xác định các tính năng và điều kiện hoạt
động của hệ thống
thống.. (thu thập yêu cầu và phân tích)
• Giai đoạn phát triển
triển:: Thiết kế phần mềm (software
design),
g ), viết code ((code g
generation
• Giai đoạn kiểm tra:
tra: kiểm tra phần mềm (software testing),
kiểm tra tính hợp lý của phần mềm.
mềm.
• Giai đoạn
đ
bả trì
bảo
trì:
ì: Sửa
ử lỗi
lỗ (correction),
(
) thay
h đổi
đổ môi
ô trường
ờ
thực thi (adaptation), tăng cường (enhancement)
Trường Đại Học Bách Khoa - Khoa Công N ghệ Thông Tin
Copyright 2004 – Th.S N guyễn Cao Trí –
[email protected]
15
Các mô hình sản xuất p
phần mềm
Tùy theo quy mô và công nghệ phát triển, có các mô hình
sản
ả xuất
ấ khác
á nhau
nhau..
• Mô hình tuần tự tuyến tínhtính- waterfall
• Mô hình Prototyping - Evolutionary Development
• Mô hình xoắn ốc – Boehm’s Spiral Model
• Mô hình RAD – Rapid Application Development
MÔ HÌNH NÀO TỐT HƠN
Mỗi mô hình phù hợp với trình độ phát triển, quy mô sản
phẩm và yêu cầu ràng buộc cụ thể về thời gian và tính
chất của hệ thống
thống..
Trường Đại Học Bách Khoa - Khoa Công N ghệ Thông Tin
Copyright 2004 – Th.S N guyễn Cao Trí –
[email protected]
16
Mô hình WaterFall – Sequency
q
y model
• 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…
tra
…
Phân tích
yêu cầu
Thiết kế hệệ thống
g
& phần mềm
Hiện thức và
kiểm tra moduls
Tích
Tí
h hợp
hợ vàà kiể
kiểm
tra tổng thể
Chuyển giao
và Bảo trì
Trường Đại Học Bách Khoa - Khoa Công N ghệ Thông Tin
Copyright 2004 – Th.S N guyễn Cao Trí –
[email protected]
17
Mô hình WaterFall – Sequency
q
y model ((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ự
• Các bước thực
ự chất không
g tách biệt
ệ hoàn toàn mà có
chồng lấn và tham khảo lại
• 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”
“d l ” tích
í h lũy
lũ trong nhóm
hó làm
là việc
ệ -> dự
d án
á
thường bị trể
trể..
phù hợp
ợp cho dự
ự án nhỏ,, đơn g
giản..
giản
• Chỉ p
Trường Đại Học Bách Khoa - Khoa Công N ghệ Thông Tin
Copyright 2004 – Th.S N guyễn Cao Trí –
[email protected]
18
Mô Hình Prototype
yp
Hoạt động sản xuất
Bản prototype
Đặc tả
Mô tả sơ lược
của
ủ khá
khách
h hà
hàng
Phát triển
Các bản trung
gian
Kiểm thử
Bản cuối cùng
Trường Đại Học Bách Khoa - Khoa Công N ghệ Thông Tin
Copyright 2004 – Th.S N guyễn Cao Trí –
[email protected]
19
Mô Hình Prototype
yp – ưu & khuyết
y
• 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
– Bản thân khách hàng chưa hiểu rõ yêu cầu của mình, cũng như các quy
trình chưa được xác lập rõ ràng.
– Khách hàng chưa hiểu rõ khả năng hổ trợ của hệ thống máy tính
• Kích thích sự thích thú của người dùng với dự án
•
•
•
•
•
Prototype có
ó thể
ể bị “throw
“throw--away” -> Lãng
ã phíí
Các process không được phân định rõ ràng
Hệ
ệ thống
g thông
g thường
g có cấu trúc lỏng
g lẻo
Cần có những kỹ năng đăc biệt trong quản lý và phát triển
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
Trường Đại Học Bách Khoa - Khoa Công N ghệ Thông Tin
Copyright 2004 – Th.S N guyễn Cao Trí –
[email protected]
20