ImageVerifierCode 换一换
格式:PDF , 页数:39 ,大小:7.09MB ,
资源ID:169389      下载积分:5000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-169389.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(HB Z 182-1990 状态机软件开发方法.pdf)为本站会员(孙刚)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

HB Z 182-1990 状态机软件开发方法.pdf

1、中华人民共和国航空航天工业部航空工业标准HB/Z 182-90 指导性技术文件状态机软件开发方法1990-09-18发布1991-02-01实施中华人民共和国航空航天工业部批准中华人民共和国航空航天工业部航空工业标准状态机软件开发方法HBZ 182-90 1 主题内容与适用范围本规范规定了使用状态机方法开发软件的统一步骤、符号和要求。本标准适用于以状态机为模型开发软件的全过程,以状态机为模型开发软件的各单位都应遵守本标准。2 引用标准OB/T 11457 HB 6469 :HB 6464 日B6465 日BjZ180 HB/Z 181 3 术语和缩写词. 1 术语软件工程术语软件需求规格说明编

2、制规定软件开发规范软件文档编制规范软件质量特性与评价方法编程格式下面给出在本标准中用到的一些术语的定义,其它术语的定义按软件工程术语标准(GB/t 11457)。3. ,. 1 系统单元系统单元是指系统或系统的某一个组成部分。3. .2 软件单元软件单元是指仅由软件组成的系统单元。3. .3 目标函数目标函数是指基于函数模型对软件单元的需求规格说明所作的定义。它以输入、输出及其变换规则的形式描述软件单元。3.1.4 状态机状态机是指描述系统功能的一个特殊函数,它根据输入和系统的当前状态,产生输出和系统的新状态值,并以真新状态值替代原有的当前状态值。!. 1. 5 状态状态是指状态机以及基于状态

3、机模型的灰箱和明箱中所存储的、能够反映其输入历史即航空航天工业部1990-09-18发布1991-02-01实施历次当前状态值及搏变换规则的数据。3. ,. 6 目标状态机HBjZ , 82-90 日标状态机是指基于状态机模型对软件单元的需求规格说明所作的定义。它以输入、输出、状态(必要时包括初始状态及其变换规则的形式描述软件单元。3. ,. 7 黑箱黑箱是指一种基于函数模型的机制,它对应每一输入产生确定的输出,而且其输出是根据接受的输入历史而唯一确定的,但其内部结构是隐藏的。3. 1, 8 灰箱灰箱是指一种基于状态机模型的机制,由状态和机箱两部分所组成,其机箱部分是一个仅表示其变换规则的黑箱

4、。3.1.9 明箱明箱是指一种基于状态机模型的机制,由状态和机箱两部分所组成,其机箱部分除表达其变换规则外,还表达状态机中包括状态在内的各组成部分之间的控制结构。3. ,. 10 机箱机箱是指状态机以及基于状态机模型的灰箱和明箱中执行其变换规则的黑箱。3. ,. 1 箱单元箱单元是指对同一个软件单元所作的黑箱、灰箱和明箱等三种描述的统称;对同一个软件单元来说,这三种描述的外部属性应该完全致。3. ,. 12 过程过程是指实现目标函数的软件单元。3. ,. 13 模块模块是指实现目标状态机的软件单元,它由一组:保留数据和一组存取与修改这些数据的过程所组成。3. ,. 14 验证验证是指确寇软件开

5、发周期中的个给定阶段的产晶是否达到上一阶段确立的需求的过程F或指确定模块(或过程)是否正确实现其目标状态机(或目标函数)的过程,或指确定箱单元中灰箱的输入、输出关系是否与其黑箱的输入、输出关系一致以及明箱的状态和输、输出关系是否与其灰箱的状态和输入、输出关系一致的过程。3. 1, 15 扩展扩展是指在箱单元中,通过定义状态数据由黑箱产生灰箱的过理;或指通过定义过程的控制结构由灰箱产生明籍的过程。3. 1. 16 归约归约是指在箱单元中,通过隐蔽过程询控制结构由明箱得到灰箱的过程1或指通过隐蔽状态数据由灰箱得到黑箱的过理。4 软件的囔达在软件开发过程中,应该使用下列描述工具p否则,应得到任务委托

6、单位的认可。2 a.箱描述图;b.箱描述语言:C.箱输入处理输出图zd.数据字典;e.事务依赖树:f.箱结构树。HBjZ 182-90 这些描述工具详见附录A(补充件。5 软件开发过程在用状态机开发方法开发软件的整个过程中,除了应采用数据抽象、信息隐藏和模块化设计等软件工程技术之外,还应注意表达软件行为的数学模型。在软件开发过程中使用状态机开发方法时,官显式地或隐含地采用状态机模型来表达软件的行为。软件的数学模型详见附录B(参考件当应用状态机方法开发软件时,还应该遵循以下开发步骤.并应采用所指出的描述工具。根据开发的实际情况和需要,各步可以重复进行,也可以返回到其前面的某一步进行。在返回到以前

7、某步或重复执行本步时,仍然应该遵守以下各条款的要求。有关软件开发过程的各个阶段的技术要求,必须遵守软件开发规范(HB6464)中规定的基本条款。5. 1 需求分析在需求分析阶段,软件开发人员应充分了解用户对软件的需求,以箱结构图、箱结构树与事务依赖树作为与用户通讯的基础,并把共同的理解明确、清晰地表达在需求规格说明中,对需求的描述应该完整、一致、准确、可以验证、可以度量、便于修改和可以追踪。关于编写这个文档的要求,应该遵守软件需求规格说明编制规定)(HB6,169)中规定的条款Q5. 1. 1 事务分析事务分析的目的是识别要处理的事务的类型及输入、输出,形成软件单元的黑箱描述。事务分析可以按以

8、下步骤进行:a.确定软件单元的基本输出。b.识别产生基本输出的事务。C.对每一个事务,识别其必要的支持此事务的其它事务,直到没有新的事务出现。这些事务之间直接或间接的依赖关系用事务依顿树表示,其中每一个事务将对应一个箱单元。d.对每一个事务?识别其输入和输出。事务的输入可能是外界输入,也可能是该软件单元本身的箱单元中当前的状态数据川司样,事务的输出可能是向外界的输出,也可能是对本身的箱单元状态数据的更新。e.事务分析结束时定义的所有事务应能接受外界所有有用信息,产生所有期望输出;否则,重重执行以上各步。5. 1.2 状态分析状态分析的目的为识别状态数据,更清晰地描述学务。所有事务、事务的状态集

9、合以及事务的外界输入和外界输出构成了软件单元的灰箱描述。状态数据可以通过以下步骤得到:3 HO/Z 18290 a.分析每一事务及其事务的输入和输出,其输入中能够从上次事务变换中得到的数据即为其当前状态数据,输出中可以供下次事务变换使用的数据即为其新状态数据。b.检查所有事务,即应保证每个事务变换输入中的当前状态数据是某一事务上次变换输出中的新状态数据,又应保证每个事务变换输出中的新状态数据是某一事务节次变换输入中的当前数据状态。5. .3 过程分析过程分析的任务是根据在5.1. 1条款中所定义的事务以及在5.1.2的条歌中所定义的状态,用箱描述语言书写的过程进一步解释每一个事务的含义。5.2

10、 软件设计在软件设汁阶段,软件开发人员应根据需求分析中所确立的软件需求规格说明,建立满足需求的软件系统,并用箱描述图、箱结构树、数据字典与箱描述语言清晰、准确地表边软件设计说明。有必要时,软件设计要分成软件概要设计与软件详细设计两步,并将软件设计说明分成概要设计说明与详细设计说明两部分。设计过程采用自顶向下对箱单元扩展的逐步细化方法。设计结果应该经过验证。5.2. 1 黑箱设计a.根据软件单元目标函数的变换规则,定义黑箱的事务功能。b.设计黑箱的输入和输出.C.对每一黑箱,对其事务功能进行分解,定义新的软件单元并作进一步设计,对软件单元的要求即为其目标函数,它将对应新的黑箱。5.2.2 灰箱设

11、汁a.确定与黑箱对应的软件单元应保存什么数据,定义灰箱的状态。必要时还应定义灰箱的初始状态。b.通过对状态数据的操作分析,细化黑稽的变换规则,定义灰箱机箱的变换规则。C.根据状态数据的目的及其机箱变换规则的操作,设计状态数据结构,包括设汁其数据库和文件的格式。d.数据需求设计。对每一状态数据,根据需要应提供其读、写和存储功能。必要时还要进行满足数据的保密性、完整性、一致性、可靠性、自我保护性、存取效率等方面需求的设计。5.2.3 明箱设计a.设计灰箱中机箱的控制结构p从而将该机箱的变换规则分解成若干子规则。若这些子规则仍然比较复杂,则将其定义为一个新的黑箱,并重复这些步骤。若这些子规则已比较简

12、单,可以进入下一步骤。b.自顶向下设计过程,实现灰箱的事务功能。C.细化过程,设计子过程。d.定义新的软件单元。对软件单元的要求即为其目标函数,它将对应新的黑箱。明箱中过程和子过程可以调用此黑箱。e.迁移状态数据,应使其能与明箱中的低层次过程直接联系,有必要时,设汁状态迁移后的箱单元。HB/Z 182-90 5.2.4 验证a.验证箱单元的每次扩展和细化,即比较箱单元归约后的外部属性是否与定义此箱单元的目标函数或目标状态机一致。b.验证软件单元是否满足需求分析中其目标函数和目标状态机的要求。c.验证软件单元是否满足其它需求。5. 3 实现实现阶段的任务是根据箱描述语言BDL描述的明箱中的过程进

13、行编码,并测试每一软件单元。5.3. 1 编码a.用高级语言实现箱结构树中每一箱单元的明箱。若箱单元只有黑箱时,则实现其黑箱的内部结构.b.黑籍的结构以过程概念实现二过理输出与输入和高层次的状态数据有关。还要实现层次的状态数据及其操作过程。c.明箱以模块慨念实现,除了实现输出与输入和较高层次的状态数据以外,还要实现层次的状态数据及其操作过程。d.状态可以用全局变量、文件或数据库等实现,也可以用编程语言提供的其它手段如数据共享等实现。5.3.2 单元测试必须对所开发的软件单元(包括函数、过程或模块)按以下步骤进行单元测试。测试时,不仅要考虑过程和模块的输入与输出,还应考虑作为输入、输出的本模块状

14、态以及箱结构树中较高层次上的模块的状态数据。a.完成代码的逐步审查.b.进行结构测试,要求被测单元中每一条可执行的源代码语句至少执行一次。被测单元的分支覆盖率由任务委托单位或用户与开发单位共同商定,但分支覆盖率不得低于80%。若语句覆盖率达不到100%时,应查找其原因,并需得到任务委托单位的认可。c进行功能测试,检查目标函数和目标状态机的每一变换规则是否都能正确实现要求,必要时应考察输入域、输出域和状态域的覆盖情况。d.进行鲁棒测试,在输入边界值、非法数据与非法命令时,软件系统能否满足预定的鲁棒性要求。5. 4 软件综舍测试软件综合测试应检测程序的功能与性能是否满足整个软件的目标函数和目标状态

15、机的要求。软件综合测试采用自顶而下与由底向上相结合的组合模式;对每一新的组合,至少应要求被调用函数、过程或模块的功能测试用例以及调用函数、过程或模块的功能测试用例都能正确执行。在软件综合测试阶段,必要时要进行全面的演示检蓝.以审查用户界面是否友好,对命令的响应时间是否满足预定的要求。软件综合测试首先应由软件开发人员进行,并作好详细的测试记录;然后由任务委托单位5 HB/Z 182-90 或用户组织专家进行必要的审查和采样测试,以确保所开发的软件系统的质量。8 文档编制本章给出使用状态机软件开发方法开发软件时应该编制的文档及其要求。在编制文档时.应遵守HB6465中规定的各项要求,此处只给出在所

16、规定的文档中应该采用的表达技术,凡在此处没有给出表达技术规寇的其它文档,一律按HB6465中规定的条款执行。a.在需求规格说明中,功能需求应该表达为目标函数和目标状态帆,并用穗猫越图、箱描述语言或箱输入处理输出图来描述:数据需求用数据字典来定义(包括巴科斯范式描述。其中,还应给出表示任务分解情况的箱结构树和功能中各项事务的关系依赖树。其附童在应包括分析过程中所有的箱描述图。b.在软件设计说明中.软件结构应用箱结构树表示,软件单元设计的完整定义由箱描述语言给出,或者用箱输入处理输出图和箱描述语言进行描述。数据设计用巳科斯范式及其数据结构定义给出。c.在源程序中,每一程序单元之前应有描述体部分,其

17、中程序的功能、输入与输出参数内.容应以目标函数或目标状态机的箱描述语言形式描述.程序中的注释也应以箱描述语言出挥给出。其程序编程格式应符合HBjZ181中的各项规定。d.在测试计划和测试报告中,应该给出软件单元的目标函数和目标状态机描述以及相荣的测试分析。测试用例包括一个(或一串)外界输入和系统状态数据输入两部分,期蕴输出相实际输出包括外界输出和系统状态输出两部分。在测试报告中,不仅要给出实际的结构覆盖率,还应尽可能给出必要的输入域、输出域和状态域的覆盖率下的实测结果以及实测结果与期望结果之间的差值。e.在用户手册中,软件描述应给出目标函数和目标状态机,命令格式及其命令组合应给出巴科斯范式描述

18、,并用受限自然语言或结构化英语给出描述。6 Al A2 代号BB BDG BDL BIPO BNF BST CB DD E GB MB 。SM TDT 黑箱(BlackBox) H8/Z 182-90 附录A软件的描述工具(补充件箱描述图(&xDescripton Graph) 箱描述语言(BoxDescription Language 箱输入处理输出图(BoInputProcessing Output) 巴科斯范式(BackusNormal Form) 箱结构树(BoxStructure Tree) 明箱(ClearBox) 数据字典(DataDictionary) 表达式(Expre皿io

19、n)灰精(GrayBox) 输入(Input)机箱(MachineBox) 输出(Output)状态机(State.Machine) 事务依赖树(TransactionDependency Tree) 箱描述固精描述因是箱单元的一种图形表达工具,它可以清晰地表达黑箱的输入与输出、灰箱的输入、输出与状态以及明箱的输入、输出、状态与控制结构。箱描述图是软件需求分析与概要设计阶段的主要描述工具。A2.1 黑箱描述图黑箱用于定义软件单元的外部属性,但隐藏其内部结构,即集中注意其输入、输出关系。如图Al所示。一个黑箱应接受输入,并在接受下一输入前已经产生个确定、唯一的输出。广- - -寸t软件单元1l一

20、一一一一一ll 0 L_ _ _ _ .J 图Al黑箱描述图A2.2 夜糟描述固灰相要描述软件单元内部的状态数据.但不描述数据变换的控制结构,如图A2所示。在7 四B/z182-90 灰箱中,状态用于存储反映输入历史的有关数据:机箱接受外部输入和内部状态输入,产生外部输出和代替旧状态的新状态值。软件单元. . . . . . . . . . . _._.-._._._._-_._ . 。新状态值态箱状一机旧状态值, ._._._-_._._._._.-. . 图A2灰箱描述图A2.3 明箱描述固明箱不仅要描述软件单元内部的数据状态,而且要描述包括状态在内的各组成部分之间的控制结构,如图A3所示

21、。1注明箱中,状态用于存贮反映输入历史的有关数据,机箱Mi还可以是一个黑箱,其每一输入都包括外界输入和内部状态的输入,每一输出也都包括外部输出和代替旧状态的新状态值p其中C为条件开关,其输入包括外界输入和内部状态,输出导致某一机箱的执行或给出外部输出,但C不影响状态值1其中E为选择开关,其输入包括外界输入和内部状态,根据输入选择相应的机箱执行。明箱的基本控制结构应采用以下6种,如图A3a至图A3f所示。如要采用其他控制结构,应得到任务委托单位的认可。A2. 3. 1 顺序结构顺序结构如图A3a所示,控制顺序地从机箱Ml转向机箱M2。A2. 3. 2 选择结构a.如图A3b所示,如果条件C成立,

22、则执行机箱Ml.否则执行机箱M2a在执行了机箱Ml或机箱M2之后,控制转向公共点基本形式若条件C不成立而且无机箱M2可执行时,控制直接转向公共点(可选形式)。这种条件结掏即语言中的IF-THEN-ELSE结构。b.如图A3c所示,根据选择开关E的值,控制转向执行其后相连的某一个机箱Mi;之后,控制转向公共点.这种结构即语言中的CASE结构。A2. 3. 3 循环结构a.如图A切所示,判断条件C,若条件C为真,则控制转向机箱Ml,并且再次判断条件c,若条件C为假,则控制转出循环。这种循环结构即语言中的-WHILE结构。b.如图A3e所示,执行机箱Ml,然后判断条件C,若条件C为假,则控制继续转向

23、执行机箱Ml,并再次判断条件C,若条件C为真,则控制转出循环。这柿循环结梅即语言中的-UNTIL结构,8 HB/z 182-90 并行结构并行结构如图A3f所示,控制同时转向机箱Ml, ,Mn,在所有的机箱都结束之后转向一个公共点p只要有一个机箱没有结束,控制就不能到达公井点。软件单元状态. j j i M1:ii:M2: A2. 3. 4 。一兀态M;-bi-f-W产单状件一软ji-ji-i,. LAvh 。围A3bIF-THEN-ELSE条件结构顺序结构回A3aO F 飞令一兀ee-lle- ,;:ai申:单一件HEif-+软态,:状二阳软件单元T 一了一.,状态. :Ml : f ;一-

24、ji ;寸17.汁:.-II( E)-: :._., : .4-.o v : :Mn: . : 9 图A3dWHILE-DO循环结构国A3cCASE条件结构HB/Z 182-90 -.-.-. 软件单元一兀单件软F 状态、!。T A态M心状M ,-吨_ . _叶。+ _ _6 . . -_-_. :Mn: ;.-.i L._: 图A3e00-UNTIL循环结构;写A3f并行结构回A3明箱描述圈A3 箱描述语言箱描述语言是一种形式化的描述语言,由严格正式的语法和灵活描述的语句内容所组成。箱描述语言可描述不同抽象级别的箱单元,是记录软件设计结果的主要描述工具.ff m :.f j支:f人员以及设计

25、人员与其他各类人员之间的通讯。下面给出用箱描述语言描述的黑箱、灰箱与明箱,问时给出这些箱单元中的过程语句与注释语句。A3- 1 箱单元描述A3. 1. 1 黑箱描述DEFINE D INPUT : type OUTPUT : type ITRANSITION END A3.2 灰箱描述DEFINE GB 10 INPUT : type OUTPUT : type STATE / MACHINE END A. ,. 3 明箱描述DEFINE CB INPUT : type OUTPUT : type STATE / MACHJNE DATA H8/Z 182-90 PROC () CORP EN

26、D A3.2 结构语句在下面的顺序结构、选择结构、循环结构和并行结构等语句中,PSl,PS2、可以是黑箱、灰箱、明箱、过程或BDL语句,J表示括号中的内容是功能注释,口及其功能注释可以省略。A3. 2.1 顺序结构DO sequence function PSl; PSn OD A3. 2.2 选择结构a. IF-THEN结构IF Lalternation function 11 HB/Z 182-90 condition THEN then part functionJ PSl FI b. IF -THEN -EI.SE结构IF alternaton functionJ condtion T

27、HEN then part function PSl ELSE el回归rtfuntion PS2 FI c. CASE结构CASE c脚functioncondition ld1nn o0 .UJU FLiH nn h仙IqL nn 阴阳ttFll、J、J咽吨,ee uu a . A aa VV J、4飞THT归R内RMUAIAI PP PART (value n)pa口nfunction 民nothers PSn+l ESAC A3. 2.3 循环结构a. WHI.LE-结构WHII iteration function condition 00 do part function PSl

28、00 b. DO-UNTIL结构 iteration functionJ do part functionJ PSl UNTIL 12 condition 00 A3. 2.4 并行结构WITH state CON concurrerit function PSl,因1.funtlonJ 囚2,四2fun叫onJPS叫四nfunctlon NOC A3.3 顺序语句A3.3.1 变换规则中的启用语句a.启用黑箱HB/Z 182,-90 USE BB ( J ) b.启用灰箱USE GB (; ) C.启用明箱USE CB ( ; ) A3. 3. 2 过程中的调用语句a.调用黑箱RUN BB

29、( J ) b.调用灰箱RUN 08 (; ) C.调用明籍RUN CB ,) d.调用过程R UN ( ) A3. 3. 3 赋值语句a.简单赋值语句: = 先计算出赋值号右面表达式的值,然后赋给赋值号左面的变量。b.同步赋值符号, ,: = , , 表示已知(或者经过计算后可以得到赋值号右面所有的值,并将它们同时赋给赋值号左商相应的。A3.4 功能注释3 HBjZ 182-90 功能注释可用受限的自然语言、结构化英语或其它规定的符号表达;注释中也可使用下面的条件符号:I 表示如果条件成立,则结果为,否则结果为。箱输入处理输出固箱输入处理输出图用格式固定的表格描述箱单元的定义,并给出与其相接

30、口的其它箱单元的关系。箱输入处理输出图有变换式BIPO图和结构式BIPO图两种(不引起混淆时统称为BIPO图),其格式分别如图A4与图A5所示,在图A4中,Ii中的某些值可以与Iq中的某些值相同,Oj中的某些值可以与Or中的某些值相同。变换式BIPO图和结构式BIPO圈可描述目标函数、目标状态机、黑箱、灰箱和明箱。注:在用箱输入处理输出图描述软件时,一般用一张标准尺寸的纸表达一个BIPO图.如果变换规则部分或过程部分较长,可将全部变换规则或全部过程抽出,放在另加的附页中。此外,如果必要,也可将两种BIPO图合并在一起,即把变换规则与过程描述合写在一起。A4 变换式BlPO囤PR.EPARED

31、BY: c. (operation number): = (operator)(number) d. (number): = (digit) * (digit) e. (operator): = + 1-I * 1/ f. (digt):=I1121314151自171819图A6BNF描述示例AS事务依赖树事务依赖树是由事务组成的树形圈,记录事务分析中各事务问直接或间接的依赖关系,可作为将软件分解为层次结构软件单元时的参考。示例阁A7中,对基本事务A,需要事务B与C的支持,对事务B.需要D、E与F的支持.这种事务依赖树描述技术与其他软件开发方法中描述软件结构的技术(如结构化设计中的软件结构图

32、等是等价的。A7 箱结槐树A /-B C D/|E 图A7事务依赖树示例箱结构树BST为箱单元组成的树形图,用于描述软件的结构,如图A8所示.当把箱结构树用于需求分析时,每个箱单元对应软件的一个模块,用目标函数或目标状态机描述,没有子层的黑箱对应目标函数,没有子层的灰籍和明箱对应目标状态机,当把箱结构树用于设计时,每一个箱单元对应一个模块或过程,没有子层的黑箱对应过程,没有子层的明箱对应模块。16 Z画/Z182-90 BB GB CB BB BB BB BB BB BB GB GB C CB BB BB BB BB BB GB GB GB CB CB CB I I BB BB BB 图A8箱

33、结构树17 B1 函数模型HBjZ 182-90 附蒙自软件的数掌模型(参考件)函数模型是状态机模型的基础,它采用数学上函数F是输入、输出有序对的集合,即f = (input ,output) 的概念,认为软件单元是函数的变换规则的执行机制,对于软件单元的每一输入,它都产生一个确定的输出。函数模型如图Bl所示。输入变换规则软件单元软件单元边界国Bl函数模型输出描述一个软件单元的函数,其输入域应包括所有可能的输入,即既应包括期望输入与合法输入,也应包括非期望输入与非法输入,函数的变换规则对它们都应能够进行处理,所产生的输出也应能由软件单元所表达。有些软件单元所对应的函数,在同一输入下不一定产生同

34、样的输出,但是在同样的输入历史F-定产生相同的输出。此类软件单元的输出不仅和输入有关,还与其输入历史有关,则这类软件单元应进-步用状态机模型来描述。B2 扶意机模型状态机模型以函数模型为基础,它采用数学上状态机M是输入和当前状态以及输出和新状态的有序对所组成的有序对的集合,即M= ( (input ,currentstat吟(output ,newstatc) 的概念,认为软件单元是状态机的变换规则的执行机制,对软件单元的每一个输入,都产生一个确定的、且与其内部保留数据有关进而与其输入历史有关)的输出。因而状态机模型可以表示为输入、输出及其内部保留数据之间的关系,如图B2所示,其中变换规则部分

35、可以用函数模型来表达,比函数的输入是软件单元的输入与保留数据的选择值,输出是软件单元的输出与保留数据的更新值。软件单元接受外界输入,同时为外界提供输出:在其内部,通过保存和及时更新保留数据,记录输入的历史,从而使变换规则的执行机制在接受输入时,能够根据其保留数据产生一个确定、唯一的输出。18 HB/Z 182-90 ._-._._., . . . . . 输入保留数据L:选;.更择ji新值.值-:变换规则;一输出软件单元软件单元边界图B2状态机模型描述一个软件单元的状态机,其输入应包括软件单元所有可能的输入,即既应包括湖望输入与合法输入,也应包括非期望输入与非法输入,状态机的变换规则应对它们都

36、能够进行处理,所产生的输出应是软件单元规定的输出。同数学上状态机是特殊类型的函数一样,状态机模型也可以看成是特殊类型的面数模型,l!P ; M = ( (nput ,currentstat时;(output ,newstate) ) newstate = N (input currentstate) output = 0 (input ,currentstate) M = ( (input , curremstat时,(0 (input, currentstate) ,N (input ,currentstate) 19 HB;Z 182-90 附录C不例参考件)为了便于对本规范的理解和执行,

37、本附录将给出两个简单示例,从不同侧面较直观地表示状态机开发方法的描述工具和开发过程.由于篇幅所限,此处没有提供其完整的开发文档,也没有详细描述其开发过程,这一点提请注意。C1 孚动计算器示倒Cl.1 黑箱描述手动计算器的使用方法是众所周知的,官每接收一个输入(即一次按键输入就产生一个输出(即给出相应的显示),如图Cl所示,因而从外部属性上可以用黑箱描述如下zDEFINE BB Hand calCulator INPUT I ,preper strtng OUTPUT O:nWT瞟拥erTRANSITION 0: =value of arithmetic expression in 1 END

38、Hand calculator 输入C31+c14+43 iudal-AhfA34主qu旬,他033301LL445图Cl手动计算器黑箱的外部属性C.2 灰箱描述.从圄Cl中我们可以看到,对于相同的输入所产生的输出并不完全相同,例如,对输入3, 显示分别为3,43 .相应于输入+,显示分别为,31 1年等等,这说明它的输出不仅相当前20 HB/Z 8290 输入有关,而且还和其输入历史有关,因此应该进一步用状态机模型进行描述和设计。本例中用四个寄存器BR、VR、HR和FR的状态记录有关的输入历史,其中VR (Visible Regster) :记录当前需要显示的数字;HR (Hidden Re

39、gister) 记录为进一步计算需要保留的数字;FR (Function Register) :记录最近输入的算术运算符;BR (Begin Register) :其状态值有两个,B表示只显示当前的一个输出,C表示将上次输出与当前输出一同显示。这四个状态需存措随输入所窍生的变化如图C2所示,tT表示其值可以是任意的。手动计算器和状态有关的变换规则如图C3所示。输入BR VR FR HR C B 。? Cl C ? C14 C 14 ? C14+ B 14 + C14+4 C 4 十C14+43 C 43 + C14十43=? 57 图C2C14+43=57的状态变化序号(输入,旧状态)(输出,

40、BR VR FR HR BR 1 C 。B 2 any D B f y D C 3 any D C x f y D+I0x C 4 any F x f y yfx B 5 一x f y yfx 图C3手动计算器灰箱的变换规则手动计算器的灰箱描述如下:DEFINE G B Hand calculator INPUT S:key OUTPUT R :display STATE BR: (B,C) ? ? ? ? 14 14 14 ? 新状态)VR 。D D十10xyfx yfx FR HR f y f y F yfx 21 VR:number FR:(十,一,祷,/)HR.number MACHI

41、NE 如图C3所示END Hand calculatof HO/Z 182-90 Cl.3 明箱描述手动计算器的明箱描述图见图C4.其中省略了状态与机箱间的连续。其BDL描述如下:DEFINE CB Hand calculator 22 INPUT S:key OUTPUT R ,number STATE BR; (B,) FR:(+,一,峙,j)VR:number HR ,number MACHINE DATA (none) PRC Compute statae registers as in diagram C3 IF S=C THEN Compute line of C3 BR;=B V

42、R= O ELSE Compute line 2 - 5 of C3 IF S=any D FI THEN Compute lnes 2一3of C3J RUN Lines 2 3 ELSE Compute lines 4一5of C3 RUN Lines 4-5 FI R! = VR CORP END Hand calculator PROC Linse 2-3 IF BR=B THEN Compute line 2 of C3 BR=C VR:=S ELSE Compute line 3 of C3 VR:=10¥VR+S FI CORP PROC Lines 4-5 IF S=any F

43、 THEN Compute Line 4 of C3 BR: =B; VR: =HR FR VR; FR=S; HR , =VR ELSE Compute Line 5 of C3 IF s= H8jZ 182-90 THEN Compute HR (function) VR) VR , =HR FR VR FI FI CORP Cl.4 手动计算器输人的BNF表示: = C = IC = 2 : : =乓number骨 3 : = 4 :=再5 : = + I一|骨1/() : : :.-: 0 : 1 i 21314151617189 C2 百货商店记帐系统示例本节找们将以百货商店的记帐系

44、统为例说明其需求分析和软件设计的主要过程。此系统允许顾客对在本商店所购买的商品记帐,在每月月底根据所收到的帐单统一付款,当然在月中23 HB/Z 182-.90 的任何时间也可以预先付款或当场付款。C2.1 需求分析C2. 1. 1 事务分析在记帐系统中,整理输出帐单(Billing)是其最基本的事务之一,帐单又必须根据顾客所付款的数目和顾客所记帐(待付款)的数目计算得出,所以,整理输出帐单事务依赖于记帐(Charge)和付款(Payment)两个事务;而这两个事务都需要知道顾客的名字,5因此系统中应该事先获知顾客的姓名及其它有关的信息,我们称此事务为开户(OpenAccount);,另外,商

45、店允许顾客所记帐购买的商品其总价值是有一寇限额的,当进行记帐时必须首先得倒确认,证实已经存在顾客的户头并且所记帐费用没有超过其额定除帐上限,这样系统中就必须有一个设置除帐上限。etCredit Lmit沪的事务。到此为止,我们已确定了系统的五个事务,其黑箱描述图如图C5所示。手动计算器!BR., vaFRHR) s 四C4手动计算器明箱描述图2,4 HO/ Z 182- 90 计算图巳3中2-3行t =-lO.VR+S 因C1手动计算器明箱描述圄(续)计算图C.3中4-5行VR f-HRFR lB C4 手动计算器明fft吕注J1(续)25 HB/Z 182SO i ct叫CJCnI hplu

46、ll11 一一-之一_.-一-一一一一一-iI ,ransat川SI I Bi1ling I 才叫i Pa)哨1cr丁t| O pe n 3 川川川O削川川l口川Tl S如e时t盯cr叫叫di划州d副川iI巴时鸟纠JCj i记已I问附旱;止二黑f存;:( ) ) 我们可以进一步分析为了完成系绍当前已确定的_h务-JEU还需要其它新的事务,不难理解进行设置除帐上限时应保证嗣客提出了除帐中请并且应位青I司在准备付款的陈帐数目手t顾客工资有能力支付的除帐教目,由此又引也可个莉的Ir1除I炜申i南(CrcditApplication)、除帐检查(CreditCheck) ,.于u五资检查(Salary

47、Chck_)叶,包括止;们的系统的黑箱如!I所辰,系统的事务依顿树见罔C7。为了简化和更好地描述系绕,我们也可以参考事务依赖树建主其层次结构,例如可建立除帐极限(CreditLimt)为新的黑箱进行分析和描述,如图C8所示。相应于每一事务的输入及其输出见图C9。C2. 1. 2 状态分析状态分析可以以已进行的事务分析为框架d且过连个分析每一事务可能利用以前非务中的什么信息进行。例如,BilIng的黑精捕述定义为顾客1,)前所有记帐敦目与以前所有支付款目之差.如果差债为lE.则)通知顾客交款c尽管这样汁算,在正确的.但若为此而记录顾客所有的Charge和Payment的历史不仅相当第拙而且也拧不必要.既然母一帐单代表的是到:当前为止记帐和付款额.目的差额,我们只需记住此差却;1、贝lj可以大大简化和方便每次帐单的记算,此差额(Balance).,即是灰翰的一个状态敬据,每月莉的差额为旧&制与本月记帐、付款数日二井的

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1