软件构造相关

Specification: Programming for communication
specification
输入/输出的数据类型
功能和正确性
性能
只讲“能做什么”,不讲“怎么实现”

behavioral equivalence(行为等价性)
站在客户端角度看行为等价性
根据规约判断行为是否等价
两个函数符合这个规约,故它们等价

规约结构(前置条件、后置条件)
前置条件:对客户端的约束,在使用方法时必须满足的条件,使用关键字requires
后置条件:对开发者的约束,方法结束时必须满足的条件使用关键字effects
契约:如果前置条件满足了,后置条件必须满足
静态类型声明是一种规约,可据此进行静态类型检查static checking
方法前的注释也是一种规约,但需人工判定是否满足
@param,@return,@throws

Specifications for mutating methods
除非在后置条件里声明过,否则方法内部不应该改变输入参数

设计规约
分类规范
规约的确定性、陈述性、强度used to judge which specification is better
如果规范变强(前置条件变弱,后置条件变强),那么就可以替代之前的规范

Deterministic vs. underdetermined specs
确定的规约:给定一个满足precondition的输入,其输出是唯一的、明确的
欠定的规约:同一个输入可以有多个输出
非确定的规约:同一个输入,多次执行时得到的输出可能不同

声明式规约和操作式规约
操作式规约:例如伪代码
声明式规约:没有内部实现的描述,只有初末状态
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值