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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。



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


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


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

解决方案:不仅要把用户吸引到软件开发过程中来,而

且在可能情况下,让用户自己来定义、设计、开发、维 护和修改他的软件。这对某些特定类型的软件例如MIS 之类,是可能的。为达此目的,必须免去用户学习和掌 握软件开发知识的负担,还要免去用户按形式化方法做 需求分析的负担。而做到这一点的关键是以强大的知识 支持作为后盾。为了实现这个目标,我们研制了《天鹰》 软件。 以前的MIS开发工具常由软件工程师根据用户的要求手 工开发,不但工作量大,而且难以正确反映用户的需要。 《天鹰》的特点是可让用户自己来开发所需要的MIS, 因为使用《天鹰》并不需要软件知识,只需要本行业的 业务知识。《天鹰》提供一种近乎行业自然语言的描述 语言,称为BIDL。用户很容易用BIDL语言写清楚本单 位的组织,人员和业务情况。一旦情况写清楚了,《天 鹰》即可自动为他生成一个可用的MIS系统。

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

例如, 当有多个申请占用CPU运 行的进程时, 有关CPU分配的 进程的状态迁移
系统的状态=就绪,运行,等 待 具有的事件=t1,t2, t3, t4 t1 ─ 中断事件 t2 ─ 中断已处理 t3 ─ 分配CPU t4 ─ 用完CPU
经过几年乃至几十年的努力,21世纪的软件生 产将是一种大规模的工业化生产活动,以符合 产品化质量要求的工业标准,实现软件生产自 动化。其突出特征是:计算机真正成为人们的 一种工具,用户即为系统分析员,“软件过程 是软件”。 为达到这一目标,形式化技术与工程化技术必 然是有机的统一,并容纳其它相关的技术,产 生一种新的软件生产方法、技术、规程以及相 应的工业标准,并产生与之相适应的“傻 瓜”CASE,为软件产业奠定坚实的基础,使 软件走上工业化生产方式,形成规模经济。
C1的回答R1期间要 能接收从HOST2发 出的命令C2。”
Petri网 Petri网已广泛地应用于硬件与 软件系统的开发中,它适用于 描述与分析相互独立、协同操 作的处理系统,也就是并发执 行的处理系统。
Petri网简称PNG
(Petri Net Graph), 用四元组表示:C=(P,T,I,O) P:有穷位置集 T:有穷转换集 I:输入函数 O:输出函数
形式化方法
形式化方法是建立在严格数学基础上、具有精确数学语义 的开发方法,即就是用数学语言来描述软件的设计规约。 形式化方法可以分为形式化描述和建立在形式化描述基础之 上的形式化开发 形式化的描述:用形式化的语言(具有严格的语法语义定 义的语言)描述描述软件系统及其行为模式,以更好地刻 画软件系统的性质。 形式化的开发:用形式化的语言来描述软件需求和特征, 并且通过推理验证来保证最终的软件产品是否满足这些需 求和具备这些特征,符合给定的行为模式。

形式化方法的优点
在开发大型软件系统的工程中应用数学, 能带来以下优点: 能引导软件工程师按照严格的步骤写出需求说 明,简洁准确地描述应用系统运行前后的状态。 可用数学方法验证发现存在的矛盾和不一致性. 可在不同的软件工程活动之间平滑的过渡,不 仅功能规格说明,而且系统设计也可用数学表 达,甚至程序代码也是数学符号. 提供高层确认的手段,可使用数学方法证明设 计符合规格说明,程序代码正确地实现了设计 结果。
应用形式化方法的准则





应该选用适当的形式化方法:主要包括有限状态机、时 序图、Petri网、Z、VDM等。 应该形式化,但不要过分形式化 应该估算成本 应该有形式化方法顾问随时提供咨询 不应该放弃传统的开发方法 应该建立详尽的文档 不应该放弃质量标准 不应该盲目依赖形式化方法 应该测试、测试再测试 应该重用
软件工程的发展
软件工程的发展大体围绕着两条主线,一条是形式 化技术,一条是工程化技术。


工程化技术的研究包括方法学的研究以及与其相关的支撑 环境的研制。在方法学方面,大体可分为程序设计方法学 和软件开发方法学,前者是关于小规模程序设计,后者是 关于大规模软件的开发过程。目前,主要有结构化方法和 面向对象方法. 在软件工程学中,方法和工具是同一问题的两个不同方面, 方法是工具研制的先导,工具是方法的实在体现。代表我 国CASE领域先进水平的“青鸟”系统,其主要目标是研 究以软件复用为基线的,基于构件/构架模式、采用集成组 装方式的软件工业化生产技术。旨在建立中国软件产业的 基础,为软件开发提供符合中国文化特征的CASE技术标 准和开发规范,提供实用、开放的软件开发平台和环境。
行为建模
1)
2)
3)
系统的需求规格说明通常是用自然语言来叙 述的,但是用自然语言描述往往会出现二义 性。 为了直观地分析系统的动作,从特定的视点 出发描述系统的行为,需要采用动态分析的 方法。 最常用的动态分析方法

有穷状态机

时序图 Petri网
状态迁移图
状态迁移图是通过描述系统的
状态及引起系统状态转换的事 件来表示系统的行为。
状态迁移图的优点
状态之间的关系能够直观地捕
捉到 由于状态迁移图的单纯性,能 够机械地分析许多情况,可很 容易地建立分析工具
有穷状态机
包括5部分:状态集J、输入集K、由当前状态和 当前输入确定下一状态的转换函数T、初态S和 终态集F 状态集J:{保险箱锁定,A,B,保险箱解锁, 报警} 输入集K:{1L,1R,2L,2R,3L,3R} 转换函数T:如表4.1所示 初态S:保险箱锁定 终态集F: {保险箱解锁,报警}

《天鹰》软件
背景:


形式化方法的优点是它能引导软件工程师或程序员按照严 格的步骤写出需求说明, 但使用任何形式化方法的前提是 已经确切和完整地收集到了用户的需求信息。否则不管形 式化方法在理论上如何严密,它是不能帮助我们完成软件 开发任务的。因此应尽可能多地把用户吸引到软件开发过 程中来,使用户能尽早发现正在研制中的软件与他的需求 之间的偏差,甚至是发现已经写好的需求说明和他的真实 需求之间的偏差,从而及时修改需求说明和设计。 但是,形式化方法很难被直接用作软件工程师和用户之间 合作的基础,形式化的需求说明语言也很难在这两部分人 中间起沟通作用,因为他们的知识背景太不相同了。更何 况在研制和运行软件的过程中,需求信息可能改变,修改 设计或重新设计都会给这两部分人带来沉重负担。


《大天鹰》由一个领域知识分析和建模器、MIS自动生成器、 一个MIS知识库和一组领域知识库构成。《大天鹰》除具有 《中天鹰》的全部功能外,还可以用来对一个应用领域作分 析,建立新的领域知识库,并在此基础上生成《小天鹰》和 《中天鹰》。因此,《大天鹰》是一种开发工具,适合专业 软件开发人员和软件开发公司使用。 无论是在软件开发方法学方面,还是在软件产业发展方面, 《天鹰》项目的实践都给了我们很多启示。总结起来有三点: 第一是要在开发应用软件时尽可能把软件知识和领域知识 区分开来; 第二是在组建开发队伍时要把软件开发人员和领域知识开 发人员区分开来; 第三是在发展产业时要把软件产业和知识产业区分开来。

时序图

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

采用扩充时序图可表示 进程间的通信流, 用于 分析几个 事件的交错现 象。C1与C2,R1与R2 是交错的。因此,可以 做如下分析:“必须设 计成HOST1 在等待
其次是对软件设计的描述:形式化方法的优点对于 软件要求的描述同样适用于软件设计的描述。另外 由于有了软件要求的形式化描述,我们可以检验软 件的设计是否满足软件的要求。对于一些简单的系 统,形式化的描述有可能直接转换成可执行程序, 这就简化了软件开发过程,节约了资源和减少了出 错的可能性。 另外,形式化方法可以用于程序的验证,以保证程 序的正确性。对于测试来讲,形式化方法可用于测 试用例的自动生成,这可以节约许多时间和在一定 程度上保证测试用例的覆盖率。
半形式化方法
软件工程使用方法可分成:非形式化、半形式化和形式化 半形式化: 结构化分析(SA)方法 利用图形等半形式化的描述方式表达需求:用数据流图、 状态转换图或实体-联系图建立数据、行为和功能模型, 形成需求说明书中的主要部分。 利用结构化语言描述加工逻辑:结构化语言是介于自然 语言和形式语言之间的一种半形式语言。加工逻辑结构 可分成外层和内层两层:外层用来描述控制结构,采用 顺序、选择、重复三种基本结构;内层对于顺序执行和 循环执行的动作,用结构化语言描述。 缺点:可能存在矛盾、二义性、含糊性、不完整性及抽 象层次混乱等问题。


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