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
Trang 1Gi ớ 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 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 3V ề 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 4ð 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%
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 10Tí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
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 11Tí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 12Khả 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
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 13Cá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ử