形式化需求描述
6.需求描述

需求描述的特征
完整性 正确性 可行性 必要性 划分优先级 无二义性 可验证性
需求描述的风格与格式
常见的描述风格与选用标准 典型软件需求规格说明书模板解析 定义模板的技巧 用户需说明与软件需求规格说明
常见的描述风格与选用标准
自然语言 图形化模型 形式化规格描述 建议
自然语言为主,辅之以图形化模型,需要的地 自然语言为主,辅之以图形化模型, 方少量使用形式化规格描述 图形化模型为主,辅之以自然语言作为补充, 图形化模型为主,辅之以自然语言作为补充, 需要的地方少量使用形式化规格描述 以形式化规格语言为主,辅之以图形化模型, 以形式化规格语言为主,辅之以图形化模型, 以自然语言为补充
需求描述
2009年09月 2009年09月
需求描述
需求描述就是将需求捕获, 需求描述就是将需求捕获,分析的结 果进行文档化的过程. 果进行文档化的过程.
主题
需求描述的特征 需求描述的风格与格式 常见的描述风格与选用标准 需求描述的写作指南 典型软件需求规格说明书模板解析 定义模板的技巧 用户需求说明与软件需求规格说明 写作策略与技巧
非文字信息的缺乏导致信息的丢失 说者无心, 说者无心,听者有意
需求描述的两大原则
简洁, 简洁,段落文字少 列表, 列表,图表相结合的表示法
不要忽视陈述需求理由的重要性 注意措辞
尽可能减少使用定性词语 避免使用描述数据的词语
�
需求描述的写作指南
保持句子和段落简短. 保持句子和段落简短. 从开发者的立场来看, 从开发者的立场来看,检查需求陈述是否 足够明确. 足够明确. 努力找到一个适当的粒度层次来写作. 努力找到一个适当的粒度层次来写作. 检查是否有一个陈述表达了多个需求, 检查是否有一个陈述表达了多个需求,将 它们分开. 它们分开. 整个需求文档的写作都保持在一个一致的 细节层次上. 细节层次上. 避免陈述冗余的需求. 避免陈述冗余的需求.
第十章.形式化描述

• 图10-6
10.3 行为描述
• 代数方法适合于描述操作独立于对象状态 的接口 • 假如某个操作的结果依赖于先前操作的结 果,结果将非常复杂, • 因此在行为描述的采用基于模型的方法 • 常见的方法有VDM方法,B方法,Z方法
• 软件的形式化描述 • 使用一种规范语言,其词汇,语法和语义 都是有严格定义的
• • • • • 1.非形式化方法的缺点 矛盾,指一组相互冲突的陈述。 二义性,指读者可以用不同方式理解的陈述。 含糊性,几乎不可避免地会出现含糊性。 不完整性,不完整性可能是在系统规格说明 中最 常遇到的问题之一。 • 抽象层次混乱, 指在非常抽象的陈述中混进 了一 些关于细节
• 2.形式化的优点 • (1)有能力在需求系统需求中揭示问题和暴露
图10-5 代数描述的结构
描述体的四个组成部分
• 介绍 ——用来声明被定义的尸体种类(类型名) • 描述部分——用于对操作的非形式化描述 • 标记部分——定义对象类或抽象数据类型的接口 语法 • 公理部分——通过一组刻画抽象数据类型的行为 特征的公理来定义操作的定义。
子系统接口的形式化描述的开发过 程的各项活动
问题二义性 • (2)数学能够简洁准确地描述物理现象、对象或 动作的结果,因此是理想的建模工具。 • (3)可以在不同的软件工程活动之间平滑地过渡。 • (4)它提供了高层确认的手段,可以使用数学的 方法证明,设计符合规格说明,程序代码正确地 实现了设计结果
7形式化说明技术

有穷状态机的形式定义
有穷状态机是一个5元组(J,K,T,S,F),其 中:
J是一个有穷的非空状态集,在任一确定的 时 刻,只能处于一个确定的状态;
K是一个有穷的非空输入集,在任一确定的
时
刻,只能接收一个确定的输入;
T是一个从()×K到J的转换函数;
S∈J,是初始状态,由此状态开始接收输 入 ;
P79 第三题
该有穷状态机的初态是“等待字符串输 入”。在初态若接收到字符+、或者字符 -、或者二进制位,则进入“输入尾数” 状态;在初态若接收到其他字符,则进 入终态“非浮点二进制 数”。。。。。。。
有穷状态机如下图:
二进制位
二进制位
等待字 初态 符串输入
+或-或 二进制位
输入 尾数
E
等待输 +或-或 输入 入指数 二进制位 指数
它们是:
I(t1)={P2,P4}
I(t2)={P2}
两个用于转换的输出函数,用由转换指向位置的箭头表示,
它们是:
O(t1)={P1}
O(t2)={P3,P3}
网的组成 图4.5
网结构的定义
形式化的网结构,是一个四元组()。 其中, {P1,…,}是一个有穷位置集,n≥0。 {t1,…,}是一个有穷转换集,m≥0,且T和P
状态转移矩阵:用行表示状态机所处的当前状态,列 表示将要到达的下一个状态,行列交叉处表示输入字 符。
有穷状态机的例子
一个保险箱上装了一个复合锁,锁有三 个位置,分别标记为1、2、3,转盘可向 左(L)或向右(R)转动。这样,在任意时刻 转盘都有6种可能的运动,即1L、1R、2L、 2R、3L和3R。保险箱的组合密码是1L、 3R、2L,转盘的任何其他运动都将引起 报警。图4.1描绘了保险箱的状态转换情 况。
面向问题的GIS需求非形式化与形式化描述研究

数 据 结构 往往 都是 面 向最 终 解 决 方案 的。我 们 需要 对 地 理信息系统软件的问题域进行描述。通过划分地理信息 功能 子 问题 以及子 问题 的组合 应 用 实 现新 的地 理信 息系
统 软 件构 建任 务 。每一 类 问 题用 形 式 化语 言 被 描述 成 问
的效 果 。 因此 , 软 件 需 求 相 关 的描 述 应 包 括 : 题 所 与 问
me h d t e tlr e — s ae GI e uie n s t o o m e a g c l S r q r me t .
Ke r s p o lm —o e td;e u r me t n ie rn ;n o ma & f r a e c p in; S; ly y wo d : r be i r ne rq i e n gn e g i r l e i f o l d sr t m i o GI Al o
与此 同时 , Jcs M.ako 提 出了软 件 开发 中经 常 出现 n等
的 5类 基本 问题 , 对它 们 的性 质 、 涉及 问题域 的类 型 , 并 所
以及 每类 问题 的 问题 域 、 求 、 需 机器 域 之 间 的 拓 扑 结 构 、 应满 足 的关 系及 相 关 性 质 等 进 行 了深 入研 究 , 出 了 问 提 题 的框架 思想 , 图 1 示 。 如 所
S HAO a Xio—d n , o g GUO J —f ,I i a JANG n Ya g—mig , ANG n—fi n W Yu e’
( .n tueo e t esn p l ain f ieeA a e f c ne , e ig10 0 , hn ; . i j o ma 1 I stt f moeS nigA pi t so ns c d myo i csB in 0 1 1 C ia 2 Ta i N r l i R c o Ch Se j nn Unvri , ini 0 3 7 C ia 3 H n h o a c mp n Y n a rvn eMi 5 3 0 C ia ies y Ta j 30 8 , hn ; . o g eT b coCo a y, u n nP o ic , l 6 20 , hn ) t n e
需求描述语言

需求描述语言
需求描述语言(Requirement Description Language,简称RDL)是一种用于描述和表达软件需求的语言。
它通常用于在软件开发过程中,将用户需求、业务需求、功能需求等非技术性的需求转化为技术人员可以理解和实现的技术性描述。
需求描述语言应该具备以下特点:
1.明确性:能够清晰、准确地描述需求,避免歧义和误解。
2.结构性:能够支持层次化的需求描述,包括总需求、子需求、细节需求等。
3.可追溯性:能够建立需求与代码、测试用例等开发产物之间的关联,方便后续的变更管理和维护。
4.易读性:语言应该简洁明了,易于理解,方便非技术人员阅读和理解。
常见的需求描述语言包括自然语言、结构化语言、形式化语言等。
其中,自然语言是最常用的需求描述语言,但由于其存在歧义、模糊等问题,通常需要结合其他工具和方法进行补充和澄清。
结构化语言和形式化语言则更加严谨和规范,适合用于对需求进行精确的描述和验证。
基于B的UML形式化需求分析

d srb h e ur e t ec iet er i q e n .Bu ti o d l sdb c uet epo es n lk o e g 1 e d d i u h a po c .I r e osm piy m ti sn twiey ue e a s h rfsi a n wld e8" n e e s c p ra h no d rt i l o e n f
维普资讯
第 l卷 7
20 0 7年 8月
第 8期
计 算 机 技 术 与 发 展
C OM PU丁E TECHNoI R . 0GY AND DEVEL 0PMENT
Vo . 7 No 8 11 . Au 2 7 g. 00
基 于 B的 U L形 式 化 需 求 分 析 M
用形式化 的规格说 明语 言描述 系统及 其性 能 , 以帮 可 助开发人员 获得对 所描 述系统 的深刻 理解 , 助 于发 有
现需求 中隐含 的不 完整性 、 二义 性、 不一 致性 , 发现分
析设计 中存在 的错 误和缺 陷。 1 B方 法
段解决 , 那么纠正它们所 花费 的代价 将 是在需求 中修
改的几 十甚至上百倍 , 也可能造成开发 的失 败。因此 , 消除需求分析 中存在的问题 , 降低软件开发 的风险 , 是
成功 的软件开发必不可少的 。
B方 法建立在 Z r l-Fakl e o r e集合论 的基 础上 , me n
包含结构化 的机制 ( 从规格 说 明到精化 再到 实现 ) 广 , 义替换 、 精化和 软件层 次体 系结构 的理论 - 。采用一 2 J
r s fr l t o to UM L
0 引 言
软件工程形式化方法 z 语言

软件工程形式化方法 z 语言软件工程是一个复杂而庞大的领域,要确保软件系统的正确性和可靠性,需要采用各种形式化方法。
形式化方法是一种严格、精确的描述和分析系统的方法,其中最著名的是Z语言。
1. 什么是形式化方法形式化方法是一种使用数学符号和形式化规范来描述和分析软件系统的方法。
它能够捕捉系统的各个方面,从而确保系统的正确性和可靠性。
形式化方法可以消除歧义和模糊性,提供严格的语法和语义定义,并进行可靠的推理和验证。
2. Z语言的引入和发展Z语言是一种基于数学集合论和一阶谓词逻辑的形式化规范语言。
它于20世纪70年代由牛津大学的J.R.阿兰·特拉弗斯和J.B.斯托拉兹提出,并继续在软件工程领域的学术界和实践中得到广泛应用。
3. Z语言的特点和优势- 精确性:Z语言使用严格的数学符号和形式化规范,可以精确地描述系统的各个方面,避免了自然语言的歧义和模糊性。
- 可读性:尽管Z语言使用了数学符号,但其符号系统和语法规则都经过严格定义,使得Z规范可以被可靠地解释和理解。
- 可验证性:Z语言规范的严格性使得系统的正确性验证变得可行。
通过形式化推理和模型检测等技术,可以对规范进行自动验证和分析。
- 模块化:Z语言支持模块化规范,可以将系统的不同部分进行独立的规范和验证,从而提高开发过程的灵活性和可重用性。
4. Z语言在软件工程中的应用- 需求分析和规约:Z语言可以用于对软件系统的需求进行精确描述和形式化规约,从而帮助开发人员和用户准确理解和交流需求。
- 设计规约和验证:Z语言可以用于对软件系统的设计进行精确描述和形式化规约,并进行验证和验证。
通过验证,可以发现设计冲突和错误,提高系统的可靠性。
- 系统建模和仿真:Z语言可以用于对软件系统进行形式化的建模和仿真。
通过建立形式化模型,可以进行系统行为的精确分析和评估,从而帮助设计和优化系统。
- 代码生成和自动化工具支持:Z语言可以作为设计工具中的一部分,与代码生成和其他自动化工具集成,从而提高开发效率和系统质量。
形式化说明技术

? EBOFF(e,f)+EBP(e,f)+not V(e,f) => EBON(e,f)
? 反之,如果电梯到达 f 层,而且电梯按钮是打开的,
于是它就会熄灭。这条转换规则可以形式化地表示为
:
? EBON(e,f)+EAF(e,f) => EBOFF(e,f)
第十八页,编辑于星期一:十四点 十八分。
第十一页,编辑于星期一:十四点 十八分。
有穷状态机 ——形式化表示
?一个有穷状态机可以表示为一个 5 元组 (J ,K,T,S,F) ,其中:
? J 是一个有穷的非空状态集; ? K 是一个有穷的非空输入集; ? T 是一个从 (J-F) × K 到 J 的转换函数; ? S ∈ J ,是一个初始状态; ? F ∪ J ,是终态集。
? 电梯的 3 个可触发状态发生改变的事件:
? DC(e,f) :电梯 e 在楼层 f 关上门
? ST(e,f) :电梯 e 靠近 f 层时触发传感器,电梯控制器决定在当前楼层电梯是否停 下
? RL:电梯按钮或楼层按钮被按下进入打开状态
? 电梯的状态转换规则 (这里给出的规则仅发生在关门之时 ):
? S(U,e,f)+DC(e,f)=>M(U,e,f+1) :
第十七页,编辑于星期一:十四点 十八分。
电梯按钮状态转换的相关 谓词
? 为了定义与这些事件和状态相联系的状态转换规则,
需要一个谓词 V(e,f) ,它的含义如下:
? V(e,f) :电梯 e 停在 f 层
? 如果电梯按钮 (e,f) 处于关闭状态〔当前状态〕,而且 电梯按钮 (e,f) 被按下〔事件〕,而且电梯 e 不在 f 层 〔谓 词〕,则该电梯按钮打开发光〔下个状态〕。状
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
航空电子领域中基于形式化方法的安全需求描述
1. 基于形式化方法的安全需求描述意义和准则
在许多领域软件系统的安全性与可靠性显得日益重要,尤其在对安全性和可靠性要求极高的综合航空电子领域中软件系统的安全性和可靠性更显重要。
因为综合航空电子系统对于整个飞机的安全性起着至关重要的作用。
然而,伴随着航电系统日益增长的复杂性和系统集成的问题依然会增加潜在的错误并可能直接影响到飞机的安全性和可靠性。
传统的软件工程方法已经很难满足这样复杂和安全性要求极高的需求,这迫切需要新的方法来设计开发安全性更高,资金时间投入更少的系统,为了解决这些实际问题,基于模型的开发方法(MBD)被引入,通过对需求描述严格的形式定义,可执行的原型设计,定理证明,模型检测,和高质量代码的自动生成等形式化技术大大提升了系统的安全性和可靠性,同时也大大节省了时间和成本。
大多软件开发的错误源于需求分析阶段的逻辑错误。
这些逻辑错误会传递到软件开发的后续阶段,大量的重复工作花费在修补由于需求阶段的逻辑错误而导致的系统错误。
而且,需求错误往往是相当严重的错误。
需求阶段的错误比设计或实现阶段所引入的错误更加影响系统的安全性。
发现错误的一个有效途径就是创建一个系统外部可见行为的精确且可执行的系统模型。
为了建立可读的且数学形式上的精确的系统功能行为模型,已经有多种符号语言被开发出来。
比较出名的有SCR,RSML,SpecTRM,和Statecharts。
基于这些符号语言来创建模型能够发现大量系统描述中的错误。
而且能够作为与用户交互的实模型,并能够类仿真的形式向客户执行。
最好的情形就是经过精心设计的符号语言能够支持系统模型的自动形式化安全分析(如图1.1)。
它使得通过一致性和完备性检查来发现错误成为可能,同时有能力来检查应用程序建模的一些性能描述。
总之,创建系统行为的精确模型不仅仅使得能够在系统生命期尽早地发现错误,并及时地解决,还能够提升后续的系统设计,编码,验证,测试的质量。
图1.1 基于形式化方法的安全性分析
系统需求描述作为系统开发的蓝图,它应该是对系统期望行为的完备的,一致性的,精确的描述。
否则将会把不安全因素带进后续的设计、编码、测试等环节,将严重影响系统的安全性能同时也增加更多的开发代价。
所以提供方法和技术使尽可能早地排除与需求相关的错误显得非常重要。
为了分析和发现需求描述的错误,描述语言所应具有的一些标准对于我们达到我们的目标至关重要。
准则一是需求描述语言只详细描述系统的黑盒行为而不包括内部的设计信息;准则二是描述语言要让在保证形式化的准确性的同时能够方便专业技术人员和非专业人员易读易理解建立起他们对系统统一的认识;准则三,就是要具有描述复杂系统的能力,在这里主要借鉴了Harel 所提出的“clustering“的概念,另一方面也用到了Harel“abstraction”思想;其他两个标准是最小性和简洁性。
最小性就是需求描述仅包含对开发和分析有用的信息。
这样能够节省更多的时间,同时让读者聚焦于对象的重点上。
简洁性就是尽量避免描述语言让描述和分析过程复杂化。
语言应该简单易于使用而且能让描述更可读和更易查错。
2.RSML
为了更好地描述需求,满足上面所提到的符号语言的要求,在这里我们引入了RSML语言,RSML(需求状态机语言)是源于David Harel的Statecharts,是加州大学的Nancy Leveson研究组开发的一种基于状态的描述语言用于对过程控制系统的行为建模。
RSML的主要设计目标就是让非计算机专业人员比如最终用户,应用工程师,管理者,以及来自监管机构的代表都能易读易理解用RSML 语言写的需求描述。
一个RSML描述由变量,状态,转移,功能函数,宏,常量,和接口组成。
需求描述中的变量用于存储外部传感器的输入值,也用于暂存系统的输出值。
Statecharts以分层的形式组织状态。
RSML包括三种不同类型的状态:复合状态,平行状态,和原子状态。
原子状态等同于传统有限状态机中的状态。
平行状态用于模型固有的平行性或建模对象的局部。
复合状态(superState)一方面用于隐藏状态机的局部细节来使得所得模型更易理解,另一方面封装状态机的确切行为。
图2.1是ASW需求描述中状态的分层建模的例子,它包含以上所说的三种不同状态类型。
图2.1 High-level ASW Model
RSML中的状态转移控制着一个状态到其他状态的转移。
状态转移由一个原状态,一个目的状态,一个触发事件,一个监督条件和一组动作事件组成。
为了执行一次RSML状态转移,必须有下列情况为真:(1)原状态当前处于激活状态,(2)触发事件出现在原状态处于激活态,(3)当触发事件发生时监督条件必须为真。
当所有这些情况都满足时,目的状态将成为激活状态,而原状态将变为非激活状态,同时产生行为事件。
监督条件简单地以说就是在不同的状态和变量之间的一种谓词逻辑表达式,用命题逻辑符号语言传统地去定义这些条件通常会陷入复杂的表达式并且变得不可读。
为了克服这一问题,在RSML中使用了析取范式(DNF)的一种表格表示,这种表格被称为AND/OR表。
AND/OR表格的最左一列列出了逻辑短语。
其它的列是这些逻辑短语的连接,并且列出了表达式的逻辑真值。
并规定只要有某一列的值为真则整个表的值就为真。
而每列的真值为真当且仅当此列的真值与它们所关联的逻辑短语的真值都一致。
AND/OR表2.1是谓词短语
((Expression-1∧┐Expression-2)∨(Expression-1∧Expression-3))的逻辑等价描述。
AND/OR表2.1
为了进一步增加需求描述的可读性,Irvine研究组在RSML中引进了许多其它的语法结构,例如,允许谓词中的表达式定义为形如case语句的函数,允许宏定义经常使用的且相同的条件。
图2.2,“BelowThreshold”和“AltitudeQualityOK”都是宏。
宏BelowThreshold的定义在图2.3中给出。
图2.2 A Transition and Macro from the ASW requirements RSML支持系统级组件间通信的严格的描述和分析,系统组件间的的联系通过通道的形式。
每个组件可能有多个输入/输出通道。
通信的发生通过消息机制来驱动。
3.RSML用于需求形式化描述的好处
一.RSML语言易读易理解,能够使设计人员和各户之间对于需求描述的理解更一致。
能够让各户更多地参与到系统开发中来,从而使开发的产品更加地符和期望。
二.RSML形式化地描述系统的行为模型,能够方便地翻译为定理自动证明和模型检测的输入形式使模型可执行,通过模型检测和定理自动证明来保证系统行为的完备性和一致性,从而提升系统的安全性。
三.精确的行为描述,可以减少系统的冗余,节省时间。
四.提供了一系列针对复杂系统的语法机制,适用于描述复杂性的系统。
五.基于这种需求描述的需求形式化分析方法,可以使得大量错误在需求阶
段被找出,避免了错误的向后传递,大大减少后续排错,返工的时间消耗。