Tập bài giảng Công nghệ phần mềm được chia làm 9 chương: Chương 1 - Tổng quan về Công nghệ phần mềm; Chương 2 - Tiêu chuẩn của sản phẩm phần mềm; Chương 3 - Quản lý dự án; Chương 4 - Xác định và phân tích yêu cầu; Chương 5 - Thiết kế phần mềm; Chương 6 - Cài đặt phần mềm; Chương 7 - Kiểm tra chất lượng phần mềm; Chương 8 - Bảo trì phần mềm và quản lý thay đổi phần mềm; Chương 9 - Đóng gói phần mềm. Mỗi chương trong tập bài giảng đều hệ thống hóa các kiến thức cơ bản, cần thiết. Mời các bạn cùng tham khảo.
Trang 1MỤC LỤC
MỤC LỤC I BẢNG KÍ HIỆU VII CÁC DANH MỤC HÌNH VIII CÁC DANH MỤC BẢNG XII LỜI NÓI ĐẦU XIII
CHƯƠNG 1 TỔNG QUAN VỀ CÔNG NGHỆ PHẦN MỀM 1
1.1 Các khái niệm cơ bản 1
1.2 Kỹ sư phần mềm 5
1.3 Nhân tố con người trong ngành công nghiệp phần mềm 6
1.4 Phân loại nghề nghiệp 7
1.4.1 Mức độ kinh nghiệm 7
1.4.2 Loại hình công việc 9
1.5 Sản phẩm phần mềm 13
1.5.1 Các đặc tính phần mềm 13
1.5.2 Tính đáp ứng 15
1.5.3 Phân loại phần mềm 15
1.6 Một số mô hình xây dựng phần mềm 18
1.6.1 Mô hình tuyến tính (The linear sequential model) 18
1.6.2 Mô hình chữ V 19
1.6.3 Mô hình mẫu (Prototyping model) 20
1.6.4 Mô hình tiến hóa (Evolutionary model) 21
1.6.5 Mô hình lặp và tăng dần 22
1.6.7 Mô hình phát triển nhanh 23
1.6.8 Mô hình xoắn ốc (The spiral model) 23
1.6.9 Mô hình đài phun nước 24
1.6.10 Mô hình phát triển dựa trên thành phần 24
1.7 Các phương pháp phát triển phần mềm 25
1.8 Vai trò của người dùng trong giai đoạn phát triển phần mềm 26
CÂU HỎI VÀ BÀI TẬP CHƯƠNG 1 28
CHƯƠNG 2 TIÊU CHUẨN CỦA SẢN PHẨM PHẦN MỀM 33
2.1 Mục tiêu của công nghệ phần mềm 33
2.2 Tiêu chuẩn của sản phẩm phần mềm 34
2.2.1 Tính đúng 34
2.2.2 Tính khoa học 36
2.2.3 Tính hữu hiệu 36
Trang 22.2.4 Tính tin cậy 37
2.2.5 Tính kiểm thử được 37
2.2.6 Tính sáng tạo 37
2.2.7 Tính an toàn 37
2.2.8 Tính toàn vẹn 38
2.2.9 Tính đối xứng và đầy đủ chức năng 38
2.2.10 Tính tiêu chuẩn và tính chuẩn 38
2.2.11 Tính độc lập 39
2.2.12 Tính dễ phát triển, hoàn thiện 39
2.2.13 Tính thỏa mãn 39
2.2.14 Một số tiêu chuẩn khác 40
CÂU HỎI VÀ BÀI TẬP CHƯƠNG 2 49
CHƯƠNG 3 QUẢN LÝ DỰ ÁN PHẦN MỀM 57
3.1 Định nghĩa quản lý dự án phần mềm 57
3.2 Phân loại dự án phần mềm 57
3.3 Các giai đoạn dự án 58
3.3.1 Chuẩn bị và khởi động dự án 58
3.3.2 Các giai đoạn thực hiện dự án 59
3.3.3 Kết thúc dự án 59
3.4 Lập kế hoạch dự án 60
3.5 Đánh giá khối lượng và lập lịch dự án 64
3.6 Quản lý công việc và tiến độ 67
3.7 Nghiên cứu tính khả thi dự án 68
3.8 Lựa chọn giải pháp 70
3.9 Giám sát và kiểm soát 72
3.10 Hồ sơ dự án 77
CÂU HỎI VÀ BÀI TẬP CHƯƠNG 3 79
CHƯƠNG 4 XÁC ĐỊNH VÀ PHÂN TÍCH YÊU CẦU 80
4.1 Xác định yêu cầu 80
4.1.1 Mô tả yêu cầu 80
4.1.2 Phân loại yêu cầu 81
4.1.3 Quy trình xác định yêu cầu 85
4.2 Thu nhập yêu cầu 92
4.2.1 Đặc tính dữ liệu 92
4.2.2 Các kỹ thuật thu nhập yêu cầu 95
4.2.3 Đánh giá tính phù hợp của các kỹ thuật thu thập yêu cầu 101
4.3 Đánh giá các yêu cầu 104
Trang 34.4 Phân tích yêu cầu 105
4.4.1 Mục đích của giai đoạn phân tích yêu cầu 105
4.4.2 Các nguyên lý phân tích 106
4.4.3 Phân tích khả thi 107
4.4.4 Thiết lập mô hình 108
4.4.5 Đặc tả yêu cầu 113
4.4.6 Các công việc vủa cán bộ phân tích 115
4.5 Tư liệu hóa yêu cầu phần mềm 115
CÂU HỎI VÀ BÀI TẬP CHƯƠNG 4 118
CHƯƠNG 5 THIẾT KẾ PHẦN MỀM 124
5.1 Đặc điểm của quá trình thiết kế phần mềm 124
5.2 Chiến lược thiết kế 127
5.2.1 Thiết kế hướng chức năng 127
5.2.2 Thiết kế hướng đối tượng 128
5.3 Thiết kế kiến trúc ứng dụng 129
5.3.1 Khái niệm 129
5.3.2 Các mô hình thiết kế ứng dụng 130
5.4 Thiết kế cơ sở dữ liệu 136
5.4.1 Cách tổ chức lưu trữ dữ liệu 136
5.4.2 Xây dựng sơ đồ logic dữ liệu 138
5.4.3 Cách phương pháp thiết kế cơ sở dữ liệu 139
5.4.4 Yêu cầu về chất lượng thiết kế cơ sở dữ liệu 141
5.5 Thiết kế giao diện 143
5.5.1 Quy trình thiết kế giao diện 143
5.5.2 Kết quả của thiết kế giao diện 144
5.5.3 Phân loại màn hình 147
5.5.4 Thiết kế màn hình chính 148
5.5.5 Thiết kế màn hình giới thiệu 152
5.5.6 Thiết kế màn hình đăng nhập 153
5.5.7 Thiết kế màn hình nhập dữ liệu lưu trữ 158
5.5.8 Thiết kế màn hình xử lý tính toán 166
5.5.9 Thiết kế màn hình kết quả 166
5.5.10 Thiết kế màn hình thông báo 169
5.5.11 Thiết kế màn hình tra cứu 170
5.6 Thiết kế xử lý 174
CÂU HỎI VÀ BÀI TẬP CHƯƠNG 5 179
CHƯƠNG 6 CÀI ĐẶT PHẦN MỀM 184
Trang 46.1 Giai đoạn cài đặt phần mềm 184
6.2 Kỹ năng lập trình 184
6.2.1 Tài liệu chương trình 184
6.2.2 Khai báo dữ liệu 185
6.2.3 Xây dựng câu lệnh 185
6.2.4 Kỹ thuật vào ra 185
6.3 Các phương pháp lập trình 186
6.4 Ngôn ngữ lập trình 187
6.4.1 Nền tảng của ngôn ngữ lập trình 187
6.4.2 Các lớp ngôn ngữ lập trình 189
6.4.3 Một số ngôn ngữ lập trình 189
6.4.4 Chọn ngôn ngữ cho ứng dụng 192
6.5 Công cụ trợ giúp và phân loại 193
6.5.1 Công cụ CASE 193
6.5.2 Phân loại các công cụ Case 194
6.5.3 Một số công cụ được cung cấp tự động cho việc sinh mã 197
6.6 Các công việc của cán bộ lập trình 198
CÂU HỎI VÀ BÀI TẬP CHƯƠNG 6 199
CHƯƠNG 7 KIỂM TRA CHẤT LƯỢNG PHẦN MỀM 201
7.1 Chất lượng phần mềm 201
7.2 Độ tin cậy của phần mềm 202
7.2.1 Các lỗi thường gặp 202
7.2.2 Khái niệm độ tin cậy của phần mềm 203
7.2.3 Một số đánh giá về độ tin cậy 203
7.2.4 Lập trình vì độ tin cậy 205
7.3 Các giai đoạn kiểm thử phần mềm 206
7.3.1 Lập kế hoạch kiểm thử (Test plan) 207
7.3.2 Xây dựng các tình huống kiểm thử (Test Case) 208
7.3.3 Xây dựng các thủ tục kiểm thử (Test script) 210
7.3.4 Thực hiện các thủ tục kiểm thử 211
7.3.5 Đánh giá kết quả kiểm thử (Test Result) 212
7.4 Chiến lược kiểm thử phần mềm 212
7.4.1 Kiểm thử Black-box 213
7.4.2 Kiểm thử White-box 221
7.4.3 Kiểm thử Top-down 228
7.4.4 Kiểm thử Bottom-up 229
7.5 Kỹ thuật kiểm thử phần mềm 230
Trang 57.5.1 Khái niệm 230
7.5.2 Đặc điểm của kiểm thử 231
7.5.3 Phân loại một số công cụ kiểm thử tự động 232
7.6 Vai trò và công việc của cán bộ kiểm thử (Tester) 234
7.6.1 Vai trò của cán bộ kiểm thử 234
7.6.2 Công việc của cán bộ kiểm thử 234
CÂU HỎI VÀ BÀI TẬP CHƯƠNG 7 235
CHƯƠNG 8 BẢO TRÌ PHẦN MỀM VÀ QUẢN LÝ THAY ĐỔI PHẦN MỀM 245
8.1 Khái niệm bảo trì phần mềm 245
8.2 Hoạt động bảo trì phần mềm 245
8.2.1 Bảo trì hiệu chỉnh 246
8.2.2 Bảo trì tiếp hợp 246
8.2.3 Bảo trì hoàn thiện 247
8.2.4 Bảo trì phòng ngừa 247
8.3 Đặc điểm của bảo trì phần mềm 247
8.3.1 Bảo trì không cấu trúc 248
8.3.2 Bảo trì có cấu trúc 248
8.3.3 Giá thành bảo trì 249
8.3.4 Một số vấn đề khác 250
8.4 Công việc bảo trì phần mềm 251
8.4.1 Cơ cấu bảo trì 251
8.4.2 Báo cáo 251
8.4.3 Lưu giữ các hồ sơ 252
8.4.4 Xác định giá bảo trì 253
8.5 Một số hình thức bảo trì phần mềm 253
8.5.1 Bảo trì mã chương trình xa lạ 253
8.5.2 Công nghệ phản hồi 254
8.5.3 Công nghệ tái sử dụng 254
8.5.4 Bảo trì phòng ngừa 254
8.5.5 Chiến lược phần mềm thành phần 255
8.6 Quản lý thay đổi phần mềm 255
8.6.1 Các thủ tục quản lý thay đổi 256
8.6.2 Ghi quyết định theo thời gian 258
8.6.3 Quản lý thay đổi tài liệu 258
CÂU HỎI VÀ BÀI TẬP CHƯƠNG 8 259
CHƯƠNG 9 ĐÓNG GÓI PHẦN MỀM 262
9.1 Quy trình đóng gói phần mềm 262
Trang 69.2 Công cụ đóng gói phần mềm 266
9.2.1 Tạo dự án 267
9.2.2 Thiết lập thông tin ứng dụng 268
9.2.3 Thiết lập kiến trúc ứng dụng 269
9.2.4 Thiết lập tập tin ứng dụng 270
9.2.5 Tạo Short cut cho ứng dụng 271
9.2.6 Thiết lập bản quyền ứng dụng 271
9.2.7 Thiết lập các lựa chọn 272
9.2.8 Đóng gói dữ liệu đi kèm ứng dụng 273
9.3 Viết tài liệu hướng dẫn 275
CÂU HỎI VÀ BÀI TẬP CHƯƠNG 9 276
TÀI LIỆU THAM KHẢO I
Trang 7BẢNG KÍ HIỆU
Trang 8CÁC DANH MỤC HÌNH
Hình 1.1 Mô hình ba tầng 4
Hình 1.2 Tầng quy trình (process) 4
Hình 1.3 Phân loại nghề nghiệp 7
Hình 1.4 Mối liên hệ của con đường nghề nghiệp cho các mức khác nhau 9
Hình 1.5 Mối liên hệ giữa dữ liệu và xử lý 14
Hình 1.6 Mô hình tuyến tính 19
Hình 1.7 Mô hình chữ V 20
Hình 1.8 Mô hình mẫu 20
Hình 1.9 Mô hình tiến hóa 21
Hình 1.10 Mô hình lặp và tăng dần 22
Hình 1.11 Mô hình xoắn ốc 23
Hình 1.12 Mô hình đài phun nước 24
Hình 1.13 Mô hình phát triển dựa trên thành phần 25
Hình 2.1 Bậc thang về tính đúng 35
Hình 2.2 Ví dụ về tính đúng 35
Hình 2.3 Ví dụ về tính khoa học 36
Hình 2.4 Các chức năng đối xứng 38
Hình 2.5 Chương trình giải phương trình bậc nhất 49
Hình 2.6 Chương trình giải phương trình bậc hai 50
Hình 2.7 Chương trình quản lý độc giả 50
Hình 4.1 Phân loại các yêu cầu phi chức năng 84
Hình 4.2 Quy trình xác định yêu cầu 86
Hình 4.3 Mô hình xoắn ốc của quy trình xác định yêu cầu 87
Hình 5.1 Tầm quan trọng của quá trình thiết kế 124
Hình 5.2 Mối liên quan của giai đoạn thiết kế với các giai đoạn khác 125
Hình 5.3 Các giai đoạn thiết kế 125
Hình 5.4 Các giai đoạn thiết kế theo khía cạnh kỹ thuật 126
Hình 5.5 Tiến trình thiết kế 127
Hình 5.6 Mô hình kho dữ liệu 131
Hình 5.7 Kiến trúc của một bộ CASE tích hợp 131
Hình 5.8 Mô hình kho dữ liệu 132
Hình 5.9 Kiến trúc của một thư viện phim và hình ảnh 132
Hình 5.10 Mô hình máy trừu tượng 133
Hình 5.11 Kiến trúc của hệ thống quản lý phiên bản 133
Hình 5.12 Kiến trúc của ứng dụng doanh nghiệp 133
Hình 5.13 Mô hình gọi - trả lời 134
Trang 9Hình 5.14 Mô hình quản lý 134
Hình 5.15 Mô hình phát tin 135
Hình 5.16 Mô hình điều khiển ngắt 135
Hình 5.17 Mô hình luồng dữ liệu 136
Hình 5.18 Quy trình thiết kế giao diện 143
Hình 5.19 Màn hình chính phần mềm quản lý ngân hàng câu hỏi 151
Hình 5.20 Màn hình dùng sơ đồ 152
Hình 5.21 Màn hình giới thiệu phần mềm Microsoft HTML Help Image Editor 152
Hình 5.22 Màn hình giới thiệu phần mềm Quản lý ngân hàng câu hỏi thi 153
Hình 5.23 Mẫu màn hình đăng nhập 153
Hình 5.24 Màn hình đăng nhập hệ thống quản lý dữ liệu 154
Hình 5.25 Màn hình đăng nhập Gmail 154
Hình 5.26 Mẫu màn hình đăng nhập với khóa bí mật 154
Hình 5.27 Màn hình đăng nhập với Password và Secret Key 154
Hình 5.28 Đăng nhập sử dụng SafeNet 155
Hình 5.29 Màn hình đăng nhập sử dụng SafeNet 155
Hình 5.30 Các ứng dụng bảo mật 155
Hình 5.31 RSA SecurID 156
Hình 5.32 Hybird USB Smartcard Token 156
Hình 5.33 Quản lý đăng nhập hệ thống 157
Hình 5.34 Khóa bí mật được đồng bộ với Server VPN 158
Hình 5.35 Mẫu màn hình nhập dữ liệu dạng danh sách 159
Hình 5.36 Màn hình nhập thể loại sách 160
Hình 5.37 Mẫu màn hình nhập dữ liệu dạng hồ sơ 160
Hình 5.38 Màn hình nhập hồ sơ học sinh 161
Hình 5.39 Màn hình nhập thông tin sách mới 161
Hình 5.40 Màn hình nhập thông tin đội bóng 161
Hình 5.41 Mẫu 1-Màn hình nhập dữ liệu dạng phiếu 162
Hình 5.42 Mẫu 2-Màn hình nhập dữ liệu dạng phiếu 162
Hình 5.43 Mẫu 3-Màn hình nhập dữ liệu dạng phiếu 162
Hình 5.44 Mẫu 4-Màn hình nhập dữ liệu dạng phiếu 163
Hình 5.45 Màn hình nhập phiếu mượn sách 163
Hình 5.46 Màn hình nhập danh mục tên nước 163
Hình 5.47 Màn hình nhập dữ liệu hồ sơ sử dụng Tab Control 164
Hình 5.48 Màn hình nhập dữ liệu khen thưởng sử dụng Tab Control 164
Hình 5.49 Màn hình nhập danh mục tên nước 164
Hình 5.50 Màn hình nhập dữ liệu hóa đơn 165
Hình 5.51 Màn hình nhập dữ liệu hóa đơn liên kết đến màn hình khác 165
Trang 10Hình 5.52 Màn hình nhập dữ liệu khách hàng bằng cách Import 165
Hình 5.53 Màn hình tính lương 166
Hình 5.54 Màn hình lập phiếu mua hàng 166
Hình 5.55 Kết quả tra cứu dùng thông báo 167
Hình 5.56 Kết quả tra cứu dạng danh sách 167
Hình 5.57 Màn hình tra cứu dùng nhiều danh sách 168
Hình 5.58 Màn hình tra cứu dùng nhiều danh sách 168
Hình 5.59 Màn hình tra cứu dùng cây danh sách 169
Hình 5.60: Mẫu màn hình thông báo 170
Hình 5.61 Màn hình thông báo 170
Hình 5.62 Mẫu màn hình tra cứu 171
Hình 5.63 Ví dụ về màn hình tra cứu 171
Hình 5.64 Màn hình tra cứu tiếp nhận bưu điện, bưu phẩm 172
Hình 5.65 Mẫu màn hình tra cứu với hình thức cây 172
Hình 5.66 Màn hình cây tra cứu nhân viên 173
Hình 5.67 Màn hình cây tra danh mục nhân viên 173
Hình 5.68 Màn hình tra cứu tích hợp 173
Hình 6.1 Kiến trúc Case 193
Hình 6.2 Các công cụ theo dõi các yêu cầu 195
Hình 6.3 Mức độ áp dụng mẫu trong quá trình phát triển phần mềm 196
Hình 7.1 Qui trình kiểm thử phần mềm 207
Hình 7.2 Kiểm thử màn hình đăng nhập 209
Hình 7.3 Kiểm thử Black-box 213
Hình 7.4 Chương trình tìm số lớn nhất và nhỏ nhất trong 3 số 216
Hình 7.5 Kiểm thử White-box 221
Hình 7.6 Kiểm thử đột biến 228
Hình 7.7 Kiểm thử Top-down 229
Hình 7.8 Kiểm thử Top-down 230
Hình 8.1 So sánh chi phí cho các giai đoạn phát triển phần mềm 245
Hình 8.2 Bảo trì không cấu trúc và bảo trì có cấu trúc 248
Hình 8.3 Chi phí của việc phát triển phần mềm không có phương pháp 250
Hình 8.4 Cơ cấu bảo trì 251
Hình 8.5 Báo cáo các lỗi phần mềm 251
Hình 8.6 Báo cáo thay đổi phần mềm 252
Hình 9.1 Các thành phần cơ bản trong bản đóng gói 263
Hình 9.2 Các thành phần trong ứng dụng Window và Web 263
Hình 9.3 Tổ chức cây thư mục 264
Hình 9.4 Đóng gói sử dụng DLL 265
Trang 11Hình 9.5 Đóng gói có dữ liệu sử dụng DLL 265
Hình 9.6 Đóng gói sử dụng OCX 266
Hình 9.7 Giao diện chính của InstallShield 267
Hình 9.8 Tạo dự án 267
Hình 9.9 Các giai đoạn đóng gói 268
Hình 9.10 Thiết lập thông tin ứng dụng 268
Hình 9.11 Thiết lập kiến trúc ứng dụng 269
Hình 9.12 Thiết lập thuộc tính cho đặc tính cài đặt 269
Hình 9.13 Thiết lập tập tin ứng dụng 270
Hình 9.14 Thêm tệp tin ứng dụng vào bộ cài đặt 270
Hình 9.15 Thêm thành công tập tin ứng dụng 271
Hình 9.16 Tạo Short cut cho ứng dụng 271
Hình 9.17 Thiết lập bản quyền ứng dụng 272
Hình 9.18 Chọn tệp tin *reg 272
Hình 9.19 Thiết lập các lựa chọn 273
Hình 9.20 Đóng gói dữ liệu đi kèm ứng dụng 273
Hình 9.21 Chọn tệp tin Script 274
Hình 9.22 Tạo bộ đĩa cài đặt 274
Hình 9.23 Các loại tài liệu hướng dẫn 275
Trang 12CÁC DANH MỤC BẢNG
Bảng 2.1 Các phép đánh giá tính hiệu quả 41
Bảng 2.2 Các phép đánh giá tính năng suất 42
Bảng 2.3 Các phép đánh giá tính an toàn 45
Bảng 2.4 Các phép đánh giá tính thỏa mãn 47
Bảng 3.1 Lựa chọn chiến lược cài đặt 71
Bảng 4.1 Mối liên hệ giữa các kiểu ứng dụng và các đặc tính dữ liệu 92
Bảng 4.2 Phỏng vấn có cấu trúc và không có cấu trúc 97
Bảng 4.3 Các hành vi của người được phỏng vấn và hoạt động tương ứng 98
Bảng 4.4 Tính phù hợp của các kỹ thuật thu thập yêu cầu với đặc tính của dữ liệu 102
Bảng 4.5 Tính phù hợp của các kỹ thuật thu thập dữ liệu với các kiểu ứng dụng 104
Bảng 4.6 Các công việc của cán bộ phân tích 115
Bảng 5.1 Kết quả của các giai đoạn thiết kế theo khía cạnh kỹ thuật 126
Bảng 5.3 Danh mục các loại màn hình 147
Bảng 5.4 Danh sách các biến cố 176
Bảng 5.5 Danh sách các hàm xử lý 176
Bảng 5.6 Các công việc của cán bộ thiết kế 178
Bảng 6.1 Ngôn ngữ lập trình và ứng dụng 193
Bảng 6.2 Một số CASE thông dụng 197
Bảng 7.1 Kiểm thử màn hình đăng nhập 210
Bảng 7.2 Bảng liệt kê các lớp tương đương 214
Bảng 7.3 Bảng liệt kê các lớp tương đương của chương trình nhập điểm 215
Bảng 7.4 Bảng liệt kê các giá trị cận để kiểm thử 217
Bảng 7.5 Các trường hợp xảy ra với EP và BVA 218
Bảng 7.6 Các trường hợp kiểm thử với EP và BVA 218
Bảng 7.7 Các ký hiệu trong đồ thị nguyên nhân – kết quả 219
Bảng 7.8 Các qui tắc trong bảng quyết định 220
Bảng 7.9 Các nguyên nhân và kết quả của bài toán tính thuế 220
Bảng 7.10 Bảng quyết định của bài toán tính thuế 221
Bảng 7.11 Công việc của cán bộ kiểm thử phần mềm 234
Trang 13LỜI NÓI ĐẦU
Ngày nay, tất cả các nước phát triển đều phụ thuộc chủ yếu vào các hệ thống phần mềm Và càng ngày càng có nhiều hệ thống được kiểm soát bởi phần mềm Do đó, việc xây dựng và bảo trì hệ thống phần mềm một cách hiệu quả là yêu cầu cần thiết đối với nền kinh tế toàn cầu và của từng quốc gia Môn học Công nghệ phần mềm là môn học cung cấp cho sinh viên các kiến thức cơ bản về lý thuyết và thực tiễn của công nghệ phần mềm Để giúp sinh viên các ngành thuộc lĩnh vực Công nghệ thông tin trường Đại học Sư phạm Kỹ thuật Nam Định học tốt hơn môn học này và vận dụng để triển khai xây dựng một phần mềm hoàn thiện thì việc xuất bản “Tập bài giảng Công nghệ phần mềm” là rất cần thiết
Tập bài giảng được chia làm 9 chương:
Chương 1 Tổng quan về Công nghệ phần mềm
Chương 2 Tiêu chuẩn của sản phẩm phần mềm
Chương 3 Quản lý dự án
Chương 4 Xác định và phân tích yêu cầu
Chương 5 Thiết kế phần mềm
Chương 6 Cài đặt phần mềm
Chương 7 Kiểm tra chất lượng phần mềm
Chương 8 Bảo trì phần mềm và quản lý thay đổi phần mềm
Chương 9 Đóng gói phần mềm
Mỗi chương trong tập bài giảng đều hệ thống hóa các kiến thức cơ bản, cần thiết Tương ứng với mỗi nội dung kiến thức đều có các ví dụ minh họa cụ thể, gán với các ứng dụng thực tiễn Đặc biệt, cuối tập bài giảng, tác giả đưa ra một số bài tập làm thêm để sinh viên vận dụng củng cố lại kiến thức và kỹ năng
Với phần lý thuyết chi tiết, đầy đủ được trình bày một cách khoa học, logic và phần bài tập để củng cố kiến, chúng tôi hy vọng rằng tập bài giảng này sẽ mang lại cho bạn đọc nhiều điều bổ ích
Trong quá trình biên soạn, tập bài giảng không tránh khỏi những sai sót, rất mong đồng nghiệp và các em sinh viên góp ý kiến để tập bài giảng ngày càng được hoàn thiện hơn Mọi sự đóng góp ý kiến xin gửi về Văn phòng Khoa Công nghệ thông tin-Trường Đại học Sư phạm Kỹ thuật Nam Định-Phường Lộc Hạ-Tp Nam Định
Nhóm biên soạn
Phạm Hùng Phú- Nguyễn Văn Thẩm
Trang 15
Chương 1 TỔNG QUAN VỀ CÔNG NGHỆ PHẦN MỀM
Khái niệm về công nghệ phần mềm được đưa ra lần đầu tiên vào năm 1968 tại hội nghị thảo luận về khủng hoảng phần mềm Công nghệ phần mềm đề cập tới các lý thuyết, phương thức và công cụ để xây dựng phần mềm chuyên nghiệp, mang lại lợi nhuận cao
Trong chương đầu tiên, chúng ta sẽ tìm hiểu về một số khái niệm cơ bản có liên quan tới phần mềm và công nghệ phần mềm Từ đó, chúng ta có những hiểu biết cơ bản để tiếp tục nghiên cứu các chương tiếp theo Ngoài ra, quy trình xây dựng phần mềm đòi hỏi phải tuân thủ các nguyên tắc vô cùng chặt chẽ Do đó, chúng ta sẽ tìm hiểu về những yêu cầu căn bản đối với một kỹ sư phần mềm
1.1 Các khái niệm cơ bản
Các giai đoạn phát triển sản phẩm phần mềm
- Giai đoạn 1 (từ 1950 đến giữa 1960): Xử lý theo lô, xử lý tập trung, ít xử lý phân tán, ít sửa đổi phần mềm
- Giai đoạn 2 (từ giữa 1960 đến giữa 1970)
+ Hệ thống đa chương trình và đa nguời dùng
+ Bắt đầu cuộc “khủng hoảng” phần mềm
- Giai đoạn 3 (từ giữa 1970 đến giữa 1980)
+ Sự phát triển và sử dụng rộng rãi máy tính cá nhân
+ Sự phát triển của các công ty phần mềm
- Giai đoạn 4 (từ giữa 1980 đến nay)
+ Phần cứng ngày càng phát triển
+Hệ thống phần mềm ngày càng đa dạng, phong phú, xử lý ngày càng phức tạp, công nghệ ngày càng phát triển…
Ngày nay, sự phát triển phần mềm ngày càng thực sự khó kiểm soát được; các dự
án phần mềm thường kéo dài và vượt quá chi phí cho phép Những nhà lập trình chuyên nghiệp phải cố gắng hoàn thành các dự án phần mềm một cách có chất lượng, đúng hạn trong chi phí cho phép Cuộc khủng hoảng phần mềm xảy ra là do:
- 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, chi phí cao, hiệu quả thấp
+ Khó sử dụng, thực hiện chậm
Trang 16+ Không chuyển đổi dữ liệu giữa các phần mềm
- Việc tăng vọt số lượng phần mềm là điều hợp lý và 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
và quy trình 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 (khảo sát hiện trạng, phân tích yêu cầu, thiết kế…)
+ Thủ công: còn thiếu các công cụ hỗ trợ quy trình phát triển
Mục tiêu của công nghệ phần mềm là tạo ra những phần mềm tốt, giảm đến tối thiểu những may rủi có thể gây cho các người liên quan Trong quá trình đề cập, chúng
ta sử dụng các thuật ngữ:
Phần mềm là gì ? Được xem xét ở hai góc độ:
Phần mềm dưới góc nhìn của người sử dụng: Chương trình thực thi được trên máy tính hoặc các thiết bị chuyên dụng khác Nhằm hỗ trợ cho các nhà chuyên môn trong từng lĩnh vực chuyên ngành thực hiện tốt hơn các thao tác nghiệp vụ của mình
- Môi trường triển khai phần mềm:
+ Máy tính: Desktop, Laptop, Tablet PC…
+ Thiết bị chuyên dụng: Thiết bị di động: PDA, Pocket PC, ĐTDĐ; Các thiết bị chuyên dụng khác: set-top box, router,
- Hỗ trợ làm tốt hơn các thao tác nghiệp vụ:
+ Tin học hóa nghiệp vụ hiện đang làm thủ công
+ Cải tiến chức năng nghiệp vụ hiện đang được thực hiện trên máy tính
+ Đề ra, xây dựng và triển khai chức năng nghiệp vụ mới
Phần mềm dưới góc nhìn của chuyên viên Tin học Đây là một hệ thống bao gồm
ba thành phần cơ bản:
- Thành phần giao tiếp (Thành phần giao diện):
+ Cho phép tiếp nhận các yêu cầu về việc sử dụng phần mềm từ người sử dụng, từ các thiết bị thu thập dữ liệu, hoặc từ các phần mềm khác
+ 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ác thiết
bị điều khiển (đóng/mở cửa, dừng hay cho chuyển động…)
+ Một cách tổng quát, thành phần giao tiếp cho phép nhập/xuất thông tin cùng với hình thức trình bày/giao tiếp tương ứng
+ Mục tiêu chính của thành phần này là đưa thông tin từ thế giới thực bên ngoài phần mềm (người sử dụng, các thiết bị, phần mềm khác…) vào bên trong, hoặc ngược lại
- Thành phần xử lý:
Trang 17+ Kiểm tra tính hợp lệ của thông tin nguồn được cung cấp từ người dùng theo các quy định ràng buộc trong thế giới thực Ví dụ: chỉ cho mượn tối đa 3 quyển sách, mỗi lớp học không quá 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 hoặc tiến hành xử lý theo thuật giải tự đề xuất
+ Việc xử lý dựa trên thông tin nguồn từ người sử dụng cung cấp Ví dụ: tính nghiệm phương trình bậc 2 dựa trên các hệ số nhập vào hoặc dữ liệu lưu trữ có sẵn; 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ữ
+ 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, hay lưu trữ lại qua thành phần lưu trữ, hoặc cả hai
+ Một cách tổng quát, thành phần xử lý là hệ thống chuyên xử lý tính toán, biến đổi
dữ liệu Dùng thông tin nguồn từ thành phần giao diện (chức năng nhập) hay thành phần dữ liệu (chức năng đọc); Kiểm tra tính hợp lệ (chức năng kiểm tra) và sau đó tiến hành xử lý (chức năng xử lý) - nếu cần thiết Để cho ra kết quả sẽ được trình bày thông qua thành phần giao diện (chức năng xuất) hoặc lưu trữ lại trong thành phần dữ liệu (chức năng ghi)
- Thành phần lưu trữ (thành phần dữ liệu):
+ Cho phép lưu trữ lại (chức năng ghi) các kết quả đã xử lý Ví dụ: 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, cơ sở dữ liệu + Cho phép truy xuất lại (chức năng đọc) các dữ liệu đã lưu trữ phục vụ cho các hàm xử lý tương ứng
+ Một cách tổng quát thành phần dữ liệu là hệ thống chuyên đọc ghi dữ liệu cùng với mô hình tổ chức lưu trữ dữ liệu tương ứng Mục tiêu chính của thành phần này là chuyển đổi dữ liệu giữa bộ nhớ chính và bộ nhớ phụ Do đó, cần được xây dựng để thực hiện theo yêu cầu của người sử dụng
Phần mềm (software): là một tập hợp các câu lệnh được viết bằng một hoặc nhiều ngôn ngữ lập trình, nhằm tự động thực hiện một số các chức năng giải quyết một bài toán nào đó
Công nghệ (engineering): là cách sử dụng các công cụ, các kỹ thuật trong cách giải quyết một vấn đề nào đó
Công nghệ phần mềm (Software Engineering): là việc áp dụng các công cụ, các kỹ thuật một cách hệ thống trong việc phát triển các ứng dụng dựa trên máy tính Đó chính là việc áp dụng các quan điểm, các tiến trình có kỷ luật và lượng hoá được, có bài bản và hệ thống để phát triển, vận hành và bảo trì phần mềm
Trang 18Công nghệ phần mềm (Software Engineering) là các hoạt động bao gồm: phát triển, đưa vào hoạt động, bảo trì, và loại bỏ phần mềm một cách có hệ thống Các kỹ
sư phần mềm sẽ được cung cấp với các kỹ thuật, công cụ cơ bản nhằm phát triển các
hệ thống phần mềm
Như vậy, 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ý, phương pháp, công cụ, cách tiếp cận và phương tiện 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
Theo quan điểm của nhiều nhà nghiên cứu, có thể nhìn công nghệ phần mềm là một mô hình được phân theo ba tầng mà tất cả các tầng này đều nhằm tới mục tiêu chất lượng, chi phí, thời hạn phát triển phần mềm
Mô hình được phân theo ba tầng của công nghệ phần mềm được mô tả như sau:
Hình 1.1 Mô hình ba tầng
Ở đây tầng quy trình (process) liên quan tới vấn đề quản trị phát triển phần mềm như lập kế hoạch, quản trị chất lượng, tiến độ, chi phí, mua bán sản phẩm phụ, cấu hình phần mềm, quản trị sự thay đổi, quản trị nhân sự (trong môi trường làm việc nhóm), việc chuyển giao, đào tạo, tài liệu Như vậy, tầng quy trình bao gồm 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 đó, kết quả chuyển giao cho giai đoạn kế tiếp Các giai đoạn có thể được mô tả như sau
Hình 1.2 Tầng quy trình (process)
Trang 19+ Phân tích: Mô tả mức phát thảo các thành phần của phần mềm (đã có yêu cầu) + Thiết kế: Mô tả mức chi tiết các thành phần của phần mềm (đã có yêu cầu)
+ Lập trình: Thực hiện các thành phần của phần mềm (đã thiết kế)
+ Kiểm tra: kiểm chứng các thành phần của phần mềm (đã thực hiện)
Tầng phương pháp (methods) hay cách thức, công nghệ, kỹ thuật để làm phần mềm: liên quan đến tất cả các công đoạn phát triển hệ thống như nghiên cứu yêu cầu, thiết kế, lập trình, kiểm thử và bảo trì Phương pháp dựa trên những nguyên lý cơ bản nhất cho tất cả các lĩnh vực công nghệ kể cả các hoạt động mô hình hoá và kỹ thuật
mô tả Như vậy, tầng phương pháp bao gồ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 phần mềm
Tầng công cụ (tools) liên quan đến việc cung cấp các phương tiện hỗ trợ tự động hay bán tự động cho các tầng quá trình và phương pháp (công nghệ) Như vậy, tầng công cụ bao gồm hệ thống các phần mềm trợ giúp trong lĩnh vực xây dựng phần mềm,
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
Qua sơ đồ trên, ta thấy rõ công nghệ phần mềm là một khái niệm đề cập không chỉ tới các công nghệ và công cụ phần mềm mà còn tới cả cách thức phối hợp công nghệ, phương pháp và công cụ theo các quy trình nghiêm ngặt để làm ra sản phẩm có chất lượng
1.2 Kỹ sư phần mềm
Quy trình xây dựng phần mềm được thực hiện trong một môi trường chuyên nghiệp và đòi hỏi tuân thủ các nguyên tắc một cách chính xác Do đó, những kỹ sư phần mềm phải coi công việc của họ là trách nhiệm to lớn, chứ không đơn thuần chỉ là việc ứng dụng kỹ thuật
Kỹ sư phần mềm phải ứng xử trung thực và cách làm của họ phải rất chuyên nghiệp và đúng quy tắc Một số nguyên tắc cần thiết mà một kỹ sư phần mềm phải thực hiện:
- Sự tin cậy: Kỹ sư phần mềm phải tạo được sự tin cậy từ phía nhân viên và khách hàng
- Năng lực: Kỹ sư phần mềm không nên trình bày sai khả năng của mình, không nên nhận những công việc vượt quá khả năng của mình
- Các quyền về tài sản trí tuệ: Kỹ sư phần mềm nên quan tâm về các tài sản trí tuệ được bảo hộ như: bằng sáng chế, quyền tác giả, … để đảm bảo rằng tất cả tài sản trí tuệ của nhân viên và khách hàng đều được bảo hộ
- Lạm dụng máy tính: Kỹ sư phần mềm không nên sử dụng các kỹ năng của mình
để gây ảnh hưởng tới người khác Lạm dụng máy tính có thể được hiểu là những việc
Trang 20tầm thường Ví dụ chơi điện tử trên máy tính của người khác đến những vấn đề nghiêm trọng, chẳng hạn phát tán virus
Vấn đề về tính chuyên nghiệp và đúng quy tắc đối với kỹ sư phần mềm quan trọng tới mức một số tổ chức ở Mỹ đã hợp tác để phát triển bản Code of Ethics gồm 8 quy tắc liên quan đến ứng xử và cách ra quyết định của các kỹ sư phần mềm chuyên nghiệp
Kỹ sư phần mềm (Software engineer): là một người biết cách áp dụng rộng rãi những kiến thức về cách phát triển ứng dụng vào việc tổ chức phát triển một cách có
hệ thống các ứng dụng Công việc của người kỹ sư phần mềm là: đánh giá, lựa chọn,
sử dụng những cách tiếp cận có tính hệ thống, chuyên biệt, rõ ràng trong việc phát triển, đưa vào ứng dụng, bảo trì, và thay thế phần mềm
Do đặc điểm nghề nghiệp, người kỹ sư phần mềm phải có những kỹ năng cơ bản như:
- Định danh, đánh giá, cài đặt, lựa chọn một phương pháp luận thích hợp và các công cụ CASE
- Biết cách sử dụng các mẫu phần mềm (prototyping)
- Biết cách lựa chọn ngôn ngữ, phần cứng, phần mềm
- Quản lý cấu hình, lập sơ đồ và kiểm soát việc phát triển của các tiến trình
- Lựa chọn ngôn ngữ máy tính và phát triển chương trình máy tính
- Đánh giá và quyết định khi nào loại bỏ và nâng cấp các ứng dụng
Mục tiêu của kỹ sư phần mềm là sản xuất ra các sản phẩm có chất lượng cao và phù hợp với các quy trình phát triển chuẩn mực Các quy trình bao gồm:
- Việc phát triển (Development): Được bắt đầu từ khi quyết định phát triển sản phẩm phần mềm và kết thúc khi sản phẩm phần mềm được chuyển giao cho người sử dụng
- Việc sử dụng (Operations): Là việc xử lý, vận hành hằng ngày sản phẩm phần mềm
- Việc bảo trì (Maintenance): Thực hiện những thay đổi mang tính logic đối với hệ thống và chương trình để chữa những lỗi cố định, cung cấp những thay đổi về công việc, hoặc làm cho phần mềm được hiệu quả hơn
- Việc loại bỏ (Retirement): Thường là việc thay thế các ứng dụng hiện thời bởi các ứng dụng mới
1.3 Nhân tố con người trong ngành công nghiệp phần mềm
Đối với một sản phẩm phần mềm, một người không thể hoàn thành mà là kết quả lao động của một nhóm người, gọi đó là nhóm phát triển phần mềm Mỗi thành viên trong nhóm không được vị kỷ, thành quả lao động của nhóm được xen như là thành quả chung và phải tuyệt đối trung thành với nhóm
Trang 21Như vậy, một nhóm phát triển phần mềm như thế nào gọi là một nhóm hợp lý ? Để
có một nhóm phát triển phần mềm hợp lý, cần xem xét các yếu tố sau:
- Nhóm có bao nhiêu thành viên,
- Nhóm được tổ chức như thế nào,
- Tình hình thực tế của mỗi thành viên trong nhóm,
- Môi trường, điều kiện mà nhóm đang làm việc,
- Mỗi thành viên trong nhóm phải có một số kiến thức cần thiết tuỳ thuộc vào vai trò trong nhóm để phát triển phần mềm
1.4 Phân loại nghề nghiệp
Yêu cầu hiện nay của sự phát triển Công nghệ thông tin (CNTT) ở Việt nam đòi hỏi cần có những người lao động trong tất cả các ngành kinh tế biết sử dụng hữu hiệu CNTT trong công việc của mình, và đồng thời cần có những người trực tiếp tham gia vào sản xuất, kinh doanh, vận hành về CNTT Do vậy cần có những lớp người lao động sau:
- Những người biết vận dụng sáng tạo CNTT vào nghiệp vụ chuyên môn
- Những người tham gia quản lí và vận hành các hệ thống CNTT
- Những người tham gia trực tiếp vào việc phát triển và xây dựng ra các sản phẩm CNTT,
Việc phân loại nghề nghiệp trong các hệ thống thông tin có thể được phân chia dựa vào các tiêu chuẩn như: mức độ kinh nghiệm, loại hình công việc,
Hình 1.3 Phân loại nghề nghiệp
1.4.1 Mức độ kinh nghiệm
1) Sơ cấp
Nhân viên cán bộ ở mức độ sơ đẳng nhất trực tiếp được giám sát chặt chẽ, nhưng
họ sẽ được làm những công việc đúng chuyên môn và đây là cấp độ tối thiểu Những cán bộ ở mức độ sơ đẳng có những kỹ năng, khả năng cơ bản để tìm ra những thông
Trang 22tin để mở rộng, thúc đẩy những thông tin đó Thường thì phải mất khoảng hai năm để thực hiện các công việc đẳng cấp này
2) Trung cấp
Những cán bộ có trình độ trung cấp hầu hết làm việc độc lập, yêu cầu trực tiếp một
số các hoạt động Những người bắt đầu ở mức độ trung cấp có 2 đến 4 năm kinh nghiệm Thời gian trung bình ở cấp độ này từ 2 đến 5 năm
3) Cao cấp
Các cán bộ ở mức độ này có một trình độ nhất định về công việc và kinh nghiệm
kỹ thuật đào tạo, huấn luyện người khác Những nhân viên này giám sát người khác, phụ thuộc vào quy mô, sự phức tạp của các dự án, họ thường xuyên có điều kiện tiên quyết để lãnh đạo Những cán bộ có từ 5 đến 7 năm kinh nghiệm và có ít nhất là 3 năm
để học các kỹ năng Rất nhiều người đã kết thúc sự nghiệp học vấn của họ ở cấp độ này và lưu lại một vài năm nữa để hoàn thành dự án, trở thành chuyên gia cả về công nghệ và ứng dụng
4) Lãnh đạo
Những nhà lãnh đạo làm việc một mình Họ kiêm tất cả các nhiệm vụ giám sát Một người lãnh đạo thường được gọi là những chuyên gia phụ trách các dự án Những chuyên gia này có kinh nghiệm, kỹ năng cả ở trình độ đại học và có mong muốn được quản lý các vị trí
5) Chuyên gia kỹ thuật
Chuyên gia kỹ thuật là người có kinh nghiệm rộng rãi trong nhiều lĩnh vực Kinh nghiệm của một chuyên gia bao gồm phát triển ứng dụng, mạng, cơ sở dữ liệu và hệ điều hành Các chuyên gia cũng có trình độ quản lý, có bổn phận và năng lực giống nhau mà không phải chịu trách nhiệm quản lý một dự án Các chuyên gia có thể làm việc trong các vị trí của hệ thống thông tin trong khoảng 10 năm hoặc có thể lâu hơn
và cũng có thể duy trì lâu dài ở cấp độ này
6) Nhà quản lý
Công việc quản lý một cách độc lập, thể hiện giá trị của riêng từng cá nhân, mục tiêu tiến hành bản báo cáo, tường trình và quản lý dự án Các nhà quản lý có thể hoặc không thể trở thành chuyên gia kỹ thuật theo định hướng nhưng họ có kinh nghiệm làm việc và hầu hết họ đều có trách nhiệm trong cách quản lý Đối với các nhà quản lý
kỹ thuật việc phân chia các đặc điểm công việc là các kế hoạch mục tiêu, giám sát, quản lý cá nhân, các hoạt động liên lạc, trong hoạt động quản lý dự án
Sơ đồ về mối liên hệ sau được thể hiện như sau:
Trang 23Hình 1.4 Mối liên hệ của con đường nghề nghiệp cho các mức khác nhau
1.4.2 Loại hình công việc
1) Phát triển ứng dụng
- Lập trình viên (Programmer): Chuyển đổi những đồ án chi tiết kỹ thuật sang các module mã và tự kiểm tra các đơn vị Các lập trình viên có thể luân phiên chịu trách nhiệm giữa phát triển ứng dụng và bảo trì Những chuyên gia lập trình ở trình độ đại học thực hiện những nhiệm vụ bên ngoài việc lập trình
- Kỹ sư phần mềm (Software Engineer): Thực hiện những chức năng của các nhà phân tích, các nhà thiết kế và các lập trình viên Các phân tích gia ở trình độ đại học luôn luôn tham gia vào tổ chức có cấp độ IS để lập kế hoạch và nghiên cứu khả thi Các kỹ sư phần mềm có thể làm cả ba việc như phân tích, thiết kế và lập trình cũng như đứng ra lãnh đạo dự án hoặc quản lý dự án Một kỹ sư quản lý phần mềm sơ cấp thường dành nhiều thời gian lập trình trong khi một kỹ sư có trình độ cao cấp lại tập trung vào việc lập kế hoạch, nghiên cứu khả thi, phân tích và thiết kế
- Kỹ sư tri thức (Knowledge Engineer): Các kỹ sư tri thức suy luận ra những mô hình ngữ nghĩa từ các chuyên gia để từ đó xây dựng những hệ chuyên gia và trí tuệ nhân tạo Các kỹ sư tri thức tương tự như các kỹ sư phần mềm nhưng được chuyên môn hoá các kỹ năng để áp dụng vào các vấn đề trí tuệ nhân tạo Việc phát triển các
mô hình và các chương trình của cấu trúc trí tuệ đòi hỏi khả năng quan sát, kỹ năng phỏng vấn sâu sắc, khả năng trừu tượng hoá những vấn đề không phải của chuyên môn
cá nhân để tạo ra những ý thức lập luận và thông tin cần thiết và khả năng phát triển những dự đoán về thông tin và tính chính xác với các chuyên gia
2) Hỗ trợ ứng dụng
- Chuyên gia ứng dụng (Application Specialist): Chuyên gia ứng dụng có những vùng vấn đề được chuyên môn hoá cho phép họ tham khảo ý kiến của các đội dự án về một loại ứng dụng cụ thể Ví dụ một nhà phân tích cao cấp về chuyển tiền thời gian thực có thể phân chia được thời gian giữa các dự án chuyển tiền trong nước và quốc tế,
Trang 24biết trước được những quy tắc, luật lệ phải tuân theo của ngân hàng dự trữ liên bang cũng như của các tổ chức chuyển tiền khác
- Quản trị dữ liệu (Data Management): Người quản lý dữ liệu quản lý thông tin như một nguồn thống nhất Với chức năng này, bộ phận quản lý dữ liệu giúp cho người sử dụng xác định được tất cả dữ liệu được sử dụng, các dữ liệu có ý nghĩa trong quá trình thực hiện chức năng của công ty Những người quản lý dữ liệu thiết lập và bảo lưu những chuẩn mực để thống nhất dữ liệu
Khi dữ liệu đã được xác định, người quản lý dữ liệu sẽ làm việc để định dạng và xác định cấu trúc cơ sở dữ liệu để sử dụng với ứng dụng Với việc phát triển ứng dụng mới, những người quản lý dữ liệu làm việc với bộ phận phát triển ứng dụng để định vị những số liệu đã được tự động và với bộ phận quản trị CSDL để cung cấp những nhóm ứng dụng dễ dàng truy nhập những cơ sở dữ liệu đã được tự động hoá
- Quản trị cơ sở dữ liệu (Database Administrator-DBA): Là những người quản lý
cơ sở dữ liệu, quản lý môi trường dữ liệu vật lý của một tổ chức DBA phân tích, thiết
kế, xây dựng và bảo lưu cơ sở dữ liệu cũng như môi trường phần mềm cơ sở dữ liệu; làm việc cùng với những người quản lý dữ liệu xác định dữ liệu DBA xác định các cơ
sở dữ liệu vật lý và nạp thông tin thực tế vào chúng Một người quản lý cơ sở dữ liệu làm việc với các nhóm phát triển ứng dụng để cung cấp truy nhập đến dữ liệu tự động
và để định nghĩa rõ ràng cơ sở dữ liệu cần thiết cho thông tin được tự động
- Kỹ sư trí tuệ nhân tạo (Artificial Intelligence Engineer): Các kỹ sư trí tuệ nhân tạo làm việc như cố vấn giúp các đội dự án xác định, thiết kế và cài đặt trí tuệ vào các ứng dụng Kỹ sư trí tuệ nhân tạo cùng với các kỹ sư tri thức dịch và kiểm tra những vấn đề miền dữ liệu và thông tin lập luận bằng một ngôn ngữ của trí tuệ nhân tạo Các kỹ sư trí tuệ nhân tạo đạt được trình độ chuyên môn cao hơn các kỹ sư tri thức
- Nhà tư vấn (Counselor): Người tư vấn thì biết mọi vấn đề và thực hành được tất
cả Số năm kinh nghiệm càng cao thì kiến thức có được càng nhiều Lĩnh vực chuyên môn có thể bao gồm một vài loại công việc được đề cập đến trong phần này Người tư vấn được nhờ đến trong hầu hết các trường hợp lắp đặt hệ thống và cung cấp những kỹ năng bên ngoài không sẵn có Bởi vậy họ thường đào tạo đội ngũ bên trong trong suốt quá trình thực hiện công việc Khi được nhờ đến, người tư vấn được mong chờ có những kỹ năng chuyên biệt và sẽ áp dụng những kỹ năng này trong việc thực hiện tư vấn
3) Chuyên ngành kỹ thuật
- Nhà phân tích (Analyst) và kỹ sư truyền thông (Communication Engineer): Các nhà phân tích và kỹ sư truyền thông phân tích, thiết kế, đàm phán hoặc cài đặt các thiết
bị và phần mềm truyền thông Họ đòi hỏi liên quan chặt chẽ tới kỹ thuật truyền thông
và có thể làm việc trên máy tính lớn hoặc các mạng truyền thông dựa vào PC Để bắt
Trang 25đầu ở mức xuất phát thì nền tảng kiến thức phải có là điện tử, kỹ thuật, các ứng dụng, khoa học máy tính và truyền thông
- Chuyên gia về mạng cục bộ (Local Network Specialist): Các chuyên gia mạng cục bộ đặt kế hoạch, lắp đặt, quản lý và duy trì những khả năng của mạng cục bộ Điểm khác nhau duy nhất giữa các chuyên gia mạng cục bộ và các chuyên gia truyền thông là phạm vi Các chuyên gia truyền thông làm việc với nhiều mạng kể cả máy tính lớn; còn chuyên gia mạng cục bộ chỉ làm việc trên những mạng có giới hạn về mặt địa lý và được cấu thành bởi nhiều máy tính cá nhân
- Những người quản lý mạng cục bộ (Local Network Manager): Người quản lý mạng cục bộ tạo ra người sử dụng mới, thực hiện hoặc thay đổi mức hoặc mã bảo mật, cài đặt những phiên bản mới của phần mềm điều hành mạng cục bộ, cài đặt những phiên bản mới của cơ sở dữ liệu hoặc phần mềm cơ sở mạng cục bộ khác; giám sát tài nguyên cung cấp qua mạng cục bộ, cung cấp bản sao và khả năng phục hồi cho mạng cục bộ, và quản lý cấu hình mạng cục bộ
- Lập trình viên hệ thống (System Programmer): Các lập trình viên hệ thống cài đặt
và bảo dưỡng hệ điều hành và ứng dụng hỗ trợ phần mềm; định giá những đặc điểm mới và xem xét chúng có cần thiết ở một thời điểm nào đó không là một kỹ năng mà lập trình viên hệ thống cần phát triển; giám sát hàng trăm ứng dụng để xem xét những rắc rối của nó có liên quan đến vấn đề của hệ thống hay không là một nhiệm vụ quan trọng
- Chuyên gia hỗ trợ phần mềm (Software Support Professor -SSP): Hỗ trợ phần mềm ứng dụng tương tự nhưng khác với lập trình viên hệ thống SSP cài đặt và bảo dưỡng gói phần mềm sử dụng bởi cả các nhà phát triển ứng dụng và người sử dụng Chúng có thể là cơ sở dữ liệu, ngôn ngữ hỏi đáp, sao lưu và phục hồi, bảng tính, quản
lý khoảng trống đĩa, giao diện, truyền thông
4) Nhân viên
- Chuyên gia về bảo mật (Security Specialist): Một chuyên gia bảo mật chịu trách nhiệm bảo mật và sẵn sàng phục hồi thảm hoạ Để bảo mật, một chuyên gia phải thiết lập các chuẩn cho bảo mật dữ liệu, giúp đỡ các đội dự án trong việc quyết định các yêu cầu bảo mật và thiết lập các chuẩn cho trung tâm bảo mật dữ liệu Tương tự để phục hồi thảm hoạ, chuyên gia bảo mật giúp đỡ những người quản lý và các đội dự án trong việc xác định các dữ liệu nguy cấp cần thiết cho tổ chức Sau đó chuyên gia giúp trung tâm dữ liệu và các đội dự án trong việc phát triển và thử nghiệm các kế hoạch phục hồi thảm hoạ
- Kiểm soát viên (Comptroller): Các kiểm soát viên thực hiện việc kiểm tra khả năng tin cậy của những thiết kế ứng dụng Bất kỳ ứng dụng nào duy trì những quy định hợp pháp, trách nhiệm hoặc dùng bản hướng dẫn của công ty cũng có thể bị tạo
Trang 26lại bất kỳ giao dịch nào và phát hiện ra tiến trình của nó Các kiểm soát viên đảm bảo rằng những mất mát của công ty là nhỏ nhất qua việc thiết kế những ứng dụng tốt Những khía cạnh thiết kế được các kiểm soát viên đánh giá là rãnh kiểm soát, khả năng phục hồi và bảo mật
- Đào tạo (Training): Một người đào tạo kỹ thuật học công nghệ mới, các sản phẩm đại lý, những đặc điểm ngôn ngữ mới, Sau đó, họ dạy những người khác trong tổ chức sử dụng Đào tạo có thể thực hiện trong nội bộ tổ chức những cũng có thể do một công ty đào tạo có chuyên môn đảm nhận
- Người viết các chuẩn và kỹ thuật: Những người phát triển chuẩn làm việc với những người quản lý để định ra những mặt công việc họ muốn chuẩn hoá và để tiêu chuẩn hoá những yêu cầu thành những chính sách và thủ tục chuẩn hoá cho tổ chức Những kỹ năng quan trọng nhất đối với người phát triển chuẩn là ngôn ngữ và chữ viết truyền thông Phát triển tiêu chuẩn và việc viết kỹ thuật là các hoạt động có liên quan với nhau Người viết kỹ thuật lấy thông tin và sản phẩm phần mềm, ứng dụng hoặc những sản phẩm công nghệ thông tin khác và viết tài liệu để mô tả những đặc điểm, chức năng, công dụng của chúng Người viết kỹ thuật phải có kỹ năng giao tiếp tốt trong cả lĩnh vực kỹ thuật và phi kỹ thuật Người viết dùng các kỹ năng giao tiếp để nói và phát triển sự hiểu biết về sản phẩm được giới thiệu
- Đảm bảo chất lượng (Quality Assurance): Các dạng kiểm tra khác nhau tuỳ thuộc vào sản phẩm được duyệt Một phân tích đảm bảo chất lượng thường được thực hiện với một kế hoạch phát triển khi nó bắt đầu Người đảm bảo chất lượng cần phải tham gia đến khi sản phẩm đầu tiên của nhóm phát triển xuất hiện Sau đó khi mà tài liệu đã
có, người phân tích đảm bảo chất lượng phải xem xét sự thống nhất, hoàn thiện, chính xác, uyển chuyển linh động của nó
Những người phân tích đảm bảo chất lượng phải có kỹ năng giao tiếp, kỹ năng giải quyết vấn đề để thực hiện công việc kiểm tra chất lượng Họ cần phải có kinh nghiệm trong tất cả các khía cạnh phát triển của dự án để biết nên làm cái gì và vấn đề nảy sinh
từ đâu Đồng thời sự nhạy cảm và khả năng phát hiện ra những vấn đề cần phê bình cũng rất quan trọng Không ai muốn bị nói trước công chúng là mình có lỗi mặc dù về mặt lý trí họ đều biết rằng công việc dự án sẽ có lợi từ những phê bình đó Nhân viên đảm bảo chất lượng cần phải nhạy cảm với cả những chính sách và vấn đề được phát hiện
- Lập kế hoạch công nghệ: Các chuyên gia giám sát sự phát triển công nghệ xác định các xu hướng, lựa chọn các công nghệ thích hợp để thử nghiệm trong tổ chức và cuối cùng chạy đua trong thực hiện các kỹ thuật mới trong tổ chức Những nhân viên cao cấp là cầu nối giữa thế giới bên ngoài và cộng đồng các đại lý với công ty Đội ngũ
Trang 27nhân viên sơ cấp có thể làm việc với nhân viên cao cấp để tìm ra những chỉ dẫn trong hợp tác và quản lý công nghệ
5) Những vấn đề khác
- Hỗ trợ sản phẩm: Nhân viên hỗ trợ sản phẩm làm việc cho nhóm người dùng cuối hoặc bán hàng để cung cấp những chuyên môn kỹ thuật liên quan đến sản phẩm hoặc những hỗ trợ trên đường dây nóng khác Ngoài những kiến thức kỹ thuật về sản phẩm, các cá nhân trong công việc này còn phải có kỹ năng trả lời điện thoại tốt và phải nói bằng ngôn ngữ không chuyên đối với người sử dụng về các vấn đề
- Tiếp thị sản phẩm: Nhân viên hỗ trợ tiếp thị làm việc cho nhà bán hàng để cung cấp những thông tin kỹ thuật cho đại diện bán hàng trong các tình huống tiếp thị Loại công việc này đòi hỏi khả năng giao tiếp và kỹ năng giao tiếp tốt với một vài kiến thức
về tiếp thị, chẳng hạn như thu hẹp phạm vi giao tiếp, đề cập đến các kỹ thuật để giới thiệu một cách hiệu quả với người đại diện bán hàng Tất cả các công ty tư vấn và phần cứng, phần mềm đều có người để làm những công việc này
- Chuyên gia người sử dụng cuối: Chuyên gia người dùng cuối là người chuyển những yêu cầu sử dụng thành những ngôn ngữ kỹ thuật cho nhóm phát triển sử dụng Trong một vài tổ chức, đây là chức năng của người phân tích hệ thống hoặc là kỹ sư phần mềm Ở các công ty khác, có những môi giới giữa người sử dụng cuối với bộ phận sử dụng để thực hiện chức năng này Tóm lại mọi công ty đều phải có sự kết hợp của những đặc điểm công việc khác nhau ở tất cả các bộ phận
1.5 Sản phẩm phần mềm
Xây dựng phần mềm là một hoạt động chính của công nghệ phần mềm Một phần
mềm gồm một hay nhiều ứng dụng (application) - là một tập hợp các chương trình
thực hiện tự động hóa một số các nhiệm vụ nghiệp vụ Nghiệp vụ (Business) bao gồm tập hợp các chức năng như: tìm hiểu thị trường, kiểm toán, sản xuất và quản lý nhân sự Mỗi chức năng có thể được chia nhỏ ra thành những tiến trình thực hiện nó Ví dụ: tìm hiểu thị trường là sự tìm hiểu về bán hàng, quảng cáo, và đưa ra các sản phẩm mới Mỗi tiến trình lại có thể được phân chia theo những nhiệm vụ đặc thù của chúng
Ví dụ, việc bán hàng phải duy trì được mối quan hệ với khách hàng, làm việc theo trình tự và các phục vụ dành cho khách hàng Các ứng dụng có thể hỗ trợ cho từng nhiệm vụ một cách đơn lẻ
Mọi ứng dụng đều có một số đặc điểm chung (tương đồng) và một số đặc điểm riêng Các đặc điểm chung của ứng dụng thường được đề cập là: đặc tính (Characteristics), tính đáp ứng (Responsiveness) và loại (Type) của ứng dụng
1.5.1 Các đặc tính phần mềm
Các đặc tính phần mềm là tất cả các điểm chung cho mọi ứng dụng và cho các dữ liệu vào, các tiến trình, các ràng buộc, và các giao diện
Trang 28- Dữ liệu
+ Đầu vào: Dữ liệu vào là dữ liệu ở bên ngoài máy tính, và chúng được đưa vào bằng cách sử dụng một thiết bị đầu vào Thiết bị đầu vào được sử dụng để đưa dữ liệu vào máy tính có thể là: bàn phím, máy quét, hoặc được truyền từ một máy tính khác + Đầu ra: Dữ liệu ra ngược lại so với dữ liệu vào ở chỗ, đầu ra là các dữ liệu được đưa ra ngoài máy tính Một số các thiết bị đầu ra như máy in, màn hình hiển thị, một máy tính khác
Sự lưu trữ dữ liệu và sự tìm kiếm dữ liệu: Dữ liệu được mô tả ở dạng vật lý, trong một máy có thể đọc được các khuôn dạng dữ liệu Việc tìm kiếm dữ liệu được hiểu là bạn có thể truy nhập vào dữ liệu ở dạng lưu trữ của nó Việc lưu trữ và tìm kiếm luôn
đi cùng với nhau (cả ở mức quan niệm lẫn trong các chương trình phần mềm) Việc lưu trữ dữ liệu đòi hỏi hai kiểu định nghĩa dữ liệu là kiểu vật lý và kiểu logic
- Xử lý
Xử lý bao gồm một chuỗi các lệnh hoặc các sự kiện có liên quan với nhau làm việc với các dữ liệu Kết quả của một xử lý có thể là: làm thay đổi cơ sở dữ liệu, đưa dữ liệu trả lời ra thiết bị đầu cuối, máy in hoặc in ra giấy, có thể là những yêu cầu về các trang thiết bị, sản sinh những chương trình, hoặc lưu trữ những luật, những thông tin mới, được suy diễn ra về các tình huống, các phần tử
Hình 1.5 Mối liên hệ giữa dữ liệu và xử lý
- Ràng buộc:
+ Ràng buộc bao gồm: Ràng buộc thứ tự trước, ràng buộc thứ tự sau, ràng buộc thời gian, ràng buộc cấu trúc, ràng buộc điều khiển và cả ràng buộc về tham chiếu + Ràng buộc về thứ tự trước (Prerequisite Constraint): Bắt buộc về thứ tự trước là điều kiện đầu tiên phải được đáp ứng để có thể bắt đầu quá trình xử lý
+ Ràng buộc về thứ tự sau (Postrequisite Constraint): Ràng buộc loại này là điều kiện cần phải thỏa mãn để quá trình xử lý có thể hoàn thành được Cụm câu lệnh này được đưa vào cuối quá trình xử lý
+ Ràng buộc về thời gian (Time Constraint): Bao gồm ràng buộc về thời gian xử
lý, thời gian phân chia cho một quá trình xử lý, thời gian yêu cầu đối với các quá trình
Trang 29xử lý bên ngoài, thời gian xử lý đồng bộ, thời gian trả lời cho quá trình xử lý với giao diện ngoài
+ Ràng buộc về mặt cấu trúc: Có thể hiểu là bao gồm việc xác định loại đầu vào và đầu ra của dữ liệu nào được cho phép, quá trình xử lý được thực hiện như thế nào và mối quan hệ giữa các quá trình với nhau
+ Ràng buộc về điều khiển: Liên quan đến việc duy trì mối quan hệ về dữ liệu + Ràng buộc về suy diễn: Đó là những khả năng có thể xảy ra từ một ứng dụng, dựa vào các kết quả trước đó, hoặc có thể dựa vào các quan hệ về dữ liệu, ta có thể dẫn đến một kết quả khác
- Giao diện: Quan trọng nhất là giao diện người sử dụng - là phương tiện giao tiếp giữa người sử dụng và chương trình Sau đó là giao diện thủ công - là các mẫu báo cáo, và một số giao diện đã được chuẩn hóa như giao diện về mạng LAN của Institue of Electrical and Electronic Engineers, chuẩn OSI (Open System Interface) của International Standards Organization,
1.5.2 Tính đáp ứng
Tính đáp ứng của ứng dụng là thời gian sử dụng và đáp ứng yêu cầu từ người dùng
của ứng dụng Nó được định nghĩa bởi sự định hướng thời gian mà ứng dụng xử lý như: Xử lý theo lô, xử lý theo kiểu trực tuyến hay xử lý theo thời gian thực
- Xử lý theo lô: Ứng dụng xử lý theo lô là ứng dụng mà các phiên giao dịch (transactions) được gom lại theo thời gian và thực hiện theo nhóm Tại mỗi thời điểm xác định, công việc được xếp thành lô và đưa vào xử lý
- Xử lý trực tuyến: Ứng dụng trực tuyến được định vị trực tiếp trong bộ nhớ và được sử dụng một cách tuần tự bởi các phiên giao dịch hoặc sự kiện mà không cần phải nạp lại ứng dụng vào bộ nhớ
- Xử lý theo thời gian thực: Ứng dụng thời gian thực xử lý phiên giao dịch và sự kiện dựa trên thời gian thực tế mà quá trình xử lý xảy ra Sau đó, kết quả ở trạng thái sẵn sàng để phục vụ hoặc điều khiển một tiến trình vật lý nào đó Những thay đổi thu được từ một quá trình xử lý thời gian thực có thể được khôi phục lại trạng thái ban đầu
Trang 30được biết rõ và có cấu trúc tốt Theo nghĩa được biết rõ, chức năng đó phải có tính lập lại, thân thiện và rõ ràng Theo nghĩa cấu trúc tốt, vấn đề đó phải có thể được xác định một cách đầy đủ và rõ ràng Các yêu cầu có thể được định danh bởi đội ngũ xây dựng phần mềm
- Tương tác: dữ liệu sử dụng xong là không cần nữa?
- Dữ liệu được lưu trữ để sử dụng lại và thay đổi trong tương lai?
- Dữ liệu được lưu trữ để sử dụng thường xuyên trong một số quá trình lập lại? Ứng dụng truy vấn hỗ trợ một khái niệm là kho chứa dữ liệu (Data Warehouse) Đó
là một sơ đồ lưu trữ xây dựng trên quan điểm: hầu hết dữ liệu cần phải giữ lại cho các truy nhập truy vấn trực tuyến Tại đây lưu lại các phiên bản cũ của phần lớn các phần
tử trong cơ sở dữ liệu, các lần vào ra giao dịch và các bản ghi liên quan đến một số quá trình hoạt động
3) Ứng dụng hỗ trợ quyết định (Decision Supports System - DSS)
DSS làm nhiệm vụ xác định và giải quyết bài toán Khác với một ứng dụng truy vấn mà những người chuyên nghiệp và các nhà quản lý sử dụng để tìm kiếm và tổng hợp các dữ liệu về một quá trình hoạt động (như ở ví dụ trên), với ứng dụng hỗ trợ quyết định, họ phân tích, xác định các xu hướng, thực hiện các phân tích dữ liệu về mặt thống kê hay toán học từ đó giải các bài toán không cấu trúc Dữ liệu dùng cho DSS thường lấy từ các ứng dụng sử dụng giao dịch
Vì thông tin thường không đầy đủ, trong DSS thường giải bài toán bằng phương pháp lặp, áp dụng mô hình toán học hoặc thống kê để đi tới quyết định Dữ liệu hỗ trợ hiệu chỉnh thường được đưa trở lại quá trình mô hình hoá để làm mịn các phân tích Một số hệ thống được xem là một sản phẩm phụ của DSS như:
- Hệ thống thông tin thi hành (Excutive Information System - EIS) là một sản phẩm phụ của DSS EIS hỗ trợ quyết định thực hiện và cung cấp khả năng tìm kiếm trong các môi trường một cách tự động Các hệ thi hành hàng đầu phải xử lý được các vấn
đề với thông tin không đầy đủ, không chính xác, không rõ ràng và có liên quan đến tương lai EIS tích hợp thông tin từ cơ sở dữ liệu bên ngoài với ứng dụng nội bộ để tạo
ra khả năng mô hình hoá và tìm kiếm thông tin tự động Sự khác nhau cơ bản của EIS với DSS là ở đây dữ liệu không hoàn chỉnh, không rõ ràng và thậm chí không chính xác
Trang 31- Hệ thống hỗ trợ quyết định theo nhóm (Group DSS - GDSS) là một dạng đặc biệt của ứng dụng DSS GDSS có một nhật ký ghi lại quá trình xây dựng một quyết định để
hỗ trợ một nhóm những người có trách nhiệm ra quyết định GDSS tập trung chủ yếu vào các quá trình tương tác có ít hoặc không có phân tích thống kê hoặc mô hình hoá
dữ liệu trong nhóm Các phần mềm cơ sở dữ liệu trong GDSS có xu hướng ít được xây dựng hơn đối với DSS, nhưng có thể bao gồm một số bảng tính và các thủ tục biểu diễn tổng kết về các bên tham gia dưới dạng số hoặc đồ thị Các chức năng điển hình của GDSS là:
- Ghi lại các ý kiến vô danh
- Tuyển cử dân chủ bầu các nhà lãnh đạo
- Thảo luận và bầu cử để đạt được một sự thoả thuận nào đó trong nhóm
4) Hệ chuyên gia (Expert Systems - ES)
Các ứng dụng hệ chuyên gia là các ứng dụng tin học tự động hoá tri thức và khả năng lập luận của một hoặc nhiều chuyên gia trong một lĩnh vực cụ thể nào đó ES phân tích các đặc trưng của một tình huống để đưa ra một lời khuyên, một khuyến nghị hoặc phác hoạ một kết luận bằng các quá trình lập luận tự động Một hệ ES bao gồm bốn thành phần chính: Hệ thống thu thập tri thức, cơ sở tri thức, mô tơ suy diễn (còn gọi là cơ sở luật) và hệ thống diễn giải
Hệ thống thu thập tri thức là phương tiện xây dựng cơ sở tri thức Nói chung, càng nhiều tri thức thì hệ thống càng “thông minh” hơn Hệ thống thu thập tri thức phải cung cấp các sự kiện khởi đầu, các quy tắc phỏng đoán và có thể dễ dàng bổ sung tri thức mới
- Cơ sở tri thức là một phiên bản tự động hệ thống hoá tri thức chuyên gia cộng với các kỹ năng áp dụng tri thức đó Thiết kế cơ sở tri thức cũng khó như suy luận thông tin vì dù nó được thiết kế như thế nào thì cũng bị giới hạn bởi hệ thống cài đặt nó Vì vậy, một ngôn ngữ đặc biệt cho ES đã được thiết kế, nó cho phép xác định mối quan
hệ giữa các mẫu thông tin và sử dụng một cách mềm dẻo các thông tin đó trong lập luận
- Vì mục đích của lập luận là tìm một giải pháp khả dĩ nhất cho một tình huống, ES
sử dụng lập luận và suy diễn để xây dựng nhiều giải pháp có thể cho một tình huống cho trước Một vài giải pháp có thể được đưa ra khi thông tin không hoàn chỉnh hoặc khi mới lập luận một phần Xác suất chính xác của giải pháp do hệ thống đưa ra thường được đo bằng mức độ hữu ích của giải pháp đó Các vấn đề liên quan đến quy tắc hoặc đạo đức thường được xét đến trong các ES hơn so với trong các ứng dụng khác
- Thành phần quan trọng cuối cùng của một ES là khả năng diễn giải các lập luận cho người sử dụng Tìm lại quá trình suy diễn là điều rất quan trọng giúp người sử
Trang 32dụng có được kinh nghiệm sử dụng hệ thống và xác định mức độ tin cậy vào kết quả
do ES đưa ra
5) Các hệ thống nhúng (Embedded systems)
Đây là các ứng dụng vốn là một phần của hệ thống lớn hơn Thường, bản thân ứng dụng thì rất đơn giản nhưng sự phức tạp của chúng là ở giao diện để tạo ra một độ chính xác hoàn hảo, tính theo thời gian thực (real - time) trong phạm vi đời sống của
hệ thống lớn hơn Việc phát triển các ứng dụng kết hợp này là địa phận của các nhà thiết kế theo học ngành khoa học máy tính hơn là những nhà thiết kế hệ thống thông tin
1.6 Một số mô hình xây dựng phần mềm
1.6.1 Mô hình tuyến tính (The linear sequential model)
Mô hình này còn được gọi là mô hình kinh điển (classic model) hay mô hình thác nước (waterfall model) Mô hình này xem quá trình xây dựng một sản phẩm phần mềm bao gồm nhiều giai đoạn tách biệt, sau khi hoàn tất một giai đoạn thì chuyển đến giai đoạn sau
Có hai hoạt động phổ biến được thực hiện trong mỗi giai đoạn là: kiểm tra - phê chuẩn và quản lý cấu hình Tổng kết mỗi giai đoạn là sự kiểm tra , phê chuẩn và quản
lý cấu hình đây chính là mục tiêu của sản phẩm Việc kiểm tra đưa ra khuôn mẫu đúng đắn tương ứng giữa sản phẩm phần mềm và các đặc tính của nó Sự phê chuẩn đưa ra chuẩn mực về sự phù hợp hay chất lượng của sản phẩm phần mềm đối với mục đích của quá trình hoạt động
Mô hình tuyến tính gồm các giai đoạn chính:
- Phân tích yêu cầu (Requirements analysis): hiểu lĩnh vực thông tin, chức năng, hành vi, tính năng và giao diện của phần mềm sẽ phát triển Cần phải tạo tư liệu và bàn thảo với khách hàng, người dùng
- Thiết kế (Design): là quá trình nhiều bước với 4 thuộc tính khác nhau của một chương trình: cấu trúc dữ liệu, kiến trúc phần mềm, biểu diễn giao diện và chi tiết thủ tục (thuật toán) Cần tư liệu hóa và là một phần quan trọng của cấu hình phần mềm
- Cài đặt và thử nghiệm đơn thể (Code generation/Unit Testing): Chuyển thiết kế thành chương trình máy tính bởi ngôn ngữ nào đó Trong giai đoạn này, thiết kế phần mềm phải được chứng thực như là một tập họp nhiều chương trình hay nhiều đơn vị nhỏ Thử nghiệm các đơn vị bao gồm xác minh rằng mỗi đơn vị thỏa mãn đặc tả của
nó
- Thử nghiệm tổng thể (Testing): Kiểm tra các chương trình và môđun cả về lôgic bên trong và chức năng bên ngoài, nhằm phát hiện ra lỗi và đảm bảo với đầu vào xác định thì cho kết quả mong muốn
Trang 33- Bảo trì và phát triển (Maintenance-Development): Đáp ứng những thay đổi, nâng cấp phần mềm đã phát triển do sự thay đổi của môi trường, nhu cầu
Hình 1.6 Mô hình tuyến tính
Tuy vậy, thường thì các dự án có hàng ngàn trang tài liệu mà không ai ngoại trừ tác giả đọc đến nó Thông tin ứng dụng chỉ nằm trong đầu mọi người và việc trao đổi thông tin là một trở ngại lớn để có được thành công của hệ thống Kết luận là văn bản không phải là một phương tiện tốt để mô tả các yêu cầu phức tạp của ứng dụng Thêm vào đó, mô hình bộc lộ một số nhược điểm quan trọng như:
- Mối quan hệ giữa các giai đoạn không được thể hiện,
- Hệ thống phải được kết thúc ở từng giai đoạn Do vậy rất khó thực hiện được đầy
đủ những yêu cầu của khách hàng,
- Thực tế các dự án ít khi tuân theo dòng tuần tự của mô hình
- Khách hàng ít khi tuyên bố rõ ràng khi nào xong hết các yêu cầu
- Khách hàng phải có lòng kiên nhẫn chờ đợi thời gian nhất định mới có sản phẩm
1.6.2 Mô hình chữ V
Trong mô hình tuyến tính, kiểm thử được thực hiện trong một giai đoạn riêng biệt Còn với mô hình chữ V, toàn bộ qui trình được chia thành hai nhóm giai đoạn tương ứng nhau: phát triển và kiểm thử Mỗi giai đoạn phát triển sẽ kết hợp với một giai đoạn kiểm thử tương ứng
Tinh thần chủ đạo của mô hình chữ V là các hoạt động kiểm thử phải được tiến hành song song (theo khả năng có thể) ngay từ đầu chu trình cùng với các hoạt động phát triển Ví dụ, các hoạt động cho việc lập kế hoạch kiểm thử toàn hệ thống có thể được thực hiện song song với các hoạt động phân tích và thiết kế hệ thống
Trang 34Hình 1.7 Mô hình chữ V
1.6.3 Mô hình mẫu (Prototyping model)
Thông thường, khách hàng sẽ đưa ra mục tiêu của họ một cách chung chung mà họ không biết hoặc không đưa ra một cách cụ thể những cái vào, cái ra và các tiến trình
xử lý chúng Thêm vào đó, chúng ta cũng không thể không quan tâm đến thuật toán sử dụng, tính tương thích của sản phẩm phần mềm với môi trường của nó như: phần cứng, hệ điều hành Trong trường hợp này, mô hình mẫu có thể là sự lựa chọn tốt hơn cho người lập trình
Những điểm chính của mô hình mẫu gồm các giai đoạn chính:
- Phác thảo nét chính: Phát hiện yêu cầu và hợp thức hóa các yêu cầu
- Xây dựng phần mềm: Xây dựng các mẫu thử
- Sử dụng phần mềm: Sử dụng các mẫu thử nếu thích hợp thì chuyển giao công nghệ, ngược lại thì xây dựng lại phần mềm
Hình 1.8 Mô hình mẫu
Mô hình mẫu là một cách để phá vỡ sự khắt khe, cứng nhắc trong chu trình tuần tự của dự án Tuy vậy, trong mô hình mẫu, sử dụng sai làm hỏng phân tích và thiết kế, không bao giờ hoàn thiện được mẫu thành các ứng dụng thực sự là các vấn đề cần quan tâm Thêm vào đó là hệ thống có thể không bao giờ được chuẩn hóa, chi tiết của việc xử lý, việc kiểm tra tính hợp lệ của dữ liệu và các đòi hỏi kiểm toán có thể bị bỏ quên trong việc đưa mẫu vào sản xuất Trong tương lai, tạo mẫu thích hợp với đánh giá thiết kế, cải tiến cách dùng phần cứng và phần mềm mới Tạo mẫu thường đi đôi với các ngôn ngữ lập trình bậc cao và ngày càng có nhiều công cụ đặt mẫu sẽ được tích hợp với CASE
Trang 351.6.4 Mô hình tiến hóa (Evolutionary model)
Mô hình này thực sự cũng là một dạng dựa trên mô hình mẫu, tuy nhiên có sự khác biệt:
- Mô hình tiến hóa xây dựng nhiều phiên bản prototype liên tiếp nhau
- Những phiên bản prototype trước sẽ được xây dựng với mục tiêu có thể tái sử dụng trong những phiên bản sau
Hình 1.9 Mô hình tiến hóa
Phân loại sự phát triển tiến hóa
- Lập trình thăm dò: đối tượng của quá trình bằng cách làm việc với khách hàng để thăm dò các yêu cầu và phân phối phần mềm dứt điểm Sự phát triển nên bắt đầu với những phần nào đã được hiểu rõ Phần mềm sẽ được thêm vào các chức năng mới khi
mà nó được đề nghị cho khách hàng (và nhận về các thông tin)
- Mẫu thăm dò: đối tượng của phát triển tiến hoá này là nhằm hiểu các yêu cầu của khách hàng và do đó phát triển các định nghĩa yêu cầu tốt hơn cho phần mềm Các mẫu tập trung trên các thí nghiệm với những phần đòi hỏi nào của khách hàng mà có thể gây sự khó hiểu hay ngộ nhận
Mô hình phát triển tiến hóa này hiệu quả hơn mô hình thác nước Tuy nhiên, nó vẫn còn các khuyết điểm:
- Quá trình thì không nhìn thấy rõ được: Các nhà quản lý cần phân phối thường xuyên để đo lường sự tiến bộ Nó không kinh tế trong việc làm ra các hồ sơ cho phần mềm
- Phần mềm thường được cấu trúc nghèo nàn: Sự thay đổi liên tục dễ làm đổ vỡ cấu trúc của phần mềm, tạo ra sự khó khăn và tốn phí
- Thường đòi hỏi những kỹ năng đặc biệt: Hầu hết các hệ thống khả dĩ theo cách này được tiến hành bởi các nhóm nhỏ có kỹ năng cao cũng như các cá nhân phải năng động
Mô hình này thích hợp với:
- Phát triển các loại phần mềm tương đối nhỏ
Trang 36- Phát triển các loại phần mềm có đời sống tương đối ngắn
- Tiến hành trong các hệ thống lớn hơn ở những chỗ mà không thể biểu thị được các đặc tả chi tiết trong lúc tiến hành Thí dụ của trường hợp này là các hệ thống thông minh nhân tạo (AI) và các giao diện cho người dùng
Trong mô hình tiến hóa, cho thấy một số phần của hệ thống phần mềm có thể đuợc xây dựng sớm ngay từ giai đoạn thực hiện phân tích yêu cầu và thiết kế
1.6.5 Mô hình lặp và tăng dần
Mô hình lặp và tăng dần có lúc được hiểu là một Tuy nhiên, chúng cũng có những điểm khác nhau
Hình 1.10 Mô hình lặp và tăng dần
Trước tiên, hai mô hình này đều có điểm giống nhau là đều dựa trên tinh thần của
mô hình tiến hóa, và có thêm đặc điểm nhắm đến việc cung cấp một phần hệ thống để khách hàng có thể đưa vào sử dụng trong môi trường hoạt động sản xuất thực sự mà không cần chờ cho đến khi toàn bộ hệ thống được hoàn thành (trong mô hình mẫu hay tiến hóa, các phiên bản mẫu hay trung gian đều không nhắm đến đưa vào vận hành thực sự cho khách hàng, trừ phiên bản cuối cùng) Để khách hàng có thể sử dụng, mỗi phiên bản đều phải được thực hiện như một qui trình đầy đủ các công việc từ phân tích yêu cầu với khả năng bổ sung hay thay đổi, thiết kế, hiện thực cho đến kiểm nghiệm và
có thể xem như một qui trình (chu trình) con Các chu trình con có thể sử dụng các mô hình khác nhau (thông thường là thác nước)
Mục tiêu của phiên bản đầu tiên là phát triển phần lõi và nhóm các chức năng quan trọng Sau mỗi phiên bản được đưa vào sử dụng, các kết quả đánh giá sẽ được phản hồi và lập kế hoạch cho chu trình con của phiên bản tiếp theo để thực hiện:
- Những thay đổi cho phiên bản trước đó nhằm đáp ứng nhu cầu khách hàng tốt hơn
- Có thể thêm những chức năng hoặc đặc điểm bổ sung
- Sự khác nhau giữa hai mô hình tăng dần và lặp có thể được hiểu đơn giản như sau (so với sản phẩm được hoàn thành trong chu trình con trước):
+ Mô hình tăng dần (Incremental): thêm chức năng vào sản phẩm
+ Mô hình lặp (Iterative): thay đổi sản phẩm
Trang 37Một qui trình phát triển/xây dựng phần mềm (Software Development/Engineering Process - SEP) có thể kết hợp cả hai mô hình lặp lẫn tăng dần, chẳng hạn RUP (Rational Unified Process)
1.6.7 Mô hình phát triển nhanh
Mô hình phát triển nhanh (RAD - Rapid Application Development) chính là mô hình tăng dần với chu kỳ phát triển cực ngắn Để đạt được mục tiêu này, RAD dựa trên phương pháp phát triển trên cơ sở thành phần hóa hệ thống cùng với việc tái sử dụng các thành phần thích hợp RAD thích hợp cho những hệ thống quản lý thông tin
1.6.8 Mô hình xoắn ốc (The spiral model)
Mô hình này được Boehm đề xuất nên đôi lúc còn được gọi là mô hình Boehm's (The Boehm's spiral model) Nó có thể xem là sự kết hợp giữa mô hình thác nước và
mô hình mẫu và đồng thời thêm một thành phần mới - phân tích rủi ro Bao gồm bốn hoạt động chính:
- Kế hoạch (Planning): Xác định mục tiêu, tương tác và ràng buộc
- Phân tích rủi ro (Risk analysis): Phân tích các lựa chọn và các chỉ định/giải quyết rủi ro
- Xây dựng phần mềm (Engineering): Phát triển sản phẩm
- Đánh giá của khách hành (Customer evaluation): Đánh giá kết quả xây dựng Trong vòng đầu tiên của xoáy ốc, mục đích, lựa chọn, các ràng buộc được định nghĩa và các nguy cơ được xác định và phân tích Nếu phân tích các lỗi chỉ ra rằng có một vài yêu cầu không chắc chắn, tạo mẫu có thể được tiến hành để giúp đỡ nhà phát triển và khách hàng Mô phỏng và các mô hình khác có thể được sử dụng để xác định vấn đề và làm mịn các yêu cầu
Khách hàng đánh giá công việc và đưa ra các gợi ý Trên cơ sở ý kiến đó, phần tiếp theo của lập kế hoạch và phân tích lỗi xuất hiện
Hình 1.11 Mô hình xoắn ốc
Trang 38Mô hình xoáy ốc hiện nay là mô hình hướng tiếp cận hiện thực nhất để phát triển các hệ thống lớn Nó sử dụng mô hình mẫu như là cơ chế loại trừ lỗi, cho phép nhà phát triển áp dụng mô hình mẫu tại mỗi chu trình phát triển Nó kế thừa cách tiếp cận
hệ thống từng bước từ chu kỳ sống cổ điển nhưng kết hợp với quá trình lặp lại phù hợp với thực tế
Giống như các quy trình khác, mô hình xoáy ốc không phải là công cụ vạn năng Đối với những hệ thống lớn, khó có thể điều khiển sự tiến hóa của phần mềm Nó đòi hỏi phải có kỹ năng đánh giá lỗi Cuối cùng là cần phải có thêm thời gian để kiểm nghiệm phương pháp mới này
1.6.9 Mô hình đài phun nước
Đây là mô hình của cách tiếp cận hướng đối tượng, hệ thống được xem như là một
hệ thống các thực thể tác động qua lại để đạt được một mục đích nào đó Mô hình này tương ứng với mô hình thác nước trong cách tiếp cận hướng thủ tục ở trên Ở đây, ta thấy trong có những phần lặp và giao nhau giữa các bước phân tích, thiết kế và cài đặt Các điểm chính của mô hình được tóm tắt như sau:
Hình 1.12 Mô hình đài phun nước
1.6.10 Mô hình phát triển dựa trên thành phần
Xuất phát từ quan điểm: "Buy do not build", tư tưởng của phát triển dựa trên thành phần là lắp ráp hệ thống từ những thành phần đã có Do vậy, kiến trúc phần mềm của
hệ thống dựa vào kiến trúc phần mềm của các thành phần phần mềm tiêu chuẩn nên hệ thống đạt chất lượng cao hơn
Phương pháp phát triển dựa trên thành phần gần tương tự như phương pháp phát triển hướng đối tượng Hoạt động công nghệ bắt đầu với sự chỉ ra các lớp tham dự để phát triển hệ thống Nếu các lớp này được tìm thấy trong thư viện và sự thích nghi là
Trang 39tốt, chúng sẽ được lấy ra và phát triển hệ thống Ngược lại, chúng sẽ được phát triển để
sử dụng và bổ sung vào thư viện sử dụng lại
Thành phần phần mềm được sử dụng lại có độ chính xác cao và có thể nói là không chứa lỗi Mặc dầu không thường xuyên được chứng minh về mặt hình thức nhưng với việc sử dụng lại, lỗi được tìm thấy và loại trừ; chất lượng của thành phần được cải thiện như là một kết quả
Khi những thành phần sử dụng lại được ứng dụng thông qua tiến trình phần mềm, chúng ta ít tốn thời gian để tạo ra kế hoạch, mô hình, tài liệu, mã và dữ liệu mà chúng
là cần thiết để tạo ra hệ thống Thêm vào, chức năng cùng mức được phân phối cho người sử dụng với đầu vào ít công sức hơn, do vậy, hiệu suất phần mềm được cải thiện
Những điểm chính của mô hình được tóm tắt như sau:
- Giao tiếp khách hàng: giữa người phát triển và khách hàng để tìm hiểu yêu cầu, ý kiến
- Lập kế hoạch: Xác lập tài nguyên, thời hạn và những thông tin khác
- Phân tích rủi ro: Xem xét mạo hiểm kỹ thuật và mạo hiểm quản lý
- Kỹ nghệ: Xây dựng một hay một số biểu diễn của ứng dụng
- Xây dựng và xuất xưởng: xây dựng, kiểm thử, cài đặt và cung cấp hỗ trợ người dùng (tư liệu, huấn luyện, )
- Đánh giá của khách hàng: Nhận các phản hồi của người sử dụng về biểu diễn phần mềm trong giai đoạn kỹ nghệ và cài đặt
Hình 1.13 Mô hình phát triển dựa trên thành phần
1.7 Các phương pháp phát triển phần mềm
Phát triển phần mềm là việc chuyển nhu cầu của người dùng hoặc mục tiêu tiếp thị thành một sản phẩm phần mềm Phát triển phần mềm đôi khi được hiểu là sự bao gồm
Trang 40các quá trình của kỹ nghệ phần mềm cộng với sự nghiên cứu và các mục tiêu tiếp thị phần mềm để phát triển những sản phẩm phần mềm máy tính
Vấn đề tiếp thị còn được gọi là phân tích yêu cầu phần mềm Vì phát triển phần mềm có thể bao gồm việc thỏa hiệp hay vượt ra ngoài yêu cầu của người dùng cuối, nên một dự án phát triển phần mềm phải thực hiện những công việc thường không dính dáng đến kỹ thuật như nghiên cứu thị trường, nguồn nhân lực, quản lý rủi ro, sở hữu trí tuệ, ngân quỹ, quản lý khủng hoảng, v.v Những công việc này sẽ đóng vai trò
là sự phát triển kinh doanh đi kèm với phát triển phần mềm
Khác với thời kỳ đầu của tin học, các chương trình phụ thuộc nhiều vào thiết bị và người ta chỉ quan tâm đến các "mẹo vặt" lập trình, thì ngày nay người ta quan tâm đến nguyên lý và phương pháp để phát triển phần mềm Các nguyên lý và phương pháp được đề xuất nhằm nâng cao năng suất lao động cho nhóm phát triển phần mềm Năng suất ở đây bao gồm tính đúng đắn của sản phẩm, tính dễ đọc, dễ sửa đổi, dễ thực hiện, tận dụng được tối đa khả năng của thiết bị mà vẫn không bị phụ thuộc vào thiết bị
Có nhiều phương pháp được đề cập như: phương pháp hướng chức năng, phương pháp hướng đối tượng, phương pháp ngữ nghĩa, và thậm chí là không phương pháp để phát triển phần mềm Bên cạnh các phương pháp để chỉ định cho việc tạo một bản phân tích và thiết kế, người ta còn chú ý đến phương pháp làm thế nào để đưa người dùng tham gia vào quy trình gọi là phương pháp luận xã hội
1.8 Vai trò của người dùng trong giai đoạn phát triển phần mềm
Trong những ứng dụng trước kia được xây dựng thường xuyên không có sự bàn bạc với người sử dụng, sự cô lập của các công nghệ phần mềm đối với người dùng dẫn đến những hệ thống có khả năng làm việc về mặt kỹ thuật, nhưng thông thường không đáp ứng được nhu cầu của người sử dụng, và thường xuyên làm gián đoạn quá trình làm việc
Để có sự tham gia của người sử dụng trong quá trình phát triển ứng dụng, phương thức này đòi hỏi những cuộc họp ngoài lề của tất cả những người sử dụng có liên quan
và những người trong hệ thống - thường những người gặp nhau trong từ 5 đến 10 ngày
để phát triển một mô tả chức năng chi tiết của những yêu cầu ứng dụng Các cuộc họp ban ngày được sử dụng về những phân tích mới, những cuộc họp ban đêm lập tài liệu
về những kết quả ban ngày để xem xét lại và tiếp tục chắt lọc trong ngày tiếp theo
Có rất nhiều lợi ích từ việc tham gia của người sử dụng trong phát triển ứng dụng Trước tiên nó xây dựng sự cam kết của những người sử dụng - những người đương nhiên đảm nhiệm quyền sở hữu của hệ thống
Thứ hai, những người sử dụng là những chuyên gia thực sự của những công việc đang được tự động - lại được đại diện hoàn toàn thông qua sự phát triển