当前位置:文档之家› 软件工程的形式化方法第六讲

软件工程的形式化方法第六讲

软件工程导论
第六讲
软件工程的形式 化方法
本节从软件形式化描述的基本概念入手。 在理解应用软件形式化技术的意义的基 础之上,重点介绍软件的Z语言规格说明 技术和Petri。
软件教研室
第一节 形式化技术概述
什么是形式化方法?
——从广义上讲,形式化方法是指将离散数学的方法用于解决 软件工程领域的问题,主要包括建立精确的数学模型以及对模 型的分析活动。 ——狭义的讲,形式化方法是运用形式化语言,进行形式化的 规格描述、模型推理和验证的方法。 ——就形式化建模而言,形式化表示必须包含一组定义其语法 语义的形式化规则。这些规则可用于分析给定的表达式是否符 合语法规定,或证明该表达式具有某种性质。
软件教研室
形式验证
一致性分析与类型检查 –该形式模型的表示是否规范? 验证 –针对小型示例的模型模拟 –形式化挑战 –针对给定情况的提问 –状态爆炸 –检查应用程序性质 证明设计的逐级求精是正确的 –设计是否满足需求?
软件教研室
第二节 现有形式化方法概述
所谓形式化规格说明语言的关键思想是把软件开发 过程中的需求规格说明阶段和软件设计说明阶段分 开,在需求规格说明阶段精确地描述软件“做什么”, 而不涉及“怎么做”。编写规格说明与编写计算机 程序的不同之处在于规格说明是对目标软件系统的 功能描述,而计算机系统则是实现目标软件系统功 能的过程描述。
软件教研室
形式化语言的基础
一阶命题逻辑中的表达式
表达式的取值可以为真或为假 (x>y ∧y>z) →x>z x=y ≡y=x . x,y,z((x>y ∧y>z)) -> x>z
x+1 < x-1 x(.y(y=x+z)) x>3 ∨x<-6
开表达式与闭表达式 –如果一个变量是受量词约束的,则称之为限定变量,否则 称之为自由变量 –若公式中所有变量均为限定变量,则称该公式为闭表达式 –闭表达式的值非真即假
软件教研室
形式规约语言
源自程序证明技术 派生出许多通用的规约语言 –适合描述程序单元的行为 –核心技术:类型检查,定理证明 在需求工程中的适用性较差 –无抽象及结构化机制 –与程序语义密切相关 举例:Larch, Z, VDM
软件教研室
并发/反应式系统建模旨在表 Nhomakorabea程序行为的动态性
重点研究并发与反应式系统(如实时、嵌入式系统) –支持对安全性、活性与性能的推理 –提供一种精确的规格描述语言 –核心技术:一致性检查,模型检测 在需求工程中的适用性较差 –建模语言专为需求工程设计 举例:Statecharts, RSML, Parnas-tables, SCR, …
软件教研室
形式化方法的优点?
用数学语言能够解决规格说明的二义性问题,提高其精确性; 数学提供了确认手段,使得证明和验证软件程序满足用户和系 统的需求成为可能; 针对需求和设计模型进行自动的分析和推理; –分析模型性质 –推导模型逻辑结果
模拟/执行模型,有助于可视化及验证;
软件的设计过程就是一个形式化的过程; –软件设计的最终产物是程序,它可看作是一种可执行的 形式规约,用于解决非形式化的问题。
软件教研室
各种形式化方法的区别
本体不同 –固定本体:状态,事件,动作–状态图,状态机 –可扩充本体:定义新概念的元语言 数学基础不同 –基于逻辑的方法:一阶谓词逻辑,时序命题逻辑 –基于代数的方法:代数语言,集合语言 –基于图的方法:状态图、Petri 网等 对时间的处理不同 – 状态/ 事件模型:将时间表示为事件序列;将时间表示为 量化的区间 –将时间作为一级类对象来处理
形式化方法仅被用于无关紧要的系统,且缺少工具支持;
软件教研室
关于形式化方法:乐观者的角度
运用形式化方法将开发出完美的软件;
形式化方法可以替换传统的软件工程方法;
软件教研室
形式化方法在软件工程中的作用
软件教研室
软件的正确性
将形式化方法运用于软件工程实践当中的主要目的是保证软件 的正确性。 正确性证明的两个标准 –运行在机器上的程序满足规格说明
软件教研室
为什么不采用形式化?
形式化方法需要作出更大的努力 –延缓项目进展 –需要更多的数学训练
–回报也并非立竿见影
许多项目均不适合运用形式化方法
软件教研室
三类不同的模型?
软件教研室
模型类型
自然语言 –很强的表达能力及适应性 –不易于表示模型的语义 –适于需求获取及为模型加标注,便于通信 半形式化的表示 –便于表示结构及语义 –可推理、一致性检查、模拟等(如图、表、结构化英语等) –通常是可视化的,以便在多个干系人间通信 形式化表示 –具有精确的语义定义,可能进行广泛的推理 –距离应用领域较远
软件教研室
形式化语言的基础
一阶命题逻辑:
一阶命题逻辑提供以下机制 –一组构造表达式的原子公式 变量,数值常量,括号 –一组逻辑连接符 and (∧), or (∨), not(.), implies(→), logical equality (=) 与, 或, 非, 蕴含, 逻辑等价 –量词 :“for all”全称量词 :“there exists”存在量词
–规格说明在给定的领域性质之下满足需求
软件教研室
软件的完整性
完整性证明的两个标准 –是否已发现所有重要需求 –是否已发现所有重要领域性质
软件教研室
形式化方法可应用于何处?
形式化需求规约 –作为程序验证的基准 –规约语言Z,VDM,Larch –作为程序行为的模型,与需求相对照 形式化领域知识 –以便就以下问题进行推理 .领域知识是否完整;对未来的系统有何影响 –形式化有助于直接精确地刻画环境 需求的形式化 –以便进行需求模拟 –以便测试逻辑一致性 –以便测试完整性(依据底层的数学模型)
软件教研室
关于形式化方法:悲观者的角度
形式化方法是为数学家准备的; 形式化方法仅供从事形式化研究的人使用; 从事形式化研究的人仅使用形式化方法;
软件教研室
关于形式化方法:悲观者的角度
形式化方法的运用将延缓软件开发进度;
形式化方法的运用将提高软件开发成本;
软件教研室
关于形式化方法:悲观者的角度
形式化方法仅应用于开发安全要求极高的系统;
软件教研室
为什么不采用形式化?
形式化方法比其他技术的抽象级别要低 –容易陷入细节 –需提早确定系统边界
形式化方法通常限于正确一致的模型
–但绝大多数情况下,模型都并非绝对正确、一致、完整 不知使用哪个工具合适 –要描述的是程序行为还是需求? –形式化方法的鼓吹者常常过于依赖某一种工具
–常常对研究原型的规模有着过高的期盼
相关主题