麻省理工18年春软件构造课程阅读07“设计规格说明” 1
【软件构造课程阅读07“设计规格说明”】 在软件工程中,设计规格说明是描述软件功能的关键步骤,它帮助开发者明确系统预期的行为。本文主要关注声明性规格说明与操作性规格说明的区别,以及决定性与待决定性规格说明的概念。 声明性规格说明不涉及具体实现细节,它只关注输出的性质和它与输入的关系。这种规格说明的优点在于它提供了一种抽象的方式来表达需求,使得设计更加灵活,开发者可以根据规格说明自由选择实现方法。在多数情况下,声明性规格说明更为适合,因为它鼓励模块化的设计和独立于实现的测试。 决定性规格说明(fully deterministic)是指对于满足前置条件的输入,输出是唯一确定的。例如,`findExactlyOne`函数的规格说明要求在数组中`val`只出现一次,返回其唯一出现的索引。这确保了无论何时调用,只要输入符合要求,结果都是固定的。 相反,待决定性(underdetermined)规格说明不指定具体输出,只保证输出的某些属性。例如,`findOneOrMore, AnyIndex`函数的规格说明只要求返回一个能匹配`val`的索引,而不规定是第一个还是最后一个。这样的规格说明允许多种实现方式,如`findFirst`和`findLast`,它们都满足规格说明,但输出可能不同。 规格说明的“强度”指的是它对实现的约束程度。强度较高的规格说明可能只允许少数几种实现,而强度较低的则可能有多种满足要求的实现。例如,`findExactlyOne`的强度高于`findOneOrMore, AnyIndex`,因为前者要求输出唯一,后者则不指定具体哪个。 理解这些概念对于编写清晰、逻辑严密的规格说明至关重要。好的规格说明应该既能准确地表达需求,又留给实现足够的灵活性。在设计规格说明时,需要权衡决定性和待决定性,以及规格说明的强度,以找到最佳平衡点。 通过比较不同规格说明,开发者可以更好地理解它们的差异,从而做出更适合项目需求的选择。在实践中,非决定性的规格说明并不意味着代码行为不确定,而是指规格说明本身没有规定特定的输出选择。这意味着同一规格说明可以由多种确定性行为的代码实现,如`findFirst`和`findLast`。 设计规格说明是一个深思熟虑的过程,它涉及到对软件功能的精确描述,以及对实现方式的合理约束。通过掌握声明性与操作性,决定性与待决定性规格说明的特性,开发者可以编写出更高效、可维护的代码,提高软件的质量和可靠性。
剩余18页未读,继续阅读
- 粉丝: 26
- 资源: 321
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Java的DVD租赁管理系统.zip
- (源码)基于Arduino的模型铁路控制系统.zip
- (源码)基于C语言STM32F10x框架的温湿度监控系统.zip
- (源码)基于Spring Boot的极简易课堂对话系统.zip
- (源码)基于JSP+Servlet+MySQL的学生管理系统.zip
- (源码)基于ESP8266的蜂箱监测系统.zip
- (源码)基于Spring MVC和Hibernate框架的学校管理系统.zip
- (源码)基于TensorFlow 2.3的高光谱水果糖度分析系统.zip
- (源码)基于Python框架库的知识库管理系统.zip
- (源码)基于C++的日志管理系统.zip
评论0