程序切片技术, 1979 年 PhD Weiser 的学位 thesis 中首次提出 [1] 。国内最早的论文是 97 年。目前国内研究的比较好的学校有南京大学和东南大学。 程序切片主要应用在程序调试( debugging )、程序测试( Testing )、程序分析( Analysis )、程序理解和维护( Maintainance )、软件重用( Reuse )、程序度量( Measurement )、软件安全( Security )等等方面。有些牛人把它推广到软件工程的其它领域,例如软件体系结构等。分析的代码也由原来的过程式的语言( C 等)扩展到了面向对象语言( C ++、 Java 等)。
目前的程序切片 project 有 Carnegie Mellon 的 ChopShop 、 Unravel[2] 、 Wisconsin Program Slicing Project[3] (后来发展为公司 GrammaTech[4][5] 了)、 Oberon[6] 等等。绝大多数都不是 free 的。关于程序切片的集锦有 [7][8][9] 等。
需要做的:
(1) 复习控制流分析、数据流分析并做好笔记
(2) 阅读论文(主要针对 C 语言),掌握算法原理(静态切片、动态切片)
(3) 复习 lex 、 yacc 语法并做好笔记
(4) 针对可以看到源代码的系统( Unravel 等),了解其实现机制以及主要的功能,提出自己的改进
(5) 设计系统
(6) 实现系统
(7) 论文写作
参考文献 :
[1] 李必信 . 程序切片技术及其应用 . 北京 : 科学出版社 ,2006.3.
[2] http://hissa.nist.gov/project/unravel.html
[3] http://www.cs.wisc.edu/wpis/html/
[4] http://www.grammatech.com/
[5] http://yhsung.tw/wordpress/category/courses/page/2/
[6] http://www.ssw.uni-linz.ac.at/Research/Projects/ProgramSlicing/
[7] http://progtools.comlab.ox.ac.uk/projects/nate/slicing
[8] http://www.infosun.fim.uni-passau.de/st/staff/krinke/slicing/
[9] http://people.brunel.ac.uk/~csstmmh2/gustt/
GUSTT: GUided Slicing and Targeted Transformation