Huỳnh Xuân Hiệp - CNPM
178
1
1
5
5
G
G
I
I
A
A
I
I
Đ
Đ
O
O
ạ
ạ
N
N
B
B
ả
ả
O
O
T
T
R
R
ì
ì
(
(
M
M
A
A
I
I
N
N
T
T
E
E
N
N
A
A
N
N
C
C
E
E
P
P
H
H
A
A
S
S
E
E
)
)
Nội dung:
Khái quát chung
Sự cần thiết của bảo trì
Những đòi hỏi đối với các nhà lập trình bảo trì
Quản lý bảo trì
Bảo trì phần mềm hớng đối tợng
So sánh kỹ năng bảo trì và kỹ năng phát triển
Kiểm thử
Đánh giá
Huỳnh Xuân Hiệp - CNPM
179
1
1
1
5
5
5
.
.
.
1
1
1
K
K
K
h
h
h
á
á
á
i
i
i
q
q
q
u
u
u
á
á
á
t
t
t
c
c
c
h
h
h
u
u
u
n
n
n
g
g
g
(overview)
Giai đoạn bảo trì bắt đầu sau khi khách hàng đã chấp thuận sản phẩm và
cần có các thay đổi trên sản phẩm
Các thể hiện của bảo trì: mã nguồn, tài liệu, hớng dẫn sử dụng,
Còn gọi là sự tiến triển (evolution) để chỉ rõ sự phát triển của sản phẩm
thay vì gọi đó là bảo trì
Huỳnh Xuân Hiệp - CNPM
180
1
1
1
5
5
5
.
.
.
2
2
2
S
S
S
ự
ự
ự
c
c
c
ầ
ầ
ầ
n
n
n
t
t
t
h
h
h
i
i
i
ế
ế
ế
t
t
t
c
c
c
ủ
ủ
ủ
a
a
a
b
b
b
ả
ả
ả
o
o
o
t
t
t
r
r
r
ì
ì
ì
(why maintenance is necessary)
Hiệu chỉnh (corrective maintenance): khoảng 17.5%; các lỗi đặc tả , thiết
kế, tài liệu, mã nguồn hay các dạng khác
VD:
Nghiên cứu trên 69 công ty của [Lientz, Swanson và Tompkins]
Hoàn thiện (perfective maintenance): khoảng 60.5%; các thay đổi về mã
lệnh nhằm hoàn thiện hiệu năng của sản phẩm
VD:
Khách hàng yêu cầu thêm một số chức năng hay sửa đổi sản phẩm
để tăng tốc độ xử lý
Thích ứng (adaptive maintenance): khoảng 18%; các thay đổi nhằm tác
động lại những thay đổi trong môi trờng mà sảnphẩm đang vận hành.
Khách hàng phải chịu chi phí (external imposed)
VD:
thay đổi trình biên dịch, hệ điều hành hay phần cứng
Huúnh Xu©n HiÖp - CNPM
181
C¸c d¹ng kh¸c (other types of maintenance): kho¶ng 4%; thuéc c¸c d¹ng
kh¸c ngoµi ba d¹ng kÓ trªn
H×nh 15.1 C¸c kho¶ng thêi gian cho mçi d¹ng b¶o tr×
Huỳnh Xuân Hiệp - CNPM
182
1
1
1
5
5
5
.
.
.
3
3
3
N
N
N
h
h
h
ữ
ữ
ữ
n
n
n
g
g
g
đ
đ
đ
ò
ò
ò
i
i
i
h
h
h
ỏ
ỏ
ỏ
i
i
i
đ
đ
đ
ố
ố
ố
i
i
i
v
v
v
ớ
ớ
ớ
i
i
i
c
c
c
á
á
á
c
c
c
n
n
n
h
h
h
à
à
à
l
l
l
ậ
ậ
ậ
p
p
p
t
t
t
r
r
r
ì
ì
ì
n
n
n
h
h
h
b
b
b
ả
ả
ả
o
o
o
t
t
t
r
r
r
ì
ì
ì
(what is required of maintenance programmers)
Hình thành thuật ngữ nhà lập trình bảo trì (maintenance programmer - MP)
Đây là khía cạnh khó khăn nhất, nhiều thách thức, của một sản phẩm
phần mềm vì đụng chạm đến tất cả các giai đoạn trong tiến trình xây dựng
phần mềm
Nghịch lý hiện nay tại các công ty:
xem nhẹ công tác bảo trì
giao các công đoạn bảo trì cho các lập trình viên mới
VD:
Xem xét các khả năng xảy ra khi một báo cáo về lỗi sản phẩm không
làm việc giống nh trong hớng dẫn sử dụng đợc chuyển đến cho một MP;
các thông tin đợc điền vào theo quan điểm của ngời sử dụng.
Các lý giải có thể có:
o không có lỗi, do ngời sử dụng hiểu không chính xác hớng dẫn sử
dụng hoặc sử dụng sản phẩm không đúng cách
o hớng dẫn sử dụng đợc viết không chính xác
o lỗi tại mã nguồn
Huỳnh Xuân Hiệp - CNPM
183
MP phải có kỹ năng lần vết (debugging skills) tốt để xác định chính xác vị
trí lỗi
Lỗi hồi qui (regression fault): sửa chữa lỗi có quan tâm đến các lỗi khác
trong sản phẩm
Chuẩn bị tài liệu chi tiết cho toàn bộ sản phẩm cũng nh cho từng mô-đun
riêng biệt sau khi sửa chữa xong
Đợc xem nh là dịch vụ hậu mãi (after-sales service), giữ khách hàng
bằng cách cung cấp những dịch vụ bảo trì tốt nhất
Là chuẩn mực cho sự thành công của công ty phần mềm
Huỳnh Xuân Hiệp - CNPM
184
1
1
1
5
5
5
.
.
.
4
4
4
Q
Q
Q
u
u
u
ả
ả
ả
n
n
n
l
l
l
ý
ý
ý
b
b
b
ả
ả
ả
o
o
o
t
t
t
r
r
r
ì
ì
ì
(management of maintenance)
Xây dựng cơ chế cho phép có những thay đổi trên sản phẩm khi bảo trì
Lãnh đạo nhóm SQA và lãnh đạo nhóm phát triển phần mềm phải độc lập
với nhau
Các báo cáo lỗi (fault reports)
ngời sử dụng điền các thông tin về lỗi trên các chức năng
đủ thông tin để MP có thể tái tạo lại lỗi
ủy quyền thay đổi trên sản phẩm (authorizing changes to the product)
xác định lỗi, thay đổi mã nguồn, cố định mã nguồn
kiểm thử qui hồi (regression testing) trên toàn bộ sản phẩm
cập nhật các tài liệu để phản ánh các thay đổi
có thể cập nhật tài liệu về đặc tả cũng nh thiết kế
tạo phiên bản mới
chuyển đến nhóm SQA để xác nhận lại (nhng không đợc can thiệp
vào công việc của các lập trình viên)
Huỳnh Xuân Hiệp - CNPM
185
Bảo đảm công tác bảo trì (ensuring maintainability)
việc bảo trì phải đợc thực hiện nhiều lần
tạo nhiều phiên bản
có kế hoạch bảo trì trong suốt tiến trình phần mềm
ghi nhận cẩn thận các thông tin kỹ thuật
tài liệu phải đợc hoàn tất và hiệu chỉnh chu đáo, phản ánh chính xác
mọi thành phần của phiên bản hiện hành
Vấn đề về sự lặp lại công tác bảo trì (problem of repeated maintenance)
khách hàng thờng xuyên thay đổi các yêu cầu
nên đa ra mô hình làm việc, khi có thay đổi thì khách hàng sẽ phải trả
thêm chi phí phát triển
Huỳnh Xuân Hiệp - CNPM
186
1
1
1
5
5
5
.
.
.
5
5
5
B
B
B
ả
ả
ả
o
o
o
t
t
t
r
r
r
ì
ì
ì
p
p
p
h
h
h
ầ
ầ
ầ
n
n
n
m
m
m
ề
ề
ề
m
m
m
h
h
h
ớ
ớ
ớ
n
n
n
g
g
g
đ
đ
đ
ố
ố
ố
i
i
i
t
t
t
ợ
ợ
ợ
n
n
n
g
g
g
(maintenance of object-oriented software)
Dễ dàng bảo trì các đối tợng
do các khái niệm độc lập nên dễ dàng xác định vị trí nhằm hiệu chỉnh
hay nâng cao
các thay đổi chỉ tác dụng bên trong đối tợng nên giảm thiểu các lỗi
hồi qui
Khó khăn:
MP phải nghiên cứu toàn bộ các cây thừa kế
khi cài đặt trên ngôn ngữ lập trình hớng đối tợng: vấn đề đa hình và
động
khi lần vết các thừa kế liên tục nhau khi có một lớp nào đó có một số
thay đổi
Huỳnh Xuân Hiệp - CNPM
187
1
1
1
5
5
5
.
.
.
6
6
6
S
S
S
o
o
o
s
s
s
á
á
á
n
n
n
h
h
h
k
k
k
ỹ
ỹ
ỹ
n
n
n
ă
ă
ă
n
n
n
g
g
g
b
b
b
ả
ả
ả
o
o
o
t
t
t
r
r
r
ì
ì
ì
v
v
v
à
à
à
k
k
k
ỹ
ỹ
ỹ
n
n
n
ă
ă
ă
n
n
n
g
g
g
p
p
p
h
h
h
á
á
á
t
t
t
t
t
t
r
r
r
i
i
i
ể
ể
ể
n
n
n
(maintenance skills versus development skills)
Khả năng Kỹ năng bảo trì Kỹ năng phát triển
Xác định nguyên nhân gây ra lỗi Hiệu chỉnh Kiểm thử tích hợp và kiểm thử
phát triển
Thực hiện hiệu quả các chức
năng mà không có tài liệu thích
hợp
Hoàn thiện, thích ứng Đặc tả, thiết kế, cài đặt và tích
hợp, kiểm thử
Nắm vững các vấn đề liên quan
trên các giai đoạn
Đòi hỏi nh nhau
Huỳnh Xuân Hiệp - CNPM
188
1
1
1
5
5
5
.
.
.
7
7
7
K
K
K
i
i
i
ể
ể
ể
m
m
m
t
t
t
h
h
h
ử
ử
ử
g
g
g
i
i
i
a
a
a
i
i
i
đ
đ
đ
o
o
o
ạ
ạ
ạ
n
n
n
b
b
b
ả
ả
ả
o
o
o
t
t
t
r
r
r
ì
ì
ì
(testing during the maintenance phase)
Khó khăn khi phải nắm vững toàn bộ sản phẩm
Cách tiến hành:
sử dụng các tình huống kiểm thử (test cases) để đảm bảo sản phẩm
vẫn còn vận hành tốt sau khi đã có cập nhật
thay đổi một số tình huống kiểm thử
lu trữ toàn bộ các tình huống kiểm thử với kết quả cần đạt tơng ứng
Sử dụng kiểm thử hồi qui
Huỳnh Xuân Hiệp - CNPM
189
1
1
1
5
5
5
.
.
.
8
8
8
Đ
Đ
Đ
á
á
á
n
n
n
h
h
h
g
g
g
i
i
i
á
á
á
g
g
g
i
i
i
a
a
a
i
i
i
đ
đ
đ
o
o
o
ạ
ạ
ạ
n
n
n
b
b
b
ả
ả
ả
o
o
o
t
t
t
r
r
r
ì
ì
ì
(metrics for the maintenance phase)
Sử dụng cách đánh giá cho các giai đoạn liên quan nh trong quá trình
phát triển
Ngoài ra còn có:
số lợng báo cáo lỗi
phân loại lỗi theo độ khó và kiểu lỗi
thông tin về trạng thái hiện hành của báo cáo lỗi
VD:
13 báo cáo lỗi nghiêm trọng đã đợc xử lý,
03 báo cáo lỗi nghiêm trọng cha đợc xử lý.