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ổn
Trang 5Cô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
Trang 6Cá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)
Ch ặ t ch ẽ (rigor and formality)
sửdụng mô hình lý thuyết và toán học
Trang 7• Gi ả i quy ế t m ộ t ph ầ n nh ỏ s ẽ ñơn giả n h ơ n
• “chia ñể tr ị ” (divide and conquer)
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 8• mô hình cho ng ườ i s ử d ụ ng
• mô hình cho ng ướ i phát tri ể n
Trang 9T ổ ng quát hóa (generality)
xem xét vấn ñềtrong ngữcảnh tổng quát
Trang 19• vi ế t tài li ệ
• insertions/invariants
• chu ẩ n l ậ p trình (coding standards)
• l ậ p trình theo c ặ p (pair programming)
• ngu ồ n tài nguyên ki ể m th ử
mã ngu ồ n ñượ c ki ể m th ử theo tài li ệ u thi ế t k ế
S ả n ph ẩ m: báo cáo ki ể m th ử
Trang 24• mong ñợ i không th ự c t ế v ề ti ế n tri ể n c ủ a d ự án
người phát triển có sựchọn lựa không tốt
• phù h ợ p cho nguyên m ẫ u, nh ư ng không phù h ợ p
Trang 25Phiên bản
ñầu tiên
Phiên b ả n trung gian
Trang 26Mô hình xo ắ n ố c
(spiral model)
Risk analysis Risk analysis Risk analysis
Risk analysis Proto- type 1 Prototype 2 Prototype 3 Opera-tional
protoype
Concept of Operation
Simulations, models, benchmarks
S/W requirements Requirement validation Design V&V
Product design Detailed design Code Unit test Integration test Acceptance test Service Develop, verify
next-level product
Evaluate alternatives identify, resolve risks
Development plan
Requirements plan Life-cycle plan REVIEW
Mô hình xo ắ n ố c
nh ấ n m ạ nh vi ệ c ñánh giá các rủi ro
ph ầ n m ề m ñượ c xây d ự ng theo nhi ề u chu k ỳ
m ỗ i chu k ỳ tương ứ ng v ớ i m ộ t s ả n ph ẩ m c ủ a m ộ t giai
ñ ạ n phát tri ể n ph ầ n m ề m
xác ñị nh các m ụ c tiêu, gi ả i pháp, ràng bu ộ c
ñ ánh giá các gi ả i pháp, xác ñị nh các nguy c ơ và tìm
cách gi ả i quy ế t chúng
phát tri ể n và ki ể m th ử s ả n ph ẩ m c ủ a chu k ỳ này
l ậ p k ế ho ạ ch cho chu k ỳ ti p theo
Trang 27• ñ ánh giá th ậ t chi ti ế t, phát tri ể n d ầ n d ầ n, tái s ử d ng, lo ạ i b ỏ ớ t các
yêu c ầ u không c ầ n thi ế t
• trao ñổ i th ườ ng xuyên v ớ i ng ườ i s ử d ng, có tài li ệ u h ướ ng d ẫ n s ử
d ng s ớ m
• c ầ n phân tích các công vi ệ c, xây d ự ng các hình m ẫ u tr ướ c,
• phát tri ể n các ph ầ n ổ n ñị nh tr ướ c
v ấ n ñề v ề hi ệ u qu ả
• c ầ n ph ả i mô ph ỏ ng, ño lườ ng, th ử nghi ệ m
• phân tích k ỹ tính kh ả thi v ề m ặ t k ỹ thu ậ t
Trang 28Góc nhìn k ỹ thu ậ t: quan tâm ñế n
công ngh ệ , ki ể m tra ch ấ t l ượ ng,
Trang 29Bước lặp chuyển giao
Bước lặp chuyển giao
Bước lặp phát triển
Mẫu thử (maquette) Nguyên mẫu kiến trúc Nguyên mẫu kiến trúc Nguyên mẫu phát triển Nguyên mẫu phát triển
Bước lặp Kết quả
Phiên bản chính thức Phiên bản β
Phiên bản β
Trang 30Bước lặp chuyển giao
Bước lặp chuyển giao
Bước lặp phát triển
Mẫu thử (maquette) Nguyên mẫu kiến trúc Nguyên mẫu kiến trúc Nguyên mẫu phát triển Nguyên mẫu phát triển
Phiên bản chính thức Phiên bản β
Bước lặp Kết quả
Phiên bản β
Giai ñoạn
Khởi ñầu Soạn thảo
Xây dựng
Chuyển giao
Mô hình h ợ p nh ấ t
Mô hình h ợ p nh ấ t và UML
Trang 37S ố ñ úng
S ố sai
B ấ m s ố
K ế t n ố ñượ c
Trang 41t1
Trang 42m ộ t th ẻ , thì chuy ể n ti ế p này là có th ểvượt qua ñượ c,
n u chuy ể n ti ế p này ñượ c th ự c hi ệ n thì t ấ t c ả các nút
vào c ủ a chuy ể n ti ế p s ẽ b ị ấ y ñ i m ộ t th ẻ , và m ộ t th ẻ
s ẽ ñượ c thêm vào t ấ t c ả các nút ra c ủ a chuy ể n ti ế
n u nhi ề u chuy ể n ti ế p là có th ể vượ t qua thì ch ọ n
chuy ể n ti ế p nào c ũ ng ñượ c
hoặc t3 ñược vượt qua
hoặc t4 ñược vượt qua
Trang 43M ạ ng Petri
Ví d ụ
Trang 45rg2 red2
yellow2 yr2
gy2 safe2
safe1
Trang 46M ạ ng Petri
Ví dụ2: mô tảchu kỳsống của một người
thanh niên trẻ con
send_mail
read_mail
Mô tả trường hợp 1 người viết và 2 người ñọc ?
Mô tả trường hợp hộp thư nhận chỉchứa nhiều nhất 3 thư ?
Trang 47M ạ ng Petri
Ví dụ4: tình huống nghẽn (dead-lock)
2 2
P6
P4
P3 P1
M ạ ng Petri
Ví dụ4: giải pháp chống nghẽ
2 2
P6
P4
P3 P1
Trang 49S ả n xu ấ t
P2
C2 C1
pre-condiition: ñặ c t ả các ràng bu ộ c trên các tham
s ốtrước khi hàm ñượ c th ự c thi
post-condition: ñặ c t ả các ràng bu ộ c trên các tham
s ốsau khi hàm ñượ c th ự c thi
có th ể s ử d ng ngôn ng ữ phi hình th ứ c, hình th ứ c
ho ặ c ngôn ng ữ l ậ p trình ñể ñặ c t ả các ñ i ề u ki ệ
Trang 50pre ∀ i, 1 ≤ i ≤ n, a[i] ≤ a[i+1]
post result = ( ∃ i, 1 ≤ i ≤ n, a[i] = e)
Trang 51¬_ : Boolean →Boolean _ ∧∧∧∧_ : Boolean x Boolean →Boolean _ ∨∨∨∨_ : Boolean x Boolean →Boolean
một thao tác không có tham sốlà một hằng số
một giá trịcủa kiểu trừu tượng ñịnh nghĩa ñược biểu diễn bởi kí tự“_”
Trang 52¬_ : Boolean →Boolean _ ∧∧∧∧_ : Boolean x Boolean →Boolean _ ∨∨∨∨_ : Boolean x Boolean →Boolean
một thao tác không có tham sốlà một hằng số
một giá trịcủa kiểu trừu tượng ñịnh nghĩa ñược biểu diễn bởi kí tự“_”
vect : Integer x Integer →Vector
init : Vector x Integer →Boolean
ith : Vector x Integer →Element
Trang 53infborder(v) ≤≤≤≤i ≤≤≤≤supborder(v) ⇒ith(change-ith(v, i, e), i) = e
infborder(v) ≤≤≤≤i ≤≤≤≤supborder(v) &infborder(v) ≤≤≤≤j ≤≤≤≤supborder(v) &i ≠≠≠≠j ⇒
ith(change-ith(v, i, e), j) = ith(v, j)
init(vect(i, j), k) = false
infborder(v) ≤≤≤≤i ≤≤≤≤supborder(v) ⇒init(change-ith(v, i, e), i) = true
infborder(v) ≤≤≤≤i ≤≤≤≤supborder(v) &i ≠≠≠≠j ⇒init(change-ith(v, i, e), j) = init(v, j)
Trang 56các sơñồthao tác (operation schemas)
• mô t ả các thao tác (thay ñổ i tr ạ ng thái)
các toán tử sơ ñồ(schema operations)
Trang 61Kh ở i gán bi ế
Khai báo thao tác trên bi ế
kí hi ệ u ∆ bi ể u di ễ n bi ế n tr ạ ng thái b ị thay ñổ i b ở i thao
tác
kí hi ệu ‘ (dấ u nháy ñơ n) bi ể u di ễ n giá tr ị m ớ i c ủ a bi ế
Thao tác có th ể có các tham s ố vào và ra
tên tham s ố vào k ế t thúc b ở i kí t ự “?”
tên tham s ố ra k ế t thúc b ở i kí t ự “!”
Trang 62• t ậ p h ợ p các nhân viên ñang vào in
• t ậ p h ợ p các nhân viên ñang ra out
b ấ t bi ế n c ủ a h ệ th ố ng
Trang 64Ví d ụ 1
ðặc tảthao tác kiểm tra một nhân viên vào hay ra
Thao tác này cho k ế t qu ả là ph ầ n t ử c ủ a ki ể
QueryReply == is_in | is_out
ðặ c t ả thao tác
Ví d ụ 1
Khởi tạo hệthống
Trang 65• ð i ề u ki ệ n trên các tham s ố vào
• Quan h ệ gi ữ a tr ạ ng thái tr ướ c và sau
• Tham s ố k ế t qu ả
Khởi gán
Ví d ụ 1
Hãy ñặ c t ả các thao tác
Register: thêm vào một nhân viên mới
QueryIn: cho biết những nhân viên ñang
vào/làm việc
Trang 66Schema3 == Schema1 ∧ Schema2
Schema4 == Schema1 ∨ Schema2
Trang 69Ví d ụ 1 (ti ế p)
C ả i ti ế n thao tác CheckIn
Xử lý thêm hai trường hợp lỗi
1 name? ñã ñượ c ghi nh ậ
2 name? ch ư a ñượ c ñă ng ký
Ví d ụ 1 (ti ế p)
C ả i ti ế n thao tác CheckIn
Xử lý thêm hai trường hợp lỗi
Trang 72dom(directory) = {mary, john, jim, jane}
t ậ p h ợ p các thành ph ầ n th ứ hai trong m ộ t quan h ệ
Trang 74Tìm số ñiện thoại của một người
Tìm tên theo số ñiện thoại
có th ể c ả i ti ế n ?
Trang 75Ví d ụ 2
Xóa số ñiện thoại của một người
Ví d ụ 2
Xóa các mục trong danh bạ ứng với một tên
Xóa các mục trong danh bạ ứng với một tập các
tên
Trang 76Partial Function
là quan hệmà mỗi phần tửtrong domain cho một
giá trịduy nhất trong range
Trang 80Ví d ụ 3
Tìm ngày sinh của một người
thông báo khi tìm th ấ y
khi ñ
Ví d ụ 3
Tìm những người cùng ngày sinh
Trang 84• có th ể ñượ c th ự c hi ệ n b ở i nhi ề u m ứ c tr ừ u t ượ ng
Component design
Data structure design
Algorithm design
Algorithm specification
Requirements
specification
Design activities
Design products
Trang 86D ự báo thay ñổ i là khó khăn
sự thay ñổi thường không ñược xác ñịnh
Trang 87Ph ầ n m ề m là t ậ p h ợ p g ồ m các mô- ñ un
t ươ ng tác v ớ i nhau
Mô- ñ un hóa ñ óng vai trò quan tr ọ ng ñể có
ñượ c ph ầ n m ề m ch ấ t l ượ ng v ớ i chi phí th ấ p
Các tiêu chu ẩ n ñể ñ ánh giá m ộ t ph ươ ng
pháp thi ế t k ế hướ ng mô- ñ un
tính phân rã (modular decomposability)
tính tổng hợp (modular composability)
tính dễhiểu (modular understandability)
tính liên tục (modular continuity)
tính bảo vệ(modular protection)
Trang 88các phương pháp thiết kế từtrên xuống
(to-down design) thỏa mãn tiêu chuẩn này
Trang 89tính liên t ụ c (modular continuity)
một sự thay ñổi trong ñặc tảyêu cầu chỉdẫn
ñến sự thay ñổi trong một (hoặc một sốít)
Trang 90Các tiêu chu ẩ n c ủ a m ộ t
ph ươ ng pháp thi ế t k ế
tính b ả o v ệ (modular protection)
kiến trúc ñươc thiết kếsao cho nếu một ñiều
kiện bất thường xảy ra, chỉmột (hoặc một số
Trang 91chia sẽ dữliệu: mô hình “Repository”
chia sẽ dịch vụ, servers: mô hình
“Client-Server”
mô hình lớp (layered model)
Trang 93mô hình phân tán: dữliệu và xử lý ñược
phân tán trên nhiều thành phần khác nhau