哈工大软件构造复习之Specification
Specification
作用
- 规约可以隔离"变化",无需通知客户端
- 规约可以提高代码效率
- 规约扮演"防火墙"角色
- 解耦,不需要了解具体实现
内容
只讲"能做什么",而不讲"怎么实现"
Behavior equivalence 行为等价性
是否可以相互替换
- 站在客户端的视角看行为等价性,不同的行为,对用户来说(根据用户需求)可能等价!
- 根据规约判断行为等价,两个方法符合同一个规约,则等价
规约的结构
- Pre-condition
- Post-condition
- Exceptional behavior 异常行为,如果违背了前置条件,会发生什么
规约的强度与替换
Spec变强:更放松的前置条件(前置条件更弱)+更严格的后置条件(后置条件你更强),
两条件同时变强或变弱则无法比较。
若规约强度S2>=S1,则可以用S2替换S1。