软件形式规格说明语言-Z
注:2020秋 学习笔记
第1章 绪论
1.1 软件生命周期
软件:
-
当它被执行时提供希望功能和性能的指令
-
使得程序能够适当地操作信息的数据
-
描述程序的操作和使用文档
软件=程序+数据+文档
软件开发周期(软件生命周期)
-
需求分析和规格说明
对提出的需求进行分析并给出详细的定义。
-
设计
完成需求的收集和分析工作后,就开始系统的设计工作,详细地确定将如何构造系统来实现所需的功能。
关注数据要求(在系统中将处理何种信息)、软件构架(应用系统将如何构造)以及界面架构(系统外表特征将是什么样的、遵循什么样的标准)
抽象设计:
? 构造定义了软件模块或者是部件之间关系的整个系统的体系结构。
详细设计:
? 关注数据结构定义以及算法构造。
-
实现
将设计规格说明转换成用特定的编程语言。
-
测试
通过运行测试用例来检测程序中可能存在的故障。
测试包括以下三个步骤:
- 产生测试用例
- 用测试用例来运行程序
- 测试结果分析
两种方法进行程序测试:
-
功能测试
发现导致违反规格说明与程序之间一致性的故障,且测试用例通常是基于功能规格说明产生的。
-
结构测试
按照程序内部逻辑测试程序,检验程序中每一条路径是否能按照规定的要求正确工作。
-
交付与维护
这个阶段是指系统最终交付给客户运行。
1.2 存在的问题
-
需求错误通常比其他错误多花费10倍时间来修复
-
需求错误通常占软件项目总错误的40%以上
-
需求错误的稍微减少能显著地降低返工成本和日程延期
由上述可以得出结论:
-
需求错误是最常见的错误
-
修正需求错误的代价是最为昂贵的
-
解决“软件危机”的最有前途的方法应该是那些对软件需求的解决方案上
1.3 形式方法
软件规格说明需要的是一种既有精确性又有抽象性的描述语言。
两种抽象:
-
过程抽象
描述软件系统要实现的功能,而非如何实现其功能的具体步骤。
-
数据抽象
在规格说明中使用集合、关系、映射、序列、包等抽象的数学结构,而不必担心如何实现。
形式方法:通过形式化、规范化的数学理论,用描述“做什么”来取代“怎么做”。
基本思想:对系统建立一个数学模型,研究和提供一种基于数学的或形式语义学的规格说明语言,用这种语言严格地描述所开发的软件功能,并由自动程序设计的加工模型来得到可执行的代码。