Chương 7
Thanh tra, chy th & xem xét mã ngun
7.1 Gii thiu
Trong các chương 3, 4, 5, 6 chúng ta ã gii thiu nhiu k
thut kim th hp en ln hp trng. Đim chung ca các k
thut này là phi chy tht phn mm trên máy tính vi môi trường
phù hp ₫ể tìm li ca phn mm.
Nhưng trong nhng thế h ₫ầu tiên ca máy tính, máy tính còn
rt yếu và rt ₫ắt, người lp trình chưa có cơ hi làm vic trc tiếp
trên máy tính, h ch viết chương trình trên giy và em chng giy
miêu t chương trình và d liu cn x₫ến trung tâm máy tính
₫ể ₫ăng ký chy. Khi nhn ₫ược kết qu, nếu thy không va ý, h
s phi t mình ₫ọc và xem xét mã ngun trên giy ₫ể tìm li và
sa li.
Hin nay, không phi người kim th nào cũng ₫ọc mã ngun,
nhưng ý tưởng nghiên cu mã ngun vn ₫ược chp nhn rng rãi
như là 1 n lc kim th hu hiu vì nhng lý do sau :
kích thước và ₫ộ phc tp v thut gii ca chương trình.
kích thước ca ₫ội phát trin phn mm.
thi gian qui ₫ịnh cho vic phát trin phn mm.
nn tng và văn hóa ca ₫ội ngũ lp trình.
Qui trình kim th th công (ch dùng sc người, không dùng
máy tính) ₫ược gi là kim th tĩnh, qui trình này có 1 s tính cht
chính :
Rt hu hiu trong vic tìm li nên mi project phn mm
nên dùng 1 hay nhiu k thut này trong vic kim th
phn mm.
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Dùng các k thut kim th tĩnh trong khong thi gian t
lúc phn mm ₫ược viết ₫ến khi phn mm có th ₫ược
kim th bng máy tính.
Không có nhiu kết qu toán hc ánh giá v các k thut
kim th tĩnh vì chúng ch liên quan ₫ến con người.
Kim th th công TPPM cũng ã óng góp 1 phn cho tính
tin cy, công nghip ca hot ₫ộng kim th thành công TPPM :
Các li ₫ược phát hin càng sm càng giúp gim chi phí
sa li và càng giúp nâng cao xác xut sa li úng ₫ắn.
Lp trình viên d dàng chun b tinh thn khi các k thut
kim th bng máy tính bt ₫ầu.
Có nhiu phương pháp kim th th công TPPM, trong ó 2
phương pháp quan trng nht là thanh kim tra mã ngun (Code
Inspections) và chy th công mã ngun (Walkthroughs). Hai
phương pháp này có nhiu im ging nhau :
Cn 1 nhóm người ₫ọc hay thanh kim tra trc quan
TPPM.
Các thành viên phi có chun b trước, không khí cuc hp
phi là "hp các ý kiến thng thn, chân thành".
Mc tiêu ca cuc hp là tìm các li ch không phi tìm
bin pháp gii quyết li.
Chúng là s ci tiến, tăng cường ca 1 phương pháp kim
th cũ hơn là phương pháp "desk-checking" mà chúng ta
s gii thiu sau.
Hai phương pháp thanh kim tra m ngun và chy th công
mã ngun có th phát hin ₫ược t 30 ti 70% các li viết mã
ngun và li thiết kế lun lý ca TPPM bình thường.
Tuy nhiên 2 phương pháp này không hiu qu trong vic phát
hin các li thiết kế cp cao như li do hot ₫ộng phân tích yêu
cu TPPM :
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Các hot ₫ộng con người thường ch tìm ₫ược các li d.
Do ó 2 phương pháp kim th tĩnh này ch b tr thêm
cho các k thut kim th chính qui bng máy tính.
7.2 Phương pháp thanh kim tra mã ngun
Bao gm các th tc và các k thut phát hin li nh 1 nhóm
người cùng ₫ọc mã ngun. Các vn ₫ề bàn ci liên quan ₫ến
phương pháp thanh kim tra là các th tc vn hành, các form kết
qu cn to ra.
Mt nhóm thanh kim tra mã ngun thường gm 4 người :
người iu hành (ch tch hi ₫ồng), thường là k sư QC
lp trình viên TPPM cn kim th.
K sư thiết kế TPPM (nếu không phi là lp trình viên
TPPM này)
Chuyên gia kim th
1. Người iu hành :
nên người lp trình kinh nghim, uy tín.
không nên là tác gi TPPM cn kim th và không cn
biết chi tiết v TPPM cn kim th.
2. Các nhim v :
Phân phi các tài liu cho các thành viên khác trước khi
cuc hp din ra. Lp lch cho bui hp thanh kim tra.
Điu khin cuc hp thanh kim tra.
Ghi nhn các li phát hin ₫ược bi các thành viên.
Công vic chun b :
Thi gian và ₫ịa im bui hp : làm sao tránh ₫ược các
ngt qung t ngoài.
Thi lượng ti ưu cho mi bui hp là t 90 ti 120 phút.
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Mi thành viên cn chun b thái ₫ộ khách quan, nh
nhàng trong bui hp.
Các tài liu cn có cho mi thành viên (ã phân phát trước khi
cuc hp din ra) :
gnun TPPM cn kim th.
Danh sách các li quá kh thường gp (checklist).
Trong sut cuc hp, 2 hot ₫ộng chính s xy ra :
1. Hot ₫ộng 1 :
Người lp trình s gii thiu tun t tng hàng lnh cùng
lun lý ca TPPM cho các thành viên khác nghe.
Trong khi tho lun, các thanh viên khác ₫ưa ra các câu
hi và theo dõi phn tr li ₫ể xác ₫ịnh có li hàng lnh
nào không ? (Tt nht là người lp trình, ch không phi
thành viên khác) s phát hin ₫ược nhiu li trong phn
gii thiu mã ngun này).
2. Hot ₫ộng 2 :
Các thành viên cùng phân tích TPPM da trên danh sách
các li lp trình thường gp trong quá kh.
Sau cuc hp thanh kim tra mã ngun :
Người iu hành s giao cho người lp trình TPPM 1 danh
sách cha các li mà nhóm ã tìm ₫ược.
Nếu s li là nhiu hay nếu li phát hin òi hi s hiu
chnh ln, người iu hành s sp xếp 1 bui thanh kim
tra khác sau khi TPPM ã ₫ược sa li.
Chú ý : Các li phát hin ₫ược cũng s ₫ược phân tích, phân
loi và ₫ược dùng ₫ể tinh chnh li danh sách các li quá kh ₫ể
ci tiến ₫ộ hiu qu cho các ln thanh kim tra sau này.
Các hiu ng l tích cc cho tng thành viên :
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Người lp trình thường nhn ₫ược các style lp trình tt mà
mình chưa biết, cách thc chn la gii thut tt ₫ể gii
quyết bài toán, các k thut lp trình tt,..
Các thành viên khác cũng vy.
Quá trình thanh kim tra mã ngun là 1 cách nhn dng
sm nht các vùng code cha nhiu li, giúp ta tp trung
s chú ý hơn vào các vùng code này trong sut quá trình
kim th da trên mày tính sau này.
7.3 Checklist ₫ược dùng ₫ể thanh tra mã ngun
Checklist lit kê các li mà người lp trình thường phm phi.
Đây là kết qu ca 1 lch s thanh tra mã ngun bi nhiu người,
và ta có th b bt/thêm mi các li nếu thy cn thiết. Các li mà
người lp trình thường phm phi ₫ược phân loi thành các nhóm
chính :
1. Các li truy xut d liu (Data Reference Errors)
2. Các li ₫ịnh nghĩa/khai báo d liu (Data-Declaration
Errors)
3. Các li tính toán (Computation Errors)
4. Các li so sánh (Comparison Errors)
5. Các li lung iu khin (Control-Flow Errors)
6. Các li giao tiếp (Interface Errors)
7. Các li nhp/xut (Input/Output Errors)
8. Các li khác (Other Checks)
Các li truy xut d liu (Data Reference Errors)
1. Dùng biến chưa có giá tr xác ₫ịnh ?
int i, count;
for (i = 0; i < count; i++) {...}
2. Dùng ch s ca biến array nm ngoài phm vi ?
CuuDuongThanCong.com https://fb.com/tailieudientucntt