Schach, Classical and Object-Oriented Software Engineering, NXB IRWIN, 1996.. Ronald Leach, Introduction to Software Engineering, CRC Press, 1999.. Myers, The art of software testing,
Trang 1Công ngh ệ ph ầ n m ề m
(0)
Nguy ễ n Thanh Bình
Khoa Công nghệ Thông tin
Trường ðại học Bách khoa
ðại học ðà Nẵng
Hi ể u và n ắ m ñượ c
Khái niệm công nghệphần mềm
Các mô hình phát triển phần mềm
Các hoạt ñộng phát triển phần mềm
Các kỹthuật và phương pháp cơ bản trong
phát triển phần mềm
Áp d ụ ng công ngh ệ ph ầ n m ề m trong phát
tri ể n ph ầ n m ề m
Trang 2Chương 1: Giớ i thi ệ u Công ngh ệ ph ầ n m ề m
Chương 2: Các mô hình phát triể n ph ầ n m ề m
Chương 3: Phân tích và ñặ c t ả yêu c ầ
Chương 4: Các kỹ thu ậ ñặ c t ả
Chương 5: Thiế t k ế
Chương 6: Lậ p trình và ngôn ng ữ l ậ p trình
Chương 7: Kiể m th ử
Chương 8: Quả n tr ị d ự án ph ầ n m ề m
4
Ian Sommerville, Software Engineering, 7th edition, Pearson
Education, 2004.
M Gaudel, B Marre, F Schlienger, G Bernot, Précis de
génie logiciel, Masson, 2001.
Stephen R Schach, Classical and Object-Oriented Software
Engineering, NXB IRWIN, 1996.
Ronald Leach, Introduction to Software Engineering, CRC
Press, 1999.
G Booch, J Rumbaugh, I Jacobson, The Unified Modeling
Language User Guide, Addision-Wesley, 1999.
Craig Larman, Applying UML and Patterns: An Introduction
to Object-Oriented Analysis and Design and Iterative
Development, Third Edition, Addision-Wesley, 2004.
Glenford J Myers, The art of software testing, Wiley, 2004.
Boris Beizer, Software Testing Techniques, Second Edition.
Trang 3Gi ớ i thi ệ u
(1)
Nguy ễ n Thanh Bình
Khoa Công nghệ Thông tin
Trường ðại học Bách khoa
ðại học ðà Nẵng
L ị ch s ử phát tri ể n ph ầ n m ề m và
kh ủ ng ho ả ng ph ầ n m ề m ?
Công ngh ệ ph ầ n m ề m
Khái ni ệ m
M ụ c ñ ích
Nguyên t ắ c
Ch ấ t l ượ ng ph ầ n m ề m
Phân lo ạ i ph ầ n m ề m
Trang 41946, máy tính ñ i ệ n t ử ra ñờ i
1950, máy tính ñượ c th ươ ng m ạ i hóa
Ph ầ n m ề m b ắ ñầ u ñượ c phát tri ể
Nh ữ ng n ă m 1960
nh ữ ng th ấ t b ạ i v ề phát tri ể n ph ầ n m ề m
• s ả n ph ẩ m ph ầ n m ề m ph ứ c t ạ p
• nhi ề u l ỗ i
• t ổ ch ứ c s ả n xu ấ t: giá thành, ti ế n ñộ ,
Ng ườ i ta nói ñế n “Kh ủ ng ho ả ng ph ầ n m ề m”
4
T ừ th ủ công ñế n công ngh ệ
•Chương trình nhỏ
• không chuyên nghi ệ
• 1 ng ườ i làm
• ngườ i s ử d ng = ng ườ i phát tri ể
• 1 s ả n ph ẩ m = mã ngu ồ
• ti ế n trình phát tri ể n ñơ n gi ả
•Dựán lớn
• chuyên nghi ệ
• nhi ề u ng ườ i làm
• khách hàng & nhà cung c ấ
• nhi ề u s ả n ph ẩ m
• ti ế n trình phát tri ể n ph ứ c t ạ
1968, h ộ i th ả o khoa h ọ c ñầ u tiên v ề “Công ngh ệ ph ầ n m ề m”
Trang 5V ề m ặ t s ả n ph ẩ m
ch ấ t l ượ ng s ả n ph ẩ m ph ầ n m ề m
• không ñáp ứng yêu cầu thực tế
• khó sửdụng
• không tin cậy
• khó bảo trì
• khách hàng không hài lòng
V ề m ặ t qu ả n lý
Kếhoạch
• không ñ ánh giá ñ úng giá thành
• không ñ úng ti ế n ñộ
• chi phí phát tri ể n / chi phí b ả o trì
Vềmặt pháp lý
• h ợ p ñồ ng không r ỏ ràng, không ch ặ t ch ẽ
Nhân lực
• ñ ào t ạ
• giao ti ế
Thiếu tiêu chuẩn ñánh giá sản phẩm
Thiếu quy trình quản lý
Trang 6ð i ề u tra c ủ a General Acounting Office
(1982) trên nhi ề u s ự án v ớ i t ổ ng v ố n ñầ u t ư
$68.000.000
Không giao sản phẩm: 29%
Không ñược sử dụng: 47%
Bỏcuộc: 19%
ðược sửdụng sau khi ñã chỉnh sửa: 3%
Tốt: 2%
8
Trang 7Khái ni ệ m
Công ngh ệ ph ầ n m ề m
nghiên cứu và phát triển các phương pháp,
kĩthuật và công cụnhằm xây dựng các
phần mềm một cách kinh tế, có ñộ tin cậy
cao và hoạt ñộng hiệu quả
thiết kế, xây dựng, và bảo trì các phần mềm
phc tp, bn vng và cht lưng
M ụ c ñ ích
M ụ c ñ ích
áp d ụ ng th ự c t ế
• các ki ế n th ứ c khoa h ọ c,
• các nguyên t ắ c kinh t ế ,
• các nguyên t ắ c qu ả n lí,
• các k ỹ thu ậ t và công c ụ thích h ợ p
ñể s ả n xu ấ t và b ả o trì các ph ầ n m ề m nh ằ m b ả o ñả m
4 yêu c ầ u (FQCD):
• ph ầ n m ề m t ạ o ra ph ả i ñ áp ứ ng ñượ c yêu c ầ u ng ườ i s ử
d ụ ng
• ph ầ n m ề m ph ả i ñạ t ñượ c các tiêu chu ẩ n v ề ch ấ t l ượ ng
• giá thành ph ả i n ằ m trong gi ớ i h ạ n ñặ t ra
• ti ế n ñộ xây d ự ng ph ầ n m ề m ph ả i ñả m b ả o
Trang 8Nguyên t ắ c
Các nguyên t ắ c c ơ b ả n
Chặt chẽ(rigor and formality)
Chia nhỏ(separation of concerns)
Mô-ñun hóa (modularity)
Trừu tượng (abstraction)
Phòng ngừa sự thay ñổi (anticipation of
change)
Tổng quát hóa (generality)
Giải quyết từng bước (incrementality)
12
Nguyên t ắ c
Ch ặ t ch ẽ (rigor and formality)
sửdụng mô hình lý thuyết và toán học
áp dụng cho tất cảcác bước, tất cảcác sản
phẩm
Ví dụ
• “ch ọ n z là giá tr ị ớ n nh ấ t c ủ a x và y”
• z = max(x, y)
Trang 9Nguyên t ắ c
Chia nh ỏ (separation of concerns)
Làm chủ ñộphức tạp
• ch ỉ t ậ p trung m ộ t l ĩ nh v ự c cùng m ộ t lúc
Chia vấn ñề thành các phần nhỏ hơn
• Gi ả i quy ế t m ộ t ph ầ n nh ỏ s ẽ ñơn giả n h ơ n
• “chia ñể tr ị ” (divide and conquer)
Có thểchia nhỏtheo
• th ờ i gian: l ậ p k ế ho ạ ch
• khái ni ệ m: giao di ệ n / thu ậ t toán
• x ử lý: chia các x ử lý con
Nguyên t ắ c
Mô- ñ un hóa (modularity)
Chia nh ỏ ñộ ph ứ c t ạ
• d ễ hi ể u
• d ễ qu ả n lý các h ệ th ố ng ph ứ c t ạ p
Quan h ệ m ậ t thi ế t v ớ i nguyên t ắ c “chia nh ỏ ”
Các ph ươ ng pháp mô- ñ un hóa
• chi ế n l ượ c t ừ trên xu ố ng (top-down)
• chi ế n l ượ c t ừ dướ i lên (bottom-up)
Ch ấ t l ượ ng c ủ a mô- ñ un hóa
• liên k ế t l ỏ ng l ẻ o (low coupling)
• k ế t c ố cao (high cohesion)
Trang 10Nguyên t ắ c
Tr ừ u t ượ ng (abstraction)
Lo ạ i b ỏ nh ữ ng gì không quan tr ọ ng
Ch ỉ xem xét các y ế u t ố quan tr ọ ng
S ử d ng các mô hình
• mô hình cho ng ườ i s ử d ụ ng
• mô hình cho ng ướ i phát tri ể n
Ví d ụ
• ngôn ng ữ l ậ p trình / c ấ u trúc ph ầ n c ứ ng
• xây d ự ng tài li ệ u
• ñặ c t ả b ớ i ñ i ề u ki ệ n tr ướ c và sau
16
Nguyên t ắ c
Phòng ng ừ a s ự thay ñổ i (anticipation of
change)
phần mềm là sản phẩm thường xuyên phải
thay ñổi
dựbáo các yếu tốcó thể thay ñổi
• ả nh h ưở ng có th ể
các thay ñổi thường gặp
• trong ñặ c t ả yêu c ầ
• trong ng ữ c ả nh s ử d ng
• kh ả năng về công ngh ệ
Trang 11Nguyên t ắ c
T ổ ng quát hóa (generality)
xem xét vấn ñềtrong ngữcảnh tổng quát
giải quyết vấn ñề lớn hơn
mục ñích
• tái s ử d ng d ễ dàng
• có th ể s ử d ng các công c ụ có s ẵ
• s ử d ụ ng design patterns
• chi phí có th ể tăng cao
Nguyên t ắ c
Gi ả i quy ế t t ừ ng b ướ c (incrementality)
Nguyên tắc
• xác ñị nh m ộ t ph ầ n (t ậ p con)
• phát tri ể
• ñ ánh giá
• b t ñầ u l ạ i
Áp dụng cho
• phát tri ể n m ộ t s ả n ph ẩ m
• mô ñặ c t ả / m ộ t ki ế n trúc /
• mô hình phát tri ể
• mô hình l ặ p
Trang 12Tính ñúng ñắn (correctness)
thực hiện ñúng các ñặc tảvềchức năng
(functional specification)
Tính tin cậy (reliability)
ñáp ứng ñược những yêu cầu ñặt ra
Tính bền vững (robustness)
hoạt ñộng tốt trong những ñiều kiện sửdụng
khác nhau
20
Tính hiệu quả (efficiency)
sửdụng hiệu quảcác nguồn tài nguyên (bộ
nhớ, CPU, )
Tính thân thiện (user friendlyness)
dễ sửdụng
Tính d ễ ki ể m tra (verifiability)
dễ kiểm tra chất lượng
Trang 13Tính d ễ b ả o trì (maintainability)
dễ xác ñịnh và sửa lỗi
dễ tạo ra những phiên bản mới khi có sựmở
rộng
Tính tái s ử d ụ ng (reusability)
dễ tái sử dụng trong những phần mềm mới
Tính kh ả chuy ể n (portability)
dễ sửdụng trong các môi trường mới
Tính d ễ hi ể u (understandability)
dễ hiểu ñối với người sửdụng cũng nhưñối
với người phát triển
Tính h ợ p tác (interoperability)
dễ hợp tác với các phần mềm khác
Sản xuất hiệu quả (productivity)
tiến trình sản xuất phần mềm phải hiệu quả
Trang 14Khả năng giao sản phẩm ñúng hạn
(timeliness)
giao sản phẩm theo từng gói
Tính trong suốt (visibility)
ñối với người phát triển/người quản lý
• hi ể u r ỏ ti ế n ñộ phát tri ể
• hi ể u r ỏ ả nh h ưở ng c ủ a các quy ế ñị nh
ñối với khách hàng
• hi ể u r ỏ ti ế n ñộ phát tri ể
• hi ể u r ỏ ả nh h ưở ng c ủ a các quy ế ñị nh
24
S ự th ỏ a hi ệ p gi ữ a các tiêu chu ẩ n ch ấ t
l ượ ng
tính thân thi ệ n / tính b ề n v ữ ng
tính kh ả chuy ể n / tính hi ệ u qu ả
Trang 15Các hệthống thông tin (Information Systems)
quản lý thông tin
cơ sởdữliệu + giao tác
Các hệthống thời gian thực (Real-Time
System)
các hệthống khi hoạt ñộng cần phải trảlời
các sự kiện với một thời gian ñược quy ñịnh
nghiêm ngặt
Các hệthống phân tán (Distributed Systems)
mạng máy tính
phân tán dữliệu
phân tán xửlí
Các hệthống nhúng (Emmbedded Systems)
giao tiếp với các hệthống/mạch ñiện tử