1. Trang chủ
  2. » Cao đẳng - Đại học

2014 của Chính phủ về kinh doanh và điều kiện kinh doanh vận tải bằng xe ôtô - Trường Đại Học Quốc Tế Hồng Bàng

20 11 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Chi phí của việc phát triển phần mềm không có phương pháp 169THUẬT NGỮ VIẾT TẮT 12 LỜI NÓI ĐẦU ... LỊCH SỬ HÌNH THÀNH VÀ PHÁT TRIỂN ... Quá trình tiến hóa của phần mềm ... Sự ra đời của[r]

(1)

MỤC LỤC

MỤC LỤC

DANH MỤC BẢNG BIỂU

DANH MỤC HÌNH ẢNH 10

Hình 8-1 Chi phí việc phát triển phần mềm khơng có phương pháp 169THUẬT NGỮ VIẾT TẮT 12 LỜI NÓI ĐẦU 14

Chương 1: MỞ ĐẦU 15

1.1 LỊCH SỬ HÌNH THÀNH VÀ PHÁT TRIỂN 15

1.1.1 Q trình tiến hóa phần mềm 15

1.1.2 Sự đời công nghệ phần mềm 16

1.2 MỘT SỐ KHÁI NIỆM CƠ BẢN TRONG LĨNH VỰC CÔNG NGHỆ PHẦN MỀM 17

1.2.1 Khái niệm phần mềm 17

1.2.2 Khái niệm công nghệ phần mềm 18

1.2.3 Sự khác giữa công nghệ phần mềm và khoa học máy tính 18

1.2.4 Tiến trình phần mềm 18

1.2.5 Mơ hình tiến trình phần mềm 19

1.2.6 Chi phí cơng nghệ phần mềm 20

1.2.7 Phương pháp công nghệ phần mềm 20

Bảng 1.1 Các thành phần mơ hình hệ thống 20

1.2.8 CASE - Các công cụ công nghệ phần mềm 21

1.2.9 Những tḥc tính phần mềm tớt 21

Bảng 1.2 Các thuộc tính phần mềm 21

1.2.10 Những thách thức bản lĩnh vực phát triển phần mềm 22

1.3 MỘT SỐ VẤN ĐỀ VỀ ĐẠO ĐỨC CỦA CÁC CHUYÊN GIA CNTT 22

1.3.1 Những mối quan hệ cần phải quản lý chuyên gia công nghệ thông tin 23

1.3.2 Những quy tắc đạo đức chuyên gia CNTT 25

CÂU HỎI ÔN TẬP 27

Chương 2: TIẾN TRÌNH PHẦN MỀM 28

2.1 MƠ HÌNH TIẾN TRÌNH PHẦN MỀM 28

2.1.1 Mơ hình thác nước 29

2.1.2 Phát triển tiến hóa 31

2.1.3 Công nghệ phần mềm hướng thành phần 32

2.2 TIẾN TRÌNH LẶP 33

2.2.1 Mơ hình gia tăng 34

2.2.2 Mơ hình xoắn ốc 35

(2)

2.3.1 Đặc tả phần mềm 37

2.3.2 Thiết kế và thực thi phần mềm 38

2.3.3 Thẩm định phần mềm 40

2.3.4 Cải tiến phần mềm 42

2.4 RUP – TIẾN TRÌNH SẢN XUẤT PHẦN MỀM CỦA RATIONAL 42

2.5 KỸ NGHỆ PHẦN MỀM CÓ MÁY TÍNH TRỢ GIÚP (CASE) 44

CÂU HỎI ÔN TẬP 45

Chương 3: QUẢN LÝ DỰ ÁN PHẦN MỀM 46

3.1 CÁC KHÁI NIỆM CƠ BẢN 46

3.1.1 Khái niệm dự án 46

3.1.2 Các đặc trưng dự án 47

3.1.3 Quản lý dự án 47

3.2 QUẢN LÝ DỰ ÁN THEO PHƯƠNG PHÁP PHÁT TRIỂN TRUYỀN THỐNG 48

3.2.1 Các hoạt động quản lý dự án 48

3.2.2 Lập kế hoạch dự án 49

Bảng 3.1 Các kiểu kế hoạch cần cho dự án 50

a) Tiến trình lập kế hoạch dự án 50

b) Cấu trúc kế hoạch dự án 51

c) Các mốc quan trọng sản phẩm bàn giao 52

3.2.3 Lập lịch dự án 52

a) Tiến trình lập lịch 52

3.2.4 Phương pháp công cụ lập lịch 53

Bảng 3-2 Bảng liệt kê công việc dự án đánh dấu 54

Bảng 3.3 Bảng phân công công việc 58

3.3 QUẢN LÝ RỦI RO ĐỐI VỚI DỰ ÁN PHÁT TRIỂN PHẦN MỀM 58

3.3.1 Khái niệm rủi ro 58

Bảng 3.4 Bảng phân loại rủi ro 59

3.3.2 Tiến trình quản lý rủi ro 59

a) Xác định rủi ro 60

Bảng 3.5 Bảng đánh giá số tình rủi ro 61

Rủi ro 61

Khả xảy ra 61

Ảnh hưởng 61

Vấn đề tài chính của tổ chức gặp khủng hoảng và phải giảm ngân sách cho dự án 61

Thấp 61

Rất nghiêm trọng 61

Không thể thành lập một đội ngũ nhân viên có những kỹ theo yêu cầu 61

(3)

Rất nghiêm trọng 61

Những nhân viên quan trọng bị ốm và không thể làm việc tại những thời điểm quan trọng 61 Trung bình 61

Nghiêm trọng 61

Các thành phần phần mềm được sử dụng lại có chứa những khuyết điểm làm hạn chế khả của hệ thống 61

Trung bình 61

Nghiêm trọng 61

Việc thay đổi yêu cầu đòi hỏi phải thiết kế lại những công việc chính 61

Trung bình 61

Nghiêm trọng 61

Tổ chức được cấu trúc lại và thay đổi người quản lý dự án 61

Cao 61

Nghiêm trọng 61

Cơ sở dữ liệu sử dụng hệ thống không thể xử lý nhiều giao dịch tại cùng một thời điểm 61

Thấp 61

Khủng khiếp 61

Ước lượng: thời gian cần thiết để phát triển quá ngắn 61

Cao 61

Nghiêm trọng 61

Bảng 3.6 Các yếu tố rủi ro 62

3.4 KẾT THÚC DỰ ÁN 63

3.5 CẤU TRÚC TÀI LIỆU QUẢN LÝ DỰ ÁN 63

CÂU HỎI ÔN TẬP 64

Chương 4: XÁC ĐỊNH VÀ ĐẶC TẢ YÊU CẦU PHẦN MỀM 65

4.1 TỔNG QUAN VỀ YÊU CẦU PHẦN MỀM 65

4.1.1 Khái niệm yêu cầu phần mềm 65

4.1.2 Phân loại yêu cầu phần mềm 66

A) YÊU CẦU CHỨC NĂNG 67

B) YÊU CẦU PHI CHỨC NĂNG 68

Thuộc tính 70

Thước đo 70

Tốc độ 70

(4)

Thời gian trả lời một sự kiện/người dùng 70

Thời gian làm mới màn hình 70

Kích thước 70

M Bytes 70

Dung lượng bộ nhớ ROM/RAM 70

Tính dễ sử dụng 70

Thời gian huấn luyện 70

Số màn hình trợ giúp 70

Độ tin cậy 70

Thời gian trung bình kiểm soát lỗi 70

Phần trăm thời gian hệ thống không thực hiện 70

Tỷ lệ lỗi xảy 70

Tính sẵn sàng 70

Sức kháng cự 70

Thời gian để khởi động lại sau một lỗi 70

Phần trăm của các sự kiện phát sinh lỗi 70

Xác suất của việc sai lệch dữ liệu có lỗi 70

Tính khả chuyển 70

Lựa chọn ngôn ngữ cho giao diện phần mềm 70

Lựa chọn hệ thống cho việc cài đặt phần mềm 70

HÌNH 4.4 VÍ DỤ VỀ CÁC U CẦU PHI CHỨC NĂNG 71

4.2 TIẾN TRÌNH KỸ NGHỆ YÊU CẦU 72

4.2.1 Khảo sát hệ thớng phân tích tính khả thi 72

4.2.2 Tiến trình phát phân tích u cầu 72

4.2.3 Các phương pháp phát yêu cầu 74

4.2.4 Các kỹ thuật phân tích yêu cầu 76

A) TIẾP CẬN YÊU CẦU ĐỊNH HƯỚNG CÁCH NHÌN (VIEWPOINT) 76

B) KỸ THUẬT XÁC ĐỊNH YÊU CẦU HƯỚNG CÁCH NHÌN VORD (VIEWPOINT ORIENTED REQUIREMENT DEFINITION) 77

C) KỸ THUẬT PHÂN TÍCH U CẦU DỰA TRÊN MƠ HÌNH 77

D) CÁC CÁCH BIỂU DIỄN CỦA MÔ HÌNH PHÂN TÍCH 79

Bảng 4.2 Biểu diễn mơ hình nghiệp vụ theo cách tiếp cận 79

(5)

A) VÍ DỤ PHÂN TÍCH HƯỚNG CẤU TRÚC 80

HÌNH 4.7 BIỂU ĐỒ NGỮ CẢNH CỦA HỆ THỐNG 80

Bảng 4.3 Danh sách hồ sơ liệu sử dụng 80

81

Bảng 4.4 Mô tả chi tiết chức rút tiền 81

4.3 ĐẶC TẢ YÊU CẦU PHẦN MỀM 82

4.3.1 Khái niệm 82

4.3.2 Các phương pháp đặc tả 83

4.3.3 Cấu trúc tài liệu đặc tả 84

Chương 5: UML – XÂY DỰNG VÀ THIẾT KẾ CÁC MƠ HÌNH HỆ THỐNG 87

5.1 GIỚI THIỆU VỀ UML 87

5.1.1 Mơ hình hóa hệ thớng phần mềm 87

5.1.2 Lịch sử hình thành và phát triển 88

5.1.2 UML và giai đoạn phát triển hệ thớng 89

5.2 MỘT SỐ MƠ HÌNH UML DÙNG TRONG PHÂN TÍCH VÀ THIẾT KẾ 89

5.2.1 Mơ hình ngữ cảnh 89

5.2.2 Mơ hình trường hợp sử dụng (USE-CASE) 91

Bảng 5.1 Bảng thông tin mô tả Use-case 93

5.2.3 Mơ hình lớp đới tượng 93

5.2.4 Mơ hình (Sequence diagram) 98

5.2.5 Mơ hình trạng thái máy 100

Chương 6: THIẾT KẾ PHẦN MỀM 103

6.1 TỔNG QUAN VỀ THIẾT KẾ PHẦN MỀM 103

6.1.1 Giới thiệu chung 103

a Khái niệm thiết kế 103

b Vai trò thiết kế 104

c Một số khái niệm thiết kế 104

6.1.2 Thiết kế phần mềm 105

a Tiến trình thiết kế 105

(6)

c Biểu diễn thiết kế 107

d Các giai đoạn thiết kế 107

6.1.3 Các chiến lược và phương pháp thiết kế 108

a Thiết kế hướng chức 108

b Thiết kế hướng đối tượng 109

6.1.4 Chất lượng thiết kế và giải pháp đảm bảo chất lượng 109

a Sự kết dính 109

b Sự ghép nối 110

c Tính hiểu 111

d Sự thích nghi 112

e Một số hướng dẫn thiết kế 112

6.2.1 Khái niệm – tầm quan trọng thiết kế kiến trúc 114

a Khái niệm 114

b Vai trò tầm quan trọng kiến trúc 114

c Kiến trúc đặc điểm hệ thống 114

6.2.2 Các định thiết kế kiến trúc 115

a Tái sử dụng mẫu kiến trúc 116

b Phát triển sử dụng mơ hình kiến trúc 116

6.2.3 Tổ chức hệ thống 117

a Mơ hình kho liệu 117

b Mơ hình máy khách/chủ (client/server) 118

c Mơ hình máy ảo/phân tầng 119

6.2.4 Các mơ hình điều khiển 121

a Điều khiểu tập trung 121

b Mơ hình điều khiển dựa kiện 123

6.2.5 Tiến trình thiết kế kiến trúc 124

a Cấu trúc hệ thống 125

b Phân chia module 126

6.3 THIẾT KẾ HƯỚNG ĐỐI TƯỢNG 128

6.3.1 Một số đặc điểm bản thiết kế hướng đối tượng 128

a Chiến lược thiết kế hướng đối tượng 128

b Đặc điểm thiết kế hướng đối tượng 128

6.3.2 Đối tượng và lớp đối tượng 129

a Khái niệm đối tượng lớp đối tượng 129

b Trao đổi thông tin lớp đối tượng 129

c Khái quát hóa kế thừa lớp đối tượng 130

6.3.3 Tiến trình thiết kế hướng đới tượng 131

a Giới thiệu hoạt động trạm thời tiết 131

b Mơ hình ngữ cảnh mơ hình sử dụng 132

Bảng 6.1 Mô tả use-case 132

c Thiết kế kiến trúc 133

(7)

e Xây dựng mô hình thiết kế 136

f Đặc tả giao diện đối tượng 140

6.3.4 Cải tiến và tái sử dụng bản thiết kế 141

Chương 7: KIỂM THỬ PHẦN MỀM 144

7.1 GIỚI THIỆU CHUNG 144

7.1.1 Mục tiêu kiểm thử 145

7.1.2 Tiến trình kiểm thử phần mềm 145

7.2 KIỂM THỬ HỆ THỐNG 147

7.2.1 Kiểm thử tích hợp 147

7.2.2 Kiểm thử phát hành 149

7.2.3 Xây dựng kịch bản kiểm thử hệ thống 150

7.2.4 Kiểm thử hiệu 151

7.3 KIỂM THỬ THÀNH PHẦN 152

7.3.1 Kiểm thử lớp đối tượng 152

7.3.2 Kiểm thử giao diện 153

7.4 THIẾT KẾ TRƯỜNG HỢP KIỂM THỬ (TEST CASE DESIGN) 155

7.4.1 Kiểm thử dựa yêu cầu 155

7.4.2 Kiểm thử phân vùng 156

Bảng 7.1 Các phân hoạch tương đương cho chương trình tìm kiếm 159

7.4.3 Kiểm thử cấu trúc 159

Bảng 7.2 Các trường hợp kiểm thử cho thuật tốn tìm kiếm nhị phân 161

7.4.4 Kiểm thử đường (path testing) 161

7.5 CÔNG CỤ KIỂM THỬ TỰ ĐỘNG 162

Chương 8: BẢO TRÌ PHẦN MỀM VÀ QUẢN LÝ THAY ĐỔI 166

8.1 PHÂN LOẠI HOẠT ĐỘNG BẢO TRÌ PHẦN MỀM 166

8.1.1 Bảo trì hiệu chỉnh 166

8.1.2 Bảo trì cải tiến 166

8.1.3 Bảo trì hoàn thiện 166

8.1.4 Bảo trì phịng ngừa 167

8.2 ĐẶC ĐIỂM CỦA BẢO TRÌ PHẦN MỀM 167

8.2.1 Bảo trì có cấu trúc và bảo trì khơng cấu trúc 167

8.2.2 Giá thành bảo trì 168

8.2.3 Mợt sớ khó khăn khác bảo trì 169

8.3 CƠNG VIỆC BẢO TRÌ PHẦN MỀM VÀ MỘT SỐ HIỆU ỨNG LỀ 170

8.3.1 Khả bảo trì 170

8.3.2 Các cơng việc bảo trì 171

8.3.3 Mợt sớ hiệu ứng lề cơng việc bảo trì 173

8.4 MỘT SỐ HÌNH THỨC BẢO TRÌ PHẦN MỀM 174

8.4.1 Bảo trì mã chương trình xa lạ 174

8.4.2 Cơng nghệ phản hồi và công nghệ tái sử dụng 175

8.4.3 Bảo trì dự phịng 175

(8)

8.5 QUẢN LÝ THAY ĐỔI PHẦN MỀM 176

8.5.1 Các thủ tục quản lý thay đổi 176

8.5.2 Ghi định theo thời gian 178

8.5.3 Quản lý thay đổi tài liệu 178

(9)

DANH MỤC BẢNG BIỂU

Bảng 1-1 Các thành phần mơ hình hệ thớng 15

Bảng 1-2 Các tḥc tính phần mềm 16

Bảng 3-1 Các kiểu kế hoạch cần cho dự án 44

Bảng 3-2 Bảng liệt kê công việc dự án và đánh dấu 49

Bảng 3-3 Bảng phân công công việc 53

Bảng 3-4 Bảng phân loại rủi ro 54

Bảng 3-5 Bảng đánh giá một sớ tình h́ng rủi ro 56

Bảng 3-6 Các yếu tố rủi ro 57

Bảng 4-1 Thước đo định lượng tḥc tính phi chức 64

Bảng 4-2 Cách mơ hình nghiệp vụ theo cách tiếp cận 74

Bảng 4-3 Danh sách hồ sơ dữ liệu sử dụng 75

Bảng 5-1 Bảng thông tin mô tả Use-case 89

Bảng 6-1 Mô tả một use-case 129

(10)

DANH MỤC HÌNH ẢNH

Hình 1-1 Phần trăm chi phí giai đoạn tiến trình phần mềm 16

Hình 2-1 Mơ hình thác nước 25

Hình 2-2 Mơ hình phát triển phần mềm theo kiểu tiến hóa 27

Hình 2-3 Mơ hình phát triển hướng thành phần 28

Hình 2-4 Mơ hình phát triển gia tăng 30

Hình 2-5 Mơ hình xoắn ớc 32

Hình 2-6 Các giai đoạn phân tích u cầu 33

Hình 2-7 Các hoạt đợng tiến trình thiết kế 35

Hình 2-8 Tiến trình kiểm thử 36

Hình 2-9 Kế hoạch kiểm thử kết nới với hoạt đợng phát triển phần mềm 37

Hình 2-10 Tiến trình cải tiến sản phẩm phần mềm 38

Hình 2-11 Mơ hình tiến trình RUP 39

Hình 3-1 Tiến trình triển khai mợt dự án 44

Hình 3-2 Tiến trình lập kế hoạch thực dự án 47

Hình 3-3 Các cợt mớc tiến trình xác định u cầu 48

Hình 3-4 Tiến trình lập lịch cho hoạt đợng dự án 49

Hình 3-5 Các ký pháp sơ đồ mạng 50

Hình 3-6 Tiến trình lập lịch biểu sơ đồ mạng 50

Hình 3-7 Sơ đồ mạng cơng việc 53

Hình 3-8 Biểu đồ Gantt lịch trình dự án Error! Bookmark not defined. Hình 3-9 Biểu đồ khới lịch trình cơng việc Error! Bookmark not defined. Hình 3-10 Tiến trình quản lý rủi ro 57

Hình 4-1 Yêu cầu người dùng u cầu hệ thớng 63

Hình 4-2 Đới tượng đọc những tài liệu đặc tả khác 63

Hình 4-3 Các kiểu yêu cầu phi chức 66

Hình 4-4 Ví dụ yêu cầu phi chức 68

Hình 4-5 Tiến trình phát phân tích u cầu Error! Bookmark not defined. Hình 4-6 Tiến trình phương pháp VORD 74

Hình 4-7 Biểu đồ ngữ cảnh hệ thớng 77

Hình 4-8 Mô tả yêu cầu một chức sơ cấp 77

Hình 4-9 Ma trận thực thể - chức 78

Hình 4-10 Biểu đồ trường hợp sử dụng mức cao 78

(11)

Hình 4-12 Biểu đồ trường hợp sử dụng mức chi tiết 79

Hình 4-13 Mơ hình miền lĩnh vực hệ thớng ATM 79

Hình 5-1 Sơ đồ ngữ cảnh hệ thống ATM ngân hàng 88

Hình 5-2 Mơ hình tiến trình đặt mua thiết bị 89

Hình 5-3 Biểu đổ USE-CASE hệ thớng ngân hàng 90

Hình 5-4 Phân biệt đối tượng và lớp đối tượng 92

Hình 5-5 Mợt lớp với tḥc tính tiêu biểu 93

Hình 5-6 Mợt lớp với tḥc tính chung riêng ERROR! BOOKMARK NOT DEFINED. Hình 5-7 Mợt lớp với tḥc tính và giá trị mặc định Error! Bookmark not defined. Hình 5-8 Ký hiệu đới tượng Error! Bookmark not defined. Hình 5-9 Vai trò liên hệ giữa Customer và Account 94

Hình 5-10 Mợt biểu đồ lớp tiêu biểu 95

Hình 5-11 Khái qt hóa và chun biệt hố 96

Hình 5-12 Biểu đồ kịch bản chức rút tiền mặt máy ATM 97

Hình 5-13 Biểu đồ kịch bản chức rút tiền mặt máy ATM 99

Hình 5-14 Lược đồ trạng thái lị vi sóng Error! Bookmark not defined. Hình 6-1 Mơ hình tiến trình thiết kế ERROR! BOOKMARK NOT DEFINED. Hình 6-2 Các hoạt động thiết kế và sản phẩm chúng Error! Bookmark not defined. Hình 6-3 Mơ hình hệ thớng hướng cấu trúc Error! Bookmark not defined. Hình 6-4 Hướng dẫn thiết kế tránh chia nhỏ module cố gắng co cụm tăng chiều sâu 111

Hình 6-5 Phạm vi hiệu quả việc kiểm sốt module 111

Hình 6-6 Kiến trúc bợ cơng cụ CASE tích hợp ERROR! BOOKMARK NOT DEFINED. Hình 6-7 Kiến trúc hệ thống tra cứu ảnh và video sớ Error! Bookmark not defined. Hình 6-8 Mơ hình kiến trúc hệ thớng quản lý cấu hình Error! Bookmark not defined. Hình 6-9 Mơ hình gọi – trả lời 120

Hình 6-10 Mơ hình quản lý tập trung cho hệ thống thời gian thực 121

Hình 6-11 Mơ hình điều khiển dựa quảng bá có tuyển chọnERROR! BOOKMARK NOT DEFINED. Hình 6-12 Mợt mơ hình điều khiển ngắt Error! Bookmark not defined. Hình 6-13 Sơ đồ kiến trúc hệ thớng điều khiển robot bao góiError! Bookmark not defined. Hình 6-14 Mơ hình hướng đới tượng hệ thớng xử lý hóa đơn 125

Hình 6-15 Mơ hình đường ớng chức hệ thớng xử lý hóa đơn 126 Hình 6-16 Mơ hình lớp đới tượng “Tài khoản” ERROR! BOOKMARK NOT DEFINED.

(12)

Hình 6-18 Mơ hình Use-case trạm khí tượng Error! Bookmark not defined.

Hình 6-19 Kiến trúc hệ thớng trạm khí tượng 132 Hình 6-20 Các lớp đới tượng hệ thớng trạm khí tượng 134 Hình 6-21 Mơ hình hệ thớng trạm khí tượngERROR! BOOKMARK NOT DEFINED.

Hình 6-22 Mơ hình phương thức report() hệ thớng trạm khí tượng Error! Bookmark not defined.

Hình 6-23 Lược đồ trạng thái đới tượng WeatherStation Error! Bookmark not defined.

Hình 6-24 Giao diện đới tượng WeatherStation 139 Hình 6-25 Các đới tượng hệ thống sau bổ xung thiết bị đo đợ nhiễm 141 Hình 7-1 Các giai đoạn kiểm thử Error! Bookmark not defined.

Hình 7-2 Tiến trình kiểm thử phần mềm Error! Bookmark not defined.

Hình 7-3 Mợt trường hợp tích hợp tăng dần Error! Bookmark not defined.

Hình 7-4 Mơ hình kiểm thử hợp đen 149 Hình 7-5 Một kịch bản mô tả một chức hệ thớng thư viện LIBSYS 150 Hình 7-6 Giao diện đới tượng WeatherStation 152 Hình 7-7 Mơ hình trạng thái đối tượng Weather Station hệ thống trạm thời tiết ERROR! BOOKMARK NOT DEFINED.

Hình 7-8 Tiến trình kiểm thử giao diện Error! Bookmark not defined.

Hình 7-9 Phân vùng tương đương Error! Bookmark not defined.

Hình 7-10 Các phân vùng tương đương 157 Hình 7-11 Đoạn đặc tả chương trình tìm kiếm dãy 158 Hình 7-12 Kiểm thử cấu trúc Error! Bookmark not defined.

Hình 7-13 Các lớp tương đương tìm kiếm nhị phân Error! Bookmark not defined.

Hình 7-14 Thuật tốn tìm kiếm nhị phân Error! Bookmark not defined.

Hình 7-15 Đồ thị luồng chương trình tìm kiếm nhị phân 162 Hình 7-16 Mơ hình mợt cơng cụ tích hợp kiểm thử 163 Hình 8-1 Chi phí việc phát triển phần mềm khơng có phương pháp Error! Bookmark not

(13)

THUẬT NGỮ VIẾT TẮT Chữ viết

tắt

Chi tiết tiếng Anh Nghĩa tiếng Việt

APSE Ada Programming Support Environnement

Môi trường hỗ trợ ngơn ngữ lập trình Ada

ATM Automated Teller Machine Máy rút tiền tự động

CASE Computer Aided Software Engineering Cơng nghệ phần mềm được máy tính trợ giúp

CNTT Công nghệ thông tin

COST Commercial off-the-shelf Gói phần mềm thương mại CPM Critical Path Method Phương pháp đường găng

CSDL Cơ sở dữ liệu

ERP Entreprise Resource Planing Quản trị tài nguyên doanh nghiệp ICSE Internetional Conference of SE Hội thảo quốc tế công nghệ phần

mềm IEEE Institute Electrical and Electronic

Engineers

Viện kỹ nghệ điện và điện tử OOA Object Oriented Analysis Phân tích hướng đới tượng OOD Object Oriented Design Thiết kế hướng đối tượng

OOP Object Oriented Programme Lập trình hướng đới tượng

SAP Systems Applications and Products Các hệ thống ứng dụng và sản xuất SE Software Engineering Công nghệ phần mềm

(14)

LỜI NÓI ĐẦU

Sau gần thập kỷ phát triển, công nghệ phần mềm (SE - Software Engineering) đến được xem là một phân ngành quan trọng chuyên ngành công nghệ thông tin

Xuất phát từ cuộc khủng hoảng phần mềm cuối những năm 60, nhà quản lý và chuyên gia công nghệ thông tin nhận nhu cầu cách tiếp cận có ngun tắc đới với việc phát triển phần mềm Công nghệ phần mềm không đơn là việc sinh một sản phẩm phần mềm, mà liên quan đến việc tạo một sản phẩm phần mềm một cách hiệu quả Với những nguồn lực phần mềm khơng hạn chế, đa sớ vấn đề phần mềm giải Tuy nhiên, thách thức lớn đối với kỹ sư phần mềm là phải tạo một sản phẩm có chất lượng cao với chi phí thấp và thời gian phát triển tn theo mợt lịch trình định trước

Bài giảng này trình bày những vấn đề bản sau công nghệ phần mềm:

1. Những vấn đề công nghệ phần mềm: giới thiệu khái quát lịch sử hình thành

và phát triển công nghệ phần mềm, những khái niệm bản liên quan đến công nghệ phần mềm

2 Tiến trình phát triển phần mềm: tìm hiểu quy trình và cách thức bản để phát triển phần mềm Nêu những bước phát triển phần mềm: Khảo sát, phân tích hệ thớng và yêu cầu phần mềm, thiết kế hệ thống và phát triển phần mềm, kiểm thử và bảo trì phần mềm

3 Công cụ hỗ trợ hoạt động phát triển phần mềm: Nhấn mạnh trợ giúp đắc lực cơng cụ phần mềm máy tính cho tiến trình phát triển phần mềm nhằm đạt được suất và chất lượng cao

4 Vấn đề quản lý dự án phần mềm: Tiến trình phát triển dự án phần mềm và việc quản lý mợt cách hiệu quả

Bài giảng này được biên soạn lần đầu để giảng dạy cho sinh viên chuyên ngành tin học quản lý thông tin Học viện Nông nghiệp Việt Nam Nó cung cấp những kiến thức có tính tảng vấn đề phát triển phần mềm cho những người hoạt đợng lĩnh vực tin học nói chung cho sinh viên khoa Công nghệ thông tin nói riêng

Tác giả xin chân thành cảm ơn đồng nghiệp khoa Công nghệ thông tin, Học viện Nông nghiệp Việt Nam cho những ý kiến đóng góp để hoàn thiện tài liệu này

Mặc dù cố gắng tham khảo nhiều tài liệu khác nhau, đúc rút từ thực tiễn giảng dạy và nghiên cứu khoa học, tổ chức biên soạn một cách công phu và kỹ càng, bài giảng không tránh khỏi nhiều thiếu sót Tác giả chân thành mong đợi góp ý bạn đồng nghiệp, sinh viên và độc giả để tài liệu ngày càng hoàn thiện

Mọi ý kiến đóng góp xin gửi địa chỉ: Bộ môn Công nghệ phần mềm - Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam

(15)

Chương 1: MỞ ĐẦU

Ngày nay, hầu hết hoạt động quốc gia phụ thuộc vào hệ thống máy tính phức tạp, phần mềm hoạt đợng máy tính trở thành điều kiện sớng cịn máy tính Cơ sở hạ tầng, tiện ích dựa hệ thớng máy tính, sản phẩm điện tử bao gồm mợt máy tính và phần mềm điều khiển, sản xuất công nghiệp và dịch vụ phân phới dựa hoàn tồn vào máy tính Do đó, việc sản xuất và bảo trì mợt cách hiệu quả với chi phí hợp lý là vấn đề chủ yếu ảnh hưởng tới phát triển kinh tế quốc gia và quốc tế

Sau một thời gian ngành sản xuất phần mềm rơi vào khủng hoảng, nhà khoa học nhanh chóng nhận tầm quan trọng việc đưa phương pháp luận cho phát triển phần mềm Từ khái niệm cơng nghệ phần mềm đời Công nghệ phần mềm là kỹ nghệ bản tập trung chủ yếu vào việc phát triển phần mềm có chất lượng cao, hiệu quả với chi phí và thời gian phát triển hợp lý Chương này giới thiệu lịch sử hình thành và phát triển ngành công nghệ phần mềm, một số khái niệm bản có liên quan Phần ći chương đề cập đến một số vấn đề đạo đức chuyên gia CNTT, từ giúp người học có ý thức vai trò và trách nhiệm họ tham gia vào thị trường lao động lĩnh vực này

1.1 LỊCH SỬ HÌNH THÀNH VÀ PHÁT TRIỂN

Trước thập kỷ 90 kỷ XX, công nghệ thông tin tập trung nhiều cho phát triển phần cứng, nhằm giảm giá thành xử lý và tăng dung lượng lưu trữ dữ liệu Từ thập kỷ 90 kỷ XX trở lại đây, phát triển công nghệ thông tin tập trung nhiều vào cải thiện chất lượng và giảm giá thành giải pháp dựa máy tính, tức là phương pháp được cài đặt phần mềm Sự cấp bách này nhu cầu phần mềm ngày càng tăng nhanh cả số lượng, quy mô tính

1.1.1 Q trình tiến hóa phần mềm

Q trình tiến hóa phần mềm diễn qua thời kỳ tăng dần cùng với tiến bộ phần cứng

a) Những năm 1950s đến năm 1960s

Trong giai đoạn này, phần cứng có lực hạn chế và thay đổi liên tục, phần mềm phần lớn mang tính chun dụng Lập trình máy tính "theo bản năng" và được xem là mợt nghệ thuật, chưa có phương pháp mang tính hệ thớng, phát triển phần mềm chưa được quản lý, phần lớn hệ thống xử lý theo lơ

Mơi trường phát triển phần mềm mang tính cá nhân, tiến trình phát triển phần mềm khơng tường minh, thường khơng có tài liệu Sản xuất phần mềm mang tính đơn chiếc, theo đơn đặt hàng, chương trình cịn cho phép chấp nhận lỗi Kết quả là, những người làm phần mềm học được việc cài đặt mợt hệ thớng dựa máy tính, không học được nhiều kỹ nghệ làm phần mềm một cách hiệu quả

b) Những năm 1960s đến năm 1970s

(16)

- Hệ thống thời gian thực đời, bao gồm việc thu thập, phân tích, biến đổi dữ liệu từ nhiều nguồn khác để kiểm soát tiến trình Hệ thớng phải đưa u cầu đáp ứng phần nghìn giây, thay nhiều phút trước

- Tiến bộ lưu trữ trực tuyến làm xuất hệ quản trị sở liệu hệ đầu.

- Số lượng hệ thống dựa máy tính phát triển, nhu cầu phân phới mở rộng, thư viện phần mềm phát triển, quy mô phần mềm ngày càng lớn Vì nảy sinh nhu cầu sửa chữa chương trình gặp lỗi, hay người dùng u cầu chương trình phải thích nghi với những thay đổi mơi trường Cơng việc bảo trì phần mềm làm phát sinh những bức xúc, tiêu tốn nhiều công sức và tài nguyên đến mức báo động

c) Giữa năm 1970s – 1990s

Thời kỳ này đặc trưng việc phát triển mạng toàn cục và cục bợ, truyền thơng tín hiệu sớ giải thông cao Những kiện này làm tăng nhu cầu truy nhập dữ liệu, yêu cầu phát triển phần mềm quản lý dữ liệu Cùng với là phát triển hệ thống phân tán làm tăng quy mô và độ phức tạp phần mềm

Sự tiến bộ nhanh và sử dụng phổ biến bộ vi xử lý cho thiết bị (ôtô, robot, lị vi sóng, thiết bị ch̉n đốn ) cơng nghiệp, máy tính cá nhân đời và máy trạm để bàn phát triển, làm cho nhu cầu phần mềm tăng nhanh phạm vi người dùng mở rợng Phần cứng ngày càng ổn định, chi phí phần mềm có khuynh hướng tăng nhanh chi phí mua máy Từ nảy sinh nhu cầu tăng suất sản xuất phần mềm

Phương pháp luận và phương pháp phát triển phần mềm hướng cấu trúc đạt đến mức đợ hoàn thiện cao và cùng với là phát triển công cụ trợ giúp công nghệ phần mềm máy tính (CASE), làm tăng suất và chất lượng phần mềm một cách đáng kể

d) Thời kỳ năm 1990 -

Trong thời kỳ này, cách tiếp cận công nghệ hướng đới tượng nhanh chóng thay cách tiếp cận truyền thống việc phát triển nhiều lĩnh vực ứng dụng

Các hệ thống thông minh hệ chuyên gia và phần mềm trí tuệ nhân tạo chuyển từ phịng thí nghiệm thực tế Phần mềm mạng nơron nhân tạo mở khả nhận dạng và có khả xử lý thơng minh kiểu người

Sự phát triển Internet làm cho người dùng máy tính tăng vọt, nhu cầu phần mềm ngày càng lớn, quy mô và độ phức tạp những hệ thống phần mềm tăng đáng kể Các hệ thống dựa Web chiếm ưu ứng dụng nghiệp vụ Công nghệ hướng đối tượng (tiêu biểu hệ NET) và phát triển phần mềm theo hướng tái sử dụng (Pattern Frameworks) trở thành một xu hướng công nghệ Tất cả yếu tố tạo nên những thách thức cho việc phát triển phần mềm

1.1.2 Sự đời cơng nghệ phần mềm

Nhìn lại tiến hóa phần mềm ta thấy những năm 60s – 70s kỷ trước, nhiều vấn đề liên tục phát sinh, tạo những thách thức cho việc phát triển phần mềm như:

(17)

- Sự tăng chi phí làm phần mềm (cần nhiều lao đợng có kỹ năng) - Sự kéo dài thời gian phát triển phần mềm (do phần mềm lớn) - Sự phụ thuộc nhiều vào kinh nghiệm người làm phần mềm - Chất lượng phần mềm không ổn định phụ thuộc vào người - Thiếu nghiêm trọng kỹ sư phần mềm (do nhu cầu tăng nhanh) - Gánh nặng bảo trì nhiều hệ thớng cũ để tiếp tục hoạt động

Giải vấn đề nêu làm nảy sinh việc nghiên cứu giải pháp cho chúng Vào những năm 70s kỷ XX, phát triển phần mềm được thừa nhận và bắt đầu trở thành một ngành công nghiệp yêu cầu sử dụng mở rộng

Năm 1975, sau hội nghị Công nghệ phần mềm quốc tế (ICSE - Internetional Conference of SE), nhiều lý thuyết, phương pháp luận và kỹ thuật được đề nghị Vào những năm 90s kỷ XX, công cụ trợ giúp công nghệ phần mềm máy tính (CASE) phát triển mạnh Nhờ vậy, việc tự đợng hóa mợt sớ bước trình phát triển phần mềm phổ biến Nhiều phương pháp luận và kỹ thuật được đề nghị và áp dụng sau khủng hoảng Tuy nhiên, tính ổn định sản phẩm phần mềm và kỹ thuật kiểm thử chưa được giải trọn vẹn Vì vậy, cơng nghệ phần mềm đời mợt đòi hỏi tất yếu phát triển phần mềm

1.2 MỘT SỐ KHÁI NIỆM CƠ BẢN TRONG LĨNH VỰC CÔNG NGHỆ PHẦN MỀM 1.2.1 Khái niệm phần mềm

Rất nhiều người cho phần mềm và chương trình máy tính là hai khái niệm tương đương Tuy nhiên, hiểu theo mợt định nghĩa rộng hơn, phần mềm không đơn là những chương trình, mà cịn kết hợp với tài liệu, cấu hình dữ liệu cần thiết để thực những chức chương trình mợt cách đắn và hợp lý Một hệ thống phần mềm thông thường bao gồm mợt sớ chương trình riêng biệt, tệp cấu hình mà chúng được sử dụng để thiết lập chương trình, tài liệu hệ thớng, những tài liệu mô tả cấu trúc hệ thống và tài liệu người dùng, những trang Web để người dùng tải những thông tin sản phẩm Có hai kiểu phần mềm bản:

Generic products (sản phẩm dùng chung): là những hệ thớng độc lập được sản xuất

bởi một tổ chức phát triển và bán cho thị trường mở, cho khách hàng nào có nhu cầu và khả mua chúng Những ví dụ kiểu sản phẩm này bao gồm những phần mềm chạy máy tính cá nhân như: sở dữ liệu, xử lý văn bản, gói phần mềm đồ họa, cơng cụ quản lý dự án…

Customised (or bespoke) products (sản phẩm đặt hàng): hệ thống này được xây dựng cho một đối tượng khách hàng cụ thể Trước bắt tay phát triển sản phẩm cần phải có mợt hợp đồng phát triển phần mềm được xây dựng cho mợt khách hàng Các ví dụ hệ thớng này là: hệ thống điều khiển thiết bị điện, hệ thống được viết riêng để phục vụ cho nhu cầu sản xuất và kinh doanh một đơn vị, hệ thống điều khiển giao thông hàng không…

(18)

việc đặc tả phần mềm thường được thực và kiểm soát tổ chức mua phần mềm, những người phát triển phần mềm phải làm việc theo đặc tả này

Tuy nhiên, phân biệt này ngày càng trở nên không rõ ràng, ngày càng nhiều công ty phần mềm bắt đầu với mợt hệ thớng phần mềm chung và biến đổi cho phù hợp với nhu cầu khách hàng Các hệ thớng ERP hay SAP là mợt ví dụ rõ ràng cho cách tiếp cận này

1.2.2 Khái niệm công nghệ phần mềm

Công nghệ phần mềm – software engineering (một số tài liệu gọi kỹ nghệ phần mềm) kỹ nghệ liên quan tới tất các khía cạnh của sản xuất phần mềm, từ giai đoạn bắt đầu đặc tả hệ thớng bảo trì hệ thống sau đưa vào sử dụng Trong định nghĩa này, có hai khái niệm quan trọng:

Những nguyên tắc công nghệ: là nguyên tắc mà kỹ sư phải sử dụng công việc Họ áp dụng những lý thuyết, phương thức và công cụ thích hợp, sử dụng chúng mợt cách có chọn lọc và luôn cố gắng phát giải pháp cho vấn đề đặt ra, chí cả khơng có phương thức và sở lý thuyết thích hợp Các kỹ sư phần mềm phải làm việc những ràng ḅc tài và tổ chức, đó, những giải pháp mà họ đưa phải nằm những ràng buộc này

Tất các khía cạnh của sản phẩm phần mềm: công nghệ phần mềm không liên quan tới tiến trình kỹ thuật việc phát triển phần mềm mà cịn là những hoạt đợng, chẳng hạn việc quản lý dự án phần mềm và việc phát triển công cụ, phương pháp, sở lý thuyết cho việc phát triển phần mềm

Nói chung, kỹ sư phần mềm phải tuân theo một phương pháp và cách tiếp cận được xác định cho công việc họ để đưa được phần mềm chất lượng tốt Hầu hết công nghệ được lựa chọn là thích hợp nhất, nhiên mợt điều kiện cụ thể và tùy theo sáng tạo, việc phát triển phần mềm không tuân thủ những nguyên tắc ban đầu sẽ hiệu quả

1.2.3 Sự khác công nghệ phần mềm khoa học máy tính

Về bản, khoa học máy tính liên quan tới những nguyên lý và phương pháp làm sở cho máy tính và hệ thớng phần mềm, đó, cơng nghệ phần mềm liên quan tới những vấn đề thực tế sản xuất phần mềm Những kiến thức khoa học máy tính là cần thiết cho kỹ sư phần mềm, giống những hiểu biết vật lý cho kỹ sư điện Một cách lý tưởng, tất cả kỹ sư phần mềm cần phải lấy tảng kiến thức từ khoa học máy tính

1.2.4 Tiến trình phần mềm

Mợt tiến trình phần mềm là một tập hợp hoạt động để sản xuất phần mềm Có hoạt đợng bản tiến trình phần mềm:

Đặc tả phần mềm: khách hàng và kỹ sư phần mềm định nghĩa sản phẩm sẽ được sinh và những ràng buộc liên quan đến phần mềm trình phát triển phần mềm

Phát triển phần mềm: phần mềm được thiết kế và lập trình

(19)

Cải tiến - bảo trì phần mềm: phần mềm được thay đổi để đáp ứng những thay đổi khách hàng và thị trường

Các kiểu hệ thống khác cần những tiến trình phát triển khác nhau, ví dụ, phần mềm thời gian thực điều khiển thiết bị máy bay phải được đặc tả một cách hoàn chỉnh trước phát triển Trong với hệ thớng thương mại, việc đặc tả và lập trình thường được phát triển cùng Kết quả là, những hoạt động chung này được tổ chức theo cách khác và được mô tả mức độ chi tiết khác Tuy nhiên, việc sử dụng những tiến trình khơng hợp lý làm giảm chất lượng hoặc giảm tính sử dụng sản phẩm chi phí cho việc phát triển phần mềm tăng theo

1.2.5 Mơ hình tiến trình phần mềm

Mợt mơ hình tiến trình phần mềm là việc mơ tả mợt tiến trình phát triển phần mềm Các mơ hình tiến trình bao gồm việc mơ tả hoạt đợng tiến trình phần mềm, mơ tả sản phần phầm mềm và vai trị những người liên quan trình phát triển Mợt vài ví dụ kiểu mơ hình tiến trình là:

Workflow model: mơ hình này thứ tự hoạt đợng mợt tiến trình cùng với

đầu vào, đầu và phụ thuộc Các hoạt đợng mơ hình này mơ tả hoạt động người

Data-flow/Activity model: mô hình này mơ tả tiến trình mợt tập hợp hoạt

động, hoạt động thực việc biến đổi mợt sớ dữ liệu Nó dữ liệu đầu vào được xử lý nào, chẳng hạn một bản đặc tả được biến đổi để có sản phẩm đầu là mợt bản thiết kế Những hoạt đợng biến đổi được thực người hoặc máy tính

Role/Action model: mơ hình này giới thiệu vai trò những người liên quan tiến

trình phần mềm và những hoạt đợng mà họ phải chịu trách nhiệm

Hầu hết mơ hình tiến trình dựa mợt ba cách tiếp cận phát triển phần mềm đây:

Cách tiếp cận thác nước: mơ hình này lấy những hoạt đợng và biểu diễn chúng những giai đoạn riêng rẽ, chẳng hạn như: đặc tả yêu cầu, thiết kế phần mềm, phát triển và kiểm thử… Việc phát triển phần mềm tuân theo tiến trình này

Phát triển lặp tăng dần: cách tiếp cận này đan xen hoạt động đặc tả, phát triển và kiểm thử Một hệ thống ban đầu được xây dựng nhanh từ những đặc tả trìu tượng, sau được làm mịn với đầu vào khách hàng để sinh một hệ thống phù hợp với yêu cầu khách hàng Hệ thớng này sau được bàn giao tới khách hàng sử dụng hoặc tiếp tục phát triển để nâng cấp cải tiến sản phẩm

(20)

1.2.6 Chi phí công nghệ phần mềm

Chi phí cơng nghệ phần mềm là việc xác định nguồn kinh phí cần thiết cho giai đoạn phát triển phần mềm Khơng có câu trả lời đơn giản cho câu hỏi này cịn phụ tḥc vào mơ hình tiến trình được lựa chọn và kiểu phần mềm cần xây dựng Ví dụ: phần mềm thời gian thực thường đòi hỏi việc kiểm thử đắt so với hệ thống dựa web Hình vẽ 1.1 phần trăm chí phí cho giai đoạn ứng với mơ hình tiến trình khác

Hình 1.1 Phần trăm chi phí giai đoạn tiến trình phần mềm

1.2.7 Phương pháp công nghệ phần mềm

Phương pháp công nghệ phần mềm là một cách tiếp cận có cấu trúc để phát triển phần mềm, là trợ thủ đắc lực giúp cho việc xây dựng phần mềm mợt cách dễ dàng hơn, bên cạnh đảm bảo chất lượng tớt, chi phí hợp lý và hiệu quả

Những phương pháp Structure Analysis, JSD được bắt đầu phát triển từ những năm 70s Những phương pháp này cố gắng xác định thành phần chức bản hệ thống; phương pháp hướng chức đến được sử dụng Vào những năm 80s, 90s, phương pháp hướng chức cịn có thêm phương pháp hướng đối tượng Những cách tiếp cận khác ngày được tích hợp mợt cách tiếp cận hợp dựa ngơn ngữ UML

Khơng có phương pháp lý tưởng, phương pháp khác thích hợp với những lĩnh vực ứng dụng khác Ví dụ: phương pháp hướng đới tượng thường thích hợp cho hệ thớng tương tác lại khơng thích hợp cho những hệ thớng có u cầu thời gian thực

Tất cả phương pháp dựa ý tưởng phát triển mơ hình hệ thớng biểu diễn đồ họa và sử dụng mô hình này mợt bản đặc tả hoặc bản thiết kế Các phương pháp bao gồm mợt sớ thành phần khác nhau:

Bảng 1.1 Các thành phần mơ hình hệ thống

Thành phần Mơ tả Ví dụ

Wat erfall m odel

It erative developm ent

Com ponent-based software eng ineering

Developm ent and evolution costs for long-lifetim e sy st em s

Sy stem evolution

10 200 30 400

0

Sy stem developm ent

Specification Design Developm ent Integ ration and testing

25 75 100

0

Specification Developm ent Integ ration and testing

2 5 75 00

0

Specification Iterative developm ent Sy stem testing

2 5 75 00

0

Mơ hình thác nước

Mơ hình lặp và tăng dần

Đặc tả Thiết kế Phát triển Tích hợp và kiểm thử

Đặc tả Phát triển tích hợp Kiểm thử hệ thớng

Kỹ nghệ phần mềm hướng thành phần

Đặc tả Phát triển Tích hợp và kiểm thử

Chi phí phát triển và cải tiến hệ thớng có thời gian sống dài

Phát triển hệ thống Cải tiến hệ thống

Ngày đăng: 01/04/2021, 15:52

Xem thêm:

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w