HB Z 182-1990 状态机软件开发方法.pdf
《HB Z 182-1990 状态机软件开发方法.pdf》由会员分享,可在线阅读,更多相关《HB Z 182-1990 状态机软件开发方法.pdf(39页珍藏版)》请在麦多课文档分享上搜索。
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 ;一-
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- HB 182 1990 状态机 软件 开发 方法
