不賴猴的筆記,轉載請註明出處。
一、定義
1.定義節點。 節點n∈G(P)是變數v∈V的定義節點,記做DEF(v,n),若且唯若變數v的值由對應節點n的語句片段處定義。
2.使用節點。 節點n∈G(P)是變數v∈V的使用節點,記做USE(v,n),若且唯若變數v的值由對應節點n的語句片段處使用。
3.P-use和C-use。 使用節點USE(v,n)是一個謂詞使用(記做P-use),若且唯若語句n是謂詞語句;否則,USE(v.n)是計算使用(記做C-use)。
4.定義-使用路徑。 關於變數v的定義-使用路徑(記做du-path)是PATHS(P) 中的路徑,使得對某個v∈V,存在定義和使用節點DEF(v,m)和USE(v,n),使得m和n是該路徑的最初和最終節點。
5.定義清除路徑。 關於變數v的定義清除路徑(記做dc-path),是具有最初和最終節點DEF(v,m)和USE(v,n)的PATHS(P)中的路徑,使得該路徑中沒有其他節點是v的定義節點。 二、舉例說明。1.程式片斷
2.流程圖3.簡化流程圖 4.定義/使用測試表
| 變數 |
定義節點 |
使用節點 |
| Lockprice |
7 |
24 |
| Stockprice |
8 |
25 |
| Barrelprice |
9 |
26 |
| Totallocks |
10,16 |
16,21,24 |
| Totalstocks |
11,17 |
17,22,25 |
| Totalbarrels |
12,18 |
18,23,26 |
| Locks |
13,19 |
14,16 |
| Stocks |
15 |
17 |
| Barrrels |
15 |
18 |
| Locksales |
24 |
27 |
| Stocksales |
25 |
27 |
| Barrelsales |
26 |
27 |
| Sales |
27 |
28,29,33,34,37,38 |
| commission |
31,32,33,36,37,38 |
32,33,37,41 |
5.定義/使用路徑
- Stocks的定義-使用路徑
-
- DEF(stocks,15)
- USE( stocks,17)
- <15,16,17>是一個關於stocks的定義-使用路徑。Stock沒有其他定義節點,因此這條路徑是定義清除路徑。
- Locks的定義-使用路徑
-
- lDEF(locks,13),DEF(locks,19);
- lUSE(locks,14)USE(locks16).
- P1=<13,14>
- P2=<13,14,15,16>
- P3=<19,20,14>
- P4=<19,20,14,15,16>
- Total locks的定義-使用路徑
-
- DEF(totallocks,10),DEF (totallocks,16)
- USE(totallocks,16),USE(totallocks21),USE(totallocks24).
- 預期應該得到六條定義-使用路徑。
- P5=<10,11,12,13,14,15,16>定義清除的
P6=<10,11,12,13,14,15,16,17,18,19,20,21>
P7=<10,11,12,13,14,15,16,17,18,19,20,21,22,23,24>
P7=
P8’=<16,16>
P8=<16,17,18,19,14,20,21>
P9=<16,17,18,19,14,20,21,22,23,24>
- sales的定義-使用路徑
-
- P10=<27,28>
P11=<27,28,29>
P12=<27,28,29,30,31,32,33>
P13=<27,28,29,34>
P14=<27,28,29,34,35,36,37>
P15=<27,28,29,34,38>
- commission的定義-使用路徑