Tập bài giảng Công nghệ phần mềm

pdf 137 trang Gia Huy 17/05/2022 2210
Bạn đang xem 20 trang mẫu của tài liệu "Tập bài giảng Công nghệ phần mềm", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdftap_bai_giang_cong_nghe_phan_mem.pdf

Nội dung text: Tập bài giảng Công nghệ phần mềm

  1. Tập bài giảng Công nghệ phần mềm MỤ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 Phạm Hùng Phú-Nguyễn Văn Thẩm i
  2. Tập bài giảng Công nghệ phần mềm 2.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 ii Phạm Hùng Phú-Nguyễn Văn Thẩm
  3. Tập bài giảng Công nghệ phần mềm 4.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 Phạm Hùng Phú -Nguyễn Văn Thẩm iii
  4. Tập bài giảng Công nghệ phần mềm 6.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 iv Phạm Hùng Phú-Nguyễn Văn Thẩm
  5. Tập bài giảng Công nghệ phần mềm 7.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 Phạm Hùng Phú -Nguyễn Văn Thẩm v
  6. Tập bài giảng Công nghệ phần mềm 9.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 vi Phạm Hùng Phú-Nguyễn Văn Thẩm
  7. Tập bài giảng Công nghệ phần mềm BẢNG KÍ HIỆU Kí hiệu Ý nghĩa CNTT Công nghệ thông tin DBA Database Administrator EIS Excutive Information System DSS Decision Supports System GDSS Group DSS ES Expert Systems RAD Rapid Application Development FPA Function point analysis DFD Data Flow Diagram ERD Entity - Relation Diagram FHD Function Hiarachy Diagram LTCT Lập trình cấu trúc LTHĐT Lập trình hƣớng đối tƣợng EP Equivalence Partitioning BVA Boundary Value Analysis CFG Control Flow Graph Phạm Hùng Phú -Nguyễn Văn Thẩm vii
  8. Tập bài giảng Công nghệ phần mềm CÁ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 viii Phạm Hùng Phú-Nguyễn Văn Thẩm
  9. Tập bài giảng Công nghệ phần mềm Hì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 Phạm Hùng Phú -Nguyễn Văn Thẩm ix
  10. Tập bài giảng Công nghệ phần mềm Hì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 x Phạm Hùng Phú-Nguyễn Văn Thẩm
  11. Tập bài giảng Công nghệ phần mềm Hì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 Phạm Hùng Phú -Nguyễn Văn Thẩm xi
  12. Tập bài giảng Công nghệ phần mềm CÁ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 xii Phạm Hùng Phú-Nguyễn Văn Thẩm
  13. Tập bài giảng Công nghệ phần mềm LỜ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 Phạm Hùng Phú -Nguyễn Văn Thẩm xiii
  14. Tập bài giảng Công nghệ phần mềm 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 Phạm Hùng Phú-Nguyễn Văn Thẩm 1
  15. Tập bài giảng Công nghệ phần mềm + 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ý: 2 Phạm Hùng Phú-Nguyễn Văn Thẩm
  16. Tập bài giảng Công nghệ phần mềm + 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. Phạm Hùng Phú -Nguyễn Văn Thẩm 3
  17. Tập bài giảng Công nghệ phần mềm Cô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) 4 Phạm Hùng Phú-Nguyễn Văn Thẩm
  18. Tập bài giảng Công nghệ phần mềm + 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 Phạm Hùng Phú -Nguyễn Văn Thẩm 5
  19. Tập bài giảng Công nghệ phần mềm tầ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. 6 Phạm Hùng Phú-Nguyễn Văn Thẩm
  20. Tập bài giảng Công nghệ phần mềm Nhƣ 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 Phạm Hùng Phú -Nguyễn Văn Thẩm 7
  21. Tập bài giảng Công nghệ phần mềm tin để 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: 8 Phạm Hùng Phú-Nguyễn Văn Thẩm
  22. Tập bài giảng Công nghệ phần mềm Hì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ế, Phạm Hùng Phú -Nguyễn Văn Thẩm 9
  23. Tập bài giảng Công nghệ phần mềm biế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 10 Phạm Hùng Phú-Nguyễn Văn Thẩm
  24. Tập bài giảng Công nghệ phần mềm đầ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 Phạm Hùng Phú -Nguyễn Văn Thẩm 11
  25. Tập bài giảng Công nghệ phần mềm lạ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ũ 12 Phạm Hùng Phú-Nguyễn Văn Thẩm
  26. Tập bài giảng Công nghệ phần mềm nhâ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. Phạm Hùng Phú -Nguyễn Văn Thẩm 13
  27. Tập bài giảng Công nghệ phần mềm - 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 14 Phạm Hùng Phú-Nguyễn Văn Thẩm
  28. Tập bài giảng Công nghệ phần mềm xử 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. 1.5.3. Phân loại phần mềm Phân loại phần mềm đƣợc định nghĩa nhƣ sự định hƣớng các công việc của một ứng dụng, ví dụ nhƣ theo kiểu hƣớng giao dịch, hỏi đáp, trợ giúp quyết định, 1) Ứng dụng hƣớng giao dịch Ứng dụng hƣớng giao dịch còn có tên là hệ thống xử lý giao dịch (TPS – Transaction Processing Systems) đƣợc sử dụng nhằm hỗ trợ các hoạt động hằng ngày của một công việc, bao gồm: xử lý đơn hàng, quản lý kiểm kê, ghi quỹ, Chúng đƣợc đặc trƣng nhƣ là các ứng dụng mà trong đó các yêu cầu, các dữ liệu và quá trình xử lý Phạm Hùng Phú -Nguyễn Văn Thẩm 15
  29. Tập bài giảng Công nghệ phần mềm đƣợ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. 2) Ứng dụng cơ sở dữ liệu Ứng dụng cơ sở dữ liệu đƣợc sử dụng nhƣ một ứng dụng xử lý câu hỏi về dữ liệu. Ngôn ngữ truy vấn dữ liệu chuẩn SQL cho phép ngƣời sử dụng đặt câu hỏi dƣới dạng: họ biết họ cần gì nhƣng không biết làm cách nào để lấy đƣợc dữ liệu đó. Các phần mềm máy tính đƣa ra các phƣơng pháp xử lý và truy cập tối ƣu để thực hiện các thao tác đó. Ở đây, có ba loại câu hỏi chính: - 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. 16 Phạm Hùng Phú-Nguyễn Văn Thẩm
  30. Tập bài giảng Công nghệ phần mềm - 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ử Phạm Hùng Phú -Nguyễn Văn Thẩm 17
  31. Tập bài giảng Công nghệ phần mềm dụ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. 18 Phạm Hùng Phú-Nguyễn Văn Thẩm
  32. Tập bài giảng Công nghệ phần mềm - 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. Phạm Hùng Phú -Nguyễn Văn Thẩm 19
  33. Tập bài giảng Công nghệ phần mềm Hì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. 20 Phạm Hùng Phú-Nguyễn Văn Thẩm
  34. Tập bài giảng Công nghệ phần mềm 1.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ỏ Phạm Hùng Phú -Nguyễn Văn Thẩm 21
  35. Tập bài giảng Công nghệ phần mềm - 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 22 Phạm Hùng Phú-Nguyễn Văn Thẩm
  36. Tập bài giảng Công nghệ phần mềm Mộ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 Phạm Hùng Phú -Nguyễn Văn Thẩm 23
  37. Tập bài giảng Công nghệ phần mềm Mô 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à 24 Phạm Hùng Phú-Nguyễn Văn Thẩm
  38. Tập bài giảng Công nghệ phần mềm tố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 Phạm Hùng Phú -Nguyễn Văn Thẩm 25
  39. Tập bài giảng Công nghệ phần mềm cá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. 26 Phạm Hùng Phú-Nguyễn Văn Thẩm
  40. Tập bài giảng Công nghệ phần mềm Thứ ba, những nhiệm vụ đƣợc ngƣời sử dụng thực hiện bao gồm việc thiết kế màn hình, các mẫu, các báo cáo, sự phát triển tài liệu của ngƣời sử dụng, sự phát triển và tiến hành của các cuộc kiểm tra công nhận, Sự tham gia của ngƣời sử dụng không chỉ là ƣớc muốn mà còn là một mệnh lệnh đối với tiến trình và sản phẩm phát triển ứng dụng hoàn toàn hiệu quả. Khía cạnh quan trọng nhất của sự tham gia của ngƣời sử dụng là nó phải có ý nghĩa. Ngƣời sử dụng phải là những ngƣời quyết định và là những ngƣời mong muốn tham gia vào quá trình phát triển. Sử dụng đội ngũ nhân viên ở cấp thấp hoặc chỉ định các nhà quản lý mở rộng không phải là cách để kéo ngƣời sử dụng vào các ứng dụng phát triển. Mục tiêu của việc tham gia của ngƣời sử dụng là cho những ngƣời phát triển hệ thống và không phát triển hệ thống làm việc cùng với nhau nhƣ những đối tác chứ không phải nhƣ những kẻ thù. Khi những ngƣời sử dụng tham gia thì họ sẽ tạo ra những quy định không mang tính kỹ thuật. Những kỹ sƣ phần mềm giải thích và hƣớng dẫn ngƣời sử dụng tạo ra những quy định kỹ thuật, ví dụ nhƣ việc thiết kế màn hình, và giải thích cả những tác động và suy luận của các quy định kỹ thuật chính yếu. Việc tham gia của ngƣời sử dụng có nghĩa là ngƣời sử dụng sẽ điều khiển dự án, tạo nên phần lớn quy định và có tính quyết định cuối cùng đối với tất cả các quyết định lớn. Các kỹ sƣ phần mềm và các nhân viên của các hệ thống quản lý thông tin khác hoạt động nhƣ những kỹ thuật viên phục vụ, nhƣ là những chức năng của họ. Phạm Hùng Phú -Nguyễn Văn Thẩm 27
  41. Tập bài giảng Công nghệ phần mềm CÂU HỎI VÀ BÀI TẬP CHƢƠNG 1 1. Nêu khái niệm công nghệ phần mềm và kiến trúc của công nghệ phần mềm. 2. Nêu lĩnh vực nghiên cứu của công nghệ phần mềm. 3. Nêu vai trò, công việc và các kỹ năng cơ bản của kỹ sƣ phần mềm. 4. Nêu sản phẩm phần mềm và các đặc tính của nó. 5. Nêu các loại sản phẩm phần mềm, mỗi loại cho một ví dụ. 6. Nêu các tiêu chuẩn để phân loại nghề nghiệp trong lĩnh vực công nghệ thông tin. 7. Vẽ sơ đồ biểu diễn mối liên hệ của con đƣờng nghề nghiệp cho các mức kinh nghiệm. Giải thích các thành phần trong sơ đồ. 8. Nêu các loại hình công việc trong lĩnh vực công nghệ thông tin. 9. Nêu các phƣơng pháp xử lý thông tin, mỗi phƣơng pháp cho một ví dụ. 10. Nêu các mô hình (qui trình) xây dựng phần mềm. 11. Trình bày ý tƣởng, ƣu điểm, nhƣợc điểm, cho ví dụ của các mô hình phát triển phần mềm - Mô hình thác nƣớc - Mô hình chữ V - Mô hình tiến triển - Mô hình lặp - Mô hình tăng dần - Mô hình mẫu - Mô hình đài phun nƣớc - Mô hình phát triển dựa trên thành phần 12. Giải thích tại sao các hệ thống đƣợc xây dựng dựa trên mô hình phát triển tiến triển thƣờng khó bảo trì? 13. Tại sao một lập trình viên tốt chƣa chắc đã là một ngƣời quản lý tốt? 14. Cho biết cách phối hợp mô hình thác nƣớc, mô hình mẫu và mô hình xoắn ốc. 15. Nêu các phƣơng pháp phát triển phần mềm. 16. Nêu các vai trò của ngƣời dùng trong quá trình phát triển phần mềm. 17. Xét phần mềm quản lý tuyển sinh của trƣờng ĐHSPKT Nam Định, chỉ khi hết hạn nộp hồ sơ thì hội đồng tuyển sinh trƣờng mới xử lý hồ sơ đăng kí dự thi. Vậy trƣờng ĐHSPKT Nam Định đã sử dụng phƣơng pháp xử lý thông tin nào ? Giải thích. 18. Xét phần mềm rút tiền tự động của máy rút tiền tự động ATM. Sau khi ngƣời dùng nhập mã pin thành công và lựa chọn chức năng, thì máy ATM thực hiện các tiến trình xử lý mà không có sự can thiệp của ngƣời dùng. Vậy nhà phát riển phần mềm đã áp dụng phƣơng pháp xử lý thông tin nào? Giải thích. 28 Phạm Hùng Phú-Nguyễn Văn Thẩm
  42. Tập bài giảng Công nghệ phần mềm 19. Năm 2010, Công ty Misa đã ban giao thành công dự án quản lý nhân khẩu của quận Hoàng Mai – Hà Nội. Tháng 1 năm 2012, công ty nhận đƣợc đơn đặt hàng xây dựng hệ thống quản lý nhân khẩu cho huyện Vụ Bản - Nam Định, vậy công ty này nên sử dụng mô hình nào để phát triển ? Vì sao ? 20. Bệnh viện Bạch Mai cần xây dựng hệ thống thông tin quản lý bệnh nhân, quản lý thuốc cùng một thời gian thì nên sử dụng mô hình nào để phát triển ? Vì sao ? 21. Kỹ sƣ phần mềm hay Lập trình viên phải có những kỹ năng hay nhiệm vụ nào sau đây? Nếu là Kỹ sƣ phần mềm chọn True. Nếu là Lập trình viên chọn False. 1) Thành thạo về ngôn ngữ lập trình và viết đƣợc các chƣơng trình ứng dụng True False 2) Biết cách cài đặt chƣơng trình dựa trên những giải pháp hoặc thuật toán cho sẵn True False 3) Có kiến thức về các mô hình quy trình công nghệ phần mềm và có khả năng lựa chọn một mô hình thích hợp vào dự án True False 4) Biết cách phân tích và định nghĩa hệ thống thông qua phỏng vấn khách hàng, thu thập tài liệu, True False 5) Biết đƣợc sự khác nhau giữa các quy trình công nghệ phần mềm và thấy đƣợc ƣu/nhƣợc điểm của từng quy trình. True False 6) Biết cách kiểm thử phần mềm và có thể kiểm thử hệ thống một cách hiệu quả. True False 22. Chọn một phƣơng án tốt nhất cho các câu hỏi sau: 1) Chọn 5 hoạt động chính, tổng quát trong quá trình xây dựng phần mềm. a. Phân tích, Thiết kế, Lập trình, Gỡ lỗi,, Bảo trì b. Giao tiếp, Quản lý rủi ro, Ƣớc lƣợng, Sản xuất, Kiểm tra lại c. Giao tiếp, Lập kế hoạch, Mô hình hoá, Xây dựng, Triển khai d. Phân tích, Lập kế hoạch, Thiết kế, Lập trình, Kiểm thử 2) Mô hình phát triển phần mềm dựa trên mẫu thử là a. Một phƣơng pháp thích hợp đƣợc sử dụng khi các yêu cầu đã đƣợc xác định rõ ràng. Phạm Hùng Phú -Nguyễn Văn Thẩm 29
  43. Tập bài giảng Công nghệ phần mềm b. Phƣơng pháp tốt nhất đƣợc sử dụng trong các dự án có nhiều thành viên c. Một mô hình rất rủi ro, rất khó có thể đƣa ra một sản phẩm tốt. d. Một phƣơng pháp hữu ích khi khách hàng không thể định nghĩa các yêu cầu một cách rõ ràng. 3) Mô hình xoắn ốc trong quá trình phát triển phần mềm. a. Kết thúc với một sản phẩm đƣợc chuyển giao b. Phức tạp và lộn xộn hơn mô hình lặp lại, tăng thêm c. Phải đánh giá rủi ro của dự án trong từng bƣớc lặp xoắn ốc d. Tất cả các khẳng định trên 4) Mô hình tăng vòng trong quá trình phát triển phần mềm a. Là một phƣơng pháp thích hợp khi các yêu cầu đã đƣợc xác định rõ ràng b. Là phƣơng pháp tốt nhất đƣợc sử dụng khi dự án có quá nhiều thành viên tham dự. c. Là một mô hình mang tính cách mạng, nhƣng không đƣợc sử dụng với các sản phẩm thƣơng mại. d. Là một phƣơng pháp tốt để tạo ra phần cốt lõi của sản phẩm một cách nhanh chóng. 5) Công nghệ phần mềm là việc áp dụng a. Các công cụ b. Các kỹ thuật c. Các phƣơng pháp d. a và b 6) Công nghệ phần mềm là một mô hình đƣợc phân theo mấy tầng ? a. 1 b. 2 c. 3 d. 4 7) Kỹ sƣ phần mềm cần có kỹ năng cơ bản nào ? a. Định danh, đánh giá, cài đặt, lựa chọn một phƣơng pháp luận và các công cụ CASE b. Biết cách sử dụng các mẫu phần mềm (prototyping) c. Biết cách lựa chọn ngôn ngữ, phần cứng, phần mềm d. Cả 3 phƣơng án trên 8) Ai là ngƣời đƣợc gọi là những chuyên gia phụ trách các dự án ? a. Kỹ sƣ phần mềm b. Chuyên gia kỹ thuật c. Lãnh đạo d. Chuyên gia phần mềm 9) Sản phẩm phần mềm bao gồm ? a. Các phần mềm b. Tài liệu mô tả phƣơng thức cài đặt c. Tài liệu mô tả cách thức sử dụng 30 Phạm Hùng Phú-Nguyễn Văn Thẩm
  44. Tập bài giảng Công nghệ phần mềm d. Cả a, b, c 10) Hệ thống quản lý điểm sử dụng phƣơng pháp xử lý thông tin nào là hợp lý nhất ? a. Xử lý theo lô b. Xử lý trực tuyến c. Xử lý thời gian thực d. Xử lý tƣơng tác 11) Hệ thống quản lý lƣơng sử dụng phƣơng pháp xử lý thông tin nào là hợp lý nhất ? a. Xử lý theo lô b. Xử lý trực tuyến c. Xử lý giao dịch d. Xử lý tƣơng tác 12) Hệ thống rút tiền tự động ATM sử dụng phƣơng pháp xử lý thông tin nào là hợp lý nhất ? a. Xử lý theo lô b. Xử lý trực tuyến c. Xử lý tƣơng tác d. Xử lý giao dịch 13) Hệ thống tính tiền tại quầy thu ngân tại một siêu thị sử dụng phƣơng pháp xử lý thông tin nào là hợp lý nhất ? a. Xử lý theo lô b. Xử lý trực tuyến c. Xử lý phân tán d. Xử lý giao dịch 12) Hệ thống điều khiển dây truyền sản xuất nƣớc ngọt sử dụng phƣơng pháp xử lý thông tin nào là hợp lý nhất ? a. Xử lý phân tán b. Xử lý thời gian thực c. Xử lý tƣơng tác d. Xử lý giao dịch 13) Hệ thống quản lý các tài khoản ngân hàng sử dụng phƣơng pháp xử lý thông tin nào là hợp lý nhất ? a. Xử lý phân tán b. Xử lý thời gian thực c. Xử lý tƣơng tác d. Xử lý theo lô 14) Các đặc tính của một sản phẩm phần mềm ? a. Dữ liệu, xử lý, ràng buộc, giao diện b. Dữ liệu, xử lý, ràng buộc, phƣơng pháp c. Dữ liệu, kỹ thuật, ràng buộc, phƣơng pháp d. Dữ liệu, xử lý, đặc tả, giao diện 15) Có mấy mô hình phát triển phần mềm ? a. 3 b. 4 c. 5 d. 6 16) Mô hình phát triển phần mềm nào mà một giai đoạn tiếp theo đƣợc phát triển chỉ khi giai đoạn trƣớc đó đã đƣợc hoàn tất ? a. Mô hình tuyến tính b. Mô hình mẫu c. Mô hình xoắn ốc d. Mô hình đài phun nƣớc Phạm Hùng Phú -Nguyễn Văn Thẩm 31
  45. Tập bài giảng Công nghệ phần mềm 17) Mô hình phát triển phần mềm nào mà một sản phẩm phần mềm đƣợc xây dựng dựa trên những thành phần đã có sẵn ? a. Mô hình tuyến tính b. Mô hình mẫu c. Mô hình xoắn ốc d. Mô hình phát triển dựa trên thành phần 18) Mô hình phát triển phần mềm nào mà 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ử. a. Mô hình tiến triển b. Mô hình mẫu c. Mô hình chữ V d. Mô hình phát triển dựa trên thành phần 19) Mô hình phát triển phần mềm nào mà bao gồm bốn hoạt động chính: Kế hoạch, phân tích rủi ro, xây dựng phần mềm, đánh giá của khách hành. a. Mô hình tuyến tính b. Mô hình tiến triển c. Mô hình xoắn ốc d. Mô hình chữ V 20) Mô hình phát triển phần mềm nào mà sử dụng cách tiếp cận hƣớng đối tƣợng. a. Mô hình tuyến tính b. Mô hình đài phun nƣớc c. Mô hình xoắn ốc d. Mô hình chữ V 21) Mô hình phát triển phần mềm nào mà sau mỗi phiên bản các chức năng của sản phẩm đƣợc thêm vào. a. Mô hình tuyến tính b. Mô hình đài phun nƣớc c. Mô hình chữ V d. Mô hình tăng dần 22) Mô hình phát triển phần mềm nào mà sau mỗi phiên bản sản phẩm có thể bị thay đổi. a. Mô hình tiến triển b. Mô hình mẫu c. Mô hình lặp d. Mô hình phát triển dựa trên thành phần 23) Ứng dụng nào mà trong đó các yêu cầu, các dữ liệu và quá trình xử lý đƣợc biết rõ và có cấu trúc tốt. a. Ứng dụng hƣớng giao dịch b. Ứng dụng cơ sơ dữ liệu c. Ứng dụng hỗ trợ quyết định d. Hệ chuyên gia 24) Ứng dụng nào mà có 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 và hệ thống diễn giải. a. Ứng dụng hƣớng giao dịch b. Ứng dụng cơ sơ dữ liệu c. Ứng dụng hỗ trợ quyết định d. Hệ chuyên gia 25) Ứng dụng nào mà hỗ trợ 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. a. Ứng dụng hƣớng giao dịch b. Ứng dụng cơ sơ dữ liệu c. Ứng dụng hỗ trợ quyết định d. Hệ chuyên gia 32 Phạm Hùng Phú-Nguyễn Văn Thẩm
  46. Tập bài giảng Công nghệ phần mềm Chƣơng 2 TIÊU CHUẨN CỦA SẢN PHẨM PHẦN MỀM 2.1. Mục tiêu của công nghệ phần mềm Mục tiêu của công nghệ phần mềm là sản xuất ra những phần mềm tốt, có chất lƣợng cao. Các nhân tố ảnh hƣởng đến chất lƣợng phần mềm có thể đƣợc phân thành hai nhóm chính: các nhân tố có thể đo trực tiếp và các nhân tố chỉ có thể đo gián tiếp. Tuỳ theo công dụng của sản phẩm và nhu cầu thực tế của ngƣời sử dụng, các chuẩn của quốc gia, quốc tế, nền văn minh của cộng đồng, thời điểm, mà các tiêu chuẩn để lƣợng hoá phần mềm có thể thay đổi. Ngƣời sử dụng tiêu chuẩn này bao gồm : - Ngƣời mua sản phẩm (cá nhân hay tổ chức mua hệ thống, sản phẩm phần mềm hoặc dịch vụ phần mềm từ nhà cung cấp); - Ngƣời đánh giá (cá nhân hay tổ chức thiết lập đánh giá. Ngƣời đánh giá có thể, ví dụ nhƣ, là phòng kiểm định, trung tâm chất lƣợng của tổ chức phát triển phần mềm, tổ chức chính phủ hoặc ngƣời dùng) ; - Ngƣời phát triển (cá nhân hay tổ chức thực hiện các hoạt động phát triển, bao gồm phân tích yêu cầu, thiết kế, và kiểm tra thông qua việc chấp thuận trong quá trình vòng đời sản phẩm phần mềm) ; - Ngƣời duy trì (cá nhân hay tổ chức thực hiện các hoạt động duy trì); - Nhà cung cấp (cá nhân hay tổ chức tham gia ký hợp đồng với ngƣời mua sản phẩm để cung cấp hệ thống, sản phẩm phần mềm hoặc dịch vụ phần mềm trên các điều khoản của hợp đồng) khi kiểm tra chất lƣợng phần mềm trong cuộc kiểm tra xác định chất lƣợng; - Ngƣời sử dụng (cá nhân hay tổ chức sử dụng sản phẩm phần mềm để thực hiện chức năng xác định) khi đánh giá chất lƣợng sản phẩm phần mềm trong cuộc kiểm tra chấp thuận; - Ngƣời quản lí chất lƣợng (cá nhân hay tổ chức thực hiện kiểm tra có hệ thống các sản phẩm phần mềm hoặc dịch vụ phần mềm) khi đánh giá chất lƣợng sản phẩm phần mềm nhƣ một phần của bảo đảm chất lƣợng và kiểm soát chất lƣợng; Chất lƣợng sản phẩm phần mềm đƣợc đánh giá qua một mô hình chất lƣợng cụ thể. Sản phẩm phần mềm đƣợc phân tách theo cấp bậc vào một mô hình phần mềm với những tiêu chí và những tiêu chí con, sao cho có thể sử dụng chúng nhƣ một danh sách để kiểm tra những vấn đề phát sinh liên quan đến chất lƣợng. Tiêu chí đối với chất lƣợng sử dụng đƣợc chia thành 4 tiêu chí: tính hiệu quả, năng suất, tính an toàn và tính thoả mãn. Phạm Hùng Phú -Nguyễn Văn Thẩm 33
  47. Tập bài giảng Công nghệ phần mềm Chất lƣợng sử dụng là đánh giá của ngƣời sử dụng về chất lƣợng. Chất lƣợng sử dụng phụ thuộc vào chất lƣợng ngoài, mặt khác chất lƣợng ngoài lại phụ thuộc vào chất lƣợng trong. Thƣờng phải tiến hành đánh giá trên cả 3 yêu cầu chất lƣợng (yêu cầu chất lƣợng đối với chất lƣợng trong, chất lƣợng ngoài, chất lƣợng sử dụng) vì việc đáp ứng các tiêu chuẩn chất lƣợng trong không có nghĩa sẽ đáp ứng tiêu chuẩn chất lƣợng ngoài, đáp ứng tiêu chuấn chất lƣợng ngoài không có nghĩa sẽ đáp ứng tiêu chuẩn của chất lƣợng sử dụng. Chất lƣợng sử dụng là khả năng của phần mềm cho phép những ngƣời sử dụng cụ thể đạt đƣợc những mục đích cụ thể với tính hiệu quả, tính năng suất, tính an toàn và tính thoả mãn, trong một hoàn cảnh làm việc cụ thể. Mô hình chất lƣợng là một tập hợp tiêu chí và mối quan hệ giữa chúng để cung cấp cơ sở cho việc xác định yêu cầu chất lƣợng và đánh giá chất lƣợng. Chất lƣợng trong là tổng hợp của tất cả các đặc điểm của sản phẩm phần mềm từ góc độ của ngƣời phát triển phần mềm. Chất lƣợng trong đƣợc đo lƣờng và đánh giá theo các yêu cầu chất lƣợng trong (sử dụng các phép đánh giá trong). Chất lƣợng trong của sản phẩm phần mềm đƣợc cải tiến trong suốt suốt thời gian lập trình, kiểm thử và không bao gồm giai đoạn thiết kế phần mềm. Chất lƣợng ngoài là toàn bộ các đặc điểm của sản phẩm phần mềm từ góc độ của ngƣời đánh giá phần mềm độc lập. Chất lƣợng này thể hiện khi phần mềm hoạt động, nó đƣợc đánh giá trong môi trƣờng với dữ liệu giả lập (sử dụng công cụ đánh giá độc lập). Chất lƣợng sử dụng là cách nhìn của ngƣời dùng về chất lƣợng sản phẩm phần mềm khi nó đƣợc cài đặt trong một môi trƣờng và ngữ cảnh cụ thể. Chất lƣợng này xác định phạm vi mà ngƣời dùng có thể đạt đƣợc mục đích của mình trong một môi trƣờng cụ thể hơn là chỉ ra các tính năng của phần mềm. Mô hình cho chất lƣợng trong và ngoài: phân loại chất lƣợng sản phẩm phần mềm theo sáu tiêu chí: tính năng, độ tin cậy, sự tiện lợi, tính hiệu quả, khả năng bảo hành bảo trì và tính khả chuyển. 2.2. Tiêu chuẩn của sản phẩm phần mềm Để đánh giá đƣợc sản phẩm của một nền công nghệ là tốt hay xấu, chúng ta phải nghiên cứu để đƣa ra đƣợc những tiêu chuẩn đánh giá chúng. Chất lƣợng của sản phẩm phần mềm bao gồm nhiều yếu tố dựa trên các tiêu chuẩn đã đƣợc tổng kết. 2.2.1. Tính đúng Một sản phẩm thực hiện đƣợc gọi là đúng nếu nó thực hiện chính xác những chức năng đã đặc tả và thỏa mãn các mục đích công việc của khách hàng. Nhƣ vậy, một sản phẩm phải đƣợc so sánh chuẩn đặt ra để kiểm tra tính đúng và điều này dẫn đến có nhiều bậc thang về tính đúng. 34 Phạm Hùng Phú-Nguyễn Văn Thẩm
  48. Tập bài giảng Công nghệ phần mềm Hình 2.1. Bậc thang về tính đúng Liệt kê theo thang giảm dần, tính đúng của phần mềm có thể: + Tuyệt đối đúng, + Đúng , + Có lỗi, + Có nhiều lỗi, Ví dụ: Một hệ thống xử lý dữ liệu không chạy đƣợc khi file cơ sở dữ liệu rỗng hoặc có quá 104 bản ghi, là những hệ thống vi phạm tính đúng. Tính đúng đắn của sản phẩm đƣợc xác minh qua những căn cứ sau đây: - Tính đúng đắn của thuật toán - Tính tƣơng đƣơng của chƣơng trình với thuật toán: Chƣơng trình mã hoá phải đúng với thuật toán không sẽ dẫn đến kết quả sai. - Đƣợc chứng minh trực tiếp trong văn bản chƣơng trình - Thể hiện qua kiểm thử (testing), qua việc sử dụng(using). - Các tác giả của sản phẩm cần cung cấp đầy đủ những luận chứng và kết quả xác nhận tính đúng đắn của sản phẩm. Những tƣ liệu đó bao gồm: + Chƣơng trình (testing) có kèm các luận đề để phục vụ cho việc chứng minh. + Các phƣơng pháp và kỹ thuật kiểm thử chƣơng trình + Các kết quả chạy thử + Các giấy chứng nhận, nhận xét của cá nhân và cơ sở đã khảo sát và áp dụng chƣơng trình Ví dụ tính đúng của chƣơng trình giải phƣơng trình bậc hai trong hình 2.2 xác minh qua sử dụng. Hình 2.2. Ví dụ về tính đúng Phạm Hùng Phú -Nguyễn Văn Thẩm 35
  49. Tập bài giảng Công nghệ phần mềm 2.2.2. Tính khoa học Tính khoa học của phần mềm đƣợc thể hiện qua các mặt - Khoa học về cấu trúc: + Sản phẩm đƣợc chia thành những đơn vị cân đối; + Các chức năng không trùng lặp, có quan hệ, có thể tổ hợp thành nhiều chức năng mới; + Thuật toán và chƣơng trình đƣợc thiết kế và cài đặt một cách có cấu trúc. - Khoa học về nội dung: + Các thuật toán dựa trên những thành tựu mới của toán học và tin học, có cơ sở chặt chẽ. + Các chức năng và nhiệm vụ do sản phẩm thực hiện có giá trị khoa học cao - Khoa học về hình thức thao tác: + Tên của các lệnh phải hợp lý, thể hiện tính logic và phù hợp với tƣ duy tự nhiên của ngƣời dùng. Ví dụ 1: Một hệ thống dùng các lệnh bằng tiếng anh và một số lệnh bằng tiếng việt sẽ đƣợc xem là vi phạm tính khoa học về hình thức. Do đó, để đảm bảo tính khoa học về mặt hình thức thì hệ thống chia thành hai phần: một phần sử dụng tiếng anh, một phần sử dụng tiếng việt. Ví dụ 2: Chƣơng trình giải bất phƣơng trình bậc nhất trong hình 2.3 đã vi phạm tính khoa học vì trùng lặp chức năng và tên lệnh không hợp lý. Hình 2.3. Ví dụ về tính khoa học 2.2.3. Tính hữu hiệu Tính hữu hiệu của phần mềm đƣợc xác định qua các tiêu chuẩn sau: - Hiệu quả kinh tế hoặc ý nghĩa, giá trị thu đƣợc do áp dụng sản phẩm đó - Tốc độ xử lý của sản phẩm: V = M/T. Trong đó: M là khối lƣợng đối tƣợng xử lý, T là tổng số đơn vị thời gian xử lý khối lƣợng. 36 Phạm Hùng Phú-Nguyễn Văn Thẩm
  50. Tập bài giảng Công nghệ phần mềm - Giới hạn tối đa của sản phẩm hoặc miền xác định của chƣơng trình đƣợc xác định qua khối lƣợng đa số của các đối tƣợng mà sản phẩm đó quản lý. Ví dụ, hệ QF có thể quản lý tối đa 106 bản ghi trong một tệp, mỗi bản ghi có thể có số trƣờng tối đa là 255. - Dung lƣợng tối đa của bộ nhớ trong (RAM–Ramdom Access Memory) mà chƣơng trình sử dụng. Ví dụ, hệ QF sử dụng 48 K bộ nhớ trong từ địa chỉ đến địa chỉ. Tính hữu hiệu của một sản phẩm phần mềm có thể đƣợc đo bằng các phép đánh giá tính hiệu quả thực hiện các nhiệm vụ của ngƣời dùng có đạt đƣợc các mục tiêu yêu cầu với tính chính xác và hoàn thiện trong môi trƣờng sử dụng riêng. Các phép đánh giá tính hiệu quả đƣợc chỉ ra trong bảng 2.1. Tính hữu hiệu của một sản phẩm phần mềm có thể đƣợc đo bằng các phép đánh giá tính năng suất của tài nguyên mà ngƣời dùng sử dụng một cách hiệu quả trong môi trƣờng sử dụng riêng biệt. Tài nguyên thông dụng nhất là thời gian để hoàn thành nhiệm vụ, bên cạnh đó là các tài nguyên nhƣ nguồn lực con ngƣời, vật liệu hoặc tài chính sử dụng. Các phép đánh giá tính năng suất đƣợc chỉ ra trong bảng 2.2. 2.2.4. Tính tin cậy Tính tin cậy của sản phẩm phần mềm thể hiện ở sản phẩm đƣợc trông chờ thực hiện các chức năng dự kiến của nó với độ chính xác đƣợc yêu cầu. 2.2.5. Tính kiểm thử đƣợc Phần mềm có thể kiểm thử đƣợc là phần mềm mà nó có cách dễ dàng để có thể kiểm tra đƣợc. Đảm bảo rằng nó thực hiện đúng các chức năng dự định. 2.2.6. Tính sáng tạo Một sản phẩm phần mềm có tính sáng tạo khi nó thỏa mãn một trong các tính chất sau: - Sản phẩm đƣợc thiết kế và cài đặt đầu tiên. - Sản phẩm đƣợc phục vụ cho những đặc thù riêng. - Sản phẩm có những đặc điểm khác về mặt nguyên lý so với các sản phẩm hiện hành. - Sản phẩm có những ƣu thế nổi bậc so với sản phẩm hiện hành. Ví dụ, Bộ xử lý Tiếng việt đảm bảo tính sáng tạo. 2.2.7. Tính an toàn Tính an toàn của sản phẩm phần mềm đƣợc đánh giá thông qua: - Có cơ chế bảo mật và bảo vệ các đối tƣợng do hệ thống phát sinh hoặc quản lý. - Bản thân sản phẩm đƣợc đặt trong một cơ chế bảo mật nhằm chống sao chép trộm hoặc làm biến dạng sản phẩm đó. Ví dụ: Khi thực hiện một chức năng trên Windows, ngƣời dùng không thể chỉnh sửa đƣợc các đối tƣợng đƣợc sinh ra và bản thân Windows cũng chống sao chép, chỉnh sửa. Phạm Hùng Phú -Nguyễn Văn Thẩm 37
  51. Tập bài giảng Công nghệ phần mềm Tính an toàn của sản phẩm phần mềm có thể đƣợc đo bằng các phép đánh giá tính an toàn đánh giá mức độ rủi ro gây hại tới con ngƣời, doanh nghiệp, phần mềm, tài sản hoặc môi trƣờng trong điều kiện thực hiện cụ thể. Nó bao gồm tới sức khỏe và an toàn của cả ngƣời dùng và những ngƣời có ảnh hƣởng tới việc sử dụng nhƣ là các hậy quả vật lý và kinh tế chƣa tính trƣớc đƣợc. Các phép đánh giá tính an toàn đƣợc chỉ ra trong bảng 2.3. 2.2.8. Tính toàn vẹn Tính toàn vẹn của sản phẩm thể hiện qua các chức năng sau: - Có cơ chế ngăn ngừa việc thâm nhập bất hợp pháp vào phần mềm hay dữ liệu và ngăn ngừa việc phát sinh ra những đối tƣợng (dữ liệu, đơn thể ) sai quy cách hoặc mâu thuẫn với các đối tƣợng sẳn có. - Có cơ chế phục hồi lại toàn bộ hoặc một phần những đối tƣợng thuộc toàn bộ hoặc một phần những đối tƣợng thuộc diện quản lý của sản phẩm trong trƣờng hợp có sự cố nhƣ hỏng máy, mất điện đột ngột. - Không gây ra nhập nhằng trong thao tác. - Đảm bảo nhất quán về cú pháp. 2.2.9. Tính đối xứng và đầy đủ chức năng Tính đầy đủ của sản phẩm đƣợc đánh giá qua các tính chất sau đây: - Sản phẩm cung cấp đủ các chức năng cho ngƣời sử dụng - Các chức năng của sản phẩm có các cặp loại trừ lẫn nhau, Các chức năng đối xứng thƣờng gặp: Hình 2.4. Các chức năng đối xứng Ví dụ, một hệ thống quản lý sách có các thao tác thêm sách thì cần và nên có thêm thao tác đối xứng là huỷ sách. Ví dụ các chức năng điều khiển dữ liệu: 2.2.10. Tính tiêu chuẩn và tính chuẩn Tính tiêu chuẩn của sản phẩm đƣợc đánh giá qua các tính chất sau đây: 38 Phạm Hùng Phú-Nguyễn Văn Thẩm
  52. Tập bài giảng Công nghệ phần mềm - Sản phẩm cần đạt đƣợc một số tiêu chuẩn tối thiểu đƣợc thừa nhận trên thị trƣờng thế giới hoặc trong khoa học, - Đƣợc thể hiện ở sản phẩm đó phù hợp với các chuẩn quốc gia hoặc quốc tế - Khi xây dựng phần mềm, cần tuân theo nguyên tắc chuẩn hoá sau: + Chỉ thiết kế và xây dựng phần mềm sau khi xác định đƣợc chuẩn + Mọi thành phần của phần mềm phải đƣợc thiết kế và cài đặt theo cùng một chuẩn + Tối thiểu các chuẩn phải tƣơng thích nhau. Ví dụ, một hệ quản lý tệp cần có các chức năng tối thiểu sau đây: - Phát sinh (tạo tệp) các tệp - Huỷ bỏ các tệp - Sao chép các tệp - Tổ chức thƣ mục cho các tệp - Nạp và cập nhật dữ liệu vào tệp - Có thể quản lý đƣợc nhiều loại tệp: tệp văn bản, tệp chƣơng trình, tệp dữ liệu, - Các lệnh thao tác tệp có thể hoạt động nhƣ những đơn thể độc lập cũng nhƣ nhúng vào một ngôn ngữ lập trình cao cấp. 2.2.11. Tính độc lập Phần mềm cần và nên đảm bảo đƣợc tính độc lập đối với các đối tƣợng sau: - Độc lập đối với các thiết bị: + Sản phẩm đƣợc cài đặt một cách dễ dàng trên nhiều loại máy, + Sản phẩm có thể gắn đƣợc nhiều loại thiết bị; ví dụ máy in, fax. - Độc lập với cấu trúc của đối tƣợng mà sản phẩm đó quản lý: - Độc lập với nội dung của đối tƣợng mà sản phẩm đó quản lý: Ví dụ ta có thể sao chép các tệp, file trong Windows mà không phụ thuộc vào nội dung của các tệp, file. 2.2.12. Tính dễ phát triển, hoàn thiện Thể hiện ở phần mềm có thể mở rộng cho các phƣơng án khác hoặc mở rộng, tăng cƣờng về mặt chức năng một cách rõ ràng. 2.2.13. Tính thỏa mãn Tính thỏa mãn ảnh hƣởng bởi cảm nhận của ngƣời dùng với các tính năng của sản phẩm phần mềm (có thể đƣợc đo bằng các phép đánh giá bên ngoài) và bởi cảm nhận của ngƣời dùng về hiệu quả, tính hiệu suất, tính an toàn khi sử dụng. Tính thỏa mãn của sản phẩm phần mềm có thể đƣợc đo bằng các phép đánh giá tính hài lòng đánh giá thái độ của ngƣời sử dụng phản ánh lại sau khi sử dụng sản phẩm trong môi trƣờng sử dụng nhất định. Các phép đánh giá tính thỏa mãn đƣợc chỉ ra trong bảng 2.4. Phạm Hùng Phú -Nguyễn Văn Thẩm 39