NGUYỄN NGỌC KHẢI Giáo trình CÔNG NGHỆ PHẦN MỀM Dành cho sinh viên hệ cao đẳng Hà Nội - 2011... LỜI NÓI ĐẦUCông nghệ phần mềm là lĩnh vực nghiên cứu của tin học, nhằm đề xuất các nguyên
Trang 1BỘ TÀI NGUYÊN VÀ MÔI TRƯỜNG
TRƯỜNG ĐẠI HỌC TÀI NGUYÊN VÀ MÔI TRƯỜNG HÀ NỘI
ThS NGUYỄN NGỌC KHẢI
Giáo trình CÔNG NGHỆ PHẦN MỀM (Dành cho sinh viên hệ cao đẳng)
Hà Nội - 2011
Trang 2BỘ TÀI NGUYÊN VÀ MÔI TRƯỜNG
TRƯỜNG ĐẠI HỌC TÀI NGUYÊN VÀ MÔI TRƯỜNG HÀ NỘI
ThS NGUYỄN NGỌC KHẢI
Giáo trình
CÔNG NGHỆ PHẦN MỀM (Dành cho sinh viên hệ cao đẳng)
Hà Nội - 2011
Trang 3LỜI NÓI ĐẦU
Công nghệ phần mềm là lĩnh vực nghiên cứu của tin học, nhằm đề xuất các nguyên lý, các phương pháp và các công cụ phục vụ cho việc thiết kế và cài đặt các sản phẩm phần mềm có chất lượng Ngày nay, các hệ thống phần mềm thường có quy
mô lớn, phức tạp, sự phát triển các phần mềm này ngày càng trở nên khó kiểm soát, các dự án phần mềm thường kéo dài và vượt quá thời gian, chi phí dự kiến Để có được các phần mềm chất lượng cao, đáp ứng được yêu cầu của người dùng đồng thời tiết kiệm được thời gian và chi phí phát triển, chúng ta cần phải có phương pháp tiếp cận phù hợp, ứng dụng các quy trình, các công cụ hợp lý cho từng giai đoạn trong quá trình phát triển của các dự án phần mềm
Giáo trình này được biên soạn bám sát với chương trình đào tạo hệ cao đẳng đang được thực hiện tại khoa Công nghệ thông tin của trường Đại học Tài nguyên và Môi trường Hà Nội Nội dung của giáo trình nhằm cung cấp tới người đọc các khái niệm cơ bản, nền tảng về lĩnh vực công nghệ phần mềm, các quy trình, các phương pháp tiếp cận từng giai đoạn trong quá trình phát triển phần mềm Từ đó giúp người đọc dễ dàng tiếp cận với các dự án thực tế, biết lựa chọn các giải pháp phù hợp cho từng dự án của mình
Trong quá trình biên soạn chúng tôi đã cố gắng chắt lọc các kiến thức cơ bản nền tảng quan trọng nhất, nhằm giúp người đọc dễ dàng tiếp cận được các kiến thức của lĩnh vực này Tuy nhiên do những hạn chế nhất định, chắc chắn giáo trình không tránh hỏi các thiếu sót, vì vậy rất mong nhận được các đóng góp, góp ý của bạn đọc để giáo trình được hoàn thiện hơn
Tác giả chân thành gửi lời cảm ơn tới các đồng nghiệp trong khoa Công nghệ thông tin, trường Đại học Tài nguyên và Môi trường Hà Nội đã tạo điều kiện và đóng góp nhiều ý kiến quý báu để hoàn thành giáo trình này
Hà Nội, tháng 11 năm 2011
Tác giả
Trang 4BẢNG CÁC CHỮ VIẾT TẮT 1
DANH MỤC HÌNH VẼ 2
Chương 1: PHẦN MỀM VÀ KỸ NGHỆ PHẦN MỀM 3
1.1 PHẦN MỀM VÀ CÁC ĐẶC TRƯNG CỦA PHẦN MỀM 3
1.5.1 Các thành phần của phần mềm 3
1.5.2 Đặc trưng của phần mềm 3
1.2 VAI TRÒ VÀ SỰ PHÁT TRIỂN CỦA PHẦN MỀM 5
1.2.1 Vai trò của phần mềm 5
1.2.2 Sự phát triển của phần mềm 5
1.3 CÁC TIÊU CHÍ PHÂN LOẠI PHẦN MỀM 6
1.3.1 Theo mức độ hoàn thiện 6
1.3.2 Theo chức năng thực hiện 6
1.3.3 Phân loại theo lĩnh vực ứng dụng 7
1.4 ĐÁNH GIÁ PHẦN MỀM 8
1.5 KỸ NGHỆ PHẦN MỀM 9
1.5.1 Khái niệm kỹ nghệ phần mềm 9
1.5.2 Các yếu tố cơ bản của kỹ nghệ phần mềm 9
1.6 CÔNG CỤ VÀ MÔI TRƯỜNG PHÁT TRIỂN PHẦN MỀM 10
1.6.1 Giới thiệu 10
1.6.2 Phần mềm hỗ trợ thực hiện các giai đoạn 10
Chương 2: TIẾN TRÌNH PHẦN MỀM 12
2.1 TỔNG QUAN 12
2.1.1 Khái niệm 12
2.2 CÁC GIAI ĐOẠN CHÍNH CỦA MỘT TIẾN TRÌNH PHẦN MỀM 12
2.3 MỘT SỐ MÔ HÌNH TIẾN TRÌNH TIÊU BIỂU 14
2.3.1 Mô hình thác nước 14
2.3.2 Mô hình làm bản mẫu 16
2.3.3 Mô hình xoắn ốc 17
2.3.4 Kỹ thuật thế hệ thứ tư 19
2.3.5 Mô hình lập trình cực đoan 20
2.3.6 Mô hình phát triển dựa trên thành phần 20
2.3.7 Tổ hợp các mô hình 21
Trang 52.3.8 Tính khả thị của quá trình kỹ nghệ 22
CÂU HỎI ÔN TẬP CHƯƠNG 2 22
Chương 3: PHÂN TÍCH ĐẶC TẢ YÊU CẦU 23
3.1 TỔNG QUAN 23
3.1.1 Khái niệm và tầm quan trọng 23
3.1.2 Các khó khăn trong quá trình xác định yêu cầu 23
3.1.3 Vai trò của người phân tích yêu cầu 24
3.1.4 Phân loại yêu cầu 24
3.2 TIẾN TRÌNH PHÂN TÍCH XÁC ĐỊNH YÊU CẦU 25
3.2.1 Nghiên cứu khả thi 26
3.2.2 Phân tích, xác định yêu cầu 27
3.2.3 Đặc tả yêu cầu 28
3.2.4 Thẩm định yêu cầu 30
3.3 MỘT SỐ KỸ THUẬT THU THẬP THÔNG TIN 30
3.3.1 Phỏng vấn 30
3.3.2 Họp nhóm 34
3.3.3 Quan sát 34
3.3.4 Ấn định công việc tạm thời 35
3.3.5 Điều tra qua câu hỏi 35
3.3.6 Xem xét tài liệu 36
3.3.7 Xem xét phần mềm 36
3.3.8 Làm bản mẫu 36
3.4 MÔ HÌNH HÓA 38
3.4.1 Biểu đồ luồng dữ liệu 39
3.4.2 Biểu đồ thực thể quan hệ 39
3.5 TÀI LIỆU YÊU CẦU 40
3.5.1 Yêu cầu của tài liệu 40
3.5.2 Định dạng tài liệu đặc tả 41
CÂU HỎI VÀ BÀI TẬP ÔN TẬP CHƯƠNG 3 42
4.1 THIẾT KẾ VÀ VAI TRÒ CỦA THIẾT KẾ 43
4.1.1 Khái niệm 43
4.1.2 Vai trò của thiết kế 43
Trang 64.2 ĐẶC ĐIỂM VÀ CÁC NGUYÊN LÝ THIẾT KẾ 44
4.2.1 Đặc điểm của quá trình thiết kế 44
4.2.2 Các nguyên lý thiết kế 46
4.3 NỀN TẢNG THIẾT KẾ 46
4.3.1 Trừu tượng 47
4.3.2 Làm mịn 47
4.3.3 Tính module 47
4.3.4 Kiến trúc phần mềm 47
4.3.5 Che dấu thông tin 47
4.3.6 Thiết kế module 48
4.4 NỘI DUNG THIẾT KẾ 48
4.4.1 Các giai đoạn trong quá trình thiết kế 48
4.4.2 Nội dung chính của thiết kế 48
4.5 CHẤT LƯỢNG THIẾT KẾ 50
4.5.1 Đặc trưng của một thiết kế tốt 50
4.5.2 Độ đo chất lượng thiết kế 50
4.6 TÍCH HỢP CÁC MODULE CHƯƠNG TRÌNH 53
4.6.1 Tích hợp nền 54
4.6.2 Tích hợp dữ liệu 55
4.6.3 Tích hợp trình bày 56
4.6.4 Tích hợp điều khiển 57
4.6.5 Tích hợp tiến trình 59
4.7 CHIẾN LƯỢC THIẾT KẾ 59
4.7.1 Thiết kế hướng chức năng 60
4.7.2 Thiết kế hướng đối tượng 60
4.8 THIẾT KẾ KIẾN TRÚC VÀ MỘT SỐ MÔ HÌNH THIẾT KẾ 62
4.8.1 Thiết kế kiến trúc ứng dụng 62
4.8.2 Một số mô hình thiết kế ứng dụng 63
4.9 THIẾT KẾ GIAO DIỆN 65
4.9.1 Một số vấn đề thiết kế 67
4.9.2 Một số hướng dẫn thiết kế giao diện 67
CÂU HỎI ÔN TẬP TẬP CHƯƠNG 4 68
Trang 7Chương 5: LẬP TRÌNH HIỆU QUẢ 69
5.1 NGÔN NGỮ LẬP TRÌNH 69
5.1.1 Đặc trưng của ngôn ngữ lập trình 69
5.2 NỀN TẢNG CỦA NGÔN NGỮ LẬP TRÌNH 70
5.2.1 Kiểu dữ liệu, định nghĩa kiểu dữ liệu và kiểm tra kiểu dữ liệu 70
5.2.2 Chương trình con 72
5.2.3 Cấu trúc điều khiển 72
5.2.4 Vào và ra dữ liệu 73
5.2.5 Quản lý bộ nhớ 74
5.2.6 Quản lý lỗi 74
5.3 SO SÁNH MỘT SỐ NGÔN NGỮ LẬP TRÌNH 74
5.4 LỰA CHỌN NGÔN NGỮ LẬP TRÌNH 78
5.5 PHONG CÁCH LẬP TRÌNH 78
5.5.1 Tài liệu chương trình 79
5.5.2 Khai báo dữ liệu 80
5.5.3 Xây dựng câu lệnh 80
5.5.4 Vào và ra 81
5.6 LẬP TRÌNH TRÁNH LỖI 81
5.6.1 Lập trình thứ lỗi 82
5.6.2 Lập trình phòng thủ 83
5.7 LẬP TRÌNH HƯỚNG HIỆU QUẢ 84
5.7.1 Tính hiệu quả chương trình 84
5.7.2 Hiệu quả bộ nhớ 84
5.7.3 Hiệu quả vào/ra 84
5.8 CẢI TIẾN HIỆU SUẤT CHƯƠNG TRÌNH 85
5.8.1 Tốc độ xử lý 85
5.8.1.1 Thuật toán sử dụng 85
5.8.2 Không gian bộ nhớ 86
5.8.3 Lựa chọn hệ thống và phần cứng 87
CÂU HỎI ÔN TẬP CHƯƠNG 5 87
Chương 6: KIỂM THỬ VÀ BẢO TRÌ 89
6.1 TỔNG QUAN VỀ KIỂM THỬ 89
Trang 86.1.1 Khái niệm xác minh và thẩm định 89
6.1.2 Hạn chế của kiểm thử 90
6.1.3 Chất lượng và việc đảm bảo chất lượng phần mềm 91
6.1.4 Các lỗi thường gặp 92
6.1.5 Khái niệm về phép thử 93
6.1.6 Nguyên tắc kiểm thử 93
6.1.7 Các mức kiểm thử 93
6.2 QUY TRÌNH KIỂM THỬ 94
6.3 CHIẾN LƯỢC KIỂM THỬ 96
6.6.1 Thử nghiệm từ trên xuống 96
6.6.2 Thử nghiệm dưới lên 97
6.4 MỘT SỐ KỸ THUẬT KIỂM THỬ 97
6.4.1 Thử nghiệm chức năng 97
6.4.2 Thử nghiệm cấu trúc 98
6.5 CÔNG CỤ KIỂM THỬ 100
6.6 BẢO TRÌ PHẦN MỀM 101
6.6.1 Hoạt động bảo trì phần mềm và phân loại 101
6.6.2 Đặc điểm của bảo trì phần mềm 102
6.6.3 Công việc bảo trì phần mềm và một số hiệu ứng lề 105
6.6.4 Một số hình thức bảo trì phần mềm 109
6.6.5 Quản lý thay đổi phần mềm 111
CÂU HỎI ÔN TẬP CHƯƠNG 6 114
TÀI LIỆU THAM KHẢO 115