Chương 4
K thut kim th hp trng (tt)
4.1 Tng quát v kim th dòng d liu
Mc tiêu ca chương trình là x lý d liu. D liu ca chương
trình là tp nhiu biến ₫ộc lp. Phương pháp kim th dòng d liu
s kim th ₫ời sng ca tng biến d liu có "tt lành" trong tng
lung thi hành ca chương trình.
Phương pháp kim th dòng d liu là 1 công c mnh ₫ể phát
hin vic dùng không hp lý các biến do li coding phn mm gây
ra :
à Phát biu gán hay nhp d liu vào biến không úng.
à Thiếu ₫ịnh nghĩa biến trước khi dùng
à Tiên ₫ề sai (do thi hành sai lung thi hành).
à ...
Mi biến nên có chu k sng tt lành thông qua trình t 3 bước
: ₫ược to ra, ₫ược dùng và ₫ược xóa i.
Ch có nhng lnh nm trong tm vc truy xut biến mi có
th truy xut/x₫ược biến. Tm vc truy xut biến là tp các
lnh ₫ược phép truy xut biến ó.
Thường các ngôn ng lp trình cho phép ₫ịnh nghĩa tm vc
cho mi biến thuc 1 trong 3 mc chính yếu : toàn cc, cc b
trong tng module, cc b trong tng hàm chc năng.
int x, y;
void func1() { //thân hàm
int x; // ₫ịnh nghĩa biến x mi cc b trong hàm
...; // mi ln truy xut x là x cc b trong hàm
{ // khi lnh bên trong bt ₫ầu
int y; // ₫ịnh nghĩa biến y mi cc b trong lnh phc hp
CuuDuongThanCong.com https://fb.com/tailieudientucntt
...; //mi ln truy xut y là y cc b trong lnh phc hp
} // y bên trong t ₫ộng b xóa
...; //truy xut y ngoài cùng, x cc b trong hàm
} // x cc b trong hàm b xóa t ₫ộng
4.2 Phân tích ₫ời sng ca 1 biến
Các lnh truy xut 1 biến thông qua 1 trong 3 hành ₫ộng sau :
à d : ₫ịnh nghĩa biến, gán giá tr xác ₫ịnh cho biến (nhp d
liu vào biến cũng là hot ₫ộng gán tr cho biến).
à u : tham kho tr ca biến (thường thông qua biu thc).
à k : hy (xóa b) biến i.
Như vy nếu ký hiu ~ là miêu t trng thái mà ó biến chưa
tn ti, ta có 3 kh năng x₫ầu tiên trên 1 biến :
à ~d : biến chưa tn ti ri ₫ược ₫ịnh nghĩa vi giá tr xác
₫ịnh.
à ~u : biến chưa tn ti ri ₫ược dùng ngay (tr nào ?)
à ~k : biến chưa tn ti ri b hy (l lùng).
3 hot ₫ộng x lý biến khác nhau kết hp li to ra 9 cp ôi
hot ₫ộng x lý biến theo th t :
à dd : biến ₫ược ₫ịnh nghĩa ri ₫ịnh nghĩa na : hơi l, có th
úng và chp nhn ₫ược, nhưng cũng có th có li lp
trình.
à du : biến ₫ược ₫ịnh nghĩa ri ₫ược dùng : trình t úng và
bình thường.
à dk : biến ₫ược ₫ịnh nghĩa ri b xóa b : hơi l, có th úng
và chp nhn ₫ược, nhưng cũng có th có li lp trình.
à ud : biến ₫ược dùng ri ₫ịnh nghĩa giá tr mi : hp lý.
à uu : biến ₫ược dùng ri dùng tiếp : hp lý.
à uk : biến ₫ược dùng ri b hy : hp lý.
CuuDuongThanCong.com https://fb.com/tailieudientucntt
à kd : biến b xóa b ri ₫ược ₫ịnh nghĩa li : chp nhn
₫ược.
à ku : biến b xóa b ri ₫ược dùng : ây luôn là li.
à kk : biến b xóa b ri b xóa na : có l là li lp trình.
4.3 Đồ th dòng d liu
Là mt trong nhiu phương pháp miêu t các kch bn ₫ời
sng khác nhau ca các biến.
Qui trình xây dng ₫ồ th dòng d liu da trên qui trình xây
dng ₫ồ th dòng iu khin ca TPPM cn kim th.
Gm 2 loi thành phn : các nút và các cung ni kết gia
chúng.
Các loi nút trong ₫ồ th dòng iu khin :
Miêu t các cu trúc iu khin ph dng :
im xut phát khi x im quyết ₫ịnh im ni im kết thúc
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Thí d :
while c do... do ... while c
tun t
If switch
1. float foo(int a, int b, int c, int d) {
2. float e;
3. if (a==0)
4. return 0;
5. int x = 0;
6. if ((a==b) || ((c==d) && bug(a)))
7. x = 1;
8. e = 1/x;
9. return e;
10.
}
s1
c1
s2
c2
s3
s4
s5
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Độ phc tp Cyclomatic C
Ta cũng dùng ₫ộ phc tp Cyclomatic C = V(G) ca ₫ồ th
dòng iu khin ca TPPM cn kim th ₫ể xác ₫ịnh s ₫ường thi
hành tuyến tính ₫ộc lp ca TPPM cn kim th.
Mc tiêu ca kim th dòng d liu là chn la ₫ược úng C
₫ường thi hành tuyến tính ₫ộc lp ca TPPM cn kim th ri kim
th ₫ời sng ca tng biến trên tng ₫ường thi hành này xem có li
gì không.
4.4 Qui trình kim th dòng d liu
Qui trình kim th dòng d liu ca 1 TPPM gm các bước
công vic sau :
T TPPM cn kim th, xây dng ₫ồ th dòng iu khin
tương ng, ri chuyn thành ₫ồ th dòng iu khin nh
phân, ri chuyn thành ₫ồ th dòng d liu.
Tính ₫ộ phc tp Cyclomatic ca ₫ồ th (C = P +1).
Xác ₫ịnh C ₫ường thi hành tuyến tính ₫ộc lp cơ bn cn
kim th (theo thut gii chi tiết chương 3).
Lp kim th ₫ời sng tng biến d liu :
à mi biến có th có ti a C kch bn ₫ời sng khác
nhau.
à trong tng kch bn ₫ời sng ca 1 biến, kim th xem
có tn ti cp ôi hot ₫ộng không bình thường nào
không ? Nếu có hãy ghi nhn ₫ể lp báo cáo kết qu
và phn hi cho nhng người có liên quan.
CuuDuongThanCong.com https://fb.com/tailieudientucntt