结构化软件开发_第1页
结构化软件开发_第2页
结构化软件开发_第3页
结构化软件开发_第4页
结构化软件开发_第5页
已阅读5页,还剩110页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十一章

结构化软件开发软件工程(第三版)

齐治昌谭庆平宁洪2012年8月第十一章

结构化软件开发11.1面向数据流的分析方法数据流图与数据字典、实体—关系图数据流图的实时系统扩充、基于数据流的分析方法11.2面向数据流的设计方法基本概念、设计过程、事务分析11.3实时系统设计实时系统性能要求、实时系统设计要素实时系统设计方法、设计实例2025/1/27国防科技大学计算机学院2第十一章

结构化软件开发前面几章主要讨论了面向对象的软件开发方法,它是目前软件工程的主流技术。除了面向对象方法,各种结构化软件开发方法,如功能分解法、面向数据流和面向控制流的方法、面向数据的方法等,在软件工程发展史上曾一度占据重要的位置。今天,结构化软件开发方法由于简洁、成熟,在实时嵌入式系统、过程控制、科学与工程计算等领域仍然应用广泛。多数遗留系统是采用结构化方法开发的,对它们的维护将持续很长时间。本章选择面向数据流的方法系统地介绍结构化的软件开发方法和过程。2025/1/273国防科技大学计算机学院11.1面向数据流的分析方法面向数据流的分析方法是结构化分析方法族中的一员结构化分析方法的雏型出现于1960年代后期,1979年DeMarco将其作为一种需求分析方法正式提出,此后它不断充实并被广泛应用,对软件工程的发展,缓解当时的软件危机做出了重要贡献。本节介绍面向数据流的分析方法及其扩充,仍以“家庭保安系统”为例展示使用过程。2025/1/274国防科技大学计算机学院11.1.1数据流图与数据字典可以认为,一个基于计算机的信息处理系统由数据流和一系列的转换构成,即IPO模型。软件系统通过一系列的转换(也称“加工”)将输入数据变换为输出数据。数据流图就是用来刻画数据流和转换的信息系统建模技术,任何软件系统都可以用数据流图表示。数据流图用简单的图形记号分别表示数据源、数据流、转换以及外部实体,如图11.1所示。2025/1/27国防科技大学计算机学院5数据流图与数据字典它提供层次结构,使分析人员能够方便地表示任意抽象级别上的信息系统或其子系统,支持问题分解、逐步求精的分析方法。初始时,整个信息处理系统可以用图11.2所示的顶级(第0级)数据流图表示。随着需求分析活动的逐渐深入,较高抽象级别上的复杂转换可以精化为一系列相互关联的数据流和子转换,如图11.3所示。在数据流方法中,数据(数据流)的精化伴随转换的精化同步进行。2025/1/27国防科技大学计算机学院6图11.1数据流图的图形记号2025/1/27国防科技大学计算机学院7图11.2顶级数据流图2025/1/27国防科技大学计算机学院8数据流图与数据字典在进行逐层精化的过程中,必须维持层间数据流图的平衡,即被精化的转换的输入、输出流必须与精化它的数据流子图的初始输入流和最终输出流保持严格一致(见图11.3)。这是确保需求模型一致性的一条重要原则。与此同时,要注意逐层精化必须适可而止,因为需求分析活动只求对问题的全面、清晰的理解,并不关心软件的设计细节。2025/1/27国防科技大学计算机学院9图11.3数据流图的精化与层间平衡2025/1/27国防科技大学计算机学院10数据流图与数据字典前述的数据流图并不足以完整地描述软件需求,因为它没有描述数据流的内容。数据流图必须与描述、组织和管理数据条目的数据字典配套使用。数据字典每一数据条目的内容:(1)在数据流图中标识的数据源、数据流或外部实体的名称与别名;(2)数据类型;(3)所有以它作为输入流或输出流的转换列表;(4)如何使用该数据条目的简要说明;(5)数据条目的解释性说明;

(6)其它补充说明,如取值范围与缺省值,有关的设计约束等。2025/1/27国防科技大学计算机学院11数据流图与数据字典数据条目的定义必须精确、简洁,能为用户方和软件开发方共同理解。转换需要比图形记号更详尽的表示机制,即结构化的文字描述。分析人员可以在数据流图的任一转换上附加一段文字,说明转换的功能、性能要求及设计约束等。文字说明应尽可能简洁、清晰、易于理解。2025/1/27国防科技大学计算机学院1211.1.2实体—关系图在数据密集型应用问题中,对复杂数据及数据之间复杂关系的分析和建模将成为需求分析的重要任务。这项任务是简单的数据字典机制无法胜任的。在数据流分析方法中引进适合复杂数据建模的实体—关系图。数据对象是现实世界中省略了功能和行为的实体,是现实世界中实体的数据侧面。在数据流分析方法中,数据对象包括11.1节提及的数据源、外部实体的数据部分以及数据流的内容。2025/1/27国防科技大学计算机学院13实体—关系图数据对象由其属性刻画,包括:(1)命名性属性

为数据对象的实例命名,其中必含有一个或一组关键属性,以便唯一地标识数据对象的实例。(2)描述性属性

对数据对象实例的性质进行刻画。(3)引用性属性

将自身与其它数据对象的实例关联起来。现实世界中任何给定实体都具有许多属性,分析人员只需考虑与应用问题有关的属性。2025/1/27国防科技大学计算机学院14图11.4数据对象描述表

数据对象可以用一张表描述,见图11.4。如,销售管理系统“商品”具有属性:

商品ID、商品名称、供应商ID、类别ID、单价、库存量、定购量,等等。其中商品ID为命名性属性,其它为描述性属性。图11.4商品ID商品名称

供应商ID类别ID单价

库存量

定购量2025/1/27国防科技大学计算机学院15实体—关系图应用问题中,任何数据对象都不是孤立的,它们与其它数据对象存在各种形式的关联。如,在销售管理系统中,“供应商”与“商品”之间存在“供货”关系,“销售人员”与“客户”之间存在“联络”关系。关系的命名及内涵因具体问题而异。分析人员必须善于剔除与应用问题无关的关系。基于数据对象、属性与关系,分析人员可以为应用问题建立数据模型。实体—关系图(简称ER图)是表示数据对象及其关系的图形工具,图11.5显示了采用UML简化类图图元描述的一个销售管理系统的部分实体关系图。

2025/1/27国防科技大学计算机学院16图11.5一个销售管理系统的部分实体关系图2025/1/27国防科技大学计算机学院1711.1.3数据流图的实时系统扩充实时系统与现实世界的外部实体进行交互时具有鲜明的时间特征。实时系统的数据流应显式区分为时间上连续的数据流和离散的数据流(控制信号或事件)。随着时间的变化及各个时间点上各种事件的激励,实时系统将处于不同的状态。实时系统负责事件响应的“转换”改称“控制”,它在限定的时间间隔内完成对事件的识别,向其它“控制”发送输出事件,并将系统置于新状态。2025/1/27国防科技大学计算机学院18数据流图的实时系统扩充实时系统对响应速度和可靠性有严格的要求。分析人员必须显式区分数据与连续数据流、数据与离散数据流(事件)、转换与控制等概念。开发人员在需求分析、软件设计、编码实现活动中要特别关注实时控制部件的性能和可靠性。传统数据流方法不能胜任实时系统的需求分析任务。Ward&Mellor和Hatley&Pirbhai在数据流图中引入实时机制对传统数据流方法进行扩充。Hatley&Pirbhai引进了状态转换图以刻画系统的外部行为。2025/1/27国防科技大学计算机学院191.Ward&Mellor扩充Ward&Mellor对实时系统的扩充主要体现在术语方面。他们引入了用以表示连续数据流、事件、事件源以及控制的图形记号,如图11.6所示。图中最后一个记号是为了表示多任务环境下同一控制的多个进程实例。2025/1/27国防科技大学计算机学院20图11.7连续数据流与普通数据流为了说明Ward&Mellor扩充的意义,我们简单地讨论基于计算机的水温监测与调节系统。水温测量仪传给温度监控转换的测量数据是连续的。温度监控转换将水温

数据与允许的波动范

围进行比较,然后连

续地输出调节后的温

度值,如图所示。2025/1/27国防科技大学计算机学院21Ward&Mellor扩充扩充的图形记号可以与传统的数据流图符号混合使用。事件可以作为普通转换的输入流,控制也可接收普通的数据输入。应该对数据字典进行扩充,数据字典要包含连续数据流和离散事件的描述。数据流图的控制描述应包括响应时间、可靠性等设计约束说明。图11.8利用Ward&Mellor扩充给出了机器人控制问题的部分数据流图,机器人将一些就绪的机械部件装配至某固定位置。2025/1/27国防科技大学计算机学院22图11.8离散数据流(事件)与普通数据流2025/1/27国防科技大学计算机学院23Ward&Mellor扩充当所有待装配部件都处于就绪状态(即到达预定位置)后,“部件监控与操作员界面”过程读入操作员命令,经必要处理后发送“启动信号”命令“机器人初始化”控制作装配前的准备工作。在初始化完成后,该控制发送“进程激活信号”启动“移位命令处理”完成装配工作。2025/1/27国防科技大学计算机学院242.Hatley&Pirhai扩充Hatley&Pirbhai方法的关键点是,分别建立实时系统的过程模型和控制模型。Hatley&Pirbhai

引进了两个新的图形记号,

如图11.9所示。在Hatley&Pirbhai扩充中,

传统的数据流图仅用来刻画

实时系统的静态侧面——

过程模型,而动态侧面则由

分离的控制流图描述。2025/1/27国防科技大学计算机学院25

图11.9Hetley&Pirbhai

扩充的图形记号Hatley&Pirhai扩充同一实时系统或系统的同一子部分,数据流图和控制流图具有完全同名的“转换”,但数据流图中的所有元素均无时间意义,控制流图则正好相反。控制流图中的“转换”改称“进程”。2025/1/27国防科技大学计算机学院26图11.10Hatley&Pirbhai的实时系统模型Hatley&Pirbhai扩充所确立的实时系统模型如图11.10所示。为了理解数据流图和控制流图之间的对应关系,请比较图11.11(a)和图11.11(b)。2025/1/27国防科技大学计算机学院27例11.1复印机工作流程控制结构的描述用Hatley&Pirbhai表示法,描述复印机控制软件工作时的数据流图、控制流图、状态转换图和进程活跃表。2025/1/27国防科技大学计算机学院28图11.11复印机工作流程控制软件图示2025/1/27国防科技大学计算机学院292.Hatley&Pirhai扩充对于数据流图中的过程转换,可以附加一段结构化的文字描述,这种描述在Hatley&Pirbhai扩充中称为过程规约。由于数据流图和控制流图的对应关系,过程规约也被扩充以便描述对进程的输入事件的处理以及进程的输出事件。实时系统由于受事件激励,随着时间点的不同而处于不同的状态,这是实时系统重要的行为特征。2025/1/27国防科技大学计算机学院30Hatley&Pirhai扩充Hatley&Pirbhai在控制流图中除事件外引进了“控制”图标记符,内容包括状态转换图和进程活跃表的控制规约。状态转换图是一张有向图,每个结点表示实时系统的状态,每条边表示引发状态转换的事件,以及转换发生时系统的动作:启动、终止、挂起或恢复进程。进程活跃表以普通表格的形式给出在控制流图中定义的各个事件激活的全部进程。下面结合复印机工作流程的控制结构说明上述过程。2025/1/27国防科技大学计算机学院31图11.11复印机工作流程控制软件图示2025/1/27国防科技大学计算机学院32Hatley&Pirhai扩充经Hatley&Pirbhai的扩充,数据流图(过程模型)用来表示实时系统的数据以及对数据进行操作的过程控制流图则用来描述进程之间的控制流并刻画系统的行为特征:每个事件所引发的系统状态变更和进程活跃情况。过程模型和控制模型以数据流图和控制流图之间的简单对应关系互为关联。过程模型中的过程规约可能产生事件输出,从而引发控制规约所描述的状态转换。进程规约可以产生进程活跃信号,进而作用于数据流图。2025/1/27国防科技大学计算机学院3311.1.4基于数据流的分析方法以上介绍了数据流图及其扩充的语言机制。本节结合“家庭保安系统”介绍基于数据流的分析方法,从而为分析人员建造用户需求的数据流模型提供方法学指导。1.创建数据流模型数据流图是软件系统各子功能,及它们之间数据流动的图形表示。数据流图的精化过程实际上是各个子功能和数据流的细化过程。随着过程的进化,用户需求逐步精确、完全,并保持一致。2025/1/27国防科技大学计算机学院34基于数据流的分析方法分析人员创建用户需求的数据流模型应遵循以下原则:⑴建立顶级数据流图,其中只含有一个代表目标软件系统整体处理功能的转换。根据软件系统与外部环境的关系确定顶级数据流图中的外部实体,及它们与软件系统之间的数据流。考虑2.1节给出的家庭保安系统案例,若采用3.2节介绍的需求调查方法,得到如下的初步用户需求:2025/1/27国防科技大学计算机学院35基于数据流的分析方法“家庭保安系统”的软件允许用户在安装时进行系统配置,实施对传感器的监控并通过控制面板与用户进行信息交互。配置操作包括:指定每一传感器的种类和编号;设置开、关机密码;指定报警电话号码;指定报警延迟和电话重拔延迟时间(以秒为单位)。当软件系统收到传感器发出的数据后,判别是否出现异常事件。如果是,则在指定的延迟时间内拔报警电话号码,拔号操作将按照重拔延迟反复进行,直至电话接通。软件系统负责报告时间、地点和异常事件的性质。开机后,软件系统负责显示当前工作状态,接收并处理用户指令。2025/1/27国防科技大学计算机学院36图11.12“家庭保安系统”顶级数据流图2025/1/27国防科技大学计算机学院37基于数据流的分析方法⑵对用户需求的文字描述进行语法分析,其中的名词和名词短语构成潜在的外部实体、数据源或数据流,动词构成潜在的处理功能。结合分析人员对问题域和用户需求的理解,确定软件系统的主要功能以及它们之间的数据流。见图11.13。2025/1/27国防科技大学计算机学院38图11.13“家庭保安系统”1级数据流图2025/1/27国防科技大学计算机学院39基于数据流的分析方法⑶采用通常的功能分解方法,按照“强内聚、松耦合”原则逐个对处理功能进行精化;

与此同时逐步完成对数据流的精化,并针对被精化的处理功能生成下一级数据流图。“强内聚、松耦合”原则指,分解出来的各子功能之间的联系尽量松散、简单,子功能内部各部分的联系尽量紧密。这一原则对于目标软件系统的可修改性、可扩充性大有益处,因为开发人员可以缩小软件修改或扩充的影响范围。2025/1/27国防科技大学计算机学院40基于数据流的分析方法数据流精化的意义。⑴伴随着功能分解,数据流的内容及各项特征逐步彰现,将其作为数据字典的一个条目,并不断精化、调整内容。⑵父数据流图的复合数据项被分解为子数据项,数据流分解符合平衡准则。如,如果将图11.13中的“启动/停止系统”功能分解为“启动系统”和“停止系统”,那么“启动/停止命令”相应地精化为“启动命令”和“停止命令”。“家庭保安系统”中“传感器监测”子功能的数据流子图如图11.14所示。2025/1/27国防科技大学计算机学院41图11.14“家庭保安系统”2级数据流图:对“传感器监测”的分解2025/1/27国防科技大学计算机学院42基于数据流的分析方法⑷在精化过程中必须保持各级数据流图的平衡。⑸精化过程应适可而止,避免涉及软件设计细节。如果某子功能可以用一段简洁、精确的文字描述清楚,就无需进一步分解。2025/1/27国防科技大学计算机学院432.创建控制流模型对于实时系统,在创建数据流模型之后还必须创建控制流模型,以便描述相关的事件以及系统状态在时间坐标系中的变迁。按照Hatley&Pirbhai的扩充,目标软件系统的控制流模型脱胎于数据流模型。关键要素在于事件以及由它引发的进程与系统的状态变化。分析人员可利用以下经验识别事件、绘出状态转换图和进程活跃表。

2025/1/27国防科技大学计算机学院44创建控制流模型⑴外部实体的传感器或类似装置可引发事件。⑵开关装置及其它离散状态装置可引发事件。⑶活跃、中止、恢复进程执行的数据流应视为事件⑷对用户需求的文字描述进行语法分析,其中具有瞬时性的名词或名词短语可能成为控制流模型中的事件。⑸分析系统可能具有的状态,研究每个状态是如何到达的,然后确定从每一状态转换到其它所有可能状态的诱发事件。⑹回答下述问题避免事件及状态转换图中的遗漏:是否还有其它途径到达某一状态或从该状态转换至其它状态?2025/1/27国防科技大学计算机学院45图11.15“家庭保安系统”的控制流图2025/1/27国防科技大学计算机学院46图11.16“家庭保安系统”的状态转换图2025/1/27国防科技大学计算机学院473.过程规约

对于数据流图中不再分解的处理功能,分析人员要借助结构化的自然语言对其功能进行精确、简洁的描述。图11.13中“口令核对”子功能分解出来的“重置口令”子功能描述:⑴参数:口令;类别:字符串⑵处理步骤:(a)检查系统是否已有口令。若有,则验证用户输入口令的有效性。如果有效,则显示提示信息要求输入新口令;否则,显示失败信息并退出。(b)检查新口令长度是否合法。如果非法则显示提示信息要求重新输入。(c)要求用户再次键入新口令以便用户确认和记忆。如果两次键入的口令不符,则返回。(d)将确认后的新口令按某种加密方法转换为另一字符串存放于系统配置文件中。显示成功信息并退出。⑶约束条件:在上述(a),(b),(c)步骤中,用户重试的机会分别不超过3次。2025/1/27国防科技大学计算机学院4811.2面向数据流的设计方法面向数据流的设计方法,即结构化设计法(简称SD方法)是根据需求阶段对数据流的分析进行软件结构设计。数据流图主要描绘信息在系统内部加工和流动的情况。面向数据流的设计方法根据数据流图的特性定义两种“映射”。这两种映射能机械地将数据流图转换为程序结构。该方法的目标是为软件结构设计提供一个系统化的途径,使设计人员对软件有一个整体的认识。2025/1/27国防科技大学计算机学院4911.2.1基本概念和设计过程SD方法能方便地将数据流图转换为软件结构,其过程分为五步:⑴确定信息流的类型;⑵划定流界;⑶将数据流图映射为程序结构;⑷提取层次控制结构;⑸通过设计复审和使用启发式策略精化得到的结构。该过程第三步所用映射方法涉及信息流的类型。信息流分为变换流和事务流两种。2025/1/27国防科技大学计算机学院501.变换流基本系统模型(即顶级数据流图)中信息通常以“外部世界”所具有的形式进入系统经过处理后又以这种形式离开系统如图11.17所示。2025/1/27国防科技大学计算机学院51图11.17信息流变换流输入信息流沿传入路径进入系统,同时由外部形式变换为内部形式经系统变换中心加工、处理,作为输出信息流又沿传出路径离开系统,并还原为外部形式。若数据流图所描述的信息流具有上述特征则称作变换流。2025/1/27国防科技大学计算机学院522.事务流由于基本系统模型呈变换流,故任意系统中的信息均可用变换流刻画。若数据流具有图11.18所示形状,则称“事务流”单个数据项称为事务(transaction)沿传入路径,也称接受通道进入系统,由外部形式变换为内部

形式后到达事务中心,

事务中心根据数据项计

值结果从若干动作路径

中选定一条继续执行。2025/1/27国防科技大学计算机学院53

图11.18事务流事务流在大系统的DFD中,变换流与事务流往往交织在一起。如,在基于事务流的系统中,当信息沿动作路径流动时可能呈现变换流的特征。下面两小节讨论的变换分析法与事务分析法常常交叉使用。图11.19描绘了面向数据流的软件设计过程,当然,任何设计过程都不应该也不可能完全机械化,人的判断力和创造性往往起决定作用。2025/1/27国防科技大学计算机学院54图11.19

面向数据流的设计2025/1/27国防科技大学计算机学院5511.2.2变换分析变换分析由一系列设计步骤组成,经过这些步骤把具有变换流特点的数据流图按预先确定的模式映射成软件结构。下面以“家庭保安系统”的传感器监测子系统为例说明变换分析的各个步骤。步骤1复审基本系统模型基本系统模型指,顶级DFD和所有由外部提供的信息。这一设计步骤是对系统规约和软件需求规约进行评估。这两个文档描述软件界面上信息的流程和结构。复审“家庭保安系统”的基本模型要利用图11.12、图11.13和图11.14分别表示的“家庭保安系统”的顶层、第一层和第二层数据流图。2025/1/27国防科技大学计算机学院56变换分析步骤2复审和精化软件数据流图对软件需求规约中的分析模型进行精化,直至获得足够详细的DFD。如,由“传感器监测子系统”的第二级(图11.14)DFD进一步推导出第三级数据流图(图11.20)此时,每个变换对应一个独立的功能,可望用一个具有较高内聚度的模块实现,至此已有足够的信息可用于设计“传感器监测子系统”的程序结构,精化过程亦可结束。2025/1/27国防科技大学计算机学院57图11.20“传感器监测子系统”的

第三级DFD2025/1/27国防科技大学计算机学院58变换分析步骤3确定DFD的特性,判定它为变换流还是事务流。系统内部的信息流用变换流表示,倘若具有明显的事务特性,还应该采用事务流的映射方法。因此,设计人员首先要判定DFD中占主导地位的信息流,并确定其特性,然后孤立出具有变换特性或事务特性的支流,这些支流将用于精化由主导数据流推出的程序结构。仍以图11.20所示DFD为例,数据沿一个传入路径进来,沿三个传出路径离开,无明显的事务中心,因此,该信息流应属变换流。2025/1/27国防科技大学计算机学院59变换分析步骤4通过划定输入流和输出流的边界来孤立变换中心。输入、输出流边界的划分可能因人而异,不同的设计人员可能把边界沿着数据通道向前推进或后退一个处理框,不过这对最后的软件结构影响不大。“传感器监测子系统”的边界在图11.20中用虚线表示。2025/1/27国防科技大学计算机学院60变换分析步骤5执行“一级分解”

(FirstLevelFactoring)一级分解的目标是导出具有三个层次的程序结构,顶层为主控模块;底层模块执行输入、计算和输出功能;中层模块控制、协调底层的工作。如图11.21所示,主控模块负责协调下面几个中层控制模块:·输入流控制模块,接收所有输入数据;·变换流控制模块,对内部形式数据进行加工、处理;·输出流控制模块,产生输出数据。2025/1/27国防科技大学计算机学院61图11.21一级分解2025/1/27国防科技大学计算机学院62变换分析图11.21展示的顶层到中层是一个简单的一分三结构,实际处理大型系统的复杂数据流时,可能需要两个甚至多个模块对应一个中层模块的功能。“一级分解”总的原则是,在完成控制功能并保持低耦合度、高内聚度的前提下尽可能减少模块数。“传感器监测子系统”一级分解如图11.22所示,其中中层控制模块的名字概括了所有下属模块的功能。2025/1/27国防科技大学计算机学院63图11.22传感器监测子系统一级分解结果2025/1/27国防科技大学计算机学院64图11.23二级分解步骤6执行“二级分解”任务是把数据流图中每个处理框映射成程序结构中一个适当的模块二级分解过程是从变换中心的边界开始沿输入、输出通道向外移动,把遇到的每个处理框映射为程序结构中的一个模块如图11.23所示。2025/1/27国防科技大学计算机学院65变换分析虽然图11.23中,DFD的处理框与程序结构模块一一对应,但按照软件设计原则进行设计时,可能需要把几个处理框聚合为一个模块,或者把一个处理框分解为几个模块。应根据“良好”设计的标准,进行二级分解。由图11.20输出流部分导出的程序结构如图11.24所示。整个“传感器监测子系统”二级分解的结果见图11.25,它仅仅是程序结构的雏形,后续的复审和精化会反复修改。2025/1/27国防科技大学计算机学院66变换分析程序结构的模块名已隐含了模块功能,但仍有必要为每个模块写一个简要的处理说明,应包括:

①进出模块的信息(接口描述);②模块的局部信息;③处理过程陈述,包括主要的判断点和任务;④对有关限制和一些专门特性的简要说明(例如,文件I/0,独立于硬件的特性,特殊的实时要求等等)。这些描述构成第一版设计规约。2025/1/27国防科技大学计算机学院67图11.24传感器监测子系统输出流部分导出的程序结构2025/1/27国防科技大学计算机学院68图11.25传感器监测子系统的程序结构“雏形”2025/1/27国防科技大学计算机学院69变换分析步骤7采用启发式设计策略,精化所得程序结构雏形,以求改良软件质量。对于程序结构的雏形,以“模块独立”为指导思想,对模块或合或拆,旨在追求高内聚、低耦合,易实现、易测试、易维护的软件结构,整个过程要保持正确性和一致性。例如,“传感器监测子系统”的程序结构雏形可修改如下(1)因只存在一条传入路径,故输入控制模块可删除;(2)由变换中心产生的整个子结构可归并为“建立警报条件”一个模块(选择电话号码的功能纳入其中),变换控制模块不再需要;(3)“格式化显示”和“生成显示”两个模块归并为“产生显示”一个模块。“传感器监测子系统”精化后的程序结构如图11.26所示。2025/1/27国防科技大学计算机学院70图11.26传感器监测子系统精化后的

程序结构2025/1/27国防科技大学计算机学院71变换分析上述七个设计步骤的目标是给出软件的一个整体描述。一旦有了这样一个描述,设计人员即可从整体角度评价和精化软件的总体结构,此时修改所需耗费不多,却能大大提高软件质量。比较上述设计过程与一般直接编码过程可知,如果源代码是软件唯一的表现形式,设计人员很难从整体的观点评价和精化软件。2025/1/27国防科技大学计算机学院7211.2.3事务分析当数据流具有明显的事务特征时,即能找到一个事务(亦称触发数据项)和一个事务中心,采用事务分析法更为适宜。下面以“家庭保安系统”中“用户交互子系统”为例,说明事务分析法。该子系统的第一级数据流图如图11.13所示,精化后得到如图11.27所示第二级数据流图。图中“用户命令数据”流入系统后,沿三条动作路径之一离开系统,若将数据项“命令类型”看作事务,该子系统的信息流具有明显的事务特征。2025/1/27国防科技大学计算机学院73图11.27用户交互子系统的二级数据流图2025/1/27国防科技大学计算机学院74事务分析事务分析法的步骤与变换分析方法基本类似,主要差别在于从数据流图到程序结构的映射。事务分析法七个步骤:步骤1复审基本系统模型;步骤2复审并精化软件数据流图;步骤3确定数据流图的特性;

前三步与变换分析法相同。2025/1/27国防科技大学计算机学院75事务分析步骤4指出事务中心,确定由事务中心发出的每一动作路径的数据流特性。数条动作路径的公共源头即为事务中心,如图11.27所示,事物中心定位为“启动命令处理”框。事务中心一经确定,即可划定接受路径与所有动作路径的界限(图11.28),随后判定每一动作路径上数据流的特征。例如,图11.27“口令处理”路径具有明显变换特征,可立即划定输入、变换和输出的边界(图11.28),当进行自顶向下设计时再具体实施映射。2025/1/27国防科技大学计算机学院76图11.28确定流界2025/1/27国防科技大学计算机学院77事务分析步骤5把数据流图映射为事务处理型的程序结构。事务处理型的程序结构由“输入”和“散转”两部分组成,输入部分的构成方法如变换分析法,即从事务处理中心开始,沿输入通路向外推进,每个处理框映射为一个模块。“散转”部分顶层为一“散转”模块,它总控所有对应于每一动作路径的控制模块,每条动作路径都根据它的信息流特征映射为一个程序子结构。整个过程可用图11.29说明。2025/1/27国防科技大学计算机学院78图11.29事务流映射2025/1/27国防科技大学计算机学院79图11.30用户交互子系统的一级分解2025/1/27国防科技大学计算机学院80事务分析步骤6分解并精化事务结构以及每条动作路径所对应的结构。这些子结构是根据流经每一动作路径的数据流特征,采用本小节或上小节所述设计步骤一一导出的。图11.31给出了各条动作路径映射后的程序结构。步骤7使用启发式设计策略,精化所得程序结构雏形,改良软件质量。这一步骤与变换分析法相同。2025/1/27国防科技大学计算机学院81图11.31用户交互子系统的程序结构雏形2025/1/27国防科技大学计算机学院8211.3实时系统设计实时软件要求在指定的时间间隔内响应客观事件,所以实时软件设计除了要解决一般软件设计遇到的问题外,还要考虑一些特殊因素。如,中断处理与数据传输率、分布式数据库与实时操作系统、特定的程序设计语言与同步方式等等。因此,各类设计活动(指总体结构设计、数据结构设计和过程设计等)都变得更为复杂和困难,同时对此类软件的测试也需要特殊的技术和方法。2025/1/27国防科技大学计算机学院8311.3.1实时系统性能要求实时系统的性能与功能同样重要。因此除了在系统分析时应适当地将任务分配到硬件、软件、用户与数据库各系统元素外,软件设计时更需要很好地协调实时任务、系统中断处理、I/O处理三者的关系。实时系统的性能一般表现为若干与时间相关的特性,如响应时间、数据传输率、故障间隔时间等等。其中响应时间和数据传输率是最常用的度量,系统往往追求最大负载(peakloading)时的最优值。影响系统响应时间的因素包括任务切换(contextswitching)和中断等待(interruptlatency)时间,以及CPU和访问存储器的速度。数据传输率与I/O设备的性能、总线等待时间、缓冲区大小及磁盘性能等因素有关。任何一个软件系统都应该具有可靠性,但实时系统在可靠性、可重新启动(restart)和故障恢复等方面有更高的要求,否则可能造成无法估量的损失。2025/1/27国防科技大学计算机学院8411.3.2实时系统设计要素中断处理是实时系统区别于其他系统的特征之一。这是因为实时系统必须在由客观世界确定的时间间隔内响应外部激励——中断,由于多个外部激励可能同时存在,中断处理应设立优先级,保证最重要的任务总能在指定的时间约束内得到服务,即高优先级事件能中断低优先级事件的处理过程。中断处理机制除了要妥善保存中断现场以便事后正确恢复被中断任务外,还要避免死锁和无穷循环。2025/1/27国防科技大学计算机学院85实时系统设计要素大多数实时操作系统都能根据事件平均出现频率、处理事件平均所耗时间等指标动态估测满足系统功能与性能的可能性,一旦发现不能满足时间约束,系统应立即采取措施,例如将数据事先纳入缓冲区,以便快速提交系统处理,等等。与许多数据处理系统一样,实时系统也经常需要数据库管理功能。分布式数据库是较好的选择。采用分布式数据库,系统各任务能独立、快速、可靠地访问各自的数据,避免长时间在等待队列排队,I/O瓶颈现象得到缓解。若数据保持合理冗余,当数据库失效后,整个系统仍能正常工作。当然因此又引发如何保持数据一致性和并发控制等诸多问题。关于它们的进一步讨论请见[104]。2025/1/27国防科技大学计算机学院86实时系统设计要素为实时应用选择一个合适的操作系统并非容易。目前大致有两类系统可用,一类是为实时应用开发的实时操作系统(RTOS);另一类是嵌入实时服务例程(real-timeexecutive)的通用操作系统。RTOS除了具有通常的优先调度机制外,还提供优先中断机制,并且由于某些中断事件的处理不允许耽搁从内存换出被中断程序所用的时间,RTOS还应提供内存锁定(memorylocking)功能,以避免程序换入换出所用系统开销。衡量一个RTOS实时性的重要指标是任务切换时间和中断等待时间,它们代表系统中断处理的能力。2025/1/27国防科技大学计算机学院87实时系统设计要素由于对可靠性和性能方面的特殊要求,为实时应用选择适宜的程序设计语言也很重要。一般用于实时系统的语言应包括多任务能力、直接支持实时功能的部件以及有助于程序正确性和可靠性的若干现代程序设计特性,如模块化、抽象数据类型、异常处理机制等等。所谓多任务能力除了支持多个任务并行工作外,还应提供它们之间的通讯和同步控制。多任务能力可在操作系统或程序设计语言中实现。常用的技术包括信息灯队列(queuingsemphores)、邮箱(mailboxes)和消息收发系统(messagesystems)等。2025/1/27国防科技大学计算机学院88实时系统设计要素对于可靠性、安全性要求极高的强实时系统(系统响应时间以毫秒计),为了保证软件的正确性、实时性、可靠性、安全性,不得不限制程序语言中经常出错的某些成分的使用,并制定出严格的行业标准。如国外汽车工业软件可靠性联合会制定的C语言编程规范“MISRA-C:1998”、我国制定的“航天器软件C语言编程规范”等。2025/1/27国防科技大学计算机学院89实时系统设计要素这些规范对使用C语言编程做了100多条限制,涉及数据类型、标识符、表达式、数组、指针、函数与过程、预处理命令、括号、注释、字符集、编译器、初始化等诸多方面。如,不得使用容易造成混淆的逻辑比较符“==”,不得使用指针,不得使用动态数组等。编译器生成的目标代码、初始化和软件运行环境也必须规范。这些规则降低了编程的难度和软件的复杂性,明确了编程和运行环境,增强了软件的可理解性、可测试性、可维护性,从而达到保证软件正确性、安全性、实时性的目标。2025/1/27国防科技大学计算机学院9011.3.3实时系统设计方法实时软件设计除了要体现一般高质量软件的特性外,还要考虑下列问题:(1)中断与任务切换的表示;(2)多任务或多处理机系统出现的并发;(3)任务间的通信与同步;(4)数据传输率的大幅度变化;(5)异常处理;(6)软件与数据库、操作系统、硬件及其他系统元素的交互。2025/1/27国防科技大学计算机学院91实时系统设计方法实时软件设计方法应能部分或全部解决上述问题。过去二十多年里,用于实时软件设计的方法可分为两类。⑴在面向数据流、面向对象和面向数据的方法上扩充实时能力;⑵基于有穷状态机、或基于Petri网、或基于消息传递机制、或基于特殊的实时语言。2025/1/27国防科技大学计算机学院92实时系统设计方法本章第一节曾对数据流图进行实时扩充,使之用于实时系统分析。沿用这一思路,Gomaa在面向数据流的软件设计方法中,扩充了任务通信与同步的表示、状态依赖的表示以及将通常的数据流与实时客观世界连接的方法,产生了适用于实时系统设计的方法DARTS。该方法的任务同步采用互斥等待和信号灯交叉激活的方式;任务通信则用消息收发机制实现。若产生消息的任务向接收消息的任务送出消息后立即等待回答,则称紧耦合通信;反之两任务各行其是,用消息队列缓冲消息,则称松耦合通信。2025/1/27国防科技大学计算机学院93实时系统设计方法DARTS方法是在面向数据流分析的基础上,识别系统中存在的任务并定义任务界面。DFD中不反映各个转换之间的并发和同步特性。DARTS方法指明,在DFD中具有下列性质的某个或某组转换可设计为一个独立的任务:①实现I/O交互功能的转换;②实现时间敏感功能的转换;③实现计算功能的转换;④具有功能内聚性的一组转换;⑤具有时间内聚性的一组转换;⑥需要按同一周期执行的一组转换。2025/1/27国防科技大学计算机学院94实时系统设计方法系统任务确定后,DARTS通过任务通信模块和任务同步模块描述任务间的通信。任务通信模块分为消息通信模块和信息隐藏模块前者支持消息通信,通过管理消息队列和同步原语分别实现紧耦合通信和松耦合通信,图11.32(a)信息隐藏模块集中实现数据结构和访问方法,支持其他任务对数据集的访问,图11.32(b)任务同步模块的作用是管理“控制”,而不是“数据”任务间的传递。

一个任务可向另一任务发出信号告知某个事件发生,另一任务可能正等待这一信号,图11.32(c)

2025/1/27国防科技大学计算机学院95图11.32DARTS的各种任务接口模块2025/1/27国防科技大学计算机学院96实时系统设计方法一个任务可看作是一段独立的顺序程序。当一个任务的边界确定后,在此边界内可用“变换分析”和“事务分析”技术映射出程序结构。控制流程不但与任务的输入信息有关,还依赖系统当前所处状态。2025/1/27国防科技大学计算机学院9711.3.4设计实例以某空中交通控制系统(ATCS)为例,说明用DARTS方法如何进行顶层设计。例11.2在如图11.33所示的ATCS控制区域中,系统雷达可以测得飞机类型、方位和高度等数据,这些数据经分析确认后立即存入数据库并显示给空中交通管理员,他还能从数据库中检索其他所需信息。2025/1/27国防科技大学计算机学院98图11.33ATCS示意图图11.34ATCS的顶级DFD该系统对实时性和可靠性有严格的要求,数据获取、数据分析及数据库更新都必须在指定的时间内完成。交通管理员与系统的交互不得影响系统的正常运行。采用面向数据流分析方法可得到ATCS的顶级和1级DFD(图11.34和图11.35)。2025/1/27国防科技大学计算机学院99图11.35

ATCS的1级DFD2025/1/27国防科技大学计算机学院100设计实例按照DARTS识别任务的标准,在1级DFD中可定义下列系统任务:

数据获取任务、数据分析任务、数据库I/O任务、显示任务和管理员交互任务。它们在图11.36上分别用阴影部分标出。上述任务有可能进一步分割成若干并发任务。图11.37是ATCS的控制转换图,描述系统在事件驱动下从一个状态(此时状态对应着任务)转变为另一状态的过程。图11.38给出DARTS方法表示的各任务之间的接口。以此为基础,可为每一任务建立2级DFD,并用通常的方法将DFD映射为程序结构,程序结构的内部模块设计也采用通常的过程设计方法。2025/1/27国防科技大学计算机学院101图11.36ATCS的任务划分2025/1/27国防科技大学计算机学院102图11.37简化的ATCS状态图2025/1/27国防科技大学计算机学院103图11.38ATCS的控制与通信采用DARTS方法。设计人员可方便地定义任务,表示任务之间的通信和并发,并用任务接口模块实现任务的同步和通信活动。2025/1/27国防科技大学计算机学院104小

结面向数据流的分析与设计技术在软件工程发展史上具有重要地位,目前仍在广泛应用,特别是实时嵌入式系统。数据流图、数据字典和实体-关系图是面向数据流分析的基本机制。基于数据流图进行需求分析的过程为:创建数据流模型、创建控制流模型、针对原子级处理功能给出过程规约。维持数据流图各层次平衡、保证需求和设计模型一致性是非常重要的原则。2025/1/27国防科技大学计算机学院105小

结基于数据流图进行软件设计的过程为:①确定信息流的类型;②划定流界;③将DFD映射为程序结构;④提取层次控制结构;⑤通过设计复审和使用启发式策略进一步精化模型结构。本章结合“家庭保安系统”实例给出了面向数据流分析与设计的过程。为将面向数据流的分析与设计方法用于实时系统开发,Ward&Mellor以及Hatley&Pirbhai分别在数据流图中引入实时机制。DARTS方法适于实时系统设计。2025/1/27国防科技大学计算机学院106习

题11.1简述数据流图的主要思想,概述使用数据流图进行需求分析的过程。11.2分别采用数据流方法中的哪些技术来完成用户需求的精确化、一致化和完全化任务?11.3实体—关系图适于对什么

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论