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ỹ
Trang 1BẢ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ơ
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
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 :
Trang 2Mục đích của việc hiểu chương trình
Lĩnh vực vấn đề
đề con nhìn riêng là cần thiết để giúp nhân sự bảo trì
trong việc:
hợp để thực hiện sự thay đổi một cách hiệu quả
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ơ
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ó:
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
đổi và bất cứ hiệu ứng truyền nào có thể xuất hiện từ
sự thay đổi
suốt chương trình
Mục đích của việc hiểu chương trình
Quan hệ sản phẩm – môi trường
từ bên ngoài tác động lên sản phẩm
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
Trang 3Mụ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
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ý
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ử
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ơ
Yêu cầu kiến thức đối với
bảo trì viên
Người quản lý
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
phẩm – môi trường
Yêu cầu kiến thức đối với bảo trì viên
Nhà thiết kế
hệ nhân - quả
Lập trình viên
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
Trang 4Yê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ơ
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
(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
ảnh hưởng của sự thay đổi lên các phần của hệ thống
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
bảo trì viên khó có thể biết nếu chỉ đọc tài liệu và mã nguồn
Trang 5Các chiến lược để hiểu chương trình
Mô hình từ trên xuống (Top-down model)
trình, chẳng hạn như nó làm cái gì và khi nào nó thực
hiện
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)
trong chương trình
mức cao có ý nghĩa hơn
thành những cấu trúc lớn hơn
khi toàn bộ chương trình được hiểu
Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ
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
Các chiến lược để hiểu chương trình
Mô hình cơ hội (Opportunistic model)
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
cứ manh mối nào mà họ tình cờ gặp (theo cách cơ hội)
và từ dưới lên, mặc dù không đồng bộ
Trang 6Các yếu
tố ảnh
hưởng
đến việc
hiểu
chương
trình
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
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ơ
Đị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
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.
Trang 7Mụ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
đổi
(đặ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 tả, thiết kế) này được phục hồi
Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ
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
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 đặc tả và thiết kế
theo các chuẩn của nền mới
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
Trang 8Mụ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
hiệu suất và cải thiện chất lượng sản phẩm
thuộc phần nào vào tính sẵn có của các thành phần đó
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
độ phức tạp gia tăng khi chúng tiến hóa
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ơ
Mục đích của kỹ thuật đảo ngược
Phát hiện hiệu ứng lề
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
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
Mục đích của kỹ thuật đảo ngược
Giảm thiểu công sức bảo trì
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 đủ
thông tin đang mất => giảm công sức bảo trì
Trang 9Cá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)
tương đương về mặt ngữ nghĩa ở cùng một mức trừu tượng
hiểu biết
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ơ
Các mức của kỹ thuật đảo ngược
Phục hồi thiết kế (Design recovery)
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
có thể được sử dụng để:
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ự.
Trang 10Cá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
Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ
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ì
Liên quan về phương diện thương mại
Lưu ý
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
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ệ điều hành
Trang 11Kỹ 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
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.
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
Bộ môn CNPM, Khoa CNTT & TT, ĐH Cần Thơ
Các bước trong kỹ thuật tái kiến tạo
Phân tích
Mô hình kiến trúc mức cao
Hệ thống
Mô hình được tái xây dựng được cải tiến
Hệ thống
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
Các bước trong kỹ thuật tái kiến tạo
Kỹ thuật đảo ngược
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
phần trước
Trang 12Các bước trong kỹ thuật tái kiến tạo
Kỹ thuật tái cấu trúc
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:
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ó
để 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
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ơ
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
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:
Trang 13Một số loại tái kiến tạo
chương trình cầu nối
nối, cạnh tranh, dịch ngược, và cùng tồn tại
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
đế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
hình khái niệm giao diện người dùng
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ơ
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
giữa giao diện và phần còn lại của ứng dụng
chuỗi có ý nghĩa trong ngữ cảnh của giao diện mới
hiệu quả hơn
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
trích xuất các mô hình thực hiện giao diện người dùng từ
mã nguồn
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
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
Trang 14Một số loại tái kiến tạo
Tái kiến tạo theo hướng đối tượng
phát triển lựa chọn của nhiều tổ chức phần mềm
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
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:
hành vi và chức năng phù hợp
chức năng hay hành vi của ứng dụng ban đầu
đả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
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
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ì