不赖猴的笔记,转载请注明出处。
一、定义
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.程序片断
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>
- P10=<27,28>
- commission的定义-使用路径