(NB) Bài giảng Công nghệ phần mềm: Phần 1 cung cấp những thông tin như tổng quan về phần mềm và các lớp phần mềm, kiến trúc các thành phần của phần mềm, công nghệ phần mềm, vòng đời phát triển phần mềm, xác định yêu cầu, phân tích và đặc tả yêu cầu.
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
PHẠM THỊ MINH THƯƠNG
BÀI GIẢNG CÔNG NGHỆ PHẦN MỀM Dành cho sinh viên bậc Đại học chuyên ngành Công nghệ thông tin
Quảng Ngãi, tháng 12 năm 2018
Trang 2TRƯỜNG ĐẠI HỌC PHẠM VĂN ĐỒNG KHOA CÔNG NGHỆ THÔNG TIN
PHẠM THỊ MINH THƯƠNG
BÀI GIẢNG CÔNG NGHỆ PHẦN MỀM Dành cho sinh viên bậc Đại học chuyên ngành Công nghệ thông tin
TÀI LIỆU LƯU HÀNH NỘI
Trang 3BỘ MỤC LỤC
LỜI NÓI ĐẦU 1
Chương 1 MỞ ĐẦU 2
1.1 PHẦN MỀM VÀ CÁC LỚP PHẦN MỀM 2
1.1.1 Phần mềm 2
1.1.2 Đặc trưng của phần mềm 3
1.1.3 Các lớp phần mềm 4
1.1.4 Phân loại phần mềm 4
1.2 KIẾN TRÚC CÁC THÀNH PHẦN CỦA PHẦN MỀM 6
1.2.1 Thành phần giao tiếp (giao diện) 6
1.2.2 Thành phần dữ liệu 6
1.2.3 Thành phần xử lý 7
1.3 CÔNG NGHỆ PHẦN MỀM 8
1.3.1 Lịch sử ra đời 8
1.3.2 Định nghĩa và mục tiêu 9
1.3.3 Chất lượng phần mềm 10
1.3.4 Các đối tượng nghiên cứu 12
1.4 VÒNG ĐỜI PHÁT TRIỂN PHẦN MỀM 12
1.4.1 Giai đoạn xác định 12
1.4.2 Giai đoạn phát triển 13
1.4.3 Giai đoạn bảo trì 13
1.5 QUY TRÌNH CÔNG NGHỆ PHẦN MỀM 14
1.5.1 Quy trình 2 giai đoạn 14
1.5.2 Quy trình 3 giai đoạn 15
1.5.3 Quy trình 4 giai đoạn 16
1.5.4 Quy trình 5 giai đoạn 17
1.5.5 Quy trình 6 giai đoạn 18
1.6 MÔ HÌNH TIẾN TRÌNH PHẦN MỀM 19
1.6.1 Mô hình thác nước – Waterfall model 20
1.6.2 Mô hình mẫu thử – Prototyping model 21
1.6.3 Mô hình xoắn ốc – Sprial model 22
1.6.4 Mô hình tăng trưởng 24
1.6.5 Mô hình chữ V 25
1.6.6 Các công nghệ thế hệ thứ 4 (Fourth Generation Techniques – 4GT) 26
Trang 41.7 PHƯƠNG PHÁP, CÔNG CỤ PHÁT TRIỂN PHẦN MỀM 27
1.7.1 Phương pháp xây dựng phần mềm 27
1.7.2 Công cụ và môi trường phát triển phần mềm 30
1.8 CÂU HỎI TRẮC NGHIỆM, BÀI TẬP THẢO LUẬN 31
Chương 2 XÁC ĐỊNH YÊU CẦU, PHÂN TÍCH VÀ ĐẶC TẢ YÊU CẦU 32
2.1 MÔ TẢ YÊU CẦU 32
2.1.1 Tên công việc 32
2.1.2 Người thực hiện 33
2.1.3 Thời gian, địa điểm 33
2.1.4 Cách thức tiến hành và các quy định liên quan 33
2.2 PHÂN LOẠI YÊU CẦU 34
2.2.1 Yêu cầu chức năng 34
2.2.2 Yêu cầu phi chức năng 36
2.3 CÁC BƯỚC XÁC ĐỊNH YÊU CẦU 37
2.3.1 Khảo sát hiện trạng 37
2.3.2 Lập danh sách các yêu cầu 39
2.4 PHÂN TÍCH VÀ ĐẶC TẢ YÊU CẦU 41
2.4.1 Đại cương 41
2.4.2 Nghiên cứu khả thi 42
2.4.3 Các nguyên lý phân tích 43
2.4.4 Phân tích có cấu trúc 44
2.4.5 Phân tích hướng đối tượng 46
2.4.6 Đặc tả yêu cầu phần mềm 48
2.5 MÔ HÌNH HÓA YÊU CẦU 51
2.5.1 Mô hình luồng dữ liệu 52
2.5.2 Các bước lập sơ đồ luồng dữ liệu 52
2.6 LÀM BẢN MẪU TRONG QUÁ TRÌNH PHÂN TÍCH 54
2.6.1 Các bước làm bản mẫu 54
2.6.2 Lợi ích và hạn chế của phát triển bản mẫu 55
2.7 CÂU HỎI TRẮC NGHIỆM, BÀI TẬP THẢO LUẬN 56
Chương 3 THIẾT KẾ PHẦN MỀM 58
3.1 TỔNG QUAN 58
3.1.1 Khái niệm thiết kế phần mềm 58
3.1.2 Tầm quan trọng 59
3.1.3 Kết quả thiết kế phần mềm 60
Trang 53.1.4 Phương pháp thiết kế phần mềm 62
3.1.5 Thiết kế phần mềm và các yêu cầu chất lượng 63
3.1.6 Chất lượng thiết kế 65
3.2 THIẾT KẾ DỮ LIỆU 69
3.2.1 Tổng quan 69
3.2.2 Kết quả của thiết kế dữ liệu 69
3.2.3 Quá trình thiết kế 70
3.2.4 Thiết kế dữ liệu và yêu cầu về chất lượng 70
3.3 THIẾT KẾ GIAO DIỆN 75
3.3.1 Tổng quan 75
3.3.2 Kết quả thiết kế 76
3.3.3 Phân loại màn hình giao diện 77
3.3.4 Quá trình thiết kế 77
3.3.5 Nguyên tắc thiết kế giao diện người dùng của Jakob Nielsen 77
3.4 THIẾT KẾ HƯỚNG CHỨC NĂNG 80
3.5 THIẾT KẾ HƯỚNG ĐỐI TƯỢNG 80
3.5.1 Cách tiếp cận 80
3.5.2 Các đặc trưng 81
3.5.3 Cơ sở của thiết kế hướng đối tượng 81
3.5.4 Các bước thiết kế 82
3.5.5 Ưu, nhược điểm của thiết kế hướng đối tượng 83
3.6 CÂU HỎI TRẮC NGHIỆM, BÀI TẬP THẢO LUẬN 83
Chương 4 CÀI ĐẶT, KIỂM THỬ VÀ BẢO TRÌ PHẦN MỀM 84
4.1 CÁC NGÔN NGỮ LẬP TRÌNH 84
4.1.1 Các đặc trưng 84
4.1.2 Lựa chọn ngôn ngữ lập trình 86
4.1.3 Phong cách lập trình 86
4.2 KIỂM THỬ PHẦN MỀM 88
4.2.1 Khái niệm kiểm thử 88
4.2.2 Mục tiêu và giới hạn 90
4.2.3 Các loại kiểm thử 90
4.2.4 Các mức độ kiểm thử 97
4.2.5 Những lỗi phần mềm 102
4.2.6 Nguyên tắc kiểm thử 104
4.2.7 Thiết kế test case 105
Trang 64.2.8 Lập kế hoạch và tài liệu kiểm thử 108
4.3 BẢO TRÌ PHẦN MỀM 108
4.3.1 Hoạt động bảo trì phần mềm và phân loại 108
4.3.2 Đặc điểm của bảo trì phần mềm 110
4.4 CÂU HỎI TRẮC NGHIỆM, BÀI TẬP THẢO LUẬN 112
TÀI LIỆU THAM KHẢO 114
Trang 71
LỜI NÓI ĐẦU
Ngày nay, Công nghệ phần mềm đã đi tới một kỷ nguyên mới, là lĩnh vực nghề nghiệp “có sức đề kháng” cao với tình trạng suy thoái của nền kinh tế Điều đó cho thấy tiềm năng của ngành công nghệ phần mềm trong lĩnh vực công nghệ thông tin nói riêng
và thị trường nhân sự nói chung
Bài giảng Công nghệ phần mềm được biên soạn theo nội dung phân phối chương trình do Trường Đại học Phạm Văn Đồng xây dựng Nội dung của bài giảng Công nghệ phần mềm bao gồm 4 chương với thời lượng 30 tiết, sẽ cung cấp cho sinh viên những kiến thức cơ bản về phát triển một phần mềm, từ khi phần mềm được đặt hàng sản xuất cho đến khi phần mềm được đưa vào sử dụng Quá trình này trải qua các giai đoạn: xác định yêu cầu, phân tích đặc tả yêu cầu, thiết kế, cài đặt, kiểm thử, bảo trì; tương ứng với mỗi giai đoạn sẽ có những phương pháp và công cụ hỗ trợ đi theo
Mặc dù bản thân có cố gắng biên soạn nhưng bài giảng chắc không tránh khỏi những thiếu sót, rất mong nhận được nhiều ý kiến đóng góp của bạn đọc, đồng nghiệp
và sinh viên
Bài giảng có sử dụng tư liệu của các đồng nghiệp
Trang 82
Chương 1 MỞ ĐẦU
Thời lượng: 07 tiết lý thuyết
Kết thúc chương này, sinh viên có thể:
- Biết được kiến trúc và các lớp phần mềm
- Hiểu được tại sao phải ra đời Công nghệ phần mềm
- Biết được các mô hình phát triển phần mềm
- Biết được các phương pháp, công cụ phát triển phần mềm
1.1 PHẦN MỀM VÀ CÁC LỚP PHẦN MỀM
1.1.1 Phần mềm
Chương trình máy tính là một trình tự các chỉ thị để hướng dẫn máy tính làm việc nhằm hoàn thành một công việc nào đó do con người yêu cầu
Phần mềm là một hệ thống các chương trình có thể thực hiện trên máy tính nhằm
hỗ trợ các nhà chuyên môn trong từng lĩnh vực chuyên ngành thực hiện tốt nhất các thao tác nghiệp vụ của mình Trong đó,
- Lĩnh vực chuyên ngành: Các lĩnh vực trong mọi mặt của đời sống, xã hội: Giáo dục, Y tế, Kinh doanh,…
- Nhà chuyên môn: Người hoặc bộ phận tham gia vào các hoạt động trong lĩnh vực tương ứng
- Thao tác nghiệp vụ: Các công việc của các nhà chuyên môn trong thế giới thực của lĩnh vực tương ứng
Nhiệm vụ chính của phần mềm là cho phép các nhà chuyên môn thực hiện các công việc của họ trên máy tính dễ dàng và nhanh chóng hơn so với khi thực hiện cùng công việc đó trong thế giới thực
Hoạt động của mọi phần mềm là sự mô phỏng lại các hoạt động của thế giới thực trong một góc độ thu hẹp nào đó trên máy tính Quá trình sử dụng một phần mềm chính
là quá trình người dùng thực hiện các công việc trên máy tính để hoàn tất một công việc tương đương trong thế giới thực Quá trình này gồm 3 bước:
- Bước 1: Chọn công việc muốn thực hiện, chẳng hạn Thuê băng đĩa Trả băng đĩa…
- Bước 2: Cung cấp các dữ liệu liên quan đến công việc cần thực hiện
Trang 9a Phần mềm không được chế tạo theo nghĩa cổ điển
Phần mềm cũng được thiết kế, phát triển như phần cứng, nhưng nó không định hình trước Chỉ khi phát triển xong người ta có sản phẩm cụ thể mới hiểu được nó có hiệu quả hay không
Giá thành của phần cứng chủ yếu bị chi phối bởi giá thành nguyên vật liệu và chúng ta tương đối dễ kiểm soát Trong khi đó, giá thành phần mềm chủ yếu tập trung vào chi phí nhân công Quá trình phát triển phần mềm phụ thuộc vào con người (hiểu biết, khả năng vận dụng, kinh nghiệm và cách thức quản lý) và được tiến hành phát triển trong điều kiện môi trường (kỹ thuật, xã hội) đa dạng và không ngừng thay đổi Do đó, chúng ta rất khó ước lượng được chi phí cũng như hiệu quả của phần mềm
b Phần mềm không hỏng đi nhưng thoái hóa theo thời gian
Phần mềm không cảm ứng đối với những tác động của môi trường vốn gây cho phần cứng bị mòn cũ đi, nhưng nó cũng thoái hóa theo thời gian
Thực tế, phần mềm trải qua thời gian sử dụng thì cần phải được thay đổi (bảo trì)
đề đáp ứng nhu cầu luôn thay đổi của tổ chức sử dụng nó Mỗi khi thay đổi, phần mềm
sẽ xuất hiện thêm một số khiếm khuyết mới không thể tránh, điều này làm cho số lỗi tiềm ẩn trong phần mềm tăng lên Dần dần, phần mềm bị thoái hóa do tỷ lệ sai hỏng ngày cảng tăng lên đến mức gây nên những thiệt hại không thể chấp nhận được
Việc bảo trì phần mềm phức tạp hơn nhiều và có bản chất khác hẳn so với bảo trì phần cứng do sự phức tạp của hệ thống phần mềm và sự không có sẵn phần thay thế cho
bộ phận bị lỗi Chúng ta không thay thế bộ phận bị lỗi bởi cái có sẵn mà thực thế phải tạo ra một module mới Do đó, thông thường chỉ có nhà sản xuất phần mềm mới bảo trì (sửa chữa) được hỏng hóc
Trang 104
c Phần lớn phần mềm được xây dựng từ đầu, ít khi được lắp ráp từ thành phần có sẵn
- Phần mềm không có danh mục các thành phần cố định như phần cứng
- Phần mềm thường được đặt hàng theo một đơn vị hoàn chỉnh, theo yêu cầu riêng của khách hàng
- Phần mềm ít khi có thể lắp ráp theo một khuôn mẫu có sẵn Yêu cầu với phần mềm thay đổi theo môi trường cụ thể mà ở đó nó được xây dựng Môi trường của phần mềm (gồm phần cứng, phần mềm nền, con người và tổ chức) không thể định dạng từ trước và lại thay đổi thường xuyên
1.1.3 Các lớp phần mềm
Lớp phần mềm là hệ thồng các phần mềm trên cùng lĩnh vực hoạt động nào đó
Do cùng lĩnh vực hoạt động nên các phần mềm này thường có cầu trúc và chức năng (công việc mà người dùng thực hiện trên máy tính) tương tự nhau Mục tiêu của ngành công nghệ phần mềm là hướng đến không những xây dựng được các phần mềm có chất lượng mà còn cho phép xây dựng dễ dàng một phần mềm mới từ các phần mềm đã có sẵn trong các lĩnh vực (thậm chí trong các lĩnh vực khác)
Bảng 1 1 Các phần mềm và lớp phần mềm tương ứng
1 Trò chơi Cờ ca rô, cờ tướng, tetris,…
2 Bán hàng Thuốc tây, vật liệu xây dựng, máy tính,…
3 Cho mượn Sách, truyện, phim,
4 Quản lý học sinh Mầm non, trung học, trung tâm,…
1.1.4 Phân loại phần mềm
Chúng ta có thể chia phần mềm theo miền ứng dụng thành 7 loại như sau:
a Phần mềm hệ thống
- Là một tập hợp các chương trình được viết để phục vụ cho các chương trình khác
- Xử lý các cấu trúc thông tin phức tạp nhưng xác định (trình biên dịch, trình soạn thảo, tiện ích quản lý tệp)
- Đặc trưng bởi tương tác chủ yếu với phần cứng máy tính
Trang 11- Thành phần thu thập dữ liệu để thu và định dạng thông tin từ môi trường ngoài
- Thành phần phân tích để biến đổi thông tin theo yêu cầu của ứng dụng
- Thành phần kiểm soát hoặc đưa ra đáp ứng môi trường ngoài
- Thành phần điều phối để điều hòa các thành phần khác sao cho có thể duy trì việc đáp ứng thời gian thực
c Phần mềm nghiệp vụ
Phần mềm nghiệp vụ là các phần mềm phục vụ các hoạt động kinh doanh hay các nghiệp vụ của tổ chức doanh nghiệp Đây có thể coi là lĩnh vực ứng dụng phần mềm lớn nhất Điển hình là các hệ thống thông tin quản lý gắn chặt với cơ sở dữ liệu (CSDL), các ứng dụng tương tác như xử lý giao tác cho các điểm bán hàng
d Phần mềm khoa học và công nghệ
- Được đặc trưng bởi các thuật toán (tính toán trên ma trận số, mô phỏng,…)
- Thường đòi hỏi phần cứng có năng lực tính toán cao
- Yếu tố giao diện người-máy rất được chú trọng
g Phần mềm trí tuệ nhân tạo
Trang 121.2.1 Thành phần giao tiếp (giao diện)
Cho phép tiếp nhận các yêu cầu về việc muốn thực hiện và cung cấp các dữ liệu nguồn liên quan đến công việc đó hoặc từ các thiết bị thu thập dữ liệu
Cho phép trình bày các kết quả của việc thực hiện các yêu cầu cho người dùng (kết quả của công việc khi thực hiện trên máy tính) hoặc điều khiển hoạt động của các thiết bị (đóng mở cửa, bật mở máy,…)
Một cách tổng quát thành phần giao tiếp là hệ thống các hàm chuyên về việc nhập/xuất dữ liệu cùng với hình thức trình bày và tổ chức lưu trữ dữ liệu tương ứng, mục tiêu chính của các hàm này là đưa dữ liệu từ thế giới bên ngoài phần mềm vào bên trong hoặc ngược lại Trong môn học này chỉ xét đến giao tiếp với người sử dụng phần mềm và khi đó thành phần này có tên gọi cụ thể hơn là thành phần giao diện
1.2.2 Thành phần dữ liệu
Cho phép lưu trữ lại (hàm ghi) các kết quả đã xử lý (việc mượn sách đã được kiểm tra hợp lệ, bảng lương tháng đã được tính) trên bộ nhớ phụ với tổ chức lưu trữ được xác định trước (tập tin có cấu trúc, tập tin nhị phân, CSDL)
Cho phép truy xuất lại (hàm đọc) các dữ liệu đã lưu trữ phục vụ cho các hàm xử
lý tương ứng
Trang 137
Một cách tổng quát thành phần dữ liệu là hệ thống các hàm chuyên về đọc ghi dữ liệu (hàm đọc/ghi) cùng với mô hình tổ chức dữ liệu tương ứng Mục tiêu chính của các hàm này là chuyển đổi dữ liệu giữa bộ nhớ chính và bộ nhớ phụ
1.2.3 Thành phần xử lý
Kiểm tra tính hợp lệ của các dữ liệu nguồn được cung cấp từ người dùng theo các quy trình ràng buộc trong thế giới thực (chỉ cho mượn tối đa 3 quyển sách, mỗi lớp có tối đa 50 học sinh,…)
Tiến hành xử lý cho ra kết quả mong đợi theo quy định tính toán có sẵn trong thế giới thực (quy tắc tính tiền phạt khi trả sách trễ, quy tắc tính tiền diện, quy tắc trả góp khi mua nhà,…) hoặc theo thuật giải tự đề xuất (xếp thời khóa biểu tự động, nén ảnh,…)
Việc xử lý dựa trên dữ liệu nguồn từ người sử dụng cung cấp (tính nghiệm phương trình bậc 2 dựa trên các hệ số đã nhập) hoặc dữ liệu lưu trữ có sẵn (tính tồn kho tháng dựa trên các phiếu nhập xuất đã lưu trữ) hoặc cả hai (tính tiền phạt dựa trên ngày trả sách được nhập vào và thông tin về loại sách đã được lưu trữ) tùy vào xử lý cụ thể Tương tự, việc xử lý cho ra kết quả có thể dùng để xuất cho người dùng xem qua thành phần giao diện (trình bày nghiệm, xuất tiền phạt), hay cũng có thể lưu trữ lại thông qua thành phần dữ liệu (số sách hiện đang mượn của một độc giả) hoặc cả hai (bảng lương, bảng tồn kho)
Một cách tổng quát, thành phần xử lý là hệ thống các hàm chuyên về xử lý tính toán, biến đổi dữ liệu Các hàm này sẽ dùng dữ liệu nguồn từ các hàm trong thành phần giao diện (hàm nhập) hay thành phần dữ liệu (hàm đọc dữ liệu) kiểm tra tính hợp lệ (hàm kiểm tra) và sau đó tiến hành xử lý (hàm xử lý) nếu cần thiết để cho ra kết quả mà
sẽ được trình bày cho người dùng xem qua các hàm trong thành phần giao diện (hàm xuất) hoặc lưu trữ lại qua các hàm trong thành phần dữ liệu (hàm ghi)
Trang 14Nhập yêu cầu, dữ liệu nguồn
Xuất kết quả đã xử lý
Cần xác định hình thức nhập/xuất và tổ chức
dữ liệu tương ứng
2 Thành phần
xử lý
Hàm kiểm tra Hàm xử lý
Kiểm tra tính hợp lệ của dữ liệu
Xử lý tính toán, phát sinh, biến đổi trên dữ liệu
3 Thành phần
dữ liệu
Hàm đọc Hàm ghi
Đọc dữ liệu Ghi dữ liệu
Đến những năm 1960, trải qua 10 năm phát triển số lượng các phần mềm đã tăng lên rất nhiều và được ứng dụng rộng rãi trong nhiều lĩnh vực Vào thời điểm này phát sinh một vấn đề mà các chuyên gia gọi là “cuộc khủng hoảng phần mềm” Cuộc khủng hoảng phần mềm thể hiện hai yếu tố chính:
- Số lượng các phần mềm tăng vọt (do sự phát triển của phần cứng: tăng khả năng, giá thành hạ)
- Có quá nhiều khuyết điểm trong các phần mềm được dùng trong xã hội
Thực hiện không đúng yêu cầu (tính toán sai, không ổn định,…)
Thời gian bảo trì, nâng cấp quá lâu, tốn chi phí cao, hiệu quả thấp
Khó sử dụng
Thực hiện chậm
Trang 159
Khó chuyển đổi dữ liệu giữa các phần mềm
Để giải quyết vấn đề trên, một hội nghị đã được triệu tập đề bàn về cách giải quyết Hội nghị đã tiến hành xem xét, phân tích và xác định nguyên nhân gây ra cuộc khủng hoảng phần mềm Kết luận như sau:
- Việc tăng vọt của số lượng phần mềm là điều hợp lý và điều này sẽ còn tiếp diễn
- Các khuyết điểm của phàn mềm có nguồn gốc chính từ phương pháp, cách thức tiến hành xây dựng phần mềm:
Cảm tính: mỗi người theo một phương pháp riêng
Thô sơ, đơn giản: chỉ tập trung vào việc lập trình mà ít quan tâm đến các công việc cần làm khác trước khi lập trình (khảo sát hiện trang, phân tích yêu cầu, thiết kế,…)
Thủ công: công cụ hỗ trợ chính khi xây dựng phần mềm chỉ là trình biên dịch Với các kết luận như trên, hội nghị đã đề xuất khai sinh một ngành khoa học mới: Công nghệ phần mềm (CNPM) với nhiệm vụ chính là nghiên cứu về các phương pháp tiến hành xây dựng phần mềm
1.3.2 Định nghĩa và mục tiêu
CNPM là một lĩnh vực nghiên cứu của tin học nhằm đề xuất các nguyên lý, phương pháp, công cụ, cách tiếp cận phục vụ cho việc thiết kế, cài đặt các sản phẩm phần mềm đạt được đầy đủ các yêu cầu về chất lượng phần mềm
Do quá trình phát triển của ngành CNPM nên khái niệm về nó cũng thay đổi theo thời gian Hơn nữa, do đây là một lĩnh vực mới nên các khái niệm vẫn còn phụ thuộc rất nhiều vào quan điểm chủ quan của từng người khác nhau Sau đây là một số định nghĩa CNPM:
- Bauer[1969]: việc thiết lập và sử dụng các nguyên lý công nghệ đúng đắn để 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
- Sommerville[1995]: là lĩnh vực 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
- Pressman[1995]: là bộ môn 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
Trang 1610
Có thể định nghĩa tóm tắt về CNPM như sau: CNPM là một ngành khoa học nghiên cứu về việc xây dựng các phần mềm có chất lượng trong khoảng thời gian và chi phí hợp lý
Mục tiêu nghiên cứu được chia thành hai phần rõ nét:
- Có thể bảo trì được: Phần mềm tuổi thọ dài phải được viết và được lập tư liệu
sao cho việc thay đổi có thể tiến hành được mà không quá tốn kém Đây được coi là đặc tính chủ chốt nhất của một phần mềm tốt Để có thể bảo trì được, phần mềm phải có một thiết kế tốt có tính module hóa cao, được viết bằng ngôn ngữ bậc cao và được lập tài liệu (tài liệu phân tích, thiết kế, chú thích mã nguồn,
hướng dẫn người dùng,…) đầy đủ
- Đáng tin cậy: Phần mềm phải thực hiện được điều mà người dùng mong mỏi và
không thất bại nhiều hơn những điều đã được đặc tả Điều này có nghĩa là phần mềm phải thỏa mãn được nhu cầu của người dùng Để đạt được yếu tố đáng tin cậy, trước tiên người phát triển cần phải hiểu một cách đúng đắn yêu cầu của người dùng và sau đó cần thỏa mãn được các yêu cầu này bằng các thiết kế và
cài đặt tốt
- Có hiệu quả: Phần mềm khi hoạt động phải không lãng phí tài nguyên hệ thống
như bộ nhớ, bộ xử lý Nếu phần mềm chạy quá chậm hay đòi hỏi quá nhiều bộ nhớ… thì dù có được cài đặt rất nhiều chức năng cũng sẽ không được đưa vào sử dụng Tuy nhiên, ngoài trừ các phần mềm nhúng hay thời gian thực đặc biệt, người ta thường không cực đại hóa mức độ hiệu quả vì rằng việc đó có thể phải dùng đến các kỹ thuật đặc tả và cài đặt bằng ngôn ngữ máy khiến cho chi phí
tăng cao và phần mềm rất khó thay đổi (tính bảo trì kém)
- Dễ sử dụng: Giao diện người sử dụng phải phù hợp với khả năng và kiến thức
của người dùng, có các tài liệu hướng dẫn và các tiện ích trợ giúp Đối tượng
Trang 17Một khó khăn khác của việc phát triển phần mềm là rất khó định lượng các thuộc tính của phần mềm Chúng ta thiếu các độ đo và các chuẩn về chất lượng phần mềm
Vấn đề giá cả phải được tính đến khi xây dựng phần mềm Điều quan trọng là chúng ta phải xây dựng một phần mềm tốt với một giá cả hợp lý và theo một lịch biểu được định trước
b Nhu cầu và độ phức tạp
Tuy ngành công nghiệp máy tính đã bước sang giai đoạn mới nhưng các thách thức đối với phát triển phần mềm máy tính không ngừng gia tăng vì những nguyên nhân sau:
- Khả năng xây dựng các chương trình mới không giữ được cùng nhịp với nhu cầu
về phần mềm tăng lên nhanh chóng, đặc biệt khi Internet phát triển và số lượng người dùng tăng cao Ngày nay, sản xuất phần mềm đã trở thành một ngành công nghiệp khổng lồ tuy vậy năng suất không cao, không đáp ứng được đỏi hỏi của
xã hội và điều này ảnh hưởng lớn đến giá thành và chất lượng phần mềm Ngoài
ra, còn tồn tại rất nhiều chương trình được thiết kế và lập tài liệu sơ sài khiến cho việc bảo trì rất khó khăn và kém tài nguyên Phát triển các phần mềm mới dễ bảo trì để thay thế các hệ thống cũ trở thành nhu cầu cấp bách
- Cùng với sự phát triển của phần cứng, quy mô và độ phức tạp của các phần mềm mới ngày càng tăng Một số phần mềm hiện đại có kích thước được tính bằng đơn vị triệu dòng lệnh (HĐH Unix, Windows,…) Một vấn đề khó khăn trong sản xuất phần mềm lớn là độ phức tạp tăng vọt, các kinh nghiệm sản xuất sản phẩm nhỏ không ứng dụng được cho môi trường làm việc theo nhóm và phát triển sản phẩm lớn
Trang 1812
- Sự tinh vi và năng lực của phần cứng đã vượt xa khả năng xây dựng phần mềm
để có thể sử dụng được các tiềm năng của nó
Tất cả các khó khăn và thách thức nêu trên đã dẫn đến việc chấp nhận thực hành CNPM để có thể tạo nhanh các phần mềm có chất lượng ngày một cao, có quy mô và
số lượng ngày một lớn và có những tính năng tương ứng với tiềm năng phần cứng
1.3.4 Các đối tượng nghiên cứu
Hướng đến việc xây dựng các phần mềm có chất lượng như đã nêu, ngành CNPM đưa ra ba đối tượng nghiên cứu chính: Quy trình công nghệ, Phương pháp phát triển, Công cụ và mội trường phát triển phần mềm
- Quy trình CNPM: Hệ thống các giai đoạn mà quá trình phát triển phần mềm phải trải qua Với mỗi giai đoạn cần xác định rõ mục tiêu, kết quả nhận từ giai đoạn trước đó cũng chính là kết quả chuyển giao cho giai đoạn kế tiếp
- Phương pháp phát triển phần mềm: Hệ thống các hướng dẫn cho phép từng bước thực hiện một giai đoạn nào đó trong quy trình CNPM
- Công cụ và môi trường phát triển phần mềm: Hệ thống các phần mềm trợ giúp chính trong lĩnh vực xây dựng phần mềm Các phần mềm này sẽ hỗ trợ các chuyên viên tin học trong các bước xây dựng phần mềm theo một phương pháp nào đó với một quy trình được chọn trước
1.4 VÒNG ĐỜI PHÁT TRIỂN PHẦN MỀM
Vòng đời phát triển phần mềm là thời kỳ tính từ khi phần mềm được sinh ra đến khi chết đi (từ lúc hình thành đáp ứng yêu cầu, vận hành bảo dưỡng đến khi loại bỏ không được sử dụng) Quy trình phát triển phần mềm gồm 3 giai đoạn chính: Xác định, phát triển và bảo trì Ba giai đoạn này xuất hiện trong tất cả các công việc phát triển phần mềm, không phụ thuộc miền ứng dụng, kích cỡ dự án hay độ phức tạp
1.4.1 Giai đoạn xác định
Trong giai đoạn xác định, người phát triển phần mềm tập trung vào xác định thông tin nào cần được cần được xử lý, chức năng và hiệu năng nào cần có, giao diện nào cần được thiết lập, ràng buộc thiết kế nào hiện có và tiêu chuẩn hợp lệ nào cần có
để xác định ra một hệ thống thành công Yêu cầu chủ chốt của hệ thống và phần mềm
Trang 1913
được xác định Mặc dù các phương pháp được áp dụng trong giai đoạn xác định thay đổi tùy theo khuôn cảnh CNPM, nhưng có ba bước luôn xuất hiện hiện dưới dạng:
Phân tích hệ thống: Xác định ra vai trò của từng phần tử trong hệ thống dựa trên
máy tính, chỉ ra vai trò của phần mềm
Lập kế hoạch dự án phần mềm: Khi phạm vi của phần mềm được thiết lập, rủi ro
được phân tích, tài nguyên được cấp phát, chi phí được ước lượng thì phải xác định nhiệm vụ công việc và lập lịch
Phân tích yêu cầu: Phạm vi được xác định cho phần mềm sẽ đưa ra chiều hướng
nhưng cần phải có thêm việc xác định chi tiết lĩnh vực thông tin và chức năng trước khi công việc có thể bắt đầu
1.4.2 Giai đoạn phát triển
Trong khi xác định, người phát triển cố gắng xác định cách cấu trúc dữ liệu và kiến trúc phần mềm cần được thiết kế, cách các chi tiết thủ tục được cài đặt, cách dịch thiết kế vào ngôn ngữ lập trình hay ngôn ngữ phi thủ tục và cách thực hiện kiểm thử Phương pháp được áp dụng trong giai đoạn phát triển sẽ thay đổi nhưng có ba bước đặc thù bao giờ cũng xuất hiện dưới dạng:
Thiết kế phần mềm: Thiết kế dịch các yêu cầu về phần mềm thành một tập hợp
các biểu diễn (dựa trên đồ họa, bảng hay ngôn ngữ) mô tả cấu trúc dữ liệu, kiến trúc, thủ tục thuật toán và đặc trưng giao diện
Mã hóa: Các biểu diễn thiết kế phải được dịch thành ngôn ngữ nhân tạo (ngôn
ngữ có thể là ngôn ngữ lập trình quy ước hoặc ngôn ngữ phi thủ tục dùng trong ngôn ngữ thế hệ 4 – 4GT) mà kết quả sẽ tạo ra là các lệnh thực hiện được trên máy tính Bước
mã hóa thực hiện việc này
Kiểm thử phần mềm: Mỗi khi phần mềm đã được cài đặt dưới dạng mã máy thực
hiện được, cần phải kiểm thử nó để phát hiện các khiếm khuyết khi vận hành, trong logic
và trong cài đặt
1.4.3 Giai đoạn bảo trì
Tập trung vào những thay đổi gắn với việc sửa lỗi, thích ứng khi môi trường phần mềm tiến hóa và nâng cao do yêu cầu người dùng Giai đoạn bảo trì áp dụng lại các
Trang 2014
bước của giai đoạn xác định và phát triển nhưng làm việc đó trong hoàn cảnh phần mềm hiện có Có ba kiểu thay đổi gặp phải trong giai đoạn bảo trì:
Sửa đổi: Phần mềm luôn có lỗi tiềm tàng Trong quá trình sử dụng, cho dù các
hoạt động bảo đảm chất lượng phần mềm là tốt nhất, khách hàng vẫn có thể sẽ phát hiện
ra khiếm khuyết trong phần mềm Bảo trì sửa đổi thay đổi phần mềm để sửa các khiếm khuyết
Thích nghi: Qua thời gian, môi trường ban đổi để phát triển phần mềm có thể
thay đổi Bảo trì để thích nghi thực hiện việc sửa đổi phần mềm để nó thích hợp với những thay đổi môi trường bên ngoài
Nâng cao: Khi phần mềm được dùng, khách hàng/người dùng sẽ nhận ra những
chức năng phụ có lợi Bảo trì hoàn thiện mở rộng phần mềm ngoài các yêu cầu chức năng gốc của nó
Bên cạnh những hoạt động cơ bản này, một số công ty còn xem xét với kỹ nghệ ngược Dùng một tập riêng các công cụ CASE, phần mềm cũ được kỹ nghệ hóa ngược lại để cho người dùng có thể hiểu và cải tiến sự làm việc bên trong của nó
1.5 QUY TRÌNH CÔNG NGHỆ PHẦN MỀM
Để xây dựng được phần mềm có chất lượng, quá trình phát triển phải trải qua rất nhiều giai đoạn, mỗi giai đoạn có mục tiêu và kết quả xác định Sau đây, chúng ta sẽ xem xét một số quy trình đơn giản
1.5.1 Quy trình 2 giai đoạn
Là quy trình đơn giản nhất, theo quy trình này việc phát triển phần mềm chỉ trải qua 2 giai đoạn
- Xác định yêu cầu: Được tiến hành ngay sau khi có nhu cầu về việc xây dựng phần mềm
Mục tiêu: Xác định chính xác các yêu cầu đặt ra cho phần mềm sẽ xây dựng
Kết quả nhận: Thông tin về các hoạt động của thế giới thực
Kết quả chuyển giao: Danh sách các yêu cầu (công việc sẽ thực hiện trên máy tính) cùng với các thông tin mô tả chi tiết về các yêu cầu (cách thực hiện trong thế giới thực)
- Lập trình (cài đặt): Được tiến hành ngay sau khi kết thúc việc xác định yêu cầu
Trang 2115
Mục tiêu: Tạo lập phần mềm mong muốn theo yêu cầu
Kết quả nhận: Danh sách các yêu cầu cùng các thông tin liên quan
Kết quả chuyển giao: Chương trình nguồn của phần mềm: hệ thống các hàm cùng với cấu trúc cơ sở dữ liệu tương ứng (nếu cần thiết) và chương trình thực hiện được trên máy tính (chương trình nguồn đã được biên dịch)
1.5.2 Quy trình 3 giai đoạn
Là quy trình cải tiến của quy trình 2 giai đoạn bằng cách bổ sung thêm một giai đoạn trung gian mới giữa xác định yêu cầu và lập trình
- Xác định yêu cầu: Được tiến hành ngay sau khi có nhu cầu về việc xây dựng phần mềm
Mục tiêu: Xác định chính xác các yêu cầu đặt ra cho phần mềm sẽ xây dựng
Kết quả nhận: Thông tin về các hoạt động của thế giới thực
Kết quả chuyển giao: Danh sách các yêu cầu (công việc sẽ thực hiện trên máy tính) cùng với các thông tin mô tả chi tiết về các yêu cầu (cách thực hiện trong thế giới thực)
- Thiết kế: Được tiến hành ngay sau khi kết thúc việc xác định yêu cầu
Mục tiêu: Mô tả các thành phần của phần mềm (mô hình phần mềm) trước khi thực hiện cài đặt
Kết quả nhận: Danh sách các yêu cầu cùng các thông tin liên quan
Kết quả chuyển giao: Mô tả giao diện (các hàm nhập xuất, các hình thức nhập xuất, cấu trúc dữ liệu nhập xuất), mô tả thành phần xử lý (các hàm kiểm tra,
xử lý), mô tả thành phần dữ liệu (các hàm đọc/ghi, tổ chức lưu trũ trên bộ nhớ phụ)
- Lập trình (cài đặt): Được tiến hành ngay sau khi kết thúc việc thiết kế
Mục tiêu: Tạo lập phần mềm mong muốn theo yêu cầu
Kết quả nhận: Mô hình phần mềm
Kết quả chuyển giao: Chương trình nguồn của phần mềm: hệ thống các hàm cùng với cấu trúc dữ liệu nhập xuất, cơ sở dữ liệu tương ứng (nếu cần thiết) và chương trình thực hiện được trên máy tính (chương trình nguồn đã được biên dịch)
Trang 2216
1.5.3 Quy trình 4 giai đoạn
Là quy trình cải tiến quy trình phía trước bằng cách bổ sung thêm một giai đoạn trung gian mới giữa xác định yêu cầu và thiết kế
- Xác định yêu cầu: Được tiến hành ngay sau khi có nhu cầu về việc xây dựng phần mềm
Mục tiêu: Xác định chính xác các yêu cầu đặt ra cho phần mềm sẽ xây dựng
Kết quả nhận: Thông tin về các hoạt động của thế giới thực
Kết quả chuyển giao: Danh sách các yêu cầu (công việc sẽ thực hiện trên máy tính) cùng với các thông tin mô tả chi tiết về các yêu cầu (cách thực hiện trong thế giới thực)
- Phân tích: Được tiến hành ngay sau khi có nhu cầu về việc xây dựng phần mềm
Mục tiêu: Mô tả lại thế giới thực thông qua các mô hình (mô hình thế giới thực) trước khi thiết kế)
Kết quả nhận: Danh sách các yêu cầu cùng các thông tin liên quan
Kết quả chuyển giao: Mô hình xử lý (hệ thống các công việc trong thế giới thực cùng với quan hệ giữa chúng), mô hình dữ liệu (hệ thống các loại thông tin được sử dụng trong thế giới thực cùng với quan hệ giữa chúng), các mô hình khác (không gian, thời gian, con người,…) nếu cần thiết
- Thiết kế: Được tiến hành ngay sau khi kết thúc việc xác định yêu cầu
Mục tiêu: Mô tả các thành phần của phần mềm (mô hình phần mềm) trước khi thực hiện cài đặt
Kết quả nhận: Mô hình thế giới thực
Kết quả chuyển giao: Mô tả giao diện (các hàm nhập xuất, các hình thức nhập xuất, cấu trúc dữ liệu nhập xuất), mô tả thành phần xử lý (các hàm kiểm tra,
xử lý), mô tả thành phần dữ liệu (các hàm đọc/ghi, tổ chức lưu trũ trên bộ nhớ phụ)
- Lập trình (cài đặt): Được tiến hành ngay sau khi kết thúc việc thiết kế
Mục tiêu: Tạo lập phần mềm mong muốn theo yêu cầu
Kết quả nhận: Mô hình phần mềm
Trang 2317
Kết quả chuyển giao: Chương trình nguồn của phần mềm: hệ thống các hàm cùng với cấu trúc dữ liệu nhập xuất, cơ sở dữ liệu tương ứng (nếu cần thiết) và chương trình thực hiện được trên máy tính (chương trình nguồn đã được biên dịch)
1.5.4 Quy trình 5 giai đoạn
Là quy trình cải tiến của quy trình phía trước bằng cách bổ sung thêm một giai đoạn mới sau giai đoạn lập trình nhằm tăng cường độ tin cậy của phần mềm
- Xác định yêu cầu: Được tiến hành ngay sau khi có nhu cầu về việc xây dựng phần mềm
Mục tiêu: Xác định chính xác các yêu cầu đặt ra cho phần mềm sẽ xây dựng
Kết quả nhận: Thông tin về các hoạt động của thế giới thực
Kết quả chuyển giao: Danh sách các yêu cầu (công việc sẽ thực hiện trên máy tính) cùng với các thông tin mô tả chi tiết về các yêu cầu (cách thực hiện trong thế giới thực)
- Phân tích: Được tiến hành ngay sau khi có nhu cầu về việc xây dựng phần mềm
Mục tiêu: Mô tả lại thế giới thực thông qua các mô hình (mô hình thế giới thực) trước khi thiết kế)
Kết quả nhận: Danh sách các yêu cầu cùng các thông tin liên quan
Kết quả chuyển giao: Mô hình xử lý (hệ thống các công việc trong thế giới thực cùng với quan hệ giữa chúng), mô hình dữ liệu (hệ thống các loại thông tin được sử dụng trong thế giới thực cùng với quan hệ giữa chúng), các mô hình khác (không gian, thời gian, con người,…) nếu cần thiết
- Thiết kế: Được tiến hành ngay sau khi kết thúc việc xác định yêu cầu
Mục tiêu: Mô tả các thành phần của phần mềm (mô hình phần mềm) trước khi thực hiện cài đặt
Kết quả nhận: Mô hình thế giới thực
Kết quả chuyển giao: Mô tả giao diện (các hàm nhập xuất, các hình thức nhập xuất, cấu trúc dữ liệu nhập xuất), mô tả thành phần xử lý (các hàm kiểm tra,
xử lý), mô tả thành phần dữ liệu (các hàm đọc/ghi, tổ chức lưu trũ trên bộ nhớ phụ)
Trang 2418
- Lập trình (cài đặt): Được tiến hành ngay sau khi kết thúc việc thiết kế
Mục tiêu: Tạo lập phần mềm mong muốn theo yêu cầu
Kết quả nhận: Mô hình phần mềm
Kết quả chuyển giao: Chương trình nguồn của phần mềm: hệ thống các hàm cùng với cấu trúc dữ liệu nhập xuất, cơ sở dữ liệu tương ứng (nếu cần thiết) và chương trình thực hiện được trên máy tính (chương trình nguồn đã được biên dịch)
- Kiểm thử: Được tiến hành ngay sau khi đã có kết quả từng phần của việc lập trình
Mục tiêu: Tăng độ tin cậy của phần mềm
Kết quả nhận: Danh sách yêu cầu, mô hình phần mềm, phần mềm
Kết quả chuyển giao: Phần mềm với độ tin cậy cao (đã tìm và sửa lỗi)
1.5.5 Quy trình 6 giai đoạn
Là quy trình cải tiến quy trình phía trước bằng cách bổ sung thêm một giai đoạn mới sau giai đoạn kiểm thử nhằm đảm bảo phần mềm vận hành tốt
- Xác định yêu cầu: Được tiến hành ngay sau khi có nhu cầu về việc xây dựng phần mềm
Mục tiêu: Xác định chính xác các yêu cầu đặt ra cho phần mềm sẽ xây dựng
Kết quả nhận: Thông tin về các hoạt động của thế giới thực
Kết quả chuyển giao: Danh sách các yêu cầu (công việc sẽ thực hiện trên máy tính) cùng với các thông tin mô tả chi tiết về các yêu cầu (cách thực hiện trong thế giới thực)
- Phân tích: Được tiến hành ngay sau khi có nhu cầu về việc xây dựng phần mềm
Mục tiêu: Mô tả lại thế giới thực thông qua các mô hình (mô hình thế giới thực) trước khi thiết kế)
Kết quả nhận: Danh sách các yêu cầu cùng các thông tin liên quan
Kết quả chuyển giao: Mô hình xử lý (hệ thống các công việc trong thế giới thực cùng với quan hệ giữa chúng), mô hình dữ liệu (hệ thống các loại thông tin được sử dụng trong thế giới thực cùng với quan hệ giữa chúng), các mô hình khác (không gian, thời gian, con người,…) nếu cần thiết
- Thiết kế: Được tiến hành ngay sau khi kết thúc việc xác định yêu cầu
Trang 2519
Mục tiêu: Mô tả các thành phần của phần mềm (mô hình phần mềm) trước khi thực hiện cài đặt
Kết quả nhận: Mô hình thế giới thực
Kết quả chuyển giao: Mô tả giao diện (các hàm nhập xuất, các hình thức nhập xuất, cấu trúc dữ liệu nhập xuất), mô tả thành phần xử lý (các hàm kiểm tra,
xử lý), mô tả thành phần dữ liệu (các hàm đọc/ghi, tổ chức lưu trũ trên bộ nhớ phụ)
- Lập trình (cài đặt): Được tiến hành ngay sau khi kết thúc việc thiết kế
Mục tiêu: Tạo lập phần mềm mong muốn theo yêu cầu
Kết quả nhận: Mô hình phần mềm
Kết quả chuyển giao: Chương trình nguồn của phần mềm: hệ thống các hàm cùng với cấu trúc dữ liệu nhập xuất, cơ sở dữ liệu tương ứng (nếu cần thiết) và chương trình thực hiện được trên máy tính (chương trình nguồn đã được biên dịch)
- Kiểm thử: Được tiến hành ngay sau khi đã có kết quả từng phần của việc lập trình
Mục tiêu: Tăng độ tin cậy của phần mềm
Kết quả nhận: Danh sách yêu cầu, mô hình phần mềm, phần mềm
Kết quả chuyển giao: Phần mềm với độ tin cậy cao (đã tìm và sửa lỗi)
- Bảo trì: Công việc của giai đoạn này bao gồm việc cài đặt và vận hành phần mềm trong thực tế
Trang 2620
1.6.1 Mô hình thác nước – Waterfall model
Mô hình thác nước (mô hình vòng đời cổ điển) là một trong những mô hình đầu tiên và phổ biến được áp dụng trong quá trình phát triển phần mềm Mô hình này chia quá trình phát triển phần mềm thành những giai đoạn tuần tự nối tiếp nhau Mỗi giai đoạn sẽ có một mục đích nhất định Kết quả của giai đoạn trước sẽ là thông tin đầu vào cho giai đoạn tiếp theo sau Tùy theo quy mô của phần mềm cần phát triển mà mô hình thác nước sẽ có những biến thể khác nhau như các quy trình nêu trên
Hình 1 1 Mô hình thác nước
Mô hình thác nước giúp chúng ta có thể dễ dàng phân chia quá trình xây dựng phần mềm thành những giai đoạn hoàn toàn độc lập nhau Tuy nhiên, các dự án lớn hiếm khi tuân theo dòng chảy tuần tự của mô hình vì thường phải lặp lại các bước để nâng cao chất lượng Hơn nữa, khách hàng thường khó phát biểu mọi yêu cầu một cách tường minh ngay từ đầu
Bản làm việc được của chương trình chỉ có được vào lúc cuối của thời gian dự
án nên nó đòi hỏi khách hàng phải kiên nhẫn Mô hình này cũng có một hạn chế là chúng
ta rất khó thực hiện các thay đổi một khi đã thực hiện xong một giai đoạn nào đó Điều này làm cho việc xây dựng phần mềm rất khó thay đổi các yêu cầu theo ý muốn của khách hàng Do đó, phương pháp này chỉ thích hợp cho những trường hợp mà chúng ta
đã hiểu rất rõ các yêu cầu của khách hàng
Trang 2721
Tuy vậy, mô hình thác nước có một vị trí quan trọng trong CNPM Nó đưa ra một tiêu bản có thể bố trí cho các phương pháp phân tích, thiết kế, mã hóa, kiểm thử và bảo trì Vòng đời thác nước vẫn còn là một mô hình được sử dụng rộng rãi, nhất là cho các dự án nhỏ và vừa
Mô hình thác nước có thể được cải tiến bằng cách cho phép quay lui khi phát hiện lỗi trong giai đoạn phía trước
1.6.2 Mô hình mẫu thử – Prototyping model
Hình 1 2 Mô hình mẫu thử
Tương tự như mô hình thác nước với bổ sung vào các giai đoạn thực hiện phần mềm mẫu ngay khi xác định yêu cầu nhằm mục tiêu phát hiện nhanh các sai sót về yêu cầu Các giai đoạn trong mô hình mẫu thử có thể tiến hành lặp đi lặp lại chứ không nhất thiết phải theo trình tự nhất định
Trước hết người phát triển và khách hàng gặp nhau, xác định mục tiêu tổng thể cho phần mềm, xác định các yêu cầu đã biết, các miền cần khảo sát thêm Tiếp theo là giai đoạn thiết kế nhanh, tập trung vào việc biểu diễn các khía cạnh của phần mềm thấy được đối với người dùng (input và output), và xây dựng một bản mẫu Người dùng đánh giá và làm mịn các yêu cầu cho phần mềm Tiến trình này lặp đi lặp lại cho đến khi bản
Trang 2822
mẫu thỏa mãn yêu cầu của khách hàng, đồng thời giúp người phát triển hiểu kỹ hơn nhu cầu nào cần phải thực hiện
Cách tiếp cận làm bản mẫu tốt nhất khi:
- Mục tiêu tổng quát của phần mềm đã xác định, nhưng chưa xác định được input
và ouput
- Người phát triển không chắc về hiệu quả của thuật toán, về thích nghi hệ điều hành và giao diện người máy cần có
Khi đã có bản mẫu, người phát triển có thể dùng chương trình đã có hay các công
cụ phần mềm trợ giúp để sinh ra chương trình làm việc
Làm bản mẫu là tạo ra một mô hình cho phần mềm cần xây dựng Mô hình có thể có 3 dạng:
- Bản mẫu trên giấy hay trên máy tính mô tả giao diện người-máy làm người dùng hiểu được cách các tương tác xuất hiện
- Bản mẫu cài đặt chỉ một tập con chức năng của phần mềm mong đợi
- Bản mẫu là một chương trình có thể thực hiện một phần hay tất cả chức năng mong muốn nhưng ở mức sơ lược và cần cải tiến thêm các tính năng khác tùy theo khả năng phát triển
Mô hình làm bản mẫu có một số vấn đề như sau:
- Do sự hoàn thiện dần (tiến hóa) của bản mẫu, phần mềm nhiều khi có tính cấu trúc không cao, dẫn đến khó kiểm soát, khó bảo trì
- Khách hàng nhiều khi thất vọng với việc phát triển phần mềm do họ nhầm tưởng bản mẫu là sản phẩm cuối cùng hướng tới người sử dụng Khách hàng cũng có thể không dành nhiều công sức vào đánh giá bản mẫu
1.6.3 Mô hình xoắn ốc – Sprial model
Mô hình xoắn ốc được Boehm đưa ra năm 1988 Mô hình này đưa thêm vào việc phân tích yếu tố rủi ro Quá trình phát triển được chia thành nhiều bước lặp lại, ở lần lặp tiếp theo hệ thống sẽ được tìm hiểu và xây dựng hoàn thiện hơn ở lần lặp trước đó
Nội dung một bước gồm bốn hoạt động chính:
- Lập kế hoạch: xác định mục tiêu, các giải pháp và ràng buộc
Trang 29Kết luận: chúng ta không nên bị lệ thuộc vào bất cứ mô hình cụ thể nào Tính
chất và quy mô của phần mềm cần phát triển sẽ là yếu tố quyết định tới việc chọn mô hình nào Mỗi mô hình đều có ưu điểm riêng và bằng cách tổ hợp khéo léo các mô hình thì chúng ta sẽ có một phương pháp hỗn hợp ưu việt hơn các phương pháp được dùng độc lập
Trang 3024
1.6.4 Mô hình tăng trưởng
Trong mô hình tăng trưởng, thay vì chuyển giao một lần, quá trình phát triển và chuyển giao được chia làm nhiều lần Mỗi lần được gọi là một phần tăng trưởng và nó đáp ứng một phần chức năng Một phần tăng trưởng được thực hiện theo mô hình thác nước
Phần tăng trưởng đầu tiên, thường được gọi là sản phẩm lõi (core product), gồm các yêu cầu cơ bản Sản phẩm lõi được dùng và đánh giá bởi khách hàng Khi sản phẩm lõi đã được đánh giá bởi khách hàng thì kế hoạch phát triển cho các phần tăng trưởng sau được đưa ra Sau đó, trong mỗi phần tăng trưởng, khách hàng vẫn tiếp tục đưa ra yêu cầu, nhiều tính năng và chức năng được thêm vào sản phẩm lõi Cứ như vậy, tiến trình tiếp tục cho đến khi sản phẩm cuối cùng được hoàn thành
Các phần tăng trưởng ở trước phần tăng trưởng chính được gọi là phiên bản “rút gon” (stripped down) của sản phẩm cuối cùng
Hình 1 4 Mô hình tăng trưởng
Nếu nhân lực cho dự án ít thì mô hình tăng trưởng sẽ rất hữu ích để hoàn thành
dự án đúng thời hạn (deadline) Trong một dự án, mỗi phần tăng trưởng có thể được làm với số lượng nhân lực ít Trong trường hợp nếu sản phẩm lõi đã được định nghĩa và hiểu
rõ ràng thì trong các phần tăng trưởng sau, nhân lực có thể được thêm vào để hoàn thành
Một trong những lợi ích của mô hình tăng trưởng là nó có thể được lập kế hoạch
để quản lý rủi ro kỹ thuật
Trang 3125
1.6.5 Mô hình chữ V
Mô hình chữ V được thực hiện từ trái sang phải, mô tả dãy các hoạt động phát triển và kiểm thử cơ bản Mô hình này rất có giá trị vì nó nêu bật sự tồn tại của các mức kiểm thử và mô tả cách mỗi mức kiểm thử này liên quan đến một pha phát triển khác nhau
Khi mọi đơn vị và các tích hợp của nó được kiểm thử, kiểm thử hệ thống được tiến hành để chứng tỏ rằng hệ thống làm việc end-to-end giống sản phẩm, cung cấp các chức năng nghiệp vụ được mô tả trong thiết kế mức cao Khi tổ chức kỹ thuật hoàn thành công việc kiểm thử, tức là thực tế đã đạt được yêu cầu nghiệp vụ đặt ra
Tuy nhiên có nhiều người nghi ngờ về tính phù hợp của mô hình này Mô hình này dựa trên một tập các bước phân tích theo một trình tự cụ thể nhưng không phản ánh thực tế Mô hình chữ V bắt đầu bằng các yêu cầu, thậm chí ngay cả khi nhiều dự án thiếu các yêu cầu chính xác Mô hình chữ V nhắc nhở chúng ta kiểm thử mỗi khi thực hiện một pha phát triển nhưng không mô tả chúng ta cần làm gì