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
1.1 Mở đầu
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.
Mục đích của chương này là đưa ra những nhận định cơ bản và tạo nên một
bức tranh cơ sở về những phương pháp tiếp cận khác nhau của công việc trong công
nghệ phần mềm. Các vấn đề cần làm rõ, chi tiết thêm sẽ được trình bày ở các
chương tiếp sau của giáo trình.
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Công nghệ phần mềm", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Công nghệ phần mềm
Đại học Đông Á Bài giảng môn Công nghệ Phần mềm BÀI GIẢNG MÔN HỌC MÔN: CÔNG NGHỆ PHẦN MỀM Đà Nẵng 2011 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC ĐÔNG Á Đại học Đông Á Bài giảng môn Công nghệ Phần mềm Lời nói đầu Nhập môn Công Nghệ Phần Mềm là môn học nhằm giúp cho sinh viên có kiến thức cơ bản nhất trong lĩnh vực công nghệ phần mềm. Qua môn học này sinh viên có cái nhìn khái quát về qui trình phát triển phần mềm, hiểu biết và thực hiện các giai đoạn trong qui trình trên một phần mềm cụ thể dựa trên những phương pháp, kỹ thuật trong quá trình thu thập yêu cầu, phân tích, thiết kế và cài đặt, viết tài liệu đã được minh họa cụ thể trong giáo trình. Mục tiêu giáo trình là sinh viên có thể hiểu được những yêu cầu công việc cần phải làm ở mỗi giai đoạn của qui trình, để có thể đảm trách công việc ở một trong các giai đoạn làm phần mềm trong những nhóm dự án. Đại học Đông Á Bài giảng môn Công nghệ Phần mềm Mục lục Lời nói đầu ................................................................................................................. 2 Mục lục ....................................................................................................................... 3 Danh mục hình vẽ ..................................................................................................... 6 Danh mục bảng biểu ................................................................................................. 8 Chương 1: Tổng quan về Công nghệ Phần mềm ................................................... 9 1.1 Mở đầu............................................................................................................ 9 1.2 Định nghĩa và đặc tính của sản phẩm phần mềm ........................................... 9 1.2.1 Định nghĩa phần mềm ........................................................................... 9 1.2.2 Phân loại và đặc tính của sản phẩm phần mềm. ................................... 9 1.3 Định nghĩa và các đặc trưng của Công nghệ phần mềm .............................. 12 1.3.1 Định nghĩa Công nghệ phần mềm ...................................................... 12 1.3.1 Các đặc trưng của Công nghệ phần mềm ........................................... 12 1.3.2 Nội dung công việc của một kỹ sư phần mềm .................................... 13 1.3.3 Lịch sử ngành công nghệ phần mềm .................................................. 13 1.4 Mô hình phát triển phần mềm ...................................................................... 14 1.4.1 Các công đoạn trong phát triển phần mềm ......................................... 14 1.4.2 Các mô hình phát triển phần mềm ...................................................... 15 1.4.3 Mô hình tuần tự tuyến tính WaterFall – Sequency model .................. 16 1.4.4 Mô hình bản mẫu Prototype Model .................................................... 16 1.4.5 Mô hình xoắn ốc Boehm’s Spiral Model ............................................ 17 1.4.6 Mô hình RAD ..................................................................................... 19 1.5 Các tiêu chuẩn dùng trong ngành Công nghiệp phần mềm ......................... 19 Chương 2: Quản lý dự án phần mềm ................................................................... 23 2.1 Dự án phần mềm và sự cần thiết việc quản lý dự án phần mềm .................. 23 2.1.1 Định nghĩa dự án và quản lý dự án ..................................................... 23 2.1.2 Sự cần thiết của Quản lý dự án phần mềm. ........................................ 23 2.2 Các thành phần trong mô hình làm việc của một dự án phần mềm ............. 23 2.2.1 Vai trò và nhiệm vụ của các nhóm trong dự án phần mềm ................ 24 2.2.2 Các nhân sự khác trong dự án ............................................................. 28 2.2.3 Các yếu tố ảnh hưởng đến các nhóm trong dự án .............................. 28 2.3 Ước lượng dự án ........................................................................................... 29 2.3.1 Độ đo ................................................................................................... 29 2.3.2 Độ đo LOC - Metric hướng quy mô phần mềm ................................. 30 2.3.3 Điểm chức năng Function Point – Metric hướng chức năng .............. 30 Đại học Đông Á Bài giảng môn Công nghệ Phần mềm 2.3.4 Mô hình ước lượng thực nghiệm ........................................................ 32 2.3.5 Mô hình ước lượng thực nghiệm COCOMO ...................................... 32 2.4 Lập kế hoạch dự án ................................................................................ 33 2.4.2 Cấu trúc kế hoạch thực hiện dự án: .................................................... 34 2.4.3 Quy trình lập kế hoạch thực hiện dự án .............................................. 35 2.4.4 Lập lịch dự án ..................................................................................... 35 2.5 Quản lý rủi ro ............................................................................................... 40 2.5.1 Định nghĩa rủi ro và quản lý rủi ro ..................................................... 40 2.5.2 Nhận diện rủi ro .................................................................................. 40 2.5.3 Quy trình quản lý rủi ro ...................................................................... 41 Chương 3: Phân tích hệ thống ............................................................................... 42 3.1 Mục tiêu của phân tích hệ thống .................................................................. 42 3.2 Công việc và các vấn đề chính trong phân tích hệ thống ............................. 42 3.3 Qui trình phân tích hệ thống ......................................................................... 42 3.4 Phân thích hệ thống hướng cấu trúc ............................................................. 43 3.4.1 Lược đồ dòng chảy dữ liệu DFD ........................................................ 45 3.4.2 Lược đồ dịch chuyển trạng thái STD .................................................. 47 3.4.3 Lược đồ quan hệ thực thể ERD .......................................................... 47 3.4.4 Từ điển dữ liệu .................................................................................... 48 3.5 Phân tích hệ thống hướng đối tượng ............................................................ 49 3.5.1 Giới thiệu USE CASE ........................................................................ 50 3.5.2 Sự cần thiết phải có USE CASE ......................................................... 51 3.5.3 Mô hình hóa USE CASE .................................................................... 51 3.5.4 Lược đồ USE CASE ........................................................................... 53 3.5.5 Xây dựng mô hình Use Case .............................................................. 56 3.5.6 Mô hình đối tượng .............................................................................. 57 3.5.7 Tổng kết: ............................................................................................. 62 Chương 4: Thiết kế phần mềm .............................................................................. 63 4.1 Khái niệm về thiết kế phần mềm .................................................................. 63 4.1.1 Khái niệm ............................................................................................ 63 4.1.2 Tầm quan trọng ................................................................................... 63 4.2 Quá trình thiết kế .......................................................................................... 63 4.2.1 Các hoạt động thiết kế chính trong một hệ thống phần mềm lớn. ...... 64 4.2.2 Cơ sở của thiết kế phần mềm .............................................................. 65 4.3 Thiết kế giao diện người dùng ..................................................................... 65 4.3.1 Tiêu chuẩn về thiết kế giao diện ......................................................... 65 Đại học Đông Á Bài giảng môn Công nghệ Phần mềm 4.3.2 Công cụ thiết kế giao diện .................................................................. 66 4.3.3 Quy trình thiết kế giao diện ................................................................ 66 4.3.4 Định hướng về thiết kế giao diện ........................................................ 66 4.4 Phương pháp thiết kế hướng cấu trúc ........................................................... 67 4.4.1 Thiết kế phần mềm cổ điển ................................................................. 67 4.4.2 Phân chia module ................................................................................ 68 4.4.3 Thiết kế dữ liệu ................................................................................... 70 4.5 Phương pháp thiết kế hướng đối tượng ........................................................ 70 4.5.1 Khái niệm mô hình động .................................................................... 71 4.5.2 Sự cộng tác – Lược đồ cộng tác .......................................................... 72 4.5.3 Lược đồ tuần tự ................................................................................... 74 4.5.4 Lược đồ trạng thái ............................................................................... 76 4.5.5 Lược đồ hoạt động .............................................................................. 78 4.5.6 Hoàn chỉnh lược đồ lớp chi tiết .......................................................... 79 4.5.7 Tổng kết: ............................................................................................. 81 Chương 5: Lập trình ............................................................................................... 82 5.1 Ngôn ngữ lập trình ....................................................................................... 82 5.1.1 Đặc trưng của ngôn ngữ lập trình ....................................................... 82 5.1.2 Lựa chọn ngôn ngữ lập trình ............................................................... 83 5.1.3 Ngôn ngữ lập trình và và sự ảnh hưởng tới kỹ nghệ phần mềm ........ 84 5.2 Phong cách lập trình ..................................................................................... 84 5.2.1 Tài liệu chương trình .......................................................................... 84 5.2.2 Khai báo dữ liệu .................................................................................. 85 5.2.3 Xây dựng câu lệnh .............................................................................. 85 5.2.4 Vào/ra .................................................................................................. 85 5.3 Lập trình tránh lỗi ......................................................................................... 86 5.3.1 Lập trình thứ lỗi .................................................................................. 87 5.3.2 Lập trình phòng thủ ............................................................................. 87 5.4 Lập trình hướng hiệu quả thực hiện ............................................................. 88 5.4.1 Tính hiệu quả chương trình ................................................................. 88 5.4.2 Hiệu quả bộ nhớ .................................................................................. 89 5.4.3 Hiệu quả vào/ra ................................................................................... 89 5.5 Tổng kết ........................................................................................................ 89 Chương 6: Kiểm nghiệm và bảo trì phần mềm ................................................... 90 6.1 Kiểm nghiệm phần mềm .............................................................................. 90 6.1.1 Khái niệm kiểm nghiệm phần mềm .................................................... 90 Đại học Đông Á Bài giảng môn Công nghệ Phần mềm 6.1.2 Các nguyên lý kiểm nghiệm phần mềm ............................................. 91 6.1.3 Phương pháp kiểm nghiệm – Test Case ............................................. 91 6.2 Chiến thuật kiểm nghiệm phần mềm............................................................ 94 6.2.1 Khái niệm ............................................................................................ 94 6.2.2 Chiến thuật kiểm nghiệm phần mềm phổ biến ................................... 95 6.2.3 Kiểm nghiệm từng modul – Unit test ................................................. 95 6.2.4 Kiểm nghiệm tích hợp ........................................................................ 96 6.3 Bảo trì phần mềm ....................................................................................... 100 6.3.1 Khái niệm và phân loại bảo trì .......................................................... 100 6.3.2 Trình tự nghiệp vụ bảo trì ................................................................. 101 Tài liệu tham khảo ................................................................................................ 104 Đại học Đông Á Bài giảng môn Công nghệ Phần mềm Chương 1:Tổng quan về Công nghệ Phần mềm 1.1 Mở đầu 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. Mục đích của chương này là đưa ra những nhận định cơ bản và tạo nên một bức tranh cơ sở về những phương pháp tiếp cận khác nhau của công việc trong công nghệ phần mềm. Các vấn đề cần làm rõ, chi tiết thêm sẽ được trình bày ở các chương tiếp sau của giáo trình. 1.2 Định nghĩa và đặc tính của sản phẩm phần mềm 1.2.1 Định nghĩa phần mềm Chương trình máy tính là một trình tự các chỉ thị (lệnh) để 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. Nhiệm vụ chính yếu 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 họat độ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. 1.2.2 Phân loại và đặc tính của sản phẩm phần mềm. 1.2.2.1 Phân loại sản phẩm phần mềm Generic Product: là sản phẩm đóng gói và bán rộng rãi trên thị trường. Bespoke Product: là sản phẩm được phát triển theo yêu cầu đặc thù của từng khách hàng. ... 1: do while x=0 2: if y=0 then 3: z=0; 4: elseif k=0 then 5: z=1; 6: else x=1; 7: endif; endif; 8: enddo 9: end Hình 4.3: Ví dụ xây dựng đồ thị dòng chảy Phải phân rã tất cả các điều kiện phức trở thành các điều kiện đơn Mỗi node mô tả một điều kiện đơn được gọi là predicate Đại học Đông Á Bài giảng môn Công nghệ Phần mềm Hình 4.4: Phân rã điều kiện phức thành điều kiện đơn Hình 4.5: Ví dụ Procedure AnalyzeTriangle Các đường độc lập cơ bản - Đường thực thi - Đường thực thi cơ bản - Các đường thực thi độc lập cơ bản Từ node bắt đầu đến node kết thúc, các đường thực thi cơ bản được liệt kê theo một thứ tự nào đó để đảm bảo rằng: đường đang liệt kê ít nhất đi qua một cạnh chưa được duyệt qua bởi các đường đã liệt kê trước đó - Tổng số đường thực thi cơ bản độc lập nhau được tính bằng V = P + 1; trong đó P là số node phân nhánh (predicate) Đối với chương trình con DoSomething - Tổng số đường : V = 3 + 1 = 4 - Đường 1: 1-9 - Đường 2: 1-2-3-8-1 - Đường 3: 1-2-4-5-7-8-1 Đại học Đông Á Bài giảng môn Công nghệ Phần mềm - Đường 4: 1-2-4-6-7-8-1 Chú ý: dấu 3 chấm () mang ý nghĩa “không quan tâm”, từ đó có thể đi theo bất kỳ cạnh nào bởi vì các cạnh sau đó đã được duyệt qua rồi Đối với chương trình con AnalyzeTriangle - Tổng số đường : V = 6 + 1 = 7 - Đường 1: 1-3-12 - Đường 2: 1-2-3-12 - Đường 3: 1-2-4-5-12 - Đường 4: 1-2-4-6-7-12 - Đường 5: 1-2-4-6-8-7-12 - Đường 6: 1-2-4-6-8-9-10-12 - Đường 7: 1-2-4-6-8-9-11-12 4.1.3.2 Thiết lập các Test Case - Thiết lập một test-case cho mỗi đường thực thi cơ bản - Dựa vào thuật giải để tìm ra một dữ liệu input, sau đó tính ra dữ liệu output hay đáp ứng mong đợi của thuật giải - Chú ý: có thể không tạo ra được test-case cho một đường thực thi nào đó - Ví dụ Sinh test-case cho chương trình con AnalyzeTriangle - Test-case cho đường 1: Input: a = 3, b = 2, c = 0 Output mong đợi: type = “Error” - Test-case cho đường 2: Input: a = 17, b = 5, c = 4 Output mong đợi: type = “Error” - Test-case cho đường 3: Input: a = 6, b = 6, c = 6 Output mong đợi: type = “Equilateral” 4.2 Chiến thuật kiểm nghiệm phần mềm 4.2.1 Khái niệm Chiến thuật kiểm tra phần mềm tích hợp các phương pháp tạo ra test-case trở thành một chuỗi các bước có thứ tự để có thể kiểm nghiệm phần mềm thành công với chi phí thấp. Bao gồm các công việc – Lập kế hoạch kiểm nghiệm – Sinh test-case Đại học Đông Á Bài giảng môn Công nghệ Phần mềm – Thực hiện kiểm nghiệm, thu thập kết qủa và đánh giá Verification: các hành động để đảm bảo cho phần mềm được hiện thực đúng theo một chức năng cụ thể nào đó “Are we building the product right?” Validation: các hành động để đảm bảo cho phần mềm được xây dựng theo đúng yêu cầu của khách hàng “Are we building the right product?” 4.2.2 Chiến thuật kiểm nghiệm phần mềm phổ biến - Bắt đầu tại từng module rồi tích hợp lớn dần đến toàn bộ hệ thống. - Các kỹ thuật khác nhau được sử dụng thích hợp tại các giai đoạn khác nhau. - Kiểm nghiệm có thể được tiến hành bởi người phát triển phần mềm, nhưng đối với các dự án lớn thì việc kiểm nghiệm phải được tiến hành bởi một nhóm độc lập. - Kiểm nghiệm và sửa lỗi là các hoạt động độc lập nhưng việc sửa lỗi phải phù hợp với các chiến thuật kiểm nghiệm. Hình 4.6: Chiến thuật kiểm nghiệm phần mềm phổ biến 4.2.3 Kiểm nghiệm từng modul – Unit test - Tiến hành kiểm nghiệm trên từng đơn vị nhỏ nhất của phần mềm, đó là module mã nguồn, sau khi đã thiết kế, mã hoá và biên dịch thành công - Thường dùng kỹ thuật kiểm nghiệm white-box - Có thể tiến hành kiểm nghiệm cùng lúc nhiều module. - Một số vấn đề trong việc xây dựng các test case + Test case nào? + Dữ liệu đầu vào và đầu ra có tử đâu? + Tính độc lập/phụ thuộc hoạt động của các module Đại học Đông Á Bài giảng môn Công nghệ Phần mềm Hình 4.7: Kiểm nghiệm module Mỗi module mã nguồn không phải là một chương trình hoàn chỉnh và đôi khi phải gọi các module chưa được kiểm nghiệm khác có thể phải thiết lập driver và/hoặc stub: phí tổn khá lớn (70%) Driver là một chương trình chính có nhiệm vụ nhận dữ liệu kiểm nghiệm, chuyển dữ liệu đó xuống cho module để kiểm tra và in ra các kết quả kiểm tra tương ứng. Stub thay thế các module được gọi bởi module đang kiểm tra. Làm thế nào để giảm các chi phí tạo driver hay stub 4.2.4 Kiểm nghiệm tích hợp - Từng module mã nguồn đã hoạt động đúng. Liệu khi kết hợp chúng lại thành một nhóm lớn chúng có hoạt động đúng không ? - Phải tiến hành kiểm nghiệm tích hợp để phát hiện lỗi liên quan đến giao tiếp giữa các module. - Tránh tích hợp kiểu big-bang: tất cả các module được kết hợp lại, và toàn bộ chương trình sẽ được kiểm nghiệm một lúc - Nên tích hợp tăng dần: từ trên xuống hoặc từ dưới lên Đại học Đông Á Bài giảng môn Công nghệ Phần mềm 4.2.4.1 Kiểm nghiệm tích hợp từ trên xuống Hình 4.8: Kiểm nghiệm tích hợp top-down - Module chính được dùng như là driver, và stub được thay thế bởi các module con trực tiếp của của module chính này. - Tuỳ thuộc vào cách tích hợp theo chiều sâu (depth-first) hoặc chiều ngang(breath-first), mỗi stub con được thay thế một lần bởi module tương ứng đã kiểm nghiệm. - Tiến hành kiểm nghiệm khi có sự thay thế mới - Tiến hành kiểm nghiệm hồi quy để phát hiện các lỗi khác trong từng module - Tích hợp kiểu từ trên xuống theo hình thức depth-first - Tiết kiệm được chi phí tạo các driver 4.2.4.2 Kiểm nghiệm tích hợp từ dưới lên - Các module mức thấp nhất được kết hợp thành các nhóm thể hiện một chức năng con đặc biệt của phần mềm. - Một driver được tạo ra để thao tác các test-case - Các module được kiểm nghiệm theo từng nhóm (Cluster): là nhóm các module mà module phía trên cần đến khi kiểm nghiệm - Driver được bỏ đi và các nhóm module được kết hợp dần lên phía trên trong sơ đồ phân cấp của chương trình. - Tiết kiệm được chi phí tạo các stub Đại học Đông Á Bài giảng môn Công nghệ Phần mềm Hình 4.9: Kiểm nghiệm tích hợp bottom-up 4.2.4.3 Kiểm nghiệm hồi quy - Việc kết hợp các module lại với nhau có thể ảnh hưởng đến vòng lặp điều khiển, cấu trúc dữ liệu hay I/O chia sẻ trong một số module - Điều đó làm lộ ra một số lỗi không thể phát hiện được khi tiến hành kiểm nghiệm theo đơn vị Phải kiểm nghiệm hồi quy khi tích hợp - Kiểm nghiệm hồi quy có thể được tiến hành thủ công bằng cách thực hiện lại các test-case đã tạo ra. Hoặc có thể dùng một công cụ capture-playback để thực hiện tự động 4.2.4.4 Kiểm nghiệm tính năng Kiểm nghiệm tính năng hiểu theo cách đơn giản nhất là: kiểm tra các chức năng của phần mềm đáp ứng được nhu cầu của khách hàng đã được xác định trong văn bản đặc tả yêu cầu của phần mềm Áp dụng kỹ thuật black-box Kiểm nghiệm tính năng bao gồm - Xem xét lại cấu hình phần mềm theo lược đồ triển khai - Kiểm nghiệm alpha - Kiểm nghiệm beta Kiểm nghiệm alpha - Được tiến hành ngay tại nơi sản xuất phần mềm. - Nhà phát triển phần mềm sẽ quan sát người sử dụng dùng sản phẩm và ghi nhận lại những lỗi phát sinh để sửa chữa. Kiểm nghiệm beta - Phần mềm được kiểm tra bên ngoài phạm vi của đơn vị sản xuất. Đại học Đông Á Bài giảng môn Công nghệ Phần mềm - Khách hành trực tiếp sử dụng và ghi nhận lỗi để báo lại cho nhà phát triển sửa chữa. 4.2.4.5 Kiểm nghiệm hướng đối tượng Về cơ bản chiến thuật kiểm nghiệm hướng đối tượng cũng theo thứ tự giống như kiểm nghiệm cổ điển: Hình 4.10: Kiểm nghiệm hướng đối tượng Không thể tách rời từng tác vụ của đối tượng/lớp để kiểm nghiệm – Tác vụ được đóng bao trong lớp – Các lớp con có thể override một tác vụ nào đó Kiểm nghiệm đơn vị hướng đối tượng tập trung vào các lớp kiểm nghiệm hành vi của lớp 4.2.4.6 Kiểm nghiệm tích hợp hướng đối tượng Khái niệm sơ đồ phân cấp không còn nhiều ý nghĩa trong chương trình hướng đối tượng kiểm nghiệm tích hợp theo cách khác Hai hình thức kiểm nghiệm tích hợp hướng đối tượng – Kiểm nghiệm trên cơ sở thread: tích hợp các lớp tạo thành một thread để phục vụ cho một input nào đó của chương trình – Kiểm nghiệm trên cơ sở sử dụng: các lớp client sẽ được tích hợp để sử dụng dịch vụ nào đó cung cấp bởi các lớp server 4.2.4.7 Kiểm nghiệm theo kịch bản Dựa vào các use-case để soạn ra các kịch bản Ví dụ: một kịch bản cho hệ thống đăng ký môn học qua WEB 1. Login với username = “e59306547”, password = “6547” 2. Chọn chức năng đăng ký môn học 3. Chọn 5 nhóm môn học của 5 môn: CNPM, AI, XLTHS, PTTK, XLSS trong đó có 2 nhóm trùng thời khoá biểu 4. Nhấn nút Submit Chương trình phải báo lỗi và liệt kê 2 nhóm bị trùng thời khoá biểu Đại học Đông Á Bài giảng môn Công nghệ Phần mềm 4.3 Bảo trì phần mềm 4.3.1 Khái niệm và phân loại bảo trì Bảo trì là công việc tu sửa, thay đổi phần mềm đã được phát triển (chương trình, dữ liệu, JCL, các loại tư liệu đặc tả, . . .) theo những lý do nào đó Các hình thái bảo trì: bảo trì để – Tu chỉnh – Thích hợp – Cải tiến – Phòng ngừa Bảo trì để tu sửa Là bảo trì khắc phục những khiếm khuyết có trong phần mềm. Một số nguyên nhân điển hình: – Kỹ sư phần mềm và khách hiểu nhầm nhau – Lỗi tiềm ẩn của phần mềm do sơ ý của lập trình hoặc khi kiểm thử chưa bao quát hết – Vấn đề tính năng của phần mềm: không đáp ứng được yêu cầu về bộ nhớ, tệp, . . . Thiết kế sai, biên tập sai . . . – Thiếu chuẩn hóa trong phát triển phần mềm (trước đó) Kỹ nghệ ngược (Reverse Engineering): dò lại thiết kế để tu sửa Những lưu ý – Mức trừu tượng – Tính đầy đủ – Tính tương tác – Tính định hướng Bảo trì để thích hợp Là tu chỉnh phần mềm theo thay đổi của môi trường bên ngoài nhằm duy trì và quản lý phần mềm theo vòng đời của nó. Thay đổi phần mềm thích nghi với môi trường: công nghệ phần cứng, môi trường phần mềm. Những nguyên nhân chính: – Thay đổi về phần cứng (ngoại vi, máy chủ,. . .) – Thay đổi về phần mềm (môi trường): đổi OS – Thay đổi cấu trúc tệp hoặc mở rộng CSDL Bảo trì để cải tiến Là việc tu chỉnh hệ phần mềm theo các yêu cầu ngày càng hoàn thiện hơn, đầy đủ hơn, hợp lý hơn. Những nguyên nhân chính: Đại học Đông Á Bài giảng môn Công nghệ Phần mềm – Do muốn nâng cao hiệu suất nên thường hay cải tiến phương thức truy cập tệp. – Mở rộng thêm chức năng mới cho hệ thống. – Cải tiến quản lý kéo theo cải tiến tư liệu vận hành và trình tự công việc. – Thay đổi người dùng hoặc thay đổi thao tác. Còn gọi là tái kỹ nghệ (re-engineering). Mục đích: đưa ra một thiết kế cùng chức năng nhưng có chất lượng cao hơn. Các bước thực hiện: – Xây dựng lưu đồ phần mềm – Suy dẫn ra biểu thức Bun cho từng dãy xử lý – Biên dịch bảng chân lí – Tái cấu trúc phần mềm Bảo trì để phòng ngừa Là công việc tu chỉnh chương trình có tính đến tương lai của phần mềm đó sẽ mở rộng và thay đổi như thế nào. Thực ra trong khi thiết kế phần mềm đã phải tính đến tính mở rộng của nó, nên thực tế ít khi ta gặp bảo trì phòng ngừa nếu như phần mềm được thiết kế tốt . Mục đích: – Sửa đổi để thích hợp với yêu cầu thay đổi sẽ có của người dùng – Thực hiện những thay đổi trên thiết kế không tường minh – Hiểu hoạt động bên trong chương trình – Thiết kế / lập trình lại – Sử dụng công cụ CASE 4.3.2 Trình tự nghiệp vụ bảo trì Quy trình bảo trì là gì ? Đó là quá trình trong vòng đời của phần mềm, cũng tuân theo các pha phân tích, thiết kế, phát triển và kiểm thử từ khi phát sinh vấn đề cho đến khi giải quyết xong. Thao tác bảo trì: Gồm 2 loại – Tu chỉnh cái đã có (loại 1) – Thêm cái mới (loại 2) Hiểu phần mềm đã có - Theo tài liệu nắm chắc các chức năng - Theo tài liệu chi tiết hãy nắm vững đặc tả chi tiết, điều kiện kiểm thử,... - Dò đọc chương trình nguồn, hiểu trình tự xử lý chi tiết của hệ thống 3 việc trên đều là công việc thực thi trên bàn Đại học Đông Á Bài giảng môn Công nghệ Phần mềm Tu sửa phần mềm đã có - Bảo trì chương trình nguồn, tạo các môđun mới và dịch lại - Thực hiện kiểm thử unit và tu chỉnh những mục liên quan có trong tư liệu đặc tả - Chú ý theo sát tác động của môđun được sửa đến các thành phần khác trong hệ thống Phát triển phần mềm mới - Khi thêm chức năng mới phải phát triển chương trình cho phù hợp với yêu cầu - Cần tiến hành từ thiết kế, lập trình, gỡ lỗi và kiểm thử unit - Phản ảnh vào giao diện của phần mềm (thông báo, phiên bản,...) Hình 4.11: Sơ đồ bảo trì Lập biểu quản lý bảo trì Cần quản lý tình trạng bảo trì Lập biểu quản lý tình trạng bảo trì - Ngày tháng, giờ - Nguyên nhân - Tóm tắt cách khắc phục - Chi tiết khắc phục, hiệu ứng làn sóng - Người làm bảo trì - Số công Những vấn đề lưu ý khi bảo trì phần mềm Phương pháp cải tiến thao tác bảo trì: Đại học Đông Á Bài giảng môn Công nghệ Phần mềm - Sáng kiến trong quy trình phát triển phần mềm - Sáng kiến trong quy trình bảo trì phần mềm - Phát triển những kỹ thuật mới cho bảo trì Sáng kiến trong quy trình phát triển phần mềm 1. Chuẩn hóa mọi khâu trong phát triển phần mềm 2. Người bảo trì chủ chốt tham gia vào giai đoạn phân tích và thiết kế 3. Thiết kế để dễ bảo trì Sáng kiến trong quy trình bảo trì phần mềm 1. Sử dụng các công cụ hỗ trợ phát triển phần mềm 2. Chuẩn hóa thao tác bảo trì và thiết bị môi trường bảo trì 3. Lưu lại những thông tin sử bảo trì 4. Dự án nên cử một người chủ chốt của mình làm công việc bảo trì sau khi dự án kết thưc giai đoạn phát triển Phát triển những kỹ thuật mới cho bảo trì - Công cụ phần mềm hỗ trợ bảo trì - Cơ sở dữ liệu cho bảo trì - Quản lý tài liệu, quản lý dữ liệu, quản lý chương trình nguồn, quản lý dữ liệu thử, quản lý sử bảo trì - Trạm bảo trì tính năng cao trong hệ thống mạng lưới bảo trì với máy chủ thông minh Đại học Đông Á Bài giảng môn Công nghệ Phần mềm Tài liệu tham khảo 1. Bài giảng Công nghệ Phần mềm – Nguyễn Cao Trí, Đại học Bách Khoa Tp Hồ Chí Minh 2. Bài giảng Công nghệ Phần mềm – Bộ môn Công nghệ Phần mềm, Viện Công nghệ Thông tin và Truyền thông, Đại học Bách Khoa Hà Nội. 3. Bài giảng Công nghệ Phần mềm – Nguyễn Việt Hà, Đại học Bách Khoa Hà Nội 4. Bài giảng Công nghệ Phần mềm – Nguyễn Văn Vỵ, Đại học Công Nghệ, Đại học Quốc gia Hà Nội 5. Giáo trình Phân tích và thiết kế hệ thống thông tin với UML – Ts Dương Kiều Hoa, Tôn Thất Hoà An 6. Giáo trình Phân tích thiết kế hệ thống thông tin – Học viện Công nghệ Bưu chính Viễn thông. 7. Introduction to Software Engineering – Ronald J. Leach, CRC Press 8. Software Engineering – Ian Sommerville , Fifth edition 9. Software Engineering – A practitioner’s approach, R.S.Pressman, McGraw-Hill, 1997 10. OMG Unified Modeling Language Specification, version 1.3, Object Management Group (www.omg.org), 1999 11. UML Toolkit, Hans – Erik Eriksson & Magnus Penker, 1998 12. Object–Oriented Software Engineering, A Use-Case Driven Approach, I. Jacobson, ACM Press/Addison-Wesley, 1992 13. Object– Oriented Analysis and Design with Applications, G. Booch, The Benjamin Cummings Publishing Company, 1994 14. Website: www.dayhoctructuyen.com,
File đính kèm:
- bai_giang_cong_nghe_phan_mem.pdf