Bài giảng Công nghệ phần mềm (Phần 1) - Phạm Thị Minh Thương

1.1.2. Đặc trưng của phần mềm Đặc trưng của phần mềm khác với các đặc trưng của phần cứng, nên việc phát triển phần mềm gặp rất nhiều khó khăn và chi phí cho phần mềm cao. Dưới đây là các yếu tố tạo ra sự phức tạp trong quá trình phát triển cũng như sử dụng và bảo trì phần mềm. a. Phần mềm không được chế tạo theo nghĩa cổ điển Phần mềm cũng được thiết kế, phát triển như phần cứng, nhưng nó không định hình trước. Chỉ khi phát triển xong người ta có sản phẩm cụ thể mới hiểu được nó có hiệu quả hay không. Giá thành của phần cứng chủ yếu bị chi phối bởi giá thành nguyên vật liệu và chúng ta tương đối dễ kiểm soát. Trong khi đó, giá thành phần mềm chủ yếu tập trung vào chi phí nhân công. Quá trình phát triển phần mềm phụ thuộc vào con người (hiểu biết, khả năng vận dụng, kinh nghiệm và cách thức quản lý) và được tiến hành phát triển trong điều kiện môi trường (kỹ thuật, xã hội) đa dạng và không ngừng thay đổi. Do đó, chúng ta rất khó ước lượng được chi phí cũng như hiệu quả của phần mềm. b. Phần mềm không hỏng đi nhưng thoái hóa theo thời gian Phần mềm không cảm ứng đối với những tác động của môi trường vốn gây cho phần cứng bị mòn cũ đi, nhưng nó cũng thoái hóa theo thời gian. Thực tế, phần mềm trải qua thời gian sử dụng thì cần phải được thay đổi (bảo trì) đề đáp ứng nhu cầu luôn thay đổi của tổ chức sử dụng nó. Mỗi khi thay đổi, phần mềm sẽ xuất hiện thêm một số khiếm khuyết mới không thể tránh, điều này làm cho số lỗi tiềm ẩn trong phần mềm tăng lên. Dần dần, phần mềm bị thoái hóa do tỷ lệ sai hỏng ngày cảng tăng lên đến mức gây nên những thiệt hại không thể chấp nhận được. Việc bảo trì phần mềm phức tạp hơn nhiều và có bản chất khác hẳn so với bảo trì phần cứng do sự phức tạp của hệ thống phần mềm và sự không có sẵn phần thay thế cho bộ phận bị lỗi. Chúng ta không thay thế bộ phận bị lỗi bởi cái có sẵn mà thực thế phải tạo ra một module mới. Do đó, thông thường chỉ có nhà sản xuất phần mềm mới bảo trì (sửa chữa) được hỏng hóc.B c. Phần lớn phần mềm được xây dựng từ đầu, ít khi được lắp ráp từ thành phần có sẵn - Phần mềm không có danh mục các thành phần cố định như phần cứng. - Phần mềm thường được đặt hàng theo một đơn vị hoàn chỉnh, theo yêu cầu riêng của khách hàng. - Phần mềm ít khi có thể lắp ráp theo một khuôn mẫu có sẵn. Yêu cầu với phần mềm thay đổi theo môi trường cụ thể mà ở đó nó được xây dựng. Môi trường của phần mềm (gồm phần cứng, phần mềm nền, con người và tổ chức) không thể định dạng từ trước và lại thay đổi thường xuyên.

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