规格说明是团队开发的关键,是分配责任的基础。规格说明是实现者和使用者之间的一种契约,实现者有责任满足契约,使用者可以信赖契约。准确的规格说明利于确定错误的位置和责任,客户端不需要阅读代码,通过说明了解程序。
规格说明给了实现者实现的自由,在保证约定下,可以自由修改实现。 通过在说明中增加对输入的限定,省略掉耗时的正确性检查工作,提升效率,保证输入正确性的责任由调用者承担。
如果我想写一个程序,我不能仅仅通过阅读规范来完成。不过,它给了执行者很大的自由。通常,我们希望我们的规范在与用户有关的点上是精确的,但是在与实现者有关的点上是模糊的。这样,用户可以得到编写程序所需的保证,但也给了实现者根据自己的特定领域调整实现的自由。
例如,Java 语言规范没有提到任何关于垃圾收集的内容。它只定义了什么时候可以访问对象,什么时候不可以访问对象,它还定义了您可以创建新的对象。内存分配是如何工作的,垃圾收集器是如何工作的,无论是引用计数、跟踪还是基于区域的收集器等等,所有这些都被忽略了,因此不同龛位的不同实现可以使用不同的垃圾收集器实现,同一龛位的不同实现可以相互竞争。
常见规约要求包含的要素:
1.包规约:
Executive summary 执行摘要,OS/Hardware Dependencies 操作系统/硬件相关性,References to any external specifications 引用任何外部规范
2.类/接口规约:
Executive summary 执行摘要,OS/Hardware Dependencies 操作系统/硬件相关性,References to any external specifications 引用任何外部规范,Allowed Implementation Variances 允许的实现差异 ,Security Constraints 安全约束 ,Serialized Form 连载表格,References to any External Secifications 任何外部部分的参考资料
3.方法规约:
Expected Behavior 预期行为 ,State Transitions 状态转换,Range of Valid Argument Values 有效参数值的范围 ,Null Argument Values 空参数值 ,Range of Return Values 返回值的范围 ,Algorithms Defined 定义的算法 ,OS/Hardware Dependencies 操作系统/硬件相关性 ,Allowed Implementation Variances 允许的实现差异 ,Cause of Exceptions 异常及其原因 ,Security Constraints 安全约束