Bảo trì phần mềm - Phần IV: Các kỹ thuật và công cụ bảo trì

Những công cụ quản lý cấu hình điển hình:  Hệ thống kiểm soát mã nguồn (Source Code Control System – SCCS)  Hệ thống kiểm soát phiên bản (Revision Control System - RSC)

pdf18 trang | Chia sẻ: nguyenlam99 | Lượt xem: 1926 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Bảo trì phần mềm - Phần IV: Các kỹ thuật và công cụ bảo trì, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
11 BẢO TRÌ PHẦN MỀM PHẦN IV – CÁC KỸ THUẬT VÀ CÔNG CỤ BẢO TRÌ Bộ môn Công nghệ phần mềm, Khoa CNTT & TT, Đại học Cần Thơ 2 Nội dung  Sự hiểu biết về chương trình  Kỹ thuật đảo ngược  Kỹ thuật tái kiến tạo  Các công cụ bảo trì Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 3 Sự hiểu biết về chương trình  Mục đích của việc hiểu chương trình  Yêu cầu kiến thức đối với bảo trì viên  Các hoạt động liên quan đến việc hiểu chương trình  Các chiến lược để hiểu chương trình  Các yếu tố ảnh hưởng đến việc hiểu chương trình Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 4 Mục đích của việc hiểu chương trình  Mục đích cuối cùng của việc đọc và hiểu chương trình là có thể thực hiện thành công các thay đổi được yêu cầu.  Điều này đòi hỏi phải có kiến thức về những điểm đặc trưng của một hệ thống phần mềm:  Lĩnh vực vấn đề  Ảnh hưởng của sự thực hiện  Quan hệ nhân - quả  Quan hệ sản phẩm - môi trường  Các điểm đặc trưng hỗ trợ việc ra quyết định Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 25 Mục đích của việc hiểu chương trình  Lĩnh vực vấn đề  Kiến thức về lĩnh vực vấn đề nhìn chung và về các vấn đề con nhìn riêng là cần thiết để giúp nhân sự bảo trì trong việc:  Lựa chọn các giải thuật, phương pháp và công cụ phù hợp để thực hiện sự thay đổi một cách hiệu quả.  Ước lượng nguồn tài nguyên cần cho hoạt động bảo trì.  Nguồn cung cấp thông tin để hiểu phạm vi vấn đề có thể là: tài liệu về hệ thống, người sử dụng cuối và mã nguồn của chương trình. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 6 Mục đích của việc hiểu chương trình  Ảnh hưởng của sự thực hiện  Kiến thức về ảnh hưởng của sự thực hiện hỗ trợ nhân sự bảo trì trong việc quyết định xem sự thay đổi được thực hiện có đạt được hiệu quả mong muốn hay không.  Tại mức trừu tượng cao, nhân sự bảo trì cần biết những kết quả mà chương trình sẽ tạo ra cho một kết xuất đầu vào xác định mà không cần biết những đơn vị chương trình nào góp phần đưa ra kết quả toàn diện đó hay cách thức có được kết quả đó.  Tại mức trừu tượng thấp, nhân sự bảo trì cần biết các kết quả mà những đơn vị chương trình riêng lẻ sẽ tạo ra.  Để đạt được những hiểu biết này một cách dễ dàng, nhân sự bảo trì cần có kiến thức về dòng dữ liệu, dòng điều khiển và các mô hình giải thuật. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 7 Mục đích của việc hiểu chương trình  Quan hệ nhân – quả Trong các chương trình lớn và phức tạp, kiến thức về quan hệ này là quan trọng vì nó:  Cho phép nhân sự bảo trì diễn giải về cách thức mà các thành phần của sản phẩm phần mềm tương tác với nhau trong suốt sự thực hiện.  Cho phép lập trình viên dự đoán phạm vi của sự thay đổi và bất cứ hiệu ứng truyền nào có thể xuất hiện từ sự thay đổi.  Có thể được sử dụng để theo vết dòng thông tin xuyên suốt chương trình. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 8 Mục đích của việc hiểu chương trình  Quan hệ sản phẩm – môi trường  Sản phẩm là hệ thống phần mềm.  Môi trường là toàn bộ các điều kiện và các ảnh hưởng từ bên ngoài tác động lên sản phẩm.  Kiến thức này có thể được sử dụng để dự đoán cách thức mà các thay đổi trong môi trường tác động đến sản phẩm nói chung và các chương trình cơ bản nói riêng. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 39 Mục đích của việc hiểu chương trình  Các điểm đặc trưng hỗ trợ việc ra quyết định  Các thuộc tính của sản phẩm phần mềm (như độ phức tạp hay tính có thể bảo trì) có thể giúp nhân sự bảo trì trong các quy trình ra quyết định về kỹ thuật và quản lý.  Các phép đo độ phức tạp của hệ thống có thể được sử dụng để xác định những thành phần nào của hệ thống cần nhiều tài nguyên hơn cho kiểm thử.  Tính có thể bảo trì của hệ thống có thể được sử dụng như một bộ đo chất lượng của hệ thống. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 10 Yêu cầu kiến thức đối với bảo trì viên  Các thành viên trong đội bảo trì gồm người quản lý, phân tích viên, thiết kế viên, lập trình viên.  Mọi thành viên của đội bảo trì không nhất thiết phải hiểu mọi mặt của hệ thống đang được bảo trì, tùy thuộc vào vị trí công việc mà họ phải có kiến thức về một số mặt của hệ thống. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 11 Yêu cầu kiến thức đối với bảo trì viên  Người quản lý  Cần phải có kiến thức hỗ trợ ra quyết định nhằm đưa ra các quyết định đúng. Mức độ hiểu biết cần có sẽ tùy thuộc vào quyết định được ra.  Phân tích viên  Cần có kiến thức về phạm vi vấn đề, về quan hệ sản phẩm – môi trường. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 12 Yêu cầu kiến thức đối với bảo trì viên  Nhà thiết kế  Cần có kiến thức về ảnh hưởng của sự thực hiện, quan hệ nhân - quả.  Lập trình viên  Cần có kiến thức về ảnh hưởng của sự thực hiện của hệ thống tại các mức trừu tượng khác nhau, quan hệ nhân - quả và quan hệ sản phẩm – môi trường. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 413 Yêu cầu kiến thức đối với bảo trì viên  Về nguyên tắc, ta có thể phân loại các vai trò của nhân sự bảo trì nhưng trong thực tế sự phân chia này không rõ ràng.  Việc xác định vai trò của nhân sự bảo trì sẽ phụ thuộc vào những yếu tố như sự tổ chức của công việc bảo trì và vào quy mô của nhóm bảo trì. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 14 Các hoạt động liên quan đến việc hiểu chương trình Đọc tài liệu về chương trình Đọc mã nguồn Chạy chương trình Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 15 Các hoạt động liên quan đến việc hiểu chương trình  Đọc tài liệu về chương trình để có sự hiểu biết tổng quan về hệ thống  Đọc, nghiên cứu kỹ các nguồn thông tin khác nhau (như tài liệu về hệ thống).  Đọc mã nguồn để có được cái nhìn tổng thể và cục bộ về chương trình  Tổng thể: sự hiểu biết mức cao về hệ thống, phạm vi ảnh hưởng của sự thay đổi lên các phần của hệ thống.  Cục bộ: sự hiểu biết về một phần cụ thể của hệ thống. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 16 Các hoạt động liên quan đến việc hiểu chương trình  Chạy chương trình để tìm hiểu hành vi động của chương trình  Có thể bộc lộ một số điểm đặc trưng của hệ thống mà bảo trì viên khó có thể biết nếu chỉ đọc tài liệu và mã nguồn. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 517 Các chiến lược để hiểu chương trình  Mô hình từ trên xuống (Top-down model)  Bắt đầu từ việc hiểu các chi tiết mức cao của chương trình, chẳng hạn như nó làm cái gì và khi nào nó thực hiện.  Sau đó dần dần tiến tới việc hiểu các chi tiết mức thấp chẳng hạn như các kiểu dữ liệu, các dòng dữ liệu và điều khiển, các mô hình thuật toán theo cách từ trên xuống. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 18 Các chiến lược để hiểu chương trình  Mô hình từ dưới lên (Bottom – up model)  Bảo trì viên nhận dạng thành công các mẫu (pattern) trong chương trình.  Những mẫu này được “bó” lại thành những cấu trúc mức cao có ý nghĩa hơn.  Các cấu trúc mức cao sau đó được “bó” lại với nhau thành những cấu trúc lớn hơn.  Lặp đi lặp lại bước trên theo kiểu từ dưới lên cho đến khi toàn bộ chương trình được hiểu. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 19 Các chiến lược để hiểu chương trình Các cụm thứ tự cao Các cấu trúc ngữ nghĩa mức cao (thủ tục, hàm, module) Các cấu trúc ngữ nghĩa mức thấp (câu lệnh) Các cụm thứ tự mức thấp Chiều hiểu chương trình Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 20 Các chiến lược để hiểu chương trình  Mô hình cơ hội (Opportunistic model)  Thực tế, quy trình để hiểu một chương trình thường hiếm khi được tổ chức một cách rành mạch như các mô hình từ trên xuống hay từ dưới lên.  Bảo trì viên có khuynh hướng nắm lấy lợi thế của bất cứ manh mối nào mà họ tình cờ gặp (theo cách cơ hội).  Bảo trì viên thực hiện cả hai chiến lược từ trên xuống và từ dưới lên, mặc dù không đồng bộ. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 621 Các yếu tố ảnh hưởng đến việc hiểu chương trình C Á C Y Ế U T Ố Ả N H H Ư Ở N G Đ Ế N V IỆ C H IỂ U C H Ư Ơ N G T R ÌN H Tri thức lĩnh vực Tài liệu Các vấn đề thực hiện / Thực tiễn lập trình Sự trình bày / tổ chức chương trình Công cụ hỗ trợ Vấn đề Ứng dụng Sự phân rã Tính module Sự che dấu thông tin Lập trình/ Đặt tên danh biểu Giải thuật Bên ngoài Hệ thống Nội bộ Sự tượng trưng Thuật ngữ Sự sắp đặt Công cụ phân tích tĩnh Công cụ phân tích động Yếu tố Thành phần Lưu ý Phụ thuộc vào: Kiến thức đã có, tài liệu hệ thống, thảo luận Cách mà nó liên quan với ứng dụng Sự phân cấp và module Liên kết thấp, gắn kết cao Độ phức tạp Định nghĩa và tuân theo các chuẩn nội bộ Nên: cập nhật khi hệ thống thay đổi, chính xác và súc tích, tuân theo chuẩn Nên: phù hợp, ngắn gọn, rõ ràng và thống nhất; Tiết lộ các đặc điểm cấu trúc của chương trình Tiết lộ các hành vi động của chương trình Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 22 Kỹ thuật đảo ngược (Reverse Engineering)  Định nghĩa  Mục đích của kỹ thuật đảo ngược  Các mức của kỹ thuật đảo ngược  Các điều kiện để thực hiện kỹ thuật đảo ngược Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 23 Định nghĩa  Kỹ thuật đảo ngược là quy trình phân tích một hệ thống chủ thể để:  Nhận dạng các thành phần của hệ thống và các mối quan hệ giữa chúng.  Tạo ra các biểu diễn của hệ thống ở một dạng khác hay ở các mức trừu tượng cao hơn. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 24 Mục đích của kỹ thuật đảo ngược  Kỹ thuật đảo ngược tạo điều kiện thuận lợi cho sự thay đổi bằng cách cho phép hệ thống phần mềm được hiểu dưới dạng nó làm gì, nó làm như thế nào và biểu diễn kiến trúc của nó.  Kỹ thuật đảo ngược có thể bắt đầu từ đặc tả các yêu cầu hay từ thiết kế kiến trúc và chi tiết hay từ mã nguồn.  Điểm bắt đầu phổ biến nhất của kỹ thuật đảo ngược là mã nguồn của chương trình. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 725 Mục đích của kỹ thuật đảo ngược  Phục hồi thông tin bị mất  Tạo điều kiện thuận lợi cho sự di dời giữa các nền  Cải tiến hay cung cấp tài liệu  Cung cấp những cái nhìn khác về hệ thống  Rút trích thành phần có thể tái sử dụng  Đối phó với độ phức tạp  Phát hiện hiệu ứng lề  Giảm thiểu công sức bảo trì Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 26 Mục đích của kỹ thuật đảo ngược  Phục hồi thông tin bị mất, cải tiến hay cung cấp tài liệu  Theo thời gian, hệ thống phải trải qua một chuỗi các thay đổi.  Do áp lực quản lý và các ràng buộc về thời gian, tài liệu (đặc tả, thiết kế) có thể không được cập nhật hay thậm chí không có => Mã lệnh trở thành nguồn thông tin duy nhất của hệ thống  Các công cụ của kỹ thuật đảo ngược cho phép thông tin (đặc tả, thiết kế) này được phục hồi. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 27 Mục đích của kỹ thuật đảo ngược  Tạo điều kiện thuận lợi cho sự di dời giữa các nền  Để nắm bắt lợi thế của một nền phần mềm hay phần cứng mới, sự kết hợp giữa kỹ thuật đảo ngược và kỹ thuật chuyển tiếp có thể được sử dụng.  Các công cụ của kỹ thuật đảo ngược được sử dụng để có các đặc tả và thiết kế.  Kỹ thuật chuyển tiếp sau đó được áp dụng lên đặc tả theo các chuẩn của nền mới. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 28 Mục đích của kỹ thuật đảo ngược  Cung cấp những cái nhìn khác về hệ thống  Các công cụ đảo ngược có thể được sử dụng để cung cấp những tài liệu khác (như các lưu đồ: dòng dữ liệu, dòng điều khiển, quan hệ thực) thể nhằm bổ sung cho tài liệu hiện có. => cung cấp những cái nhìn khác về hệ thống Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 829 Mục đích của kỹ thuật đảo ngược  Rút trích thành phần có thể tái sử dụng  Việc tái sử dụng các thành phần có có thể làm gia tăng hiệu suất và cải thiện chất lượng sản phẩm.  Sự thành công của việc tái sử dụng các thành phần phụ thuộc phần nào vào tính sẵn có của các thành phần đó.  Các phương pháp và công cụ đảo ngược tạo cơ hội để truy xuất và trích ra các thành phần chương trình. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 30 Mục đích của kỹ thuật đảo ngược  Đối phó với độ phức tạp  Một trong các vấn đề chính của các hệ thống kế thừa là độ phức tạp gia tăng khi chúng tiến hóa.  Khi thực hiện sự thay đổi, độ phức tạp phải được xử lý bằng cách rút ra thông tin liên quan tới sự thay đổi và bỏ qua cái không liên quan. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 31 Mục đích của kỹ thuật đảo ngược  Phát hiện hiệu ứng lề  Trong trường hợp bảo trì viên thiếu cái nhìn toàn cục về hệ thống, các hiệu ứng gợn sóng (hiệu ứng lề không mong muốn được tạo ra và các hiện tượng lạ bị bỏ qua) là kết quả phổ biến của sự thay đổi.  Các công cụ của kỹ thuật đảo ngược giúp làm rõ kiến trúc tổng thể của hệ thống => việc dự đoán tác động của thay đổi và việc phát hiện các vấn đề về dòng dữ liệu và luận lý trở nên dễ hơn. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 32 Mục đích của kỹ thuật đảo ngược  Giảm thiểu công sức bảo trì  Việc hiểu chương trình chiếm một tỷ lệ lớn trong toàn bộ thời gian cần để tạo ra sự thay đổi do thiếu các tài liệu phù hợp hay kiến thức về phạm vi không đủ.  Kỹ thuật đảo ngược cung cấp biện pháp để lấy được thông tin đang mất => giảm công sức bảo trì. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 933 Các mức của kỹ thuật đảo ngược Mức trừu tượng Các giai đoạn Đặc tả Thiết kế Thực thi Cao Trung bình Thấp Trung bình Phục hồi đặc tả Phục hồi thiết kế Dẫn chứng lại tài liệu Dẫn chứng lại tài liệu Dẫn chứng lại tài liệu Kỹ thuật đảo ngược Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 34 Các mức của kỹ thuật đảo ngược  Dẫn chứng lại tài liệu (Redocumentation)  Dẫn chứng lại tài liệu là sự tái tạo lại một biểu diễn tương đương về mặt ngữ nghĩa ở cùng một mức trừu tượng.  Mục đích của dẫn chứng lại tài liệu:  Tạo ra những cái nhìn khác về hệ thống nhằm gia tăng sự hiểu biết.  Cải tiến tài liệu hiện có.  Sinh ra tài liệu cho chương trình được sửa đổi gần đây => tạo điều kiện thuận lợi cho công việc bảo trì hệ thống trong tương lai (bảo trì dự phòng). Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 35 Các mức của kỹ thuật đảo ngược  Phục hồi thiết kế (Design recovery)  Phục hồi thiết kế cần nhận dạng và trích dẫn sự trừu tượng hóa mức cao hơn và có ý nghĩa dựa trên những gì thu được trực tiếp từ sự kiểm tra mã nguồn.  Thiết kế được khôi phục – không nhất thiết là thiết kế gốc – có thể được sử dụng để:  Tái phát triển hệ thống.  Phát triển các ứng dụng tương tự nhưng không giống hệt. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 36 Các mức của kỹ thuật đảo ngược  Phục hồi đặc tả (Specification recovery)  Phục hồi đặc tả liên quan đến việc nhận dạng, trừu tượng hóa và mô tả các mức trừu tượng cao hơn và có ý nghĩa dựa trên thiết kế hay mã nguồn của hệ thống.  Đặc tả được khôi phục bằng kỹ thuật đảo ngược có thể được sử dụng để:  Hỗ trợ cho hoạt động bảo trì phần mềm mà không cần truy xuất vào mã nguồn.  Hỗ trợ bảo trì viên đạt được mức hiểu biết phù hợp để thực hiện sự thay đổi trên hệ thống phần mềm.  Phát triển hay bảo trì của các hệ thống phần mềm tương tự. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 10 37 Các điều kiện để thực hiện kỹ thuật đảo ngược  Điều kiện để thực hiện kỹ thuật đảo ngược  Liên quan đến sản phẩm / môi trường  Liên quan đến quy trình bảo trì  Liên quan về phương diện thương mại Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 38 Các điều kiện để thực hiện kỹ thuật đảo ngược  Điều kiện để thực hiện kỹ thuật đảo ngược  Liên quan đến sản phẩm / môi trường  Thiết kế / đặc tả thiếu hay không hoàn chỉnh.  Tài liệu thiếu, không chính xác, lạc hậu.  Độ phức tạp của chương trình gia tăng.  Mã nguồn có cấu trúc kém.  Cần chuyển chương trình sang ngôn ngữ lập trình khác.  Cần tạo các sản phẩm tương thích.  Cần di dời sang nền phần cứng hay phần mềm khác. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 39 Các điều kiện để thực hiện kỹ thuật đảo ngược  Điều kiện để thực hiện kỹ thuật đảo ngược  Liên quan đến quy trình bảo trì  Giảm năng suất.  Cần thay đổi hiệu chỉnh liên tục.  Các lỗi tồn đọng gia tăng.  Liên quan về phương diện thương mại  Cần kéo dài thời gian sống kinh tế của hệ thống.  Cần tạo ra sản phẩm tương tự nhưng không giống hệt. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ Lưu ý  Trong trường hợp mã nguồn của một số chương trình (của hệ thống phần mềm đang được bảo trì) bị mất, bảo trì viên phải dùng đến các mã máy của chúng => công cụ: disassembler và decompiler.  Để sử dụng kỹ thuật và công cụ đảo ngược hiệu quả, bảo trì viên cần có sự hiểu biết về phần mềm cấp thấp và lập trình cấp thấp.  Hợp ngữ  Trình biên dịch  Máy ảo và bytecode  Hệ điều hành 40 Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 11 41 Kỹ thuật tái kiến tạo (Reengineering)  Mục đích của kỹ thuật tái kiến tạo  Các bước trong kỹ thuật tái kiến tạo  Một số loại tái kiến tạo  Điều kiện sử dụng kỹ thuật tái kiến tạo Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 42 Mục đích của kỹ thuật tái kiến tạo  Tái kiến tạo (hệ thống) để đạt các chuẩn hiện tại và nhận được sự hỗ trợ của các công nghệ mới hơn.  Khai thác công nghệ mới như các chuẩn hay thư viên mới.  Di dời hệ thống sang một hệ nền mới.  Không bắt buộc hệ thống phải nguyên khối, các thành phần của nó có thể được dễ dàng đưa ra thị trường một cách riêng biệt hoặc kết hợp theo nhiều cách khác nhau.  Trích xuất các thiết kế và sử dụng chúng để cài đặt mới.  Cải thiện hiệu suất.  Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 43 Các bước trong kỹ thuật tái kiến tạo  Kỹ thuật đảo ngược (Reverse Engineering)  Kỹ thuật tái cấu trúc (Restructuring)  Kỹ thuật chuyển tiếp (Forward Engineering) Phân tích Mô hình kiến trúc mức cao Hệ thống phần mềm cũ Mô hình được tái xây dựng được cải tiến Hệ thống phần mềm mới Hiểu, Rút trích, Trừu tượng Tạo ra, Tinh chỉnh Cải tiến, Cấu trúc lại, Mở rộng Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 44 Các bước trong kỹ thuật tái kiến tạo  Kỹ thuật đảo ngược  Không thay đổi hệ thống  Giúp hiểu hệ thống và cung cấp cách nhìn khác về hệ thống  Được sử dụng khi nền tảng công nghệ của hệ thống phần mềm (ngôn ngữ, công cụ, máy móc, hệ điều hành) là lỗi thời.  Chi tiết về kỹ thuật đảo ngược đã được trình bày trong phần trước. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 12 45 Các bước trong kỹ thuật tái kiến tạo  Kỹ thuật tái cấu trúc  Chuyển đổi các biểu diễn trừu tượng (là kết quả của kỹ thuật đảo ngược) sang các biểu diễn khác ở cùng một mức trừu tượng.  Kỹ thuật tái cấu trúc bao gồm:  Tái cấu trúc lại mã nguồn hoặc lược đồ cơ sở dữ liệu mà không thay đổi hành vi bên ngoài nhưng cải tiến được cấu trúc bên trong của nó.  Phát hiện các đoạn mã trùng lặp và các đoạn mã chết để loại bỏ chúng. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 46 Các bước trong kỹ thuật tái kiến tạo  Kỹ thuật chuyển tiếp  Là ngược lại của kỹ thuật đảo ngược.  Tương tự như phương pháp phát triển phần mềm truyền thống – tiến hành từ các yêu cầu tới thực thi chi tiết thông qua thiết kế. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 47 Một số loại tái kiến tạo  Kỹ thuật tái kiến tạo được sử dụng trong:  Tái kiến tạo hệ thống thông tin  Tái kiến tạo theo hướng đối tượng  Tái kiến tạo giao diện Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 48 Một số loại tái kiến tạo  Tái kiến tạo hệ thống thông tin Kỹ thuật tái kiến tạo thông tin bao gồm:  Tái kiến tạo cơ sở dữ liệu  Tái kiến tạo hệ chuyên gia Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 13 49 Một số loại tái kiến tạo  Tái kiến tạo cơ sở dữ liệu  Dịch lược đồ: dịch trực tiếp và dịch gián tiếp.  Chuyển đổi dữ liệu: chuyển đổi vật lý, chuyển đổi logic, và chương trình cầu nối.  Chuyển đổi chương trình: viết lại, dùng chương trình cầu nối, cạnh tranh, dịch ngược, và cùng tồn tại.  Tái kiến tạo hệ chuyên gia  Dựa trên hệ thống hiện tại: cải tiến các hệ cơ sở dữ liệu hiện tại, cải tiến các hệ chuyên gia hiện tại, kết nối chủ - tớ giữa hệ chuyên gia và hệ cơ sở dữ liệu, và kết nối ngang hàng cho hệ chuyên gia và hệ cơ sở dữ liệu.  Sử dụng một hệ thống quản lý cơ sở tri thức mới: liên quan đến việc tìm kiếm một mô hình mới để biểu diễn tri thức. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 50 Một số loại tái kiến tạo  Tái kiến tạo giao diện người dùng  Phải sử dụng kỹ thuật đảo ngược để trừu tượng hóa mô hình khái niệm giao diện người dùng.  Sau đó sử dụng kỹ thuật chuyển tiếp để tái cài đặt các giao diện người dùng bằng một công nghệ khác. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 51 Một số loại tái kiến tạo Mô hình tái kiến tạo giao diện người dùng theo phương pháp của Merlo  Hiểu giao diện ban đầu và dữ liệu mà nó di chuyển giữa giao diện và phần còn lại của ứng dụng  Tổ chức lại hành vi (của giao diện hiện tại) thành một chuỗi có ý nghĩa trong ngữ cảnh của giao diện mới.  Thực hiện những cải tiến nhằm tạo ra chế độ tương tác hiệu quả hơn.  Xây dựng và tích hợp giao diện mới. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 52 Một số loại tái kiến tạo Mô hình tái kiến tạo giao diện người dùng theo phương pháp MORPH  Phát hiện: một phân tích tĩnh được tiến hành để xác định và trích xuất các mô hình thực hiện giao diện người dùng từ mã nguồn.  Biểu diễn: xây dựng mô hình trừu tượng phân cấp, trong đó các mô hình lập trình giao diện người dùng được xác định là các nút lá; các thuộc tính hay nhiệm vụ tương tác khái niệm mức cao hơn được trừu tượng hóa từ các mô hình cấp thấp hơn.  Chuyển đổi: xác định một tập các quy tắc để chuyển mô hình trừu tượng thành một thực hiện cụ thể với công nghệ giao diện xác định. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 14 53 Một số loại tái kiến tạo  Tái kiến tạo theo hướng đối tượng  Công nghệ phần mềm hướng đối tượng trở thành mô hình phát triển lựa chọn của nhiều tổ chức phần mềm.  Hiện tại, có khá nhiều các ứng dụng được phát triển bằng cách sử dụng các phương pháp truyền thống => các ứng dụng đó phải được tái kiến tạo để chúng có thể dễ dàng được tích hợp với các hệ thống hướng đối tượng lớn.  Trong tái kiến tạo hướng đối tượng, những kỹ thuật được sử dụng là: tái cấu trúc trong ngữ cảnh hướng đối tượng (refactoring) và các mẫu tái kiến tạo (reengineering patterns). Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 54 Tái kiến tạo công trình  Tái kiến tạo theo hướng đối tượng Kỹ thuật tái kiến tạo theo hướng đối tượng thực hiện những công việc:  Đảo ngược phần mềm hiện tại để tạo ra các mô hình dữ liệu, hành vi và chức năng phù hợp.  Tạo các use – case nếu hệ thống được tái kiến tạo mở rộng chức năng hay hành vi của ứng dụng ban đầu.  Sử dụng các mô hình dữ liệu được tạo ra trong suốt quá trình đảo ngược cùng với mô hình lớp – trách nhiệm – cộng tác (Class – Responsibility – Collaborator) nhằm thiết lập cơ sở cho định nghĩa lớp.  Bắt đầu thực hiện các hệ thống con theo được định nghĩa và thiết kế hướng đối tượng. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ Điều kiện để sử dụng kỹ thuật tái kiến tạo Các dấu hiệu cảnh báo dẫn đến nhu cầu sử dụng kỹ thuật tái kiến tạo:  Tài liệu lỗi thời hoặc không có  Thiếu kiểm thử  Người phát triển không còn làm việc  Tài liệu và mã chương trình hiện tại không đồng bộ  Hiểu biết hạn chế về hệ thống  Tốn nhiều thời gian thực hiện những thay đổi đơn giản  Cần sửa lỗi định kỳ  Khó phân tách thành nhiều phát hành cho các nhóm khách hàng khác nhau  Mã lệnh bị trùng lặp  Mã lệnh rối, dài, không hiệu quả 55 Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 56 Công cụ bảo trì  Tiêu chuẩn để chọn công cụ bảo trì  Các loại công cụ bảo trì Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 15 57 Tiêu chuẩn để chọn công cụ bảo trì  Một số yếu tố cần được xem xét khi lựa chọn công cụ bảo trì phần mềm:  Khả năng  Các điểm đặc trưng  Quan hệ vốn - lãi  Nền tảng  Ngôn ngữ lập trình  Tính dễ sử dụng  Tính mở của kiến trúc  Sự ổn định của nhà cung cấp  Văn hóa của tổ chức Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 58 Các loại công cụ bảo trì  Về nguyên tắc, ta có thể phân loại công cụ bảo trì phần mềm dựa trên công việc mà chúng hỗ trợ.  Những công việc giúp phân loại công cụ bảo trì:  Hiểu chương trình, kỹ thuật đảo ngược  Kiểm thử  Quản lý cấu hình  Lập tài liệu và đo lường  Trong thực tế, ta khó có được sự phân loại tốt vì trạng thái tự nhiên đa dạng hóa và có liên quan với nhau của các hoạt động bảo trì phần mềm. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 59 Các loại công cụ bảo trì  Một số các công cụ dùng để hiểu chương trình và đảo ngược:  Bộ cắt lát chương trình  Bộ phân tích tĩnh  Bộ phân tích động  Bộ phân tích dòng dữ liệu  Bộ tham khảo chéo  Bộ phân tích sự phụ thuộc  Công cụ chuyển đổi  Công cụ dịch ngược Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 60 Ví dụ: Công cụ dùng để hiểu chương trình Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 16 61 Ví dụ: Công cụ dùng để hiểu chương trình Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 62 Ví dụ: Công cụ dùng để hiểu chương trình Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 63 Ví dụ: Công cụ dùng cho đảo ngược Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 64Ví dụ: Công cụ dùng cho đảo ngượcBộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 17 65Ví dụ: Công cụ dùng cho đảo ngượcBộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 66 Các loại công cụ bảo trì  Các công cụ hỗ trợ kiểm thử:  Bộ mô phỏng  Bộ sinh trường hợp kiểm thử  Bộ sinh các đường kiểm thử Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 67 Ví dụ: Công cụ hỗ trợ kiểm thử Tên công cụ Đặc điểm Hệ điều hành Datatect - Một chương trình mạnh và trực quan cho phép tạo ra một loạt (gần như vô hạn) dữ liệu kiểm thử thực tế và lưu trong tập tin ASCII hoặc lưu trực tiếp trong các hệ quản trị cơ dở dữ liệu như Oracle, Sybase, SQL Server, và Informix. - Tạo ra hơn 2 tỷ tên riêng, tên doanh nghiệp, địa chỉ đường phố, thành phố, tiểu bang, số điện thoại, - Có thể sử dụng kiểu dữ liệu có sẵn của Datatech hoặc tự tạo ra các kiểu dữ liệu riêng. Window từ 95 trở lên Allpairs - Xây dựng một tập các trường hợp kiểm thử nhỏ có thể chấp nhận mà vẫn đảm bảo tính bao phủ. QuickTest Pro - Dùng để kiểm thử chức năng và cho phép thực hiện kiểm thử hồi qui một cách tự động. - Hỗ trợ sẵn một số loại chương trình thông dụng như: ứng dụng Windows chuẩn/Win32, ứng dụng web theo chuẩn HTML, XML, Visual Basic, ActiveX. - Một số loại chương trình khác (.NET, Java, ) đòi hỏi phải cài đặt thêm thành phần bổ sung. Window từ XP trở lên Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 68 Ví dụ: Công cụ hỗ trợ kiểm thử (Datatect) Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 18 69 Các loại công cụ bảo trì  Những công cụ quản lý cấu hình điển hình:  Hệ thống kiểm soát mã nguồn (Source Code Control System – SCCS)  Hệ thống kiểm soát phiên bản (Revision Control System - RSC) Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 70 Ví dụ: Công cụ kiểm soát phiên bản Tên công cụ Đặc điểm Google Code + Tortoise SVN Google Code cho phép quản lý dự án từ xa; cập nhật dự án; tạo các thành viên của dự án; phân quyền các thành viên; ghi lại lịch sử hoạt động một cách chi tiết; phục hồi lại phiên bản của những thay đổi trước đó. TortoiseSVN là hệ thống quản lý phiên bản phía client và chỉ hỗ trợ trên môi trường Windows. Nó được dùng để quản lý sự thay đổi giữa các phiên bản, mã nguồn và sự sửa đổi của các chương trình. VisualSVN Server + Tortoise SVN VisualSVN Server cho phép quản lý dự án từ xa, cập nhật dự án (có thể thông qua trình duyệt web), tạo các thành viên của dự án, phân quyền các thành viên, ghi lại lịch sử hoạt động một cách chi tiết, phục hồi lại phiên bản của những thay đổi trước đó. TortoiseSVN là hệ thống quản lý phiên bản phía client và chỉ hỗ trợ trên môi trường Windows. Nó được dùng để quản lý sự thay đổi giữa các phiên bản, mã nguồn và sự sửa đổi của các chương trình. Eclipse Subversive - Subversion (SVN) Team Provider Tích hợp hệ thống kiểm soát phiên bản Subversion (SVN) với nền tảng Eclipse. Sử dụng các Subversive plug-in, ta có thể làm việc trực tiếp với các dự án được lưu trữ trong kho Subversion từ Eclipse workbench. Công cụ này -Được sử dụng như SVN client với đầy đủ tính năng: cập nhật, đưa dữ liệu lên, hợp nhất các thay đổi, làm việc với các thuộc tính SVN, xem lịch sử thay đổi và thực hiện các hoạt động khác với SVN một cách trực tiếp từ môi trường Eclipse. -Bổ sung một số tính năng cho một SVN client chuẩn: hiển thị nội dung kho SVN theo nhóm cấu trúc logic của cụm, nhánh và thẻ và hiển thị những thay đổi trên một đồ thị phiên bản trực quan. Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 71 Các loại công cụ bảo trì  Công cụ hỗ trợ lập tài liệu Ví dụ:  Công cụ dựa trên siêu văn bản  Bộ sinh lưu đồ điều khiển và dòng dữ liệu  Bộ lưu vết các yêu cầu  Công cụ CASE Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ 72 Hết Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ

Các file đính kèm theo tài liệu này:

  • pdfbao_tri_phan_mem_phan_iv_cac_ky_thuat_va_cong_cu_bao_tri_782.pdf