软件工程 Software Engineering 国防科技大学计算机学院 2004.07 2019/4/26 国防科技大学计算机学院
第九章 面向数据流的设计方法 面向数据流的设计方法,即结构设计法(简称SD方法)。 需求阶段对数据流进行分析,生成数据流图和数据字典,以此为基础设计软件结构。 数据流图描绘信息在系统内部加工和流动的情况,面向数据流的设计方法根据数据流图的特性定义变换流和事务流两种“映射”,这两种映射能机械地将数据流图转换为程序结构。 该方法的目标是为软件结构设计提供一个系统的途径,使设计人员对软件有一个整体的认识。 2019/4/26 国防科技大学计算机学院
面向数据流的设计方法 本章所述技术用于软件的概要设计描述 ,包括模块、界面和数据结构的定义,这是后续开发的基础。 第九章 面向数据流的设计方法 面向数据流的设计方法 本章所述技术用于软件的概要设计描述 ,包括模块、界面和数据结构的定义,这是后续开发的基础。 每种软件设计方法都有长处和不足,选用哪种方法应考虑适用的范围。 任何软件系统都可以用数据流图表示,面向数据流的设计方法可用于任一种软件系统的开发。 该方法对那些顺序处理信息且不含层次数据结构的系统最为有效,如,过程控制、复杂的数值分析过程、以及科学与工程方面的应用等等。 当SD方法用于完全的数据处理时,即使系统中使用层次数 据同样行之有效。 2019/4/26 国防科技大学计算机学院
9.1基本概念和设计过程 用SD方法将数据流图转换为软件结构 (1)确定信息流的类型; (2)划定流界; 第九章 面向数据流的设计方法 9.1基本概念和设计过程 用SD方法将数据流图转换为软件结构 (1)确定信息流的类型; (2)划定流界; (3)将数据流图映射为程序结构; (4)提取层次控制结构; (5)通过设计复审和启发式策略精化结构。 第三步所用映射方法涉及信息流的类型。 信息流分为变换流和事务流两种类型。 2019/4/26 国防科技大学计算机学院
基本概念和设计过程 在基本系统模型(即顶级数据流图)中信息通常以“外部世界”所具有的形式进入系统,经过处理后又以这种形式离开系统。 9.1基本概念和设计过程 基本概念和设计过程 变换流 在基本系统模型(即顶级数据流图)中信息通常以“外部世界”所具有的形式进入系统,经过处理后又以这种形式离开系统。 输入信息流沿传入路径进入系统,同时由外部形式变换为内部形式,经系统变换中心加工、处理,作为输出信息流又沿传出路径离开系统,并还原为外部形式。 若数据流图所描述的 信息流具有上述特征 则称作变换流。 2019/4/26 国防科技大学计算机学院
基本概念和设计过程 事务流 由于基本系统模型呈变换流,故任意系统中的信息均可用变换流刻画。 若数据流具有如图9.2所示形状,称“事务流”。 9.1基本概念和设计过程 基本概念和设计过程 事务流 由于基本系统模型呈变换流,故任意系统中的信息均可用变换流刻画。 若数据流具有如图9.2所示形状,称“事务流”。 单个数据项称为事务(transaction)沿传入路径(接受通道)进入系统,由外部形式变换为内部形式后到达事务中心,事务中心根据数据项计值结果从若干动作路径中选定一条继续执行。 2019/4/26 国防科技大学计算机学院
基本概念和设计过程 在大系统的DFD中,变换流与事务流往往交织在一起。 9.1基本概念和设计过程 基本概念和设计过程 在大系统的DFD中,变换流与事务流往往交织在一起。 在基于事务流的系统中,当信息沿动作路径流动时可能呈现变换流的特征,变换分析法与事物分析法需要交叉使用。 任何设计过程都不应该也不可能完全机械化,人的判断力和创造性往往起决定作用。 2019/4/26 国防科技大学计算机学院
9.1基本概念和设计过程 面向数据流的设计 2019/4/26 国防科技大学计算机学院
9.2 变换分析 变换分析由一系列设计步骤组成,经过这些步骤就能把具有变换流特点的数据流图,按预先确定的模式映射成软件结构。 第九章 面向数据流的设计方法 9.2 变换分析 变换分析由一系列设计步骤组成,经过这些步骤就能把具有变换流特点的数据流图,按预先确定的模式映射成软件结构。 2019/4/26 国防科技大学计算机学院
9.2变换分析 变换分析 步骤一 复审基本系统模型 基本系统模型指顶级DFD和所有由外部提供的信息。这一设计步骤是对系统规格说明书和 软件需求规格说明书进行评估。这两个文档描述软件界面上信息的流程和结构。 图9.4和图 9.5分别为“家庭保安系统”的顶层和第一层数据流图。 2019/4/26 国防科技大学计算机学院
9.2变换分析 “家庭保安系统”的顶级数据流图 家庭保安系统-传感器监测子系统的变换分析步骤。 2019/4/26 国防科技大学计算机学院
变换分析 步骤二 复审和精化软件数据流图 精化软件需求规格说明书中的分析模型,直至获得足够详细的DFD。 9.2变换分析 变换分析 步骤二 复审和精化软件数据流图 精化软件需求规格说明书中的分析模型,直至获得足够详细的DFD。 如,由“传感器监测子系统”的第一级(图9.5的局部)和第二级(图9.6)DFD进 一步推导出第三级数据流图(图9.7)。 每个变换对应一个独立的功能,可望用一 个具有较高内聚度的模块实现,至此已有足够的信息用于设计“传感器监测子系统”的程序结构,精化过程亦可结束。 2019/4/26 国防科技大学计算机学院
9.2变换分析 “传感器监测子系统”的第二级DFD 2019/4/26 国防科技大学计算机学院
9.2变换分析 “传感器监测子系统”的第三级DF 2019/4/26 国防科技大学计算机学院
变换分析 步骤三 确定DFD为变换流还是事务流。 9.2变换分析 变换分析 步骤三 确定DFD为变换流还是事务流。 系统内部的信息流总可以用变换流表示,倘若具有明显的事务特性,还应该采用针对事务流的映射方法。设计人员首先要判定DFD中占主导地位的信息流,并确定其特性,然后孤立出具有变换特性或事务特性的支流,这些支流将用于精化由主导数据流推出的程序结构。 以图9.7所示DFD为例,数据沿一个传入路径进来,沿三个传出路径离开,无明显的事务中心,该信息流应属变换流。 2019/4/26 国防科技大学计算机学院
变换分析 步骤四 划定输入流和输出流边界孤立变换中心。 9.2变换分析 变换分析 步骤四 划定输入流和输出流边界孤立变换中心。 输入、输出流边界的划分可能因人而异,不同的设计人员可能把边界沿着数据通道向前推进或后退一个处理框,这对最后的软件结构影响不大。 “传感器监测子系统”的流界在图9.7中用虚线表示。 2019/4/26 国防科技大学计算机学院
9.2变换分析 “传感器监测子系统” 2019/4/26 国防科技大学计算机学院
变换分析 步骤五 执行“一级分解”导出具有三个层次的程序结构。 顶层为总控模块; 底层模块执行输入、计算和输出功能; 9.2变换分析 变换分析 步骤五 执行“一级分解”导出具有三个层次的程序结构。 顶层为总控模块; 底层模块执行输入、计算和输出功能; 中层模块控制、协调底层的工作。 如图9.8所示,主控模块负责协调下面几个中层控制模块: 输入流控制模块,接收所有输入数据; 变换流控制模块,对内部形式数据进行加工、处理; 输出流控制模块,产生输出数据 2019/4/26 国防科技大学计算机学院
变换分析 一级分解 图9.8展示的是一个简单三叉结构,实际处理大型系统的复杂数据流时,可能需要两个甚至多个模块对应上述一个模块的功能。 9.2变换分析 变换分析 一级分解 图9.8展示的是一个简单三叉结构,实际处理大型系统的复杂数据流时,可能需要两个甚至多个模块对应上述一个模块的功能。 “一级分解”的原则 在完成控制功能并保持低耦合度、高内聚度的前提下尽可能减少模块数。 2019/4/26 国防科技大学计算机学院
9.2变换分析 一级分解 2019/4/26 国防科技大学计算机学院
9.2变换分析 传感器监测子系统一级分解结果 控制模块的名字概括了所有下属模块的功能。 2019/4/26 国防科技大学计算机学院
9.2变换分析 二级分解 步骤六 执行“二级分解” 把数据流图中每个处理框映射成程序结构中一个适当的模块,二级分解过程是从变换中心的边界开始沿输入、输出通道向外移动,把遇到的每个处理框映射为程序结构中的一个模块。 2019/4/26 国防科技大学计算机学院
变换分析 二级分解 DFD的处理框与程序结构模块一一对应 9.2变换分析 变换分析 二级分解 DFD的处理框与程序结构模块一一对应 按照软件设计原则,可能需要几个处理框聚合为一个模块,或者把一个处理框细分为几个模块。 应根据“良好”设计的标准,进行二级分解。 2019/4/26 国防科技大学计算机学院
变换分析 由图9.7输出流部分导出的程序结构如图9.11所示。 9.2变换分析 变换分析 由图9.7输出流部分导出的程序结构如图9.11所示。 “传感器监测子系统”二级分解的结果见图9.12,它仅仅是程序结构的“雏形” ,后续的复审和精化会反复修改。 程序结构的模块名隐含模块功能,必须为每个模块写一个简要的处理说明,包括: ①进出模块的信息(接口描述); ②模块的局部信息; ③处理过程陈述,包括主要的判断点和任务; ④对有关限制和一些专门特性的简要说明(例如,文件I/0,独立于硬件的特性,特殊的实时要求等等)。 这些描述构成第一版设计规格说明书。 2019/4/26 国防科技大学计算机学院
9.2变换分析 传感器监测子系统输出流部分的程序结构 2019/4/26 国防科技大学计算机学院
9.2变换分析 传感器监测子系统的程序结构“雏形” 2019/4/26 国防科技大学计算机学院
变换分析 步骤七 采用启发式设计策略,精化所得程序结构雏形,改良软件质量。 9.2变换分析 变换分析 步骤七 采用启发式设计策略,精化所得程序结构雏形,改良软件质量。 对于程序结构的雏形,以“模块独立”为指导思想,对模块或合或拆,旨在追求高内聚、低耦合,易实现、易测试、易维护的软件结构。 2019/4/26 国防科技大学计算机学院
变换分析 修改“传感器监测子系统”的程序结构雏形 (1)因只存在唯一一条传入路径,故输入控制模块可删除; 9.2变换分析 变换分析 修改“传感器监测子系统”的程序结构雏形 (1)因只存在唯一一条传入路径,故输入控制模块可删除; (2)由变换中心产生的整个子结构可归并为“建立警报条件”一个模块(选择电话号码的功能纳入其中),变换控制模块不再需要; (3)“格式化显示”和“生成显示”两个模块归并为“产生显示”一个模块。 2019/4/26 国防科技大学计算机学院
9.2变换分析 “传感器监测子系统”的程序结构 2019/4/26 国防科技大学计算机学院
变换分析 上述七个设计步骤的目标是给出软件的一个整体描述。 9.2变换分析 变换分析 上述七个设计步骤的目标是给出软件的一个整体描述。 一旦有了这样一个描述,设计人员即可从整体角度评价和精化软件的总体结构,此时修改所需耗费不多,却能大大提高软件质量。 比较上述设计过程与一般直接编码过程可知,如果源代码是软件唯一的表现形式,设计人员很难从整体的观点评价和精化软件。 2019/4/26 国防科技大学计算机学院
9.3 事务分析 当数据流具有明显的事务特征时,即能找到一个事务(亦称触发数据项)和一个 事务中心,采用事务分析法更为适宜。 第九章 面向数据流的设计方法 9.3 事务分析 当数据流具有明显的事务特征时,即能找到一个事务(亦称触发数据项)和一个 事务中心,采用事务分析法更为适宜。 下面以“家庭保安系统”中“用户交互子系统”为例,说明事务分析法。 该子系统的第一级数据流图如图9.5所示,精化后得到如图9.14所示第二级 数据流图。图中“用户命令数据”流入系统后,沿三条动作路径之一离 开系统,若将数据项“命令类型”看作事务,该子系统的信息流具有明显的事务 特征。 事务分析法的步骤与变换分析方法基本类似,主要差别在于从数据流图到程序 结构的映射。 2019/4/26 国防科技大学计算机学院
9.3事务分析 用户交互子系统的二级数据流图 2019/4/26 国防科技大学计算机学院
事务分析 事务分析法可分为七个步骤 步骤一复审基本系统模型; 步骤二复审并精化软件数据流图; 9.3事务分析 事务分析 事务分析法可分为七个步骤 步骤一复审基本系统模型; 步骤二复审并精化软件数据流图; 步骤三确定数据流图的特性;/前三步与变换分析法相同/ 步骤四找出数条动作路径的公共源头,即为事务中心,确定由事务中心发出的每一动作路径的数据流特性。 图9.14的事物中心是 “启动命令处理”框。 图9.15划定接受路径与所有动作路径的界限,判定每一动作路径上数据流的特征。 2019/4/26 国防科技大学计算机学院
9.3事务分析 确定流界 2019/4/26 国防科技大学计算机学院
事务分析 步骤五 把数据流图映射为事务处理型的程序结构。 9.3事务分析 事务分析 步骤五 把数据流图映射为事务处理型的程序结构。 事务处理型的程序结构由“ 输入”和“散转”两部分组成,输入部分的构成方法如变换分析法,即从事 务处理中心开始,沿输入通路向外推进,每个处理框映射为一个模块。 “ 散转 ”部分顶层为一“散转”模块,它总控所有对应于每一动作路径的控制模块,每条动作路径都根据它的信息流特征映射为一个程序子结构。 2019/4/26 国防科技大学计算机学院
9.3事务分析 事务流映射 2019/4/26 国防科技大学计算机学院
9.3事务分析 事务分析 用户交互子系统的一级分解 2019/4/26 国防科技大学计算机学院
事务分析 步骤六 分解并精化事务结构以及每条动作路径所对应的结构。 9.3事务分析 事务分析 步骤六 分解并精化事务结构以及每条动作路径所对应的结构。 这些子结构是根据流经每一动作路径的数据流特征,采用本节或上节所述设计步骤导出的。 图9.18给出了各条动作路径映射后的程序结构。 步骤七 使用启发式设计策略,精化所得程序结构雏形,改良软件质量。 这一步骤与变换分析法相同。 2019/4/26 国防科技大学计算机学院
9.3事务分析 用户交互子系统的程序结构雏形 2019/4/26 国防科技大学计算机学院
9.4启发式设计策略 变换分析和事务分析的最后一个步骤都是运用启发式策略对程序结构雏形进行优化,以提高软件设计的整体质量。 第九章 面向数据流的设计方法 9.4启发式设计策略 变换分析和事务分析的最后一个步骤都是运用启发式策略对程序结构雏形进行优化,以提高软件设计的整体质量。 启发式设计策略是人们从长期的大量软件开发过程中积累总结的经验。 2019/4/26 国防科技大学计算机学院
启发式设计策略 (1)改造程序结构,减小耦合度,提高内聚度。 9.4启发式设计策略 启发式设计策略 (1)改造程序结构,减小耦合度,提高内聚度。 应从增强模块独立性的角度,对程序结构雏形的模块进行分解或合并,力求降低耦合度,提高内聚度。 (2)改造程序结构,减少高扇出,在增加程序深度的前提下追求高扇入。 2019/4/26 国防科技大学计算机学院
典型的程序结构 设计良好的软件结构通常顶层扇出比较高,中层扇出较少,底层又高扇入到公共的实用模块中去。 9.4启发式设计策略 设计良好的软件结构通常顶层扇出比较高,中层扇出较少,底层又高扇入到公共的实用模块中去。 2019/4/26 国防科技大学计算机学院
启发式设计策略 (3)改造程序结构,使任一模块的作用域在其控制域之内。 模块作用域指,受该模块内部判定影响的所有模块; 9.4启发式设计策略 启发式设计策略 (3)改造程序结构,使任一模块的作用域在其控制域之内。 模块作用域指,受该模块内部判定影响的所有模块; 模块控制域为其所有下层模块。 图9.20根据这一原则改造前后的两个程序结构。 2019/4/26 国防科技大学计算机学院
启发式设计策略 (4)改造程序结构,减少界面的复杂性和冗余程度,提高协调性。 界面复杂是引起软件错误的一个基本因素。 9.4启发式设计策略 启发式设计策略 (4)改造程序结构,减少界面的复杂性和冗余程度,提高协调性。 界面复杂是引起软件错误的一个基本因素。 界面传递的数据应尽可能简单并与模块的功能相协调。 (5)模块功能应该可预言,避免对模块施加过多限制。 模块功能可预言指,若视模块为“黑匣子”,输入恒定,输出则恒定。 如果对模块局部数据的体积,控制流程的选择及外部接口方式等诸因素限制过多,则以后为去掉这些限制要增加维护开销。 2019/4/26 国防科技大学计算机学院
启发式设计策略 (6)改造程序结构,追求单入口单出口的模块。 9.4启发式设计策略 启发式设计策略 (6)改造程序结构,追求单入口单出口的模块。 (7)为满足设计或可移植性的要求,把某些软件用包(Package)封装起来。 软件设计常常附带一些特殊限制,例如,要求程序采用覆盖技术。 根据模块重要的程度、被访问的频率及两次引用的间隔等因素对模块分组。 程序中那些供选择的或“单调”(one—shot)的模块应单独存在,以便高效地加载。 2019/4/26 国防科技大学计算机学院
启发式设计策略 无论是采用变换分析法还是事务分析法,获得程序结构后,必须开发一系列辅助文档,作为软件总体设计的组成部分。 9.4启发式设计策略 启发式设计策略 无论是采用变换分析法还是事务分析法,获得程序结构后,必须开发一系列辅助文档,作为软件总体设计的组成部分。 ①陈述每个模块的处理过程; ②描述每个模块的界面; ③根据数据字典定义局部和全局数据结构; ④综述设计中所有限制(Limitations)和限定(Restrictions); ⑤对概要设计进行复审; ⑥对设计进行优化。 2019/4/26 国防科技大学计算机学院
9.5设计优化原则 软件设计人员应牢记,一个不能工作的“最佳设计 ”没有任何实际意义。 第九章 面向数据流的设计方法 9.5设计优化原则 软件设计人员应牢记,一个不能工作的“最佳设计 ”没有任何实际意义。 努力追求的设计应该是既满足功能和性能的要求,又符合一般软件设计原理和上述种种启发式设计原则。 对软件结构的修改越早越好。人们把软件总体结构设计与详细过程设计分开正是为了尽早优化结构。有时,甚至可以并行地开发若干个软件结构,通过评比,求得“最佳”结果。 简洁的程序结构容易调试、容易维护。优化设计时,只要不违反模块化原则,应该使用尽可能少的模块;只要满足信息要求,应该使用尽可能简单的数据结构。 2019/4/26 国防科技大学计算机学院
9.5设计优化原则 设计优化原则 对时间复杂性有特殊要求的应用,优化过程一直要延续到详细设计乃至编码阶段。对这类软件的优化应该根据软件中普遍存在的“百分之二十 规则”(即20%的代码占用80%的处理时间,80%的错误出自20%的 代码等等)采取下述对策: ①在先不考虑时间复杂性的情况下,设计并精化软件结构; ②借用CASE工具模拟分析运行时的性能,找出低效部分 ③详细设计时对最耗时的模块仔细推敲,以便减少时间开销; ④用高级语言编程; ⑤对大量占用CPU资源的模块必要时用低级语言(依赖于机器)重 新编码,以便提高效率。 设计优化遵守的格言是,“先让它干起来,再让它快起来”。 2019/4/26 国防科技大学计算机学院
9.6 实时系统设计 实时软件要求在指定的时间间隔内响应客观事件,所以实时软件设计除了要解决一般软件设计遇到的问题外,还要考虑一些特殊因素。 第九章 面向数据流的设计方法 9.6 实时系统设计 实时软件要求在指定的时间间隔内响应客观事件,所以实时软件设计除了要解决一般软件设计遇到的问题外,还要考虑一些特殊因素。 如,中断处理与数据传输率、分布式数据库与实时操作系统、特定的程序设计语言与同步方式等等。 实时软件的总体结构设计、数据结构设计和过程设计等都更为复杂和困难,同时对此类软件的测试也需要特殊的技术和方法。 2019/4/26 国防科技大学计算机学院
9.6.1实时系统性能要求 实时系统的性能与功能同样重要。 在系统分析时应适当地将任务分配到硬件、软件、用户与数据库各系统元素 9.6实时系统设计 9.6.1实时系统性能要求 实时系统的性能与功能同样重要。 在系统分析时应适当地将任务分配到硬件、软件、用户与数据库各系统元素 软件设计时需要很好地协调实时任务、系统中断处理、I/O处理三者的关系。 实时系统的性能包括若干与时间相关的特性,如, 响应时间、数据传输率、故障间隔时间等等。 响应时间和数据传输率是常用的度量,系统往往追求最大负载(peak loading)最优值。 2019/4/26 国防科技大学计算机学院
实时系统性能要求 影响系统响应时间的因素包括 任务切换(context switching)时间 9.6实时系统设计 实时系统性能要求 影响系统响应时间的因素包括 任务切换(context switching)时间 中断等待(interrupt latency)时间 CPU和访问存储器的速度。 数据传输率与I/O设备的性能、总线等待时间、缓冲区大小及磁盘性能等因素有关。 任何一个软件系统都应该具有可靠性,但实时系统在可靠性、可重新启动(restart)和故障恢复等方面有更高的要求,否则可能造成无法估量的损失。 2019/4/26 国防科技大学计算机学院
9.6实时系统设计 9.6.2 实时系统设计要素 中断处理是实时系统区别于其他系统的特征之一。这是因为实时系统必须在由客观世界确定的时间间隔内响应外部刺激——中断,由于多个外部刺激可能同时存在,中断处理应 设立优先级,保证最重要的任务总能在指定的时间约束内得到服务,即高优先级事件能 中断低优先级事件的处理过程。 中断处理机制除了要妥善保存中断现场以便事后正确恢复被中断任务外,还要避免死锁和无穷循环。 大多数实时操作系统都能根据事件平均出现频率、处理事件平均所耗时间等指标动态估测满足系统功能与性能的可能性,一旦发现不能满足时间约束,系统应立即采取措施,例如将数 据事先纳入缓冲区,以便快速提交系统处理,等等。 2019/4/26 国防科技大学计算机学院
实时系统设计要素 实时系统也经常需要数据库管理功能,分布式数据库是较好的选择。 9.6实时系统设计 实时系统设计要素 实时系统也经常需要数据库管理功能,分布式数据库是较好的选择。 采用分布式数据库,系统各任务能独立、快速、可靠地访问各自的数据,避免长时间在等待队列排队,I/O瓶颈现象得到缓解。 若数据保持合理冗余,当数据库失效后,整个系统仍能正常工作。 因此引发如何保持数据一致性和并发控制等诸多问题。 2019/4/26 国防科技大学计算机学院
实时系统设计要素 为实时应用选择一个合适的操作系统 (1)为实时应用开发的实时操作系统(RTOS); 9.6实时系统设计 实时系统设计要素 为实时应用选择一个合适的操作系统 (1)为实时应用开发的实时操作系统(RTOS); (2)嵌入实时服务例程(real—time executive ) 的通用操作系统。 RTOS具有优先调度机制、优先中断机制、内存锁定(memory locking)功能,以避免程序换入换出所用系统开销。 衡量RTOS的重要指标是,任务切换时间和中断等待时间,它们代表系统中断处理的能力。 2019/4/26 国防科技大学计算机学院
实时系统设计要素 由于对可靠性和性能方面的特殊要求,为实时应用选择适宜的程序设计语言也很重要。 9.6实时系统设计 实时系统设计要素 由于对可靠性和性能方面的特殊要求,为实时应用选择适宜的程序设计语言也很重要。 一 般用于实时系统的语言应包括多任务能力、直接支持实时功能的部件以及有助于程序正确性和可靠性的若干现代程序设计特性,如模块化、抽象数据类型、异常处理机制等等。 多任务能力支持多个任务并行工作、提供任务之间的通讯和同步控制。 多任务能力可在操作系统或程序设计语言中实现。 常用的技术包括,信息灯队列(queuing semphores)、邮箱(mailboxes)和消息收发系统(message systems)等。 2019/4/26 国防科技大学计算机学院
9.6.3实时系统设计方法 实时软件设计除了要体现一般高质量软件的特性外,还要考虑下列问题: (1)中断与任务切换的表示; 9.6实时系统设计 9.6.3实时系统设计方法 实时软件设计除了要体现一般高质量软件的特性外,还要考虑下列问题: (1)中断与任务切换的表示; (2)由多任务或多处理机表现的并发; (3)任务间的通信与同步; (4)数据传输率的大幅度变化; (5)异步处理; (6)与数据库、操作系统、硬件及其他系统元素之间不可避免的交往。 2019/4/26 国防科技大学计算机学院
实时系统设计方法 实时软件设计方法可分两类。 (1)对面向数据流、面向对象和面向数据的方法扩充实时能力; 9.6实时系统设计 实时系统设计方法 实时软件设计方法可分两类。 (1)对面向数据流、面向对象和面向数据的方法扩充实时能力; (2)基于有穷状态机、或Petri网、或消息传递机制、或特殊的实时语言。 2019/4/26 国防科技大学计算机学院
9.6实时系统设计 实时系统设计方法 Gomaa在面向数据流的软件设计方法中,扩充了任务通信与同步的表示、状态依赖的表示以及将通常的数据流与实时客观世界连接的方法,产生了适于实时系统设计的方法DARTS。 该方法的任务同步采用互斥等待和信号灯交叉激活的方式实现; 任务通信用消息收发机制实现。若产生消息的任务向接收消息的任务送出消息后立即等待回答,则称紧耦合通信;反之两任务各行其事,用消息队列缓冲消息,则称松耦合通信。 2019/4/26 国防科技大学计算机学院
实时系统设计方法 DARTS方法是在面向数据流分析的基础上,识别系统中存在的任务并定义任务界面。 9.6实时系统设计 实时系统设计方法 DARTS方法是在面向数据流分析的基础上,识别系统中存在的任务并定义任务界面。 通常的DFD不反映转换之间的并发和同步特性。 DARTS方法在DFD中具有下列性质的某个或某组转换,设计为一个独立的任务: ①实现I/O交互功能的转换; ②实现时间敏感功能的转换; ③实现计算功能的转换; ④具有功能内聚性的一组转换; ⑤具有时间内聚性的一组转换; ⑥需要按同一周期执行的一组转换。 2019/4/26 国防科技大学计算机学院
实时系统设计方法 系统任务确定后,DARTS通过两类任务接口模块描述任务间的通信。 两类任务接口模块分别称为任务通信模块和任务同步模块。 9.6实时系统设计 实时系统设计方法 系统任务确定后,DARTS通过两类任务接口模块描述任务间的通信。 两类任务接口模块分别称为任务通信模块和任务同步模块。 任务通信模块又细分为消息通信模块和信息隐藏模块。 消息通信模块支持消息通信并通过管理消息队列和同步原语分别实现紧耦合通信和松耦合通信(图9.21(a))。 信息隐藏模块集中实现数据结构和访问方法,以支持其他任务对数据集的访问(图9.21(b))。 任务同步模块管理“控制”(而不是“数据”)在任务间的传递。 一个任务可向另 一任务发出信号告知某个事件发生,另一任务可能正等待这一信号(图9.21(c))。 2019/4/26 国防科技大学计算机学院
9.6实时系统设计 图9.21 DARTS的各种任务接口模块 2019/4/26 国防科技大学计算机学院
实时系统设计方法 一个任务可看作是一段独立的顺序程序。 9.6实时系统设计 实时系统设计方法 一个任务可看作是一段独立的顺序程序。 当一个任务的边界确定之后,在此边界内可用“变换分析”和“事务分析”的技术映射出程序结构。 控制流程不但与任务的输入信息有关,还依赖系统当前所处状态。 DARTS方法提出状态转换管理程序,它是过程激活表的一种实现。 2019/4/26 国防科技大学计算机学院
9.6.4设计实例 用DARTS方法进行空中交通控制系统(ATCS)顶层设计 9.6实时系统设计 9.6.4设计实例 用DARTS方法进行空中交通控制系统(ATCS)顶层设计 系统雷达测得飞机类型、方位、仰角、距离等数据 数据经分析确认后存入数据库 数据可以显示和检索 该系统对实时性和可靠性有严格的要求 交通管理员与系统的交互不得影响系统的正常运行 2019/4/26 国防科技大学计算机学院
设计实例 按照DARTS标准,在1级DFD定义下列任务 数据获取任务 数据分析任务 数据库I/O任务 显示任务和管理员交互任务 9.6实时系统设计 设计实例 按照DARTS标准,在1级DFD定义下列任务 数据获取任务 数据分析任务 数据库I/O任务 显示任务和管理员交互任务 任务进一步分割成若干并发任务 2019/4/26 国防科技大学计算机学院
9.6实时系统设计 ATCS的顶级DFD 采用面向数据流分析方法可得到ATCS的顶级DFD 2019/4/26 国防科技大学计算机学院
9.6实时系统设计 ATCS的1级DFD 采用面向数据流分析方法可得到ATCS的1级DFD 2019/4/26 国防科技大学计算机学院
9.6实时系统设计 图9.25 ATCS中任务的划定 2019/4/26 国防科技大学计算机学院
设计实例 建立2级DFD 用通常的方法将DFD映射为程序结构 程序结构的内部模块设计采用通常的过程设计方法 9.6实时系统设计 设计实例 建立2级DFD 用通常的方法将DFD映射为程序结构 程序结构的内部模块设计采用通常的过程设计方法 采用DARTS方法定义任务,表示任务之间的通信和并发 用任务接口模块实现任务的同步和通信 2019/4/26 国防科技大学计算机学院
9.6实时系统设计 ATCS的控制转换图 2019/4/26 国防科技大学计算机学院
9.6实时系统设计 ATCS的控制与通信 用DARTS方法表示任务之间的接口。 2019/4/26 国防科技大学计算机学院
小结 基于数据流图进行软件设计的过程: ①确定信息流的类型; ②划定流 界; ③将DFD映射为程序结构; ④提取层次控制结构; 第九章 面向数据流的设计方法 小结 基于数据流图进行软件设计的过程: ①确定信息流的类型; ②划定流 界; ③将DFD映射为程序结构; ④提取层次控制结构; ⑤ 通过设计复审和使用启发式策略进一步精化所得到的结构。 结合“家庭保安系统”实例,给出了将变换流和事务流映射为程序结构的方法。 简要介绍了实时系统设计问题及适于实时系统设计的DARTS方法,它是面向数据流方法的扩充。 2019/4/26 国防科技大学计算机学院
谢谢 2019/4/26 国防科技大学计算机学院