[软件工程] 形式化说明技术

一、概述

按照形式化的程度,可以把软件工程使用的方法划分成3类:非形式化 、半形式化、形式化。

  • 用自然语言描述需求规格说明,是典型的非形式化方法。
  • 用数据流图或实体-联系图建立模型,是典型的半形式化方法。

所谓形式化方法,是描述系统性质的基于数学的技术,也就是说,如果一种方法有坚实的数学基础,那么它就是形式化的。

(一) 非形式化方法的缺点

用自然语言书写的系统规格说明书,可能存在矛盾、二义性、含糊性、不完整性及抽象层次混乱等问题。
所谓矛盾是指一组相互冲突的陈述。
二义性是指读者可以用不同方式理解的陈述。

(二) 形式化方法的优点

为了克服非形式化方法的缺点,人们把数学引入软件开发过程,创造了基于数学的形式化方法。
  
  在开发大型软件系统的过程中应用数学,能够带来下述的几个优点:

  • 能够简洁准确地描述物理现象、对象或动作的结果,因此是理想的建模工具。

数学特别适合于表示状态,也就是表示“做什么”,数学比自然语言更适于描述详细的需求。
  在软件开发过程中使用数学的另一个优点是,可以在不同的软件工程活动之间平滑地过渡。
不仅功能规格说明,而且系统设计也可以用数学表达,当然,程序代码也是一种数学符号(虽然是一种相当繁琐、冗长的数学符号)。
  数学作为软件开发工具的最后一个优点是,它提供了高层确认的手段。可以使用数学方法证明,设计符合规格说明,程序代码正确地实现了设计结果。

(三) 应用形式化方法的准则

对形式化方法应该“一分为二”,既不要过分夸大它的优点也不要一概排斥。
下面给出应用形式化方法的几条准则:

1.应该选用适当的表示方法

通常,一种规格说明技术只能用自然的方式说明某一类概念,如果用这种技术描述其不适于描述的概念,则不仅工作量大而且描述方式也很复杂。因此,应该仔细选择一种适用于当前项目的形式化说明技术。

2. 应该形式化,但不要过分形式化

目前的形式化技术还不适于描述系统的每个方面。带使用之,有助于防止含糊和误解。

3. 应该估算成本

为了使用形式化方法,通常需要事先进行大量的培训。最好预先估算所需的成本并编入预算。

4.应该有形式化方法顾问随时提供咨询

绝大多数软件工程师对形式化方法中使用的数学和逻辑并不很熟悉,而且没受过使用形式化方法的专业训练,因此,需要专家指导和培训。

5.不应该放弃传统的开发方法

把形式化方法和结构化方法或面向对象方法集成起来是可能的,而且由于取长补短往往能获得很好的效果。

6. 应该建立详尽的文档

建议使用自然语言注释形式化的规格说明书,以帮助用户和维护人员理解系统。

  • 不应该放弃质量标准
  • 不应该盲目依赖形式化方法
  • 应该测试、测试再测试
  • 应该重用
      即使采用了形式化方法,软件重用仍然是降低软件成本和提高软件质量的惟一合理的方法。而且用形式化方法说明的软件构件具有清晰定义的功能和接口,使得它们有更好的可重用性。

二、有穷状态机

(一) 概念

有穷状态机可以准确描述一个系统,是表达规格说明的一种形式化方法。

通过一个简单例子介绍有穷状态机的基本概念:
   一个保险箱上装了一个复合锁,锁有三个位置,分别标记为1、2、3,转盘可向左(L)或向右®转动。这样,在任意时刻转盘都有6种可能的运动,即1L、1R、2L、2R、3L和3R。保险箱的组合密码是1L、3R、2L,转盘的任何其他运动都将引起报警。如图描绘了保险箱的状态转换情况。

三、 Petri网

(一) 概念

并发系统中需要解决的主要问题是定时问题:包括同步问题、竞争条件以及死锁问题。
定时问题常常是因不好的设计或有错误的实现引起的,归根到底又是由不好的规格说明造成的.
Petri网技术可用于确定系统中隐含的定时问题。
Petri网技术在计算机领域应用较多,已经证明,用Petri网可以有效地描述并发活动。
Petri网包含4种元素:
一组位置P、一组转换T、输入函数I及输出函数O。
如图举例说明了Petri网的组成:
一组位置P为{P1,P2,P3,P4}:用圆圈代表;
一组转换T为{t1,t2}:图中用短直线表示转换;
两个用于转换的输入函数,用由位置指向转换的箭头表示,它们是:I(t1)={P2,P4}
I(t2)={P2}
两个用于转换的输出函数,用由转换指向位置的箭头表示,它们是:O(t1)={P1}
O(t2)={P3,P3}
在这里插入图片描述
Petri网是一个四元组C=(P,T,I,O),其中:
P={P1,P2,…Pn}是一个有穷位置集,n≥0;
T=(t1,…,tm)是一个有穷转换集,m≥0,且T和不相交;
I:T→P∞为输入函数,是由转换到位置无序单位组的映射;
O:T→P∞为输出函数,是由转换到位置无序单位组的映射。

Petri网的标记是在Petri网中权标(token)的分配。如图中有4个权标:一个在P1中,两个在P2中,P3中没有,还有一个在P4中。
在这里插入图片描述
上述标记可以用向量(1,2,0,1)表示。
由于P2和P4中有权标,因此t1启动(即被激发)。
通常,当每个输入位置所拥有的权标数大于等于从该位置到转换的线数时,就允许转换。当t1被激发时,P2和P4上各有一个权标被移出,而P1上则增加一个权标(2,1,0,0)。
Petri网中权标总数不是固定的,在这个例子中两个权标被移出,而P1上只能增加一个权标。

如图4.6,P2上有权标,因此t2也可以被激发。当t2被激发时,P2上将移走一个权标,而P3上新增加两个权标(1,1,2,1)。
在这里插入图片描述
Petri网具有非确定性,如果数个转换都达到了激发条件,则其中任意一个都可以被激发。图4.6所示Petri网的标记为(1,2,0,1),t1和t2都可以被激发。假设t1被激发了,则结果如图4.7所示,标记为(2,1,0,0)。
此时,只有t2可以被激发。如果t2也被激发了,则权标从P2中移出,两个新权标被放在P3上,结果如图4.8所示,标记为(2,0,2,0)。

带有标记的Petri网成为一个五元组(P,T,I,O,M),其中标记M,是由一组位置P到一组非负整数的映射:
在这里插入图片描述
M:P→{0,1,2,…}
对Petri网的一个重要扩充是加入禁止线
禁止线是用一个小圆圈而不是用箭头标记的输入线,如图所示。
通常,当每个输入线上至少有一个权标,而禁止线上没有权标的时候,相应的转换才是允许的。图中P3上有一个权标而P2上没有权标,因此转换t1可以被激发。

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: LabVIEW是一款由National Instruments公司开发的图形化编程语言及开发环境。该软件主要用于实时数据采集、控制和处理,广泛应用于自动化、测试、测量和仪器控制等领域。下面是对LabVIEW软件的说明: LabVIEW采用图形化编程语言,用户可以通过拖拽和连接各种功能块来创建程序。这种图形化编程的方式使得编程变得简单易懂,非常适合不具备编程背景的工程师和科学家使用。 LabVIEW具有强大的数据采集和处理能力。用户可以通过连接各种仪器和传感器来采集实时数据,并使用LabVIEW提供的各种数据处理功能进行分析和操作。该软件支持大量的数据处理函数和算法,方便用户进行自定义的数据分析和处理。 LabVIEW提供了丰富的绘图工具,可以帮助用户将采集到的数据以图表的形式展示。用户可以根据需要自定义图表的样式和格式,方便进行数据的可视化和分析。 LabVIEW还具有强大的控制功能,用户可以通过软件连接控制器和执行器,实现对设备和系统的控制。该软件支持多种通信协议和接口,方便用户与外部设备进行连接和通信。 LabVIEW拥有庞大的用户群体和活跃的社区支持。用户可以通过官方网站、在线论坛和参加培训课程等方式获取技术支持和交流经验。 总之,LabVIEW是一款易学易用且功能强大的软件,能够帮助用户快速实现各类数据采集、控制和处理任务。它在自动化、测试和测量等领域有着广泛的应用。无论是从事科研还是工程设计,LabVIEW都能为用户带来便利和高效。 ### 回答2: LabVIEW是一种基于图形化编程的开发环境,与传统的文本编程语言不同。它是由美国国家仪器公司(National Instruments)开发的一款强大而灵活的软件。LabVIEW可以帮助工程师和科学家们快速搭建大型的工程和实验项目,包括数据采集、数据处理和控制系统设计等。 LabVIEW的主要特点是它的图形化编程界面。用户可以通过拖拽和连接不同的图形化元件,构建自己的程序逻辑。这种可视化编程让人们更容易理解和管理复杂的程序结构,同时也提高了开发的效率。LabVIEW支持众多的编程语言,包括G语言(Graphical Language)和传统的文本语言如C、C++、Python等,可以满足不同开发人员的需求。 通过LabVIEW,用户可以轻松进行各种实验和测试。它提供了丰富的工具包和模块,用于处理数据和信号、进行数据分析、可视化等。此外,LabVIEW还可以与各种硬件设备进行通讯,实现数据采集和控制。用户可以编写自定义的驱动和界面,与硬件设备进行交互,实现对设备的控制和监测。 LabVIEW的应用广泛,不仅在科学研究领域,还广泛应用于工业自动化、仪器仪表、教育等领域。它的优势在于可视化编程的简洁易懂,灵活性强,适用于各种各样的工程项目。 总而言之,LabVIEW是一款功能强大的软件,它的图形化编程界面和丰富的功能模块,让工程师和科学家们能够更加高效地进行实验和工程开发。无论是初学者还是有经验的开发人员,都能够通过LabVIEW实现各种创新的想法和项目。 ### 回答3: LabVIEW 是一种图形化编程环境和开发平台,由国家仪器公司(National Instruments)开发。它采用直观的图形编程方式,使得用户可以通过将图标和连接线组合起来来创建程序,而无需编写传统的文本代码。这使得编程变得更加易于理解和上手。 LabVIEW 软件说明书提供了对该软件的全面介绍和详细说明。首先,在说明书中会介绍软件的安装和配置过程,以及系统要求。用户可以根据说明书提供的步骤来正确地安装和设置LabVIEW软件,以便能够正常运行和使用。 其次,软件说明书详细介绍了LabVIEW软件的各个主要功能和模块。它会介绍如何使用LabVIEW的图形编程界面来创建和编辑程序。说明书还会讲解如何使用不同的函数和工具箱来实现各种不同的任务和应用。此外,说明书还涵盖了LabVIEW的各个特性、选项和设置,以帮助用户更好地了解和掌握该软件。 软件说明书还会提供一些实例和教程,以帮助用户更好地学习和应用LabVIEW。这些实例将介绍如何创建不同类型的程序和解决特定问题,通过这些实例用户可以学会如何运用LabVIEW来开发自己的应用。 最后,软件说明书还会介绍LabVIEW的相关文档和资源,例如帮助文档、论坛和教学视频等。这些资源可以帮助用户更好地理解和使用LabVIEW,并在遇到问题时提供支持和帮助。 综上所述,LabVIEW软件说明书对于使用该软件的用户来说是非常重要的。它提供了对软件的全面介绍、详细的功能说明和相关的学习资源,帮助用户更好地了解、学习和应用LabVIEW软件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值