南京大学《软件分析》1--Introduction

开始学习Static Program Analysis,跟着b站南京大学的《软件分析》开始,原来老师(有点帅)是西工大硕士毕业的呀。第一节课是Introduction。

背景

Program analysis是Programming Languages应用的一个分支,十分重要。近十年来,language cores很少有变化,由于需求,语用环境变了(语言没变,语言写的程序更大、更复杂)。保证大型、复杂软件的可靠性、安全性和其它性能,需要静态分析,静态分析就是程序运行之前,在编译时刻完成所有安全和可靠性的检验。

一些概念

1.Perfect static analysis(完美的静态分析)是要同时满足Sound&Complete的,Sound包含Truth,Truth包含Complete。
2.Useful static analysis,要么妥协soundness,即会产生漏报(false negatives);要么妥协completeness,即会产生误报(false positives)。
3.大多数情况下,会选择妥协completeness,可以产生误报,但是要保证soundness。静态分析就是要在保证soundness的前提下,在分析的精度和速度上做一个有效的平衡。
4.从技术上讲,静态分析用2个词概括:Abstraction抽象和Over-approximation近似(Transfer functions+Control flows)。

  • Abstraction即抽象,将具体域值转为抽象域值。
  • Transfer functions即转换规则,针对程序上每个语句给抽象值作转换;根据分析目标和程序当中每个statement的语义(semantics)来设计转换规则。补充:top是unknown,bottom是undefined。
  • Control Flows即控制流,flow merging是一种近似的方式,后面补充。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值