软件分析技术(Software Analysis)


课程信息

学分: 3
周学时: 3
总学时: 54
上课时间: 每周 周三 10-12节
上课地点: 理教 317
任课教师: 熊英飞 北京大学研究员 xiongyf@pku.edu.cn
张路 北京大学教授 zhanglu@sei.pku.edu.cn
张冬梅 微软亚洲研究院研究员 dongmeiz@microsoft.com
张海东 微软亚洲研究院架构师 haizhang@microsoft.com
楼建光 微软亚洲研究院研究员 jlou@microsoft.com
韩石 微软亚洲研究院研究员 shihan@microsoft.com
张洪宇 微软亚洲研究院研究员 honzhang@microsoft.com
授课对象: 研究生
课程助教: 王杰 yjxxtd@yeah.net

课程通知

作业提交:关于纸制版作业提交,每次课的作业在下次课上课前交给助教;关于电子版作业提交,同样在下次课上课前发送到助教的邮箱yjxxtd@yeah.net,邮件标题请以“第X次作业-姓名-学号”格式书写。

周一寒组和李元春组项目报告尚未提交(PPT不等于报告)

李豁然组项目代码尚未提交

第四次作业1401111333,1401111353两位同学未提交

请大家抓紧提交

课程简介

软件开发过程中会产生大量的制品,包括代码、需求文档、UML设计图、测试数据、配置方案等等,对这些制品进行分析是各种软件工程工具的基本手段之一。典型软件开发工具比如编译器、代码编辑器、测试与调试工具等等都离不开对软件制品进行分析。在软件工程领域开展研究,软件分析技术是必备的基础知识之一。本课程将系统地介绍软件分析技术。本课程邀请到了微软亚洲研究院的软件分析组团队共同开设。

软件分析技术经过多年的发展,形成了两条主线。一条是传统的程序分析技术,主要用于回答关于程序本身性质的问题。程序分析技术是开发和代码直接相关的工具,比如编译器、调试器、代码编辑器的基本手段。根据哥德尔不完备定理,大量问题都无法静态的回答,所以程序分析技术关注如何做出正确的近似逼近,或者在静态分析无法完成的时候用动态数据来弥补。第二条是近年来兴起的,由微软亚洲研究院张冬梅研究员和同事所提出的软件解析学。随着互联网的发展,可供分析的软件制品变得越来越多。软件解析学就是利用数据挖掘、信息检索、机器学习等数据处理技术对软件工程的数据进行处理,回答关于软件系统、软件用户、软件开发过程的各种问题。与基本的程序分析技术不同,软件解析技术可以处理代码以外的各类软件制品,在各个领域都有广阔的应用前景,是近年来大力发展的领域。

本课程从软件分析技术的两条主线设置。前半学期的课程讲授程序分析技术,由北京大学“百人计划”研究员熊英飞主讲,北京大学相关领域的教师参与。后半学期的课程讲授软件解析学,由软件解析学这一概念的提出团队、微软亚洲研究院张冬梅研究员领导的“软件解析”团队的5名研究员和工程师(张冬梅、张海东、楼建光、韩石、张洪宇)主讲。希望通过这两方面知识的讲解,帮助同学们构建较完整的软件分析技术知识体系,了解该领域的前沿知识,学术上为进一步开展软件工程领域的学术研究打下基础,培养开发大型软件工程工具的实践能力。

本课程和信息科学技术学院现行研究生课程之间的关系:一、《高级编译技术》:该课程中的数据流分析、过程间分析等内容和本课程中的程序分析内容有部分重叠。但是,《高级编译技术》主要从编译器的角度讲授部分程序分析的应用,而本课程不局限于一种应用,而是关注程序分析本身,重叠的部分内容在深度和广度上都与《高级编译技术》有所不同。二、《软件测试》:该课程主要从实用的角度出发,讲授实际软件开发过程中使用的工具和技术。因为测试本身也是一种程序分析的过程,本课程会少量涉及测试等方面的内容,但主要程序分析的视角进行探讨符号执行等测试数据生成技术,与《软件测试》课程重叠较少。

教学大纲

课程日期 课程内容 讲师 讲义 作业未交作业名单作业答案
9月17 课程介绍 熊英飞 讲义:1
9月24 数据流分析 熊英飞 讲义:2(PPT更正:半格的定义加上存在最大元的条件)
见课件第50页(作业要求:写算法,不要求写程序;截止日期:10月8日;作业提交电子版到yjxxtd@yeah.net,以后如无特别说明,均提交到此邮箱)
10月8 基于克隆的过程间分析 熊英飞 讲义:3
10月8 课程项目介绍 熊英飞 讲义:课程项目介绍
10月8 LLVM 高庆 讲义:LLVM
10月15 基于摘要的过程间分析 熊英飞 讲义:4
见课件第63页(截止日期:鉴于理科一号楼频繁停电导致服务器关闭,作业延期至10月26日24点) 第二次作业答案
10月22 约束求解和符号执行 熊英飞 讲义:5
见课件第45页(截止日期:11月2日24点)
10月22 SMT 熊英飞 讲义:SMT
10月29 动态符号执行和抽象解释 熊英飞 讲义:6
见课件第90页(截止日期:11月16日24点) 1401111333,1401111353
10月29 Abstract Interpretation 熊英飞 讲义:Abstract Interpretation
11月5 基于搜索的软件分析 张路 讲义:7
11月5 String Analysis 张路 讲义:String Analysis
11月26 Introduction to Software Analytics 张冬梅 讲义:8
12月3 暂无 张洪宇 讲义:暂无 按照选题报告分的组,每组选择下面三篇论文中任意一篇

Fingerprinting the datacenter- Automated classification ofperformance c....

Detecting Large-Scale System Problems by Mining Console Logs

Healing Sugestion

12月10 Service Analytics 楼建光 讲义:10

Last Modified: 3/12/2014