Professional Documents
Culture Documents
tuannm@soict.hust.edu.vn
1. Sự tiến triển của các phương pháp thiết kế phần mềm
Chính sách phân biệt giá cả giữa phần cứng và phần mềm (IBM).
Nghiên cứu cơ bản về phương pháp luận lập trình
Xuất hiện khái niệm “Software Engineering” (1968).
Bắt đầu bàn luận về khủng khoảng phần mềm và xu hướng hình thành
CNHPM như một chuyên môn riêng
6
Vòng đời phần mềm
7
Các phương pháp luận và kỹ thuật cho từng pha
8
Quy trình phát triển phần mềm
Các hoạt động giám sát, đánh giá kỹ thuật, đảm bảo chất
lượng phần mềm, quản lý cấu hình, quản lý rủi ro, ...
(Umbrella activities)
9
Ví dụ về mô hình sinh tiến trình
• Một công việc thực tế được định nghĩa bởi một tổ hợp các
tác vụ, nhằm hoàn thành mục tiêu, đối tượng đề ra của một
hành động thiết kế phần mềm nào đó.
– Một tập hợp các tác vụ phải hoàn thành.
– Một tập hợp các sản phẩm cần được sản xuất
– Một tập hợp các bộ lọc đảm bảo chất lượng cần được áp
dụng
12
Mô hình hóa hệ thống
13
Mô hình hóa hệ thống
• Bốn yếu tố quan trọng ảnh hưởng tới hiệu quả của dự án
phát triển phần mềm:
– 1. Con người. Yếu tố quan trọng nhất hiển nhiên là số lượng và
trình độ chuyên nghiệp của những người tham gia phát triển phần
mềm, những người có khả năng nắm bắt, làm chủ được những công
nghệ mới, có khả năng hiểu được bài toán của lĩnh vực ứng dụng.
– 2. Bài toán (lĩnh vực ứng dụng). Hiệu quả của dự án phụ thuộc
nhiều vào độ phức tạp của bài toán với những yêu cầu thường
xuyên thay đổi, những đòi hỏi phức tạp với các ràng buộc về dữ liệu,
thời gian và tài nguyên của hệ thống.
– 3. Công nghệ: các kỹ thuật, công cụ hỗ trợ để phát triển phần mềm,
– 4. Các tài nguyên: bao gồm cả các phần cứng như máy tính, thiết bị
phụ trợ, phần mềm ứng dụng và tài chính, ngân sách đầu tư cho dự
án phát triển phần mềm.
14
Mô hình hóa hệ thống
1. Rủi ro từ các yêu cầu (Requirements risks) Build the right system
• Các yêu cầu của hệ thống là gì?
• Tránh hiểu lầm các ưu tiên và không làm ra những hệ thống kém, thực hiện những
cái mà khác hàng không muốn. Xây dựng đúng hệ thống
2. Rủi ro từ công nghệ (Technological risks)
• Có thể sử dụng công nghệ thiết kế tiên tiến? (OOD) Build the system right
• Làm thế nào để thực hiện tốt CN lựa chọn? Xây dựng hệ thống đúng
– gợi ý một hoặc nhiều lời giải đã được chứng minh cho vấn
đề.
• Được biểu diễn bởi các thành phần mang tính tổng quát, một
mẫu tiến trình cung cấp cho bạn một template [Amb98] - một
phương pháp nhất quán để mô tả các lời giải của vấn đề từ bên
trong nội dung của quá trình thiết kế phần mềm.
16
Các kiểu mẫu tiến trình
• Mẫu trạng thái - Xác định một vấn đề cùng với một hoạt động
nền tảng cho tiến trình.
• Mẫu tác vụ - Xác định một vấn đề cùng với một hành động
thiết kế phần mềm hoặc một tác vụ công việc thích hợp với
thực tế.
• Mẫu pha - Xác định một chuỗi các hoạt động nền tảng xảy ra
cùng với tiến trình, thậm chí khi các luồng hoạt động tổng thể
được lặp đi lặp lại trong thực tế.
17
Các phương pháp đánh giá và cải tiến cho tiến trình
• Mô hình quy ước ủng hộ cách tiếp cận theo trật tự trong việc thiết
kế phần mềm.
Việc này dẫn đến một số câu hỏi:
• Nếu mô hình quy ước phấn đấu cho cấu trúc và trật tự, liệu nó có
thích hợp cho một thế giới phần mềm biến động mạnh mẽ ?
• Hơn nữa, nếu chúng ta loại bỏ mô hình tiến trình cổ điển, và thay
thế chúng bởi cái gì đó ít tính cấu trúc hơn, có phải chúng ta không
thể đạt được sự phối kết hợp trong công việc phần mềm ?
19
Mô hình tuyến tính
20
Mô hình tuyến tính
Tạo mã / lập trình (Code generation / programming): Kiểm thử (Testing): Kiểm tra các chương
Chuyển thiết kế thành chương trình máy tính bởi trình và môđun cả về lôgic bên trong và
ngôn ngữ nào đó. Nếu thiết kế đã được chi tiết hóa chức năng bên ngoài, nhằm phát hiện
thì lập trình có thể chỉ thuần túy cơ học ra lỗi và đảm bảo với đầu vào xác định
thì cho kết quả mong muốn
21
Mô hình tuyến tính
22
Điểm yếu của Mô hình tuyến tính
• Thực tế các dự án ít khi tuân theo dòng tuần
tự của mô hình, mà thường có lặp lại (như
mô hình của Boehm)
• Khách hàng ít khi tuyên bố rõ ràng khi nào
xong hết các yêu cầu
• Khách hàng phải có lòng kiên nhẫn chờ đợi
thời gian nhất định mới có sản phẩm. Nếu
phát hiện ra lỗi nặng thì là một thảm họa!
23
Mô hình thác nước
Communicat ion
project init iat ion Planning
requirement gat hering estimating Modeling
scheduling
analysis Const ruct ion
tracking
design Deployment
code
t est delivery
support
f eedback
24
Mô hình thác nước
(Waterfall model)
25
Mô hình thác nước
(Waterfall model)
26
Mô hình chữ V
increment # n
Co m m u n i c a t i o n
Pla nning
M odeling
analy s is Co n s t ru c t i o n
des ign
c ode De p l o y m e n t
t es t d e l i v e ry
fe e dba c k
delivery of
increment # 2 nt h increment
Co m m u n i c a t i o n
Pla nning
M odeling
analy s is Co n s t ru c t i o n
des ign c ode De p l o y m e n t
t es t d e l i v e ry
fe e dba c k
delivery of
increment # 1 2nd increment
Co m m u n i c a t i o n
Pla nning
M odeling
analy s is Co n s t ru c t i o n
des ign c ode
delivery of
De p l o y m e n t
t es t d e l i v e ry
fe e dba c k
1st increment
28
Mô hình mang tính cách mạng: Prototyping
Qu ick p lan
Quick
Communicat ion plan
communication
Mo d e lin g
Modeling
Qu ick d e sig n
Quick design
Deployment
Deployment
De live ry
delivery &
& Fe e dback Const ruct ion
feedback Construction
of
ofprot
prototype
ot ype
29
Mô hình chế thử: Khi nào ?
31
Mô hình mang tính cách mạng: Prototyping
Web design
32
Các mô hình tiến hóa
• Phần lớn các hệ phần mềm phức tạp đều tiến hóa
theo thời gian: môi trường thay đổi, yêu cầu phát
sinh thêm, hoàn thiện thêm chức năng, tính năng
• Các mô hình tiến hóa (evolutionary models) có tính
lặp lại. Kỹ sư phần mềm tạo ra các phiên bản
(versions) ngày càng hoàn thiện hơn, phức tạp hơn
• Các mô hình tiêu biểu:
– Gia tăng (Incremental)
– Xoắn ốc (Spiral)
– Xoắn ốc WINWIN (WINWIN spiral)
– Phát triển đồng thời (Concurrent development)
33
Các mô hình tiến hóa
34
Các mô hình tiến hóa
Phiên bản
đầu tiên
Đặc tả
35
Mô hình gia tăng (The incremental model)
36
Mô hình gia tăng
Gia tăng 1
Gia tăng 2 Phân tích Thiết kế Lập trình Kiểm thử Xuất xưởng 2
Gia tăng 3 Phân tích Thiết kế Lập trình Kiểm thử Xuất xưởng 3
Thời gian/lịch
37
Mô hình gia tăng (The incremental model)
38
Mô hình gia tăng (The incremental model)
• Giải pháp:
– Chúng ta cần chuyển đổi hệ thống này thành
các thành phần riêng biệt;
– Hợp phần 1: Đăng ký và đăng nhập
– Hợp phần 2: Gửi yêu cầu kết bạn
– Hợp phần 3: Chấp nhận yêu cầu kết bạn
39
Mô hình gia tăng (The incremental model)
• Giải pháp:
40
Mô hình gia tăng (The incremental model)
• Những lợi thế của một mô hình gia tăng là gì?
– Phản hồi của khách hàng được nhận sau khi giao từng bộ phận.
– Rủi ro thay đổi yêu cầu giảm
– Linh hoạt hơn
– Dễ dàng kiểm tra và gỡ lỗi
– Cho kết quả nhanh
• Những nhược điểm của một mô hình gia tăng là gì?
– Cần một kế hoạch thích hợp để tích hợp các thành phần
– Cần một thiết kế phù hợp để tích hợp các thành phần
– Mở rộng hơn so với mô hình thác nước.
• Khi nào nên sử dụng mô hình gia tăng?
– Khi các yêu cầu chính được xác định nhưng một số yêu cầu có thể phát triển
trong thời gian tiếp theo.
– Khi sản phẩm ra mắt trên thị trường là muộn.
– Khi một khách hàng không có vấn đề gì với ngân sách nhưng anh ta đòi hỏi
ngày càng chất lượng hơn về phần mềm.
41
Mô hình xoắn ốc (spiral model)
42
Mô hình mang tính cách mạng: Mô hình xoắn ốc
planning
estimation
scheduling
risk analy sis
communication
modeling
analy sis
design
start
deployment
construction
deliv ery code
http://bit.ly/2ihOLB4 Slides copyright 2009 by feedback test
43
Roger Pressman.
Mô hình xoắn ốc (tiếp)
45
Mô hình xoắn ốc: Mạnh và yếu?
46
Mô hình xoắn ốc WINWIN
• Nhằm thỏa hiệp giữa người phát triển và
khách hàng, cả hai cùng “Thắng” (win-win)
– Khách thì có phần mềm thỏa mãn yêu cầu chính
– Người phát triển thì có kinh phí thỏa đáng và thời
gian hợp lý
• Các hoạt động chính trong xác định hệ
thống:
– Xác định cổ đông (stakeholders)
– Xác định điều kiện thắng của cổ đông
– Thỏa hiệp điều kiện thắng của các bên liên quan
47
Mô hình xoắn ốc WINWIN
2. Xác định điều kiện 3a. Hòa hợp điều kiện thắng
thắng của cổ đông 3b. Thiết lập mục tiêu mức tiếp
và các ràng buộc, dự kiến
48
Mô hình mang tính cách mạng: Mô hình đồng thời
none
A wait ing
changes
Under review
Under
revision
Baselined
Done
51
Mô hình hướng thành phần
Component-based model
52
Mô hình dựa thành phần
Lập kế hoạch
Phân tích rủi ro Xác định
thành phần
ứng viên
Giao tiếp
khách hàng
Xây dựng Tìm
bước lặp thứ n thành phần
của hệ thống từ thư viện
Đặt Lấy
thành phần thành phần
vào thư viện nếu có
Kỹ nghệ
Khách hàng Xây dựng & Xây dựng
đánh giá Xuất xưởng thành phần
nếu kh.có
53
The Unified Process (UP)
Elaborat ion
elaboration
Incept ion
inception
product ion
54
MH hợp nhất
(unified model)
Thời gian
55
MH hợp nhất
(unified model)
56
MH hợp nhất
(unified model)
57
MH hợp nhất và UML
58
Pha UP
UP Phases
Inception Elaboration Construction Transition Production
Workflows
Requirements
Analy sis
Design
Implementation
Test
Support
Iterations #1 #2 #n-1 #n
59
UP Work Products
Inception phase
Elaboration phase
Vision document
Init ial use-case model
Init ial project glossary
Construction phase
Use-case model
Init ial business case Supplement ary requirement s
Init ial risk assessment . including non-funct ional Transition phase
Design model
Project plan, Analysis model Soft ware component s
phases and it erat ions. Soft ware archit ect ure Delivered soft ware increment
Int egrat ed soft ware
Business model, Descript ion. increment Bet a t est report s
if necessary. Execut able archit ect ural General user feedback
Test plan and procedure
One or more prot ot ypes prot ot ype.
I nc e pt i o
Test cases
n Preliminary design model Support document at ion
Revised risk list user manuals
Project plan including inst allat ion manuals
it erat ion plan descript ion of current
adapt ed workflows increment
milest ones
t echnical work product s
Preliminary user manual
60
Tiến trình phần mềm cá nhân (PSP)
• Lập kế hoạch. Hành động này song song với yêu cầu và phát triển cả kích cỡ
và dự đoán tài nguyên. Mặt khác, một dự đoán sai sót được tạo ra. Tất cả các
metrics được ghi lại. Các tác vụ phát triển được xác định và lịch công việc
được tạo ra.
• Thiết kế bậc cao. Các đặc điểm bên ngoài của mỗi thành phần được xây
dựng và phát triển, thiết kế cho mỗi thành phần cũng được tạo ra. Các bản
mẫu được xây dựng khi có thể và các vấn đề gặp phải được theo dõi và ghi lại.
• Review thiết kế bậc cao. Các phương pháp xác minh hình thức (Chapter 21)
được áp dụng để phát hiện các lỗi trong thiết kế. Các metrics được bảo trì cho
các tác vụ quan trọng và kết quả công việc.
• Phát triển. Thiết kế mức thành phần được tinh lọc và kiểm tra. Code được
sinh, kiểm tra, biên dịch và test. Các metrics cho tất cả các tác vụ quan trọng
và kết quả công việc.
• Mổ xẻ phân tích. Sử dụng các định lượng và metrics đã thu thập được (đây
là lượng dữ liệu thực tế đã được phân tích thống kê), hiệu quả của tiến trình
được xác định. Các định lượng và metrics cần được cung cấp và điều khiển để
sửa đổi tiến trình sao cho hiệu quả hơn.
61
Tiến trình phần mềm theo nhóm (TSP)
• Xây dựng nhóm tự định hướng kế hoạch và theo dõi công việc của họ,
thiết lập mục tiêu, tiến trình và kế hoạch của họ. Nhóm ở đây có thể là một
nhóm hoặc một nhóm tích hợp sản phẩm từ 3 đến 20 kĩ sư.
• Cần phải cho các quản lý biết làm thế nào để huấn luyện và thúc đẩy động
lực cho nhóm của họ, và làm thế nào để giúp họ giữ vững được đỉnh cao
hiệu suất.
• Tăng tốc quá trình cải tiến phần mềm bằng việc sử dụng mô hình CMM
mức 5 cho hành vi bình thường và kì vọng.
– Mô hình năng lực trưởng thành (CMM) là thang đo sự hiệu quả của
62
Tiến trình RUP
RUP (Rational Unified Process) là một
tiến trình mô hình hoá với UML.
63
Các nguyên tắc cơ bản
65
Các pha và công đoạn
của RUP
66
Các pha và công đoạn
của RUP
2. Nhận 7. Làm
định và nguyên
đặc tả mẫu giao
các ca diện
sử người
dụng 5. MHH dùng
1. tương tác 9.
10.
Nghiên trong các Thiết
4. Xác Cài
cứu sơ ca sử kế chi
định đặt
bộ dụng tiết
lớp/đối
tượng
3. MHH tham gia 8.
lĩnh vực các ca Thiết
ứng sử dụng 6. kế HT
dụng MHH
sự ứng
xử
69
Tiến trình 10 bước
dựa trên RUP
• Nghiên cứu sơ bộ
– Đưa ra cái nhìn khái quát về HT và dự án.
– Đưa ra kết luận nên/không nên triển khai dự án.
• Nhận định và đặc tả các ca sử dụng
– Nắm bắt nhu cầu của người dùng, phát hiện các ca sử dụng
– Mỗi ca sử dụng phải được đặc tả dưới dạng kịch bản
và/hoặc một biểu đồ trình tự
• MHH lĩnh vực ứng dụng
– Đưa ra 1 MH (biểu đồ lớp) phản ánh mọi khái niệm, nghiệp
vụ.
– Các lớp ở đây là các lớp lĩnh vực.
70
Tiến trình 10 bước
dựa trên RUP
71
Tiến trình 10 bước
dựa trên RUP
72
Tiến trình 10 bước
dựa trên RUP
73
Tổng kết các mô hình
74
Câu hỏi 1
75
Câu hỏi 2
76
Câu hỏi 3
77
Câu hỏi 4
• Lựa chọn nào sau đây là giải thích phù hợp nhất với
mô hình thác nước “WaterFall Model”?
a) Mỗi ứng dụng sẽ được chia thành các phần nhỏ (sub-
unit), sau đó, mỗi đơn vị sẽ được thiết kế và lập trình một
cách tuần tự, cái nọ sau cái kia.
b) Việc phát triển hệ thống sẽ được làm theo thứ tự tiến
trình, không kết quả của công việc nào được gửi ngược
lên tiến trình ở mức cao hơn.
c) Một hệ thống thực nghiệm đang khai thác được khởi tạo
và việc kiểm tra đặc tả, đánh giá yêu cầu người dùng đã
được làm ở giai đoạn trước.
d) Thời gian phát triển được rút ngắn lại bởi sự tham gia của
người dùng, bởi các nhà phát triển, bởi một số các kỹ sư
và bởi việc áp dụng có hiệu quả các công cụ.
78
Câu hỏi 5
79
Câu hỏi 6
80
Tài liệu tham khảo
81