Bài giảng Nhập môn công nghệ phần mềm - Chương 1: Giới thiệu công nghệ phần mềm cung cấp cho người đọc các kiến thức: 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, chất lượng phần mềm, phân loại phần mềm. Mời các bạn cùng tham khảo.
Trang 1Gi ớ i thi ệ u
(1)
Khoa Công nghệ Thông tin
Trường ðại học Bách khoa
ðại học ðà Nẵng
Nội dung
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 21946, 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”
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 3Khủng hoảng phần mềm
V ề 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
Khủng hoảng phần mềm
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 4Khủng hoảng phần mềm
ð 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%
Khủng hoảng phần mềm
Trang 5Khá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 6Nguyê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)
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 7Nguyê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 8Nguyê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
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 9Nguyê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 10Chất lượng phần mềm
Tí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
Chất lượng phần mềm
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 11Chất lượng phần mềm
Tí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
Chất lượng phần mềm
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 12Chất lượng phần mềm
Khả 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
Chất lượng phần mềm
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 13Phân loại phần mềm
Cá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
Phân loại phần mềm
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ử