1. CHƯƠNG 1. TỔNG
QUAN VỀ CÔNG NGHỆ
PHẦN MỀM
Bộ môn Công nghệ thông tin
Trường Đại học Thương mại
1
2. Nội dung
1.1. Phần mềm
1.1.1. Khái niệm
1.1.2. Tiến hóa của phần mềm
1.1.3. Đặc trưng và phân loại phần mềm
1.1.4. Chất lượng phần mềm
1.1.5. Khủng hoảng phần mềm
1.1.6. Khó khăn trong phát triển phần mềm
1.2. Công nghệ phần mềm
1.2.1. Khái niệm
1.2.2. Đặc điểm công nghệ phần mềm
1.2.3. Một số nguyên tắc CNPM
1.2.4. Các hoạt động chính trong CNPM
2
3. 1.1.1. Khái niệm phần mềm
Khái niệm phần mềm
– Một phần mềm gồm 3 thành phần:
Chương trình máy tính: mã nguồn, mã máy
Cấu trúc dữ liệu: cấu trúc làm việc (bộ nhớ trong) và cấu
trúc lưu trữ (bộ nhớ ngoài)
Các tài liệu liên quan: tài liệu hướng dẫn sử dụng (dành
cho người dùng), tài liệu phát triển (dành cho người
phát triển hệ thống), tài liệu tham khảo kỹ thuật (dành
cho người bảo trì)
– Phần mềm được coi là tất cả các kỹ thuật ứng
dụng để thực hiện những dịch vụ chức năng cho
mục đích nào đó bằng phần cứng, làm cho sử
dụng phần cứng máy tính đạt hiệu quả cao.
3
5. Nhóm kỹ thuật, phương pháp luận
Các khái niệm và trình tự cụ thể hóa một hệ
thống
Các phương pháp tiếp cận giải quyết vấn đề
Các trình tự thiết kế và phát triển được
chuẩn hóa
Các phương pháp đặc tả yêu cầu, thiết kế hệ
thống, thiết kế chương trình, kiểm thử, toàn
bộ quy trình quản lý phát triển phần mềm
5
6. Nhóm chương trình
Là phần giao diện với phần cứng, tạo thành từ các
nhóm lệnh chỉ thị cho máy tính biết trình tự thao tác
xử lý dữ liệu
Phần mềm cơ bản: với chức năng cung cấp môi
trường thao tác dễ dàng cho người sử dụng nhằm
tăng hiệu năng xử lý của phần cứng (ví dụ như OS
là chương trình hệ thống)
Phần mềm ứng dụng: dùng để xử lý nghiệp vụ thích
hợp nào đó (quản lý, kế toán, . . .), phần mềm đóng
gói, phần mềm của người dùng, . . .
6
7. Nhóm các tư liệu
Những tư liệu hữu ích, có giá trị cao và rất
cần thiết để phát triển, vận hành và bảo trì
phần mềm
Để xây dựng phần mềm với độ tin cậy cao
cần tạo ra các tư liệu chất lượng cao: đặc tả
yêu cầu, mô tả thiết kế từng loại, điều kiện
kiểm thử, thủ tục vận hành, hướng dẫn thao
tác, …
7
8. 1.1.2. Tiến hoá của phần mềm
Bản thân phần mềm vốn phức tạp.
Yêu cầu sử dụng phần mềm không ngừng
thay đổi
Sự tiến bộ nhanh của hạ tầng – phần cứng
=> Sự tiến hóa phần mềm là tất yếu
8
9. 1.1.2. Tiến hoá của phần mềm (2)
Giai đoạn thứ nhất: (~1960)
Phần cứng thay đổi liên tục, theo tính chuyên dụng
Xử lý theo lô
Môi trường lập trình có tính cá nhân
Sản xuất đơn chiếc
Ngôn ngữ: mã máy, đặc thù cho từng máy
Lập trình: là một nghệ thuật theo bản năng,
chưa có phương pháp
9
10. 1.1.2. Tiến hoá của phần mềm(3)
Giai đoạn 2: (~giữa thập kỷ 70)
Phần mềm đa nhiệm, đa người sử dụng
Hệ thống thời gian thực
Xuất hiện lưu trữ trực tuyến
Nhiều dự án
Phần mềm trở nên phức tạp thất bại
Nhu cầu tăng cao Chi phí tăng
Ngôn ngữ: có cấu trúc: PL1, Algo60, Fortran, COBOL
Lập trình: có phương pháp lập trình
Phát triển HT: chưa có phương pháp, kinh nghiệm là chính
10
11. 1.1.2. Tiến hoá của phần mềm(4)
Giai đoạn 3: (~đến nay)
Hệ thống phân tán
Mạng cục bộ, toàn cầu
Bộ vi xử lý phát triển mạnh
Phần mềm ngày càng phức tạp
Sử dụng nhiều máy tính cá nhân, phần mềm nhúng
Số người dùng tăng nhanh
Ngôn ngữ: Ngôn ngữ bậc cao, hướng đối tượng
Phát triển HT: có phương pháp, công cụ tự động
11
12. 1.1.2. Tiến hoá của phần mềm(5)
Phần mềm ngày càng phức tạp
UNIX: 4M dòng lệnh
Window2K: ~100M dòng lệnh
Lý do:
– Năng lực máy tính ngày càng mạnh
– Các hệ thống máy tính được liên kết lại
– Nhu cầu của người dùng ngày càng lớn.
12
13. 1.1.2. Tiến hoá của phần mềm(6)
Chi phí cho phần mềm cao
Phần mềm trở thành ngành công nghiệp
khổng lồ:
– Chi phí phát triển OS360 (63~66): 200M$
– Chi phí phần mềm năm 1985: 70B$
– Chi phí phần mềm năm 2000: 770B$
(mức tăng 12%/năm)
Năng suất lập trình vẫn thấp
– Phát triển phần mềm mang nặng tính thủ công
13
14. 1.1.3. Đặc điểm phần mềm
“Phát triển phần mềm khác chế tạo phần cứng”
Sản xuất mang tính thủ công.
Khó kiểm soát chất lượng ở khâu trung gian.
Khó dự đoán trước về hiệu năng.
– Áp dụng các phương pháp tiên tiến
– Công cụ tự đông
14
15. 1.1.3. Đặc điểm phần mềm(2)
Phần mềm thoái hóa theo thời gian.
– Môi trường sử dụng, nhu cầu thay đổi
– Lỗi sinh ra do nâng cấp
Phần mềm không được lắp ráp theo mẫu
– Không có danh mục phụ tùng
– Được đặt hàng hoàn chỉnh theo từng yêu cầu riêng
“Bảo trì phần mềm phức tạp hơn hẳn so với
bảo trì phần cứng”
15
16. 1.1.3. Đặc điểm phần mềm(3)
Phần mềm được phát triển theo nhóm
– Năng lực của nhóm không tuyến tính với số thành
viên
– Người giỏi > 5 lần người trung bình
– Thời gian cho trao đổi thông tin chiếm tỷ lệ cao
– Khó kiểm soát
– Khó tăng tốc độ bằng cách thêm người.
16
17. 1.1.3. Đặc điểm phần mềm(4)
Phần mềm không đơn giản chỉ là chương trình
Chương trình
– 1 người viết, 1 người dùng
– dùng với mục đích thu thập xử lý số liệu (dùng 1 lần)
– không cần tài liệu, không kiểm thử triệt để
Sản phầm phần mềm
– Nhiều người viết, nhiều người sử dụng
– Độ phức tạp cao, đảm bảo đồng bộ.
Kinh nghiệm viết chương trình nhỏ không áp dụng được cho sản
phẩm lớn
17
18. 1.1.3. Đặc điểm phần mềm(5)
Là hàng hóa vô hình, không nhìn thấy được
Chất lượng phần mềm: không mòn đi mà có
xu hướng tốt lên sau mỗi lần có lỗi
(error/bug) được phát hiện và sửa
Phần mềm vốn chứa lỗi tiềm tàng, nếu quy
mô càng lớn thì khả năng chứa lỗi càng cao
Lỗi phần mềm dễ được phát hiện bởi người
ngoài (những người không trực tiếp tham gia
xây dựng phần mềm).
18
19. 1.1.3. Đặc điểm phần mềm(6)
Chức năng của phần mềm thường biến hóa,
thay đổi theo thời gian (theo nơi sử dụng).
Phần mềm luôn chứa những ý tưởng, sáng
tạo của tác giả / nhóm tác giả làm ra nó.
Có thể sao chép phần mềm rất đơn giản
19
20. 1.1.3. Phân loại phần mềm
Phần mềm hệ thống
– Tập hợp các chương trình
– Tương tác trực tiếp với phần cứng
– Phục vụ nhiều người dùng
Phần mềm thời gian thực
– Thu thập xử lý các dữ kiện thế giới thực
– Đáp ứng yêu cầu chặt chẽ về thời gian
Thu thập dữ liệu
Phân tích dữ liệu
Kiểm soát, điều khiển
Điều phối.
– Ví dụ: Phần mềm đa phương tiện.
20
21. 1.1.3. Phân loại phần mềm(2)
Phần mềm nghiệp vụ
– Xử lý các thông tin nghiệp vụ, thường gắn với CSDL
– Xử lý các giao tác
– Lĩnh vực ứng dụng rất lớn
Phần mềm khoa học kỹ thuật
– Đặc trưng bởi thuật toán (tính toán vật lý, mô phỏng)
– Đòi hỏi năng lực tính toán cao.
Phần mềm nhúng (embedded software)
– Chỉ đọc khi thiết bị khởi động
– Thực hiện chức năng hạn chế (điều khiển sản phẩm)
– Là sự kết hợp giữa hệ thống và thời gian thực.
21
22. 1.1.3. Phân loại phần mềm(3)
Phần mềm máy tính cá nhân
– Các bài toán nghiệp vụ nhỏ (ứng dụng văn
phòng)
– Giao diện đồ họa phát triển.
– Có nhu cầu rất cao.
Phần mềm trí tuệ nhân tạo
– Dùng các thuật toán phi số
– Ví dụ: Hệ chuyên gia, nhận dạng, trò chơi,...
Phần mềm công cụ cho kỹ nghệ phần mềm
– Ví dụ: các công cụ CASE,...
22
23. 1.1.4. Chất lượng phần mềm
Những yếu tố chất lượng bên trong như dễ
đọc, dễ hiểu mà chỉ những người làm tin học
chuyên nghiệp mới biết được.
Những yếu tố chất lượng bên ngoài người
dùng có thể nhận biết được như: tốc độ
nhanh, chạy ổn định, dễ sử dụng, dễ thích
nghi với những thay đổi..
=> Thông thường chất lượng phần mềm tốt
thì giá thành phần mềm cao
23
24. 1.1.4. Chất lượng phần mềm(2)
Những yếu tố chính trong 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
– 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.
24
25. 1.1.4. Chất lượng phần mềm(3)
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ả.
25
26. 1.1.4. Chất lượng phần mềm(4)
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ển
Hiểu rõ ảnh hưởng của các quyết định
– Đối với khách hàng
Hiểu rõ tiến độ phát triển
Hiểu rõ ảnh hưởng của các quyết định
26
27. 1.1.4. Chất lượng phần mềm(5)
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ả
27
28. 1.1.4. Chất lượng phần mềm(6)
Tính bảo trì được
“Phần mềm luôn luôn cần được sửa đổi”
Để sửa đổi được phần mềm
Thiết kế dễ hiểu, dễ sửa đổi (thiết kế tốt)
Cài đặt bằng ngôn ngữ bậc cao
Có đầy đủ tài liệu
– Có tuổi thọ cao
– Đem lại hiệu quả kinh tế
28
29. 1.1.4. Chất lượng phần mềm(7)
Tính tin cậy
Phần mềm không có khiếm khuyết
lỗi lập trình
lỗi phân tích, thiết kế: sai, thiếu chức năng,
hoạt động không hiệu quả.
Phần mềm phải đáng tin cậy
Đáp ứng được nhu cầu người sử dụng
29
30. 1.1.4. Chất lượng phần mềm(8)
Tính hiệu quả
Khi vận hành không lãng phí tài nguyên phần
cứng
Bộ nhớ trong
Tốc độ
Bộ nhớ ngoài
Tối ưu nhiều sẽ dẫn tới khó bảo trì,
giá thành cao
– Dùng ngôn ngữ bậc thấp
– Truy cập trực tiếp đến thiết bị
30
31. 1.1.4. Chất lượng phần mềm(9)
Tính dễ dùng
Giao diện nhất quán, phù hợp với trình độ
của người dùng.
Có tài liệu, tiện ích trợ giúp
Quyết định thành công của sản phẩm
31
32. 1.1.4. Chất lượng phần mềm(10)
Nhận xét
Khó tối ưu đồng thời các thuộc tính
hiệu quả >< dễ bảo trì, dễ sử dụng
Chi phí cho tối ưu là không tuyến tính
giá thành
hiệu năng
=> Giá cả chi cho việc tối ưu PM phải hợp lý
32
33. 1.1.5. Khủng hoảng phần mềm
o Về mặt sản phẩm
o Chất lượng sản phẩm phần mềm
oKhông đáp ứng yêu cầu thực tế
o Khó sử dụng
o Không tin cậy
o Khó bảo trì
o Khách hàng không hài lòng
33
34. 1.1.5. Khủng hoảng phần mềm(2)
Về mặt quản lý
– Kế hoạch
Không đánh giá đúng giá thành PM
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ạo sử dụng phần mềm
Giao tiếp giữa bên xây dựng PM và bên sử dụng PM
– Thiếu tiêu chuẩn đánh giá sản phẩm
– Thiếu quy trình quản lý
34
35. 1.1.5. Khủng hoảng phần mềm(3)
Điều tra của General Acounting Office trên
nhiều dự án với tổng vốn đầu tư hàng trăm
triệu $ thì phần mềm:
– Không giao sản phẩm: 29%
– Không được sử dụng: 47%
– Được sử dụng sau khi đã chỉnh sửa: 3%
– Tốt: 2%
35
36. 1.1.6. Khó khăn trong phát triển PM
“Khó sản xuất được phần mềm có chất lượng
theo đúng lịch trình và kinh phí cho trước”
Phần mềm là phần tử logic: không kiểm soát
được theo phương pháp thông thường
trong sản xuất (rủi ro, tính thủ công)
trong bảo trì (lớn, phức tạp, thay đổi nhanh)
trong kiểm soát chất lượng ( làm thủ công,
nhiều người,
nhiều công đoạn )
36
37. 1.1.6. Khó khăn trong phát triển PM(2)
Khả năng xây dựng phần mềm không đáp ứng kịp
nhu cầu tăng nhanh trong mọi lĩnh vực xã hội.
Quy mô, độ phức tạp PM ngày càng tăng khiến chi
phí phát triển bảo trì ngày càng tốn kém
Sự tinh vi của phần cứng vượt xa khả năng tạo ra
phần mềm để khai thác nó.
Cần có những phương pháp, công cụ hiện đại
để phát triển phần mềm.
37
38. 1.1.6. Khó khăn trong phát triển PM(3)
(1) Không có phương pháp mô tả rõ ràng
định nghĩa yêu cầu của người dùng (khách
hàng), sau khi bàn giao sản phẩm dễ phát
sinh những trục trặc (troubles)
(2) Với những phần mềm quy mô lớn, tư liệu
đặc tả đã cố định thời gian dài, do vậy khó
đáp ứng nhu cầu thay đổi của người dùng
một cách kịp thời trong thời gian đó.
38
39. 1.1.6. Khó khăn trong phát triển PM(4)
(3) Nếu không có Phương pháp luận thiết kế
nhất quán mà thiết kế theo cách riêng (của
công ty, nhóm), thì sẽ dẫn đến suy giảm chất
lượng phần mềm (do phụ thuộc quá nhiều
vào con người).
(4) Nếu không có chuẩn về làm tư liệu quy
trình sản xuất phần mềm, thì những đặc tả
không rõ ràng sẽ làm giảm chất lượng phần
mềm.
39
40. 1.1.6. Khó khăn trong phát triển PM(4)
(5) Nếu không kiểm thử tính đúng đắn của
phần mềm ở từng giai đoạn mà chỉ kiểm thử
ở giai đoạn cuối và phát hiện ra lỗi, thì
thường bàn giao sản phẩm không đúng hạn.
(6) Nếu coi trọng việc lập trình hơn khâu thiết
kế thì thường dẫn đến làm giảm chất lượng
phần mềm.
(7) Nếu coi thường việc tái sử dụng phần
mềm (software reuse), thì năng suất lao
động sẽ giảm.
40
41. 1.1.6. Khó khăn trong phát triển PM(5)
(8) Trong quy trình phát triển phần mềm có
nhiều thao tác do con người thực hiện, do
vậy năng suất lao động thường bị giảm.
(9) Khi không chứng minh được tính đúng
đắn của phần mềm đang xây dựng thì độ tin
cậy của phần mềm sẽ giảm.
(10) Chuẩn về một phần mềm tốt không thể
đo được một cách định lượng, do vậy khó có
thể đánh giá được một hệ thống đúng đắn
hay không.
41
42. 1.1.6. Khó khăn trong phát triển PM(6)
(11) Khi đầu tư nhân lực lớn vào bảo trì sẽ
làm giảm hiệu suất lao động của nhân viên.
(12) Công việc bảo trì kéo dài làm giảm chất
lượng của các tài liệu liên quan và ảnh
hưởng xấu đến những việc khác.
(13) Quản lý dự án lỏng lẻo kéo theo quản
lý lịch trình cũng không rõ ràng
42
43. 1.1.6. Khó khăn trong phát triển PM(7)
(14) Nếu không có tiêu chuẩn để ước lượng
nhân lực và dự toán sẽ làm kéo dài thời hạn
và vượt kinh phí của dự án.
=> Đây là những vấn đề phản ánh các khía
cạnh khủng hoảng và khó khăn trong phát
triển phần mềm, hãy tìm N cách nỗ lực vượt
qua để tạo ra phần mềm tốt!
43
44. 1.2. Công nghệ phần mềm
1.2.1. Khái niệm
1.2.2. Đặc điểm công nghệ phần mềm
1.2.3. Một số nguyên tắc CNPM
1.2.4. Các hoạt động chính trong CNPM
44
45. 1.2.1. Khái niệm Công nghệ phần mềm
Khái niệm
– Larousse (1996): Công nghệ phần mềm là
tập hợp các phương pháp, mô hình, kỹ
thuật, công cụ và thủ tục liên quan đến các
giai đoạn xây dựng một sản phẩm phần
mềm.
– Các giai đoạn đó là:
đặc tả (specifiction),
thiết kế(design),
lập trình(programming),
thử nghiệm(testing),
sửa sai(debugging),
cài đặt(setup) để đem vào ứng dụng (application),
bảo trì(maintenance) và lập hồ sơ(documentation).
45
46. 1.2.1. Khái niệm Công nghệ phần mềm
Khái niệm
– Bauer [1969]: CNPM là việc thiết lập và sử dụng
các nguyên tắc công nghệ học đúng đắn dùng để
thu được phần mềm một cách kinh tế vừa tin cậy
vừa làm việc hiệu quả trên các máy thực.
– IEEE [1993]: CNPM là việc áp dụng phương pháp
tiếp cận có hệ thống, bài bản và được lượng hóa
trong phát triển, vận hành và bảo trì phần mềm và
việc nghiên cứu các phương pháp tiếp cận nó.
46
47. 1.2.1. Mục đích
Mục đích chính của công nghệ phần mềm là để
sản xuất ra những phần mềm có chất lượng.
Phần mềm có chất lượng là PM thỏa mãn:
– Những yếu tố bên ngoài của một sản phẩm như:
tính đúng đắn, tính bền vững, tính có thể mở rộng
được, tính sử dụng lại, tính tương thích…;
– Những yếu tố chất lượng bên trong như: tính dễ
đọc, dễ hiểu, sản phẩm trực quan, sinh động…
47
48. 1.2.1. 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
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
48
49. 1.2.2. Đặc điểm CNPM
CNPM là một lĩnh vực của khoa học máy
tính, liên quan đến việc xây dựng các hệ
thống phần mềm vừa lớn vừa phức tạp bởi
một hay một nhóm kỹ sư.
CNPM tích hợp cả quy trình, các phương
pháp, các công cụ để phát triển phần mềm
máy tính.
CNPM liên quan đến lý thuyết, phương pháp
và công cụ dùng cho phát triển phần mềm.
49
50. 1.2.2. Đặc điểm CNPM(2)
Các kỹ thuật về thiết kế, chế tạo, kiểm thử và
bảo trì phần mềm đã được hệ thống hóa hóa
thành phương pháp luận và hình thành nên
CNPM.
Trong vòng đời phần mềm không chỉ có xây
dựng mà bao gồm cả thiết kế, vận hành và bảo
trì (tính quan trọng của thiết kế và bảo trì).
Nghiên cứu Công nghệ phần mềm nhằm nâng
cao năng suất và độ tin cậy của phần mềm,
đồng thời giảm chi phí giá thành phần mềm.
50
51. 1.2.3. Một số nguyên tắc CNPM
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)
51
52. 1.2.3. Một số nguyên tắc CNPM(2)
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ị lớn nhất của x và y”
Z = max(x,y)
52
53. 1.2.3. Một số nguyên tắc CNPM(3)
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
– Sử dụng thuật toá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
53
54. 1.2.3. Một số nguyên tắc CNPM(4)
Mô-đun hóa (modularity)
– Chia nhỏ độ phức tạp nhằm
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-dow)
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ấu cao (high cohesion)
54
55. 1.2.3. Một số nguyên tắc CNPM(5)
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
55
56. 1.2.3. Một số nguyên tắc CNPM(6)
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, các ảnh
hưởng có thể
– Các thay đổi thường gặp
Trong đặc tả yêu cầu
Trong ngữ cảnh sử dụng
Khả năng về công nghệ
56
57. 1.2.3. Một số nguyên tắc CNPM(7)
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ẵn như sử dụng design
patterns
Chi phí có thể tăng cao
57
58. 1.2.3. Một số nguyên tắc CNPM(8)
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ển
Đánh giá
Bắt đầu lại
– Áp dụng cho
Phát triển một sản phẩm
– Một đặc tả / một kiến trúc
Mô hình phát triển
– Mô hình lặp
58
59. 1.2.4. Các hoạt động chính trong CNPM
1. Xác định
2. Phát triển
3. Kiểm thử
4. Tiến hoá
59
60. 1.2.4. Các hoạt động chính trong CNPM
Xác định: Hệ thống làm gi?
Những ràng buộc gì nó cần tuân thủ?
Phân tích hệ thống
Vai trò của phần mềm cần phát triển trong hệ thống
Lập kế hoạch
Ước lượng công việc, lập lịch biểu, phân công công việc
Phân tích yêu cầu
Xác định yêu cầu chi tiết (chức năng, ràng buộc) đặc tả yêu cầu
60
61. Các hoạt động chính trong CNPM
Phát triển: Tiến hành sản xuất phần mềm như thế nào?
Thiết kế (design)
Dịch các yêu cầu thành bản thiết kế (kiến trúc, dữ liệu, thủ tục
xử lý, giao diện)
Mã hóa (coding)
Chuyển thiết kế thành chương trình máy tính (trong một ngôn ngữ
lập trình)
61
62. Các hoạt động chính trong CNPM
Kiểm thử: Phát hiện và sửa lỗi chương trình (lỗi lập
trình, lỗi thiết kế...
Unit test Black test
Integration test Gray test
System test White test
62
63. Các hoạt động chính trong CNPM
Tiến hoá: Hoàn thiện hệ thống sau khi đưa vào hoạt động?
Sửa lỗi
Sửa lỗi phần mềm
Thích nghi
Sửa đổi để thích nghi với môi trường thay đổi
Nâng cao
Thêm các chức năng mới, hoàn thiện chức năng cũ
63
65. Kết luận
Phần mềm có tầm quan trọng đặc biệt: tạo nên sự
khác biệt của tổ chức, của hệ thống
Phát triển phần mềm là công việc phức tạp, rủi ro:
– Không được định hình trước, khó dự đoán hiệu năng khi
chưa có sản phẩm
– phụ thuộc vào con người
– bị ảnh hưởng lớn từ môi trường => nhiều rủi ro
Cần áp dụng các phương pháp tiên tiến trong việc
xây dựng phần mềm.
65
66. Câu hỏi ôn tập
1. Nêu tầm quan trọng của phần mềm ?
(mức độ: quốc gia, tổ chức, hệ thống, ứng
dụng)
2. Kể các loại hệ thống phần mềm ứng
dụng?
Giải thích nội dung ?
3. Định nghĩa phần mềm ?
4. Sản phầm phần mềm gồm mấy loại?
Sự khác nhau giữa chúng?
66
67. Câu hỏi ôn tập(2)
5. Các đặc trưng của phần mềm?
6. Các thuộc tính của phần mềm kỹ nghệ tốt?
7. Khó khăn phát triển phần mềm thể hiện ở
những mặt nào (bản chất, sự thay đổi: quy
mô, môi trường)
8. Thách thức đối với phát triển phần mềm?
(nhu cầu, bảo trì, thời gian, giá cả, khả năng
phần cứng)
67