软件工程4月3日作业

     形式化方法是基于数学的特种技术,适合于软件硬件系统的表述、开发验证。将形式化方法用于软件和硬件设计,是期望能够像其它工程学科一样,使用适当的数学分析以提高设计可靠性强健性。但是,由于采用形式化方法的成本高意味着它们通常只用于开发注重安全性的高度整合的系统

      形式化方法在软件开发中能够起到的作用是多方面的。首先是对软件需求的描述,软件需求的描述是软件开发的基础。比如说一般非形式化的描述很可能导致描述的不明确和不一致,如果描述的不明确和不一致将导致设计、编程的错误,将来的修改所要付出的代价就非常大了,如果导致的错误没有被发现,则影响程序的可靠和使用。形式化方法则要求描述的明确性,而描述的不一致性也就相对易于发现。其次是对软件设计的描述。软件设计的描述和软件需求的描述一样重要,形式化方法的优点对于软件需求的描述同样适用于软件设计的描述,另外由于有了软件需求的形式化描述,我们可以检验软件的设计是否满足软件的要求。对于编程来讲,我们可以考虑自动代码生成。对于一些简单的系统,形式化的描述有可能直接转换成可执行程序,这就简化了软件开发过程,节约了资源和减少了出错的可能性。另外,形式化方法可以用于程序的验证,以保证程序的正确性。对于测试来讲,形式化方法可用于测试用例的自动生成,这可以节约许多时间和在一定程度上保证测试用例的覆盖率。
       形式化方法的意义在于它能帮助发现其它方法不容易发现的系统描述的不一致、不明确或不完整,有助于增加软件开发人员对系统的理解,因此形式化方法是提高软件系统,特别是Safety-Critical系统的安全性与可靠性的重要手段。最早的形式化方法是逻辑与逻辑推理,它的目标是使推理机械化。从广义上讲,这一目标受到许多挫折,比如说逻辑系统的不完备性(incompleteness)、逻辑系统的不可判定性(undecidability)、自动推理的难处理性(intractability)。但是在一些实际应用上,逻辑方法和自动推理还是起着非常大的作用。

形式化开发方法存在以下七个主要优点:

1.形式化说明以逻辑精确性为特色, 除去了在非形式化说明中不可避免的大部分含糊不清的描述, 这种精确性为开发人员与用户对需求的一致性理解, 及需求的正确执行提供了更大的可能性。
2.形式化证明通过对需求分析中所描述的系统行为提供逻辑的精确论证, 除去了需求分析中的模糊性和主观性。
3.通过形式化说明和证明实现了系统的重复分析、一致性分析以及一个较少依赖特定分析者技术和毅力的分析过程。
4.形式化说明和证明可以通过“裁剪”以适合于给定的项目及技术要求, 也就是说能被调整以满足具体项目的需要。
5.形式化说明和证明能够应用于任何开发阶段, 包括目前最需要分析方法的开发早期, 越早发现和确定错误比晚一些发现付出的代价要小的多。
6.形式化说明和证明是基于计算机的工具所支持, 这使得一致性检查和证明等实现了自动化, 提高了系统的可靠性, 减少了在分析方面的费用。同时, 这些工具容许证明能够被重复执行而大大增强了分析的重复性。
7.形式化说明和证明弥补了现有的测试方法, 通过提供一个精确的形式化说明而得以获取一个好的测试计划。
缺点:

1.形式化方法中所包含的数学理论,限制了大多数程序设计人员的学习和使用。
2.认为采用形式化方法会延误项目开发周期、增加开发费用。
3.许多流行的形式化方法对于较小规模的项目是有效的,但却很难应用于一些大型系统。
4.形式化方法不能确保开发出完全正确的软件。
5.缺乏对软件生命周期内各个阶段提供全面支持的形式化方法。

我自己的理解是:形式化方法就是花费大量的成本进行讨论,分析,实验等步骤,以确保得到高质量的结果。这种方法只适用于某方面或多个方面要求极高的系统。它的巨大成本难于忽视。但应该可以模仿这种思路,降低一些成本,从而得到要求不是非常高的系统。

部分参考:(31条消息) 软件工程——形式化方法概述_形式化方法的优缺点_南风如意的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值