软件工程 第4章 形式化说明技术

合集下载

ch_04形式化说明技术

ch_04形式化说明技术

§4. Z 语言
1、Z 语言简介
用Z语言描述的,最简单的形式化规格说明包含4个部分: 给定的集合、数据类型及常数 状态定义 初始状态 操作 (1)给定的集合 Z规格说明从一系列给定的初始化集合开始。 初始化集合是不需要详细定义的集合,用方括号形式表示。 如电梯问题中,给定的初始化集合为Button,表示为 [Button]
报警
报警 报警 报警 报警
报警
报警 报警 报警 B
报警
保险箱解锁 报警 报警 报警
§2. 有穷状态机
初 始 态
保险箱 锁 定 其他 移动
1L
A
3R
B 其他 移动
2L
保险箱 解 锁
终 态
其他 移动
报 警
终态
有穷状态机的状态转换图
§2. 有穷状态机
2、应用例子——电梯问题P.79
(1) 电梯按钮的状态转换图:
(4)操作
例如电梯问题中的按按钮操作Push_Button:
Push_Button
Button_State button ? : Button (button ? buttons) (((button ? pushed) (pushed’ = pushed {button ? })) ((button ? pushed) (pushed’ = pushed)))
p1t1t2 Nhomakorabeap4
p3
p2
p1 t1
§3. Petri网
t2 p1 p3 p4 p2 t1 t2
p4
p3
p2 p1 t1
t2
Petri网的扩充: 加入禁止线 , 表示没有权标才激发转换。 p3

第4章软件工程

第4章软件工程

当前状态〔菜单〕+事件〔所选择的项〕 当前状态〔菜单〕 事件〔所选择的项〕 事件 ⇒ 下个状态。 下个状态。
扩展:在 元组中加入第 个组件——谓词集 , 元组中加入第6个组件 谓词集P, 扩展 在5元组中加入第 个组件 谓词集 每个谓词都是系统全局状态Y的函数 的函数。 每个谓词都是系统全局状态 的函数。 转换函数T现在是一个从 现在是一个从(J-F)×K×P到J的函数。现 的函数。 转换函数 现在是一个从 × × 到 的函数 在的转换规则形式如下: 在的转换规则形式如下:
第4章 形式化说明技术 章
4.1 概述 4.2 有穷状态机 4.3 Petri网 网 4.4 Z语言 语言 4.5 小结 习题
按照形式化的程度分3类 按照形式化的程度分 类: 非形式化:自然语言 非形式化 自然语言 半形式化:模型如 数据流图或实体-联系图 模型如:数据流图或实体 半形式化 模型如 数据流图或实体 联系图 形式化。 形式化。 :描述系统性质的基于数学的技术,也就是说,如 描述系统性质的基于数学的技术, 描述系统性质的基于数学的技术 也就是说, 果一种方法有坚实的数学基础, 果一种方法有坚实的数学基础,那么它就是形式化 的。
110101E-101 -100111E11101 +1E0 更形式化地,浮点二进制数定义如下: 更形式化地,浮点二进制数定义如下:
〈floatingpoint binary〉∷=[〈sign〉]〈bitstring〉E 〉 [ 〉 〉 [〈sign〉]〈bitstring〉 〉 〉 〈sign〉∷=+|〉 | 〈bitstring〉∷=〈bit〉[〈bitstring〉] 〉 〈 〉 〉 〈bit〉∷=0|1 〉 |
当然,形式化方法也有缺点: 当然,形式化方法也有缺点:大多数形式化的规格 说明主要关注于系统的功能和数据,而问题的时序、 说明主要关注于系统的功能和数据,而问题的时序、 控制和行为等方面的需求却更难于表示。此外, 控制和行为等方面的需求却更难于表示。此外,形 式化方法比欠形式化方法更难学习, 式化方法比欠形式化方法更难学习,不仅在培训阶 段要花大量的投资,而且对某些软件工程师来说, 段要花大量的投资,而且对某些软件工程师来说, 它代表了一种“文化冲击” 它代表了一种“文化冲击”。 把形式化方法和欠形式化方法有机地结合起来, 把形式化方法和欠形式化方法有机地结合起来,使 它们取长补短,应该能获得更理想的效果。本章讲 它们取长补短,应该能获得更理想的效果。 述的应用形式化方法的准则(见4.1.3节),对于读者 述的应用形式化方法的准则 见 节, 今后在实际工作中更好地利用形式化方法, 今后在实际工作中更好地利用形式化方法,可能是 有帮助的。 有帮助的。

2012-2013 第4章 形式化技术

2012-2013 第4章 形式化技术
⑴ 能简洁准确地描述物理现象、对象或动作的 结果。 ⑵ 可以在不同的软件工程活动之间平滑地过渡。 ⑶ 提供了高层确认的手段。可以使用数学方法 证明设计符合规格说明,程序代码正确地实现 了设计结果。
5
2. 应用形式化方法的准则
对形式化方法也应该“一分为二”,既不要 过分夸大它的优点也不要一概排斥。 (1) 应该选择一种适用于当前项目的形式化说 明的技术。 (2)形式化也不要“过分”地追求。如果用形式 化方法详实说明系统中易出错或关键化的部分, 则可达到事半功倍、即只用适中的工作量就能 获得较大回报。
18
Petri网的标记是在 Petri网中权标 (token) 的分配。 例如,在上图中有4个权标,其中一个在P1中, 两个在P2中,P3中没有,还有一个在P4中。 由于P2和P4中有权标,因此t1启动(激发)。通 常当每个输入位置所拥有的权标数大于等于从该 位置到转换的线数时,就允许转换。当t1被激发 时,P2 和P4上各有一个权标被移出,而P1上则 增加一个权标。Petri网中权标总数不是固定的, 在这个例子中两个权标被移出,而P1上只能增加 一个权标。
23
例子1: 使用PN表示“图书馆借书”案例中一本书 的状态图。( 设:P1表示“图书馆”;P2表示 “借书者”;C 表示“借书”转换;R 表示“还 书”转换)
24
例子1’ : 使用PN表示“图书馆借书”案例中一本书 的状态图。( 假设只有会员才能借书)
25
例子2:使用PN表示“图书馆借书”案例中一本书的扩 展状态图,包括超期罚款部分。
7
一.
有穷状态机
1、引入概念 (为抽象的描述系统状态机制) 一个基本有穷状态机可以表示为一个5元组。 (J,K,T,S,F), 其中: J 是一个有穷的非空状态集; K 是一个有穷的非空输入集; T 是一个从 (J-F)×K 到 J的转换函数; S∈J,是一个初始状态; F J,是终态集。

04章形式化说明技术

04章形式化说明技术

04章形式化说明技术形式化说明技术(Formal Specification Techniques)是一种系统性、精确地描述和定义软件系统执行行为、功能和性质的技术方法。

它通过使用数学语言和形式规约的方法,将软件系统的设计和实现过程从自然语言的模糊性和歧义性中解放出来,从而改善了软件开发和维护的效率和质量。

形式化说明技术的核心思想是将软件系统描述为一个数学模型,通过形式化的推理和证明,确保系统满足设计要求并具备所需的性质。

形式化说明技术不仅能够精确地描述系统的行为和功能,还可以检查系统的正确性、一致性、完备性、可靠性和安全性等方面的属性,提前发现和解决潜在的问题。

形式化说明技术的应用范围广泛,包括需求分析、系统设计、编码验证、软件测试、系统仿真和代码生成等方面。

下面将介绍几种常见的形式化说明技术。

1. 判定性有穷状态自动机(Deterministic Finite State Automaton,DFSA):DFSA 是一种常用的形式化说明技术,用于描述系统的状态和状态转移。

它可以形式化地描述系统的行为,通过状态转移图来表示系统的状态变化,从而帮助开发人员更好地理解和设计系统。

2. 时序逻辑(Temporal Logic):时序逻辑是一种扩展的命题逻辑,用于描述系统的时序性质。

通过形式化的规约、语义和推理,可以验证系统是否满足时序性质,如安全性、活性、不变性等。

时序逻辑广泛应用于软硬件系统的验证和验证。

3. Petri 网(Petri Nets):Petri 网是一种用于建模和分析并发系统的图形化形式化说明技术。

Petri 网通过描述系统的状态、变迁和资源,揭示系统的并发行为和资源竞争情况,从而帮助开发人员理解和设计并发系统。

4. Z 规范(Z Specification):Z 规范是一种基于集合论和一阶谓词逻辑的形式化说明技术,用于描述系统的状态、操作和约束等。

Z 规范通过形式化地定义系统的状态集合、操作集合和约束条件,帮助开发人员更好地理解和设计系统。

软件工程-第四章解读

软件工程-第四章解读

在软件开发过程中使用数学,可以在不同的软件工程活动 之间平滑地过渡(系统规格说明、系统设计、程序代码) 提供了高层确认的手段
可以使用数学方法证明,设计符合规格说明,程序代码正确 地实现了设计结果
2018/11/29 5
4.1 概 述
4.1.3 应用形式化方法的准则
应该选用适当的表示方法,选择适用于当前项

当前状态〔菜单〕+事件〔所选择的项〕+谓词 =>
2018/11/29
13
4.2 有穷状态机(FSM/FSA)
在一幢m层的大厦中需要一套控制n部电梯的产品, 要求这n部电梯按照约束条件C1,C2和C3在楼层 间移动
C1:每部电梯内有m个按钮,每个按钮代表一个楼层。当 按下一个按钮时该按钮指示灯亮,同时电梯驶向相应的楼 层,到达按钮指定的楼层时指示灯熄灭 C2:除了大厦的最低层和最高层之外,每层楼都有两个 按钮分别请求电梯上行和下行。这两个按钮之一被按下时 相应的指示灯亮,当电梯到达此楼层时灯熄灭,电梯向要 求的方向移动 C3:当对电梯没有请求时,它关门并停在当前楼层
2018/11/29 8
4.2 有穷状态机(FSM/FSA)
state
transition condition transition
图4.1 保险箱的状态转换图
2018/11/29 9
State Transition Table
2018/11/29
10
FSM/FSA的数学模型
FSM可以表示为一个5元组(J,K,T,S,F)
软件工程导论
第四章 形式化说明技术 (Formal Description Technique,FDT)
4.1 概述 4.2 有穷状态机(FSM/FSA) 4.3 Petri网 (Petri Nets) 4.4 Z语言 (Z Notation) 4.5 小结

形式化说明技术

形式化说明技术

(3) 应该估算成本。为了使用形式化方法,通常需 要事先进行大量的培训。最好预先估算所需的成本 并编入预算。 (4) 应该有形式化方法顾问随时提供咨询。绝大多 数软件工程师对形式化方法中使用的数学和逻辑并 不很熟悉,而且没受过使用形式化方法的专业训练, 因此,需要专家指导和培训。 (5) 不应该放弃传统的开发方法。把形式化方法和 结构化方法或面向对象方法集成起来是可能的,而 且由于取长补短往往能获得很好的效果。 (6) 应该建立详尽的文档。建议使用自然语言注释 形式化的规格说明书,以帮助用户和维护人员理解 系统。
图4.5 Petri网的组成
一组位置P为{P1,P2,P3,P4},在图中用圆圈 代表位置。 一组转换T为{t1,t2},在图中用短直线表示转 换。 两个用于转换的输入函数,用由位置指向转换的箭 头表示,它们是: I(t1)={P2,P4} I(t2)={P2} 两个用于转换的输出函数,用由转换指向位置的箭 头表示,它们是: O(t1)={P1} O(t2)={P3,P3}
第一条约束C1:每部电梯有m个按钮,每层对应一 个按钮。当按下一个按钮时该按钮指示灯亮,指示 电梯移往相应的楼层。当电梯到达指定的楼层时, 按钮将熄灭。 为了用Petri网表达电梯按钮的规格说明,在Petri 网中还必须设置其他的位置。电梯中楼层f的按钮, 在Petri网中用位置EBf表示(1≤f≤m)。在EBf上有一 个权标,就表示电梯内楼层f的按钮被按下了。
所谓形式化方法,是描述系统性质的基 于数学的技术,也就是说,如果一种方法有 坚实的数学基础,那么它就是形式化的。
4.1 概述
4.1.1 非形式化方法的缺点
用自然语言书写的系统规格说明书,可 能存在矛盾、二义性、含糊性、不完整性及 抽象层次混乱等问题。 所谓矛盾是指一组相互冲突的陈述。 二义性是指读者可以用不同方式理解的 陈述。

软件工程 第4章:形式化说明技术


带权标数的Petri网 转换条件:当每个输入位臵所拥有的权标数大于等于从 该位臵到转换的线数时,就允许转换。
p2 p1 t1 t2
p4 p3
(P,T,I,O,M)
扩充:禁止线
当输入线上至少有一个权标,而禁止线上没有权 标时,相应的转换才是允许的。
p1
t1
p2
p3
基于数学的形式化描述小结
目前还没有在软件产业界广泛应用;
形式化方法小结 • 优点:形式化的规格说明可以用数学方法研究、 验证,消除了二义性,从而可以减少差错。 • 缺点:大多数形式化的规格说明主要关注于系统 的功能和数据,而问题的时序、控制和行为等方 面的需求却更难于表示。 • 把形式化方法和欠形式化方法有机地结合起来, 使它们取长补短,能获得更理想的效果。
④ 专家咨询
⑤ 不放弃传统(取长补短)
⑥ 详尽的文档(注释形式化)
⑦ 不放弃质量标准 ⑧ 不盲目依赖 ⑨ 测试、测试再测试 ⑩ 重用
二 有穷状态机
例:一个保险箱上装了一个复合锁,锁有三个
位臵,分别标记为1、2、3,转盘可向左(L)或
向右(R)转动。这样,在任意时刻转盘都有6种
可能的运动,即1L、1R、2L、2R、3L和3R。 保险箱的组合密码是1L、3R、2L,转盘的任 何其他运动都将引起报警。
(1) 可以比较容易地发现用Z写的规格说明的错误。 (2) Z语言精确性,减少了模糊性、不一致性和遗漏。 (3) 能严格地验证规格说明的正确性。 (4) 虽然完全学会Z语言相当困难,但是,经验表明,只 学过中学数学的软件开发人员仍然可以只用比较短 的时间就学会编写Z规格说明。 (5) 使用Z语言可以降低软件开发费用。 (6) 虽然用户无法理解用Z写的规格说明,但是,可以依 据Z规格说明用自然语言重写规格说明。

形式化说明技术

较严格的形式化方法(语法和语义都严谨):有穷状态机、Petri网、Z语 言………
半形式化方法(语法和语义都不太严谨) :系统流程图、数据流图、数 据字典、ER图、数据库范式、状态转换图、层次方框图、Warnier图、IPO 图、IPO表………
4.1.1非形式化方法的缺点
矛盾性
在需求规格说明书(Reqirement Specifications)中对同一问题前后存在不 同的描述。
见“状态转换表”
初始态 S :
保险箱锁定
终态集 F :
{保险箱解锁,报警}
有穷状态机——形式化表示
一个有穷状态机可以表示为一个 5 元组 (J ,K,T,S,F) ,其中:
J 是一个有穷的非空状态集; K 是一个有穷的非空输入集; T 是一个从 (J-F) × K 到 J 的转换函数; S ∈ J ,是一个初始状态; F ∪ J ,是终态集。
4.2 有穷状态机
有穷状态机概念 有穷状态机例子 有穷状态机方法评价

4.2.1 有穷状态机概念
通过简单例子引入有穷状态机的基本概念:
一个保险箱上装了一个复合锁,锁有三个位置,分别标记为 1 、 2 、 3 ,转盘可向左 (L) 或向右 (R) 转动。这样,在任意 时刻转盘都有 6 种可能的运动,即 1L 、 1R 、 2L 、 2R 、 3L 和 3R 。保险箱的组合密码是 1L 、 3R 、 2L ,转盘的任何其 他运动都将引起报警。
第4章 形式化说明技术
4.1 概述 4.2 有穷状态机 4.3 Petri网 4.4 Z语言 4.5 小结
4.1 概述
4.1.1非形式化方法的缺点
非形式化是指用自然语言描述软件需求(如系统规格说明书)。因此, 可能存在矛盾性、二义性、含糊性、不完整性、抽象层次混乱等问题。

[软工导论]第4章 形式化说明技术


电梯系的有穷状态机对本产品进
行规格说 明。这个问题中有两个按钮集:
n 部电梯中的每一部都 有 m 个按钮,一个按钮
对应一个楼层。因为这 m × n 个 按钮都在电梯 中,所以称它们为电梯按钮。 此外,每层楼有两个按钮,一个请求向上,另一 个请求向下,这些按钮称为楼层按钮。
17
图4.1 保险箱的状态转换图
18
引例——保险箱的状态转换
19
用有穷状态机描述的保险箱
状态集J:{保险箱锁定,A,B,保险箱解
锁,报警} 输入集K:{1L,1R,2L,2R,3L,3R} 状态转换函数T:如表4.1所示 初始态S:保险箱锁定 终态集F:{保险箱解锁,报警}
32
楼层按钮的状态转换图

令FB(d,f)表示f层请求电梯向d方向运动的按钮,楼 层按钮的状态如下: FBON(d,f):楼层按钮(d,f)打开 FBOFF(d,f):楼层按钮(d,f)关闭 如果楼层按钮已经打开,而且一部电梯到达f层,则 按钮关闭。反之,如果楼层按钮原来是关闭的,被 按下后该按钮将打开。这段叙述中包含了以下两个 事件: FBP(d,f):楼层按钮(d,f)被按下 EAF(1…n,f):电梯1或…或n到达f层 其中1…n表示或为1或为2…或为n。
6
《天鹰》软件
特点:让用户自己来开发所需要的MIS
《天鹰》提供一种近乎行业自然语言的
描述语言,称为BIDL。用户只需要本行 业的业务知识,很容易用BIDL语言写清楚 本单位的组织、人员和业务情况。一旦 情况写清楚了,《天鹰》即可自动为他 生成一个可用的MIS系统。
7
一个应用软件往往含有大量领域知识。如果我们 能让软件工程师和领域专家各司其职,然后用适 当的技术把两者结合起来,就可以达到扬长避短 的目的。 例如,在MIS开发方面,软件工程师只把像《天 鹰》这样的工具做得好好的。另有一批人专门开 发各行各业的知识模块,如商业、旅游、邮电、 海关、税收、医院、学校等等。 用户从软件开发者手里购买软件工具,而从知识 开发者那里购买知识模块。

软件工程导论第4章 形式化说明技术


形式化方法的分类
4.1 续
形式化方法是应用严格的形式符号和数学方法定义 或描述目标软件系统需求规格说明的一种方法。
根据对需求规格说明的定义方式分类:
⒈面向模型的形式方法。
又称基于状态描述的形式方法。 基本思想:利用域、元组、集合、序列、映射、包等这些已知特性
的数学抽象概念来为目标软件系统的状态特征和行为特征构造形式 语义模型。语义模型就作为目标软件系统需求规格的形式说明。 主要代表:VDM方法(维也纳开发方法)、Z语言方法等。
⒉代数构造形式方法。
目标软件系统的需求规格说明提供一些特殊的构造机制,并以代数 构造方式描述目标系统的结构、功能。
软件形式开发方法
4.1 续
将形式化方法应用于软件开发过程称为软件形式 开发方法。
首先,在需求分析阶段的信息收集和信息分析两 项工作中,采用形式化的规格说明语言构造目标 软件系统严格的形式需求规格说明即形式语义。
状态 • EBON(e,f):电梯按钮(e,f)打开 • EBOFF(e,f):电梯按钮(e,f)关闭
例3:电梯系统
事件
4.2 续
• EBP(e,f) :电梯按钮(e,f)被按下。
• EAF (e,f) :电梯e到达f层。
谓词
V(e,f)=S(U,e,f)or S(D,e,f)or S(N,e,f)
信息的描述过程中遗留了某个方面。
抽象层次混乱
在非常抽象的陈述中混进了一些关于细节的低层陈述。
形式化方法的主要思想
4.1 续
形式化需求分析方法的主要思想,是利用形式化 规格说明语言严格地定义用户需求,并采用数学 推演的方法证明需求定义的性质。
从某种意义上讲,形式化方法是克服需求分析阶 段中主要困难(不精确性、不一致性和不完全性) 的有效途径。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

行为建模
1)
2)
3)
系统的需求规格说明通常是用自然语言来叙 述的,但是用自然语言描述往往会出现二义 性。 为了直观地分析系统的动作,从特定的视点 出发描述系统的行为,需要采用动态分析的 方法。 最常用的动态分析方法

有穷状态机

时序图 Petri网
状态迁移图
状态迁移图是通过描述系统的
状态及引起系统状态转换的事 件来表示系统的行为。
形式化方法
形式化方法是建立在严格数学基础上、具有精确数学语义 的开发方法,即就是用数学语言来描述软件的设计规约。 形式化方法可以分为形式化描述和建立在形式化描述基础之 上的形式化开发 形式化的描述:用形式化的语言(具有严格的语法语义定 义的语言)描述描述软件系统及其行为模式,以更好地刻 画软件系统的性质。 形式化的开发:用形式化的语言来描述软件需求和特征, 并且通过推理验证来保证最终的软件产品是否满足这些需 求和具备这些特征,符合给定的行为模式。
应用形式化方法的准则





应该选用适当的形式化方法:主要包括有限状态机、时 序图、Petri网、Z、VDM等。 应该形式化,但不要过分形式化 应该估算成本 应该有形式化方法顾问随时提供咨询 不应该放弃传统的开发方法 应该建立详尽的文档 不应该放弃质量标准 不应该盲目依赖形式化方法 应该测试、测试再测试 应该重用
半形式化方法
软件工程使用方法可分成:非形式化、半形式化和形式化 半形式化: 结构化分析(SA)方法 利用图形等半形式化的描述方式表达需求:用数据流图、 状态转换图或实体-联系图建立数据、行为和功能模型, 形成需求说明书中的主要部分。 利用结构化语言描述加工逻辑:结构化语言是介于自然 语言和形式语言之间的一种半形式语言。加工逻辑结构 可分成外层和内层两层:外层用来描述控制结构,采用 顺序、选择、重复三种基本结构;内层对于顺序执行和 循环执行的动作,用结构化语言描述。 缺点:可能存在矛盾、二义性、含糊性、不完整性及抽 象层次混乱等问题。

时序图

在系统分析中,用时序图于对比在系统中处理 事件的时序和相应的处理时间。在右图中, 对 于事件e, 功能1~功能3 的处理时间 总计为 (T1 +T2+T3) 其中功能间 切换时间0。

采用扩充时序图可表示 进程间的通信流, 用于 分析几个 事件的交错现 象。C1与C2,R1与R2 是交错的。因此,可以 做如下分析:“必须设 计成HOST1 在等待

形式化方法的意义在于它能帮助发现其它方法不容易 发现的系统描述的不一致,不明确或不完整,有助于增加 软件开发人员对系统的理解,因此形式化方法是提高软件 系统安全性与可靠性的重要手段.
形式化方法原则上就是用数学与逻辑的方 法描述和验证软件,它在软件开发中能够起到 的作用是多方面的: 首先是对软件要求的描述:软件要求的描述是 软件开发的基础。比如说一般非形式化的描述 很可能导致描述的不明确和不一致。形式化方 法的优点是它能引导软件工程师或程序员按照 严格的步骤写出需求说明,保证描述的明确性, 而描述的不一致性也就相对易于发现。


一个应用软件往往含有大量领域知识。这决定了在开发 应用软件时领域专家和软件工程师必须很好合作。由知 识背景不同而造成的文化壁垒使这种合作不容易成功。 如果我们能让软件工程师和领域专家各司其职,软件工 程师只把软件工具做得好好的,总结和开发领域知识的 事则交给领域专家去做,然后用适当的技术把两者结合 起来,就可以达到扬长避短的目的。 例如,在MIS开发方面,软件工程师只把像《天鹰》这 样的工具做得好好的。另有一批人专门开发各行各业的 知识模块,如商业、旅游、邮电、海关、税收、医院、 学校等等。用户从软件开发者手里购买软件工具,而从 知识开发者那里购买知识模块。就好象微机用户从IBM 公司那里购买硬件,而从兼容软件开发商那里购买微机 的配套软件一样。
软件工程的发展
软件工程的发展大体围绕着两条主线,一条是形式 化技术,一条是工程化技术。


工程化技术的研究包括方法学的研究以及与其相关的支撑 环境的研制。在方法学方面,大体可分为程序设计方法学 和软件开发方法学,前者是关于小规模程序设计,后者是 关于大规模软件的开发过程。目前,主要有结构化方法和 面向对象方法. 在软件工程学中,方法和工具是同一问题的两个不同方面, 方法是工具研制的先导,工具是方法的实在体现。代表我 国CASE领域先进水平的“青鸟”系统,其主要目标是研 究以软件复用为基线的,基于构件/构架模式、采用集成组 装方式的软件工业化生产技术。旨在建立中国软件产业的 基础,为软件开发提供符合中国文化特征的CASE技术标 准和开发规范,提供实用、开放的软件开发平台和环境。
圆圈“○”表示可得到的系统 状态 箭头“→”表示从一种状态向 另一种状态的迁移。

例如, 当有多个申请占用CPU运 行的进程时, 有关CPU分配的 进程的状态迁移
系统的状态=就绪,运行,等 待 具有的事件=t1,t2, t3, t4 t1 ─ 中断事件 t2 ─ 中断已处理 t3 ─ 分配CPU t4 ─ 用完CPU
其次是对软件设计的描述:形式化方法的优点对于 软件要求的描述同样适用于软件设计的描述。另外 由于有了软件要求的形式化描述,我们可以检验软 件的设计是否满足软件的要求。对于一些简单的系 统,形式化的描述有可能直接转换成可执行程序, 这就简化了软件开发过程,节约了资源和减少了出 错的可能性。 另外,形式化方法可以用于程序的验证,以保证程 序的正确性。对于测试来讲,形式化方法可用于测 试用例的自动生成,这可以节约许多时间和在一定 程度上保证测试用例的覆盖率。


它有两种结点: 位置(place):符号为“○”,它用来表示系统的状态。 转移(transition):符号为“—”或“|”, 表示系统中的事件。 符号“→|”表示对转移的输入, “| ←” 表示由转移的输出 用于转换的输入函数:I(t1)={P1} 、I(t3)={P3,P5} 用于转换的输出函数:O(t1)={P2} 、O(t2)={P1,P3}

《天鹰》软件
背景:


形式化方法的优点是它能引导软件工程师或程序员按照严 格的步骤写出需求说明, 但使用任何形式化方法的前提是 已经确切和完整地收集到了用户的需求信息。否则不管形 式化方法在理论上如何严密,它是不能帮助我们完成软件 开发任务的。因此应尽可能多地把用户吸引到软件开发过 程中来,使用户能尽早发现正在研制中的软件与他的需求 之间的偏差,甚至是发现已经写好的需求说明和他的真实 需求之间的偏差,从而及时修改需求说明和设计。 但是,形式化方法很难被直接用作软件工程师和用户之间 合作的基础,形式化的需求说明语言也很难在这两部分人 中间起沟通作用,因为他们的知识背景太不相同了。更何 况在研制和运行软件的过程中,需求信息可能改变,修改 设计或重新设计都会给这两部分人带来沉重负担。
经过几年乃至几十年的努力,21世纪的软件生 产将是一种大规模的工业化生产活动,以符合 产品化质量要求的工业标准,实现软件生产自 动化。其突出特征是:计算机真正成为人们的 一种工具,用户即为系统分析员,“软件过程 是软件”。 为达到这一目标,形式化技术与工程化技术必 然是有机的统一,并容纳其它相关的技术,产 生一种新的软件生产方法、技术、规程以及相 应的工业标准,并产生与之相适应的“傻 瓜”CASE,为软件产业奠定坚实的基础,使 软件走上工业化生产方式,形成规模经济。


一个《天鹰》系统基本上由两部分组成:一个MIS自 动生成器和一个知识库。据用户的需要,有三种版本可 供使用: 《小天鹰》由一个MIS自动生成器和一个MIS知识库构成。 用户用BIDL语言写清楚本单位的组织、人员和业务情况 后,《小天鹰》即可为他自动生成MIS.《小天鹰》适于 不懂计算机软件但熟悉本行业业务情况的人使用。 《中天鹰》由一个MIS自动生成器、一个MIS知识库和一 个领域知识库构成。用户可以像使用《小天鹰》那样使 用《中天鹰》,也可以只指明本单位属于哪种类型的企 业(例如三星级宾馆),即可利用领域知识库的知识为 他自动生成MIS,用户再在此基础上稍加修改就成了适合 本单位的MIS。《中天鹰》适合于不懂计算机软件,也不 太熟悉本行业业务情况的人使用。它的领域知识库是独 立于MIS知识库的,用户可以根据自己的需要配备。因此, 《天鹰》软件是组合式的。

形式化方法的优点
在开发大型软件系统的工程中应用数学, 能带来以下优点: 能引导软件工程师按照严格的步骤写出需求说 明,简洁准确地描述应用系统运行前后的状态。 可用数学方法验证发现存在的矛盾和不一致性. 可在不同的软件工程活动之间平滑的过渡,不 仅功能规格说明,而且系统设计也可用数学表 达,甚至程序代码也是数学符号. 提供高层确认的手段,可使用数学方法证明设 计符合规格说明,程序代码正确地实现了设计 结果。
状态迁移图的优点
状态之间的关系能够直观地捕
捉到 由于状态迁移图的单纯性,能 够机械地分析许多情况,可很 容易地建立分析工具
有穷状态机
包括5部分:状态集J、输入集K、由当前状态和 当前输入确定下一状态的转换函数T、初态S和 终态集F 状态集J:{保险箱锁定,A,B,保险箱解锁, 报警} 输入集K:{1L,1R,2L,2R,3L,3R} 转换函数T:如表4.1所示 初态S:保险箱锁定 终态集F: {保险箱解锁,报警}


形式化技术的研究及应用已取得了较大成果,突出表现在 程序设计语言语义方面和抽象数据类型方面的研制。随着 软件技术研究的深入,形式化技术与软件开发方法学相结 合,形成形式化的软件开发方法,试图实现从软件的规格 说明、软件的设计到软件的代码实现的自动转换和验证。 其中,基于模型的VDM、Z和基于代数的Larch均是这一方 面的代表成果。 软件自动化势在必行,研究的内容将涉及需求工程、软件 规格说明的形式化以及规格说明到系统的进化或转换。但 是,由于形式化的软件方法以严格的数学和逻辑系统为基 础,至今尚远未达到工程应用的程度,近几年内仍会停留 在实验室研究阶段。因而,着眼于高度自动化、智能化的 CASE研究,仍将成为软件工程的一个主体。
相关文档
最新文档