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)
18 trang |
Chia sẻ: nguyenlam99 | Lượt xem: 1926 | Lượt tải: 0
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:
- bao_tri_phan_mem_phan_iv_cac_ky_thuat_va_cong_cu_bao_tri_782.pdf