《第五章:总体设计.ppt》由会员分享,可在线阅读,更多相关《第五章:总体设计.ppt(52页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第五章第五章 总体设计总体设计开始考虑“How”关键问题:“概括地说,系统应该如何实现?”。但仍属高层设计(确定黑盒关系)两个主要阶段:系统设计-具体实现方案 结构设计-软件结构4.1 总体设计的过程总体设计的过程1.设想供选择的方案l在数据流程图的基础上,一个边界一个边界设想并列出供选择的方案。l不评价这些供选择的方案。2.选取合理的方案l从上一步得到的一系列供选择的方案中选取若干个合理的方案,通常至少选取低成本、中等成本和高成本的三种方案。每个合理的方案应配备下列4份资料:系统流程图 组成系统的物理元素清单 成本/效益分析 进度计划4.1总体设计的过程总体设计的过程3.推荐最佳方案l综合分
2、析对比各种合理方案的利弊,推荐一个最佳的方案,并为最佳方案制定详细的实现计划。4.功能分解l结构设计-模块组成、模块关系;l过程设计-模块处理过程,详细设计阶段;l对流程图进一步细化,进行功能分解;4.1总体设计的过程总体设计的过程5.设计软件结构l软件结构反映系统中模块的组成及相互调用关系:顶层模块调用它的下层模块以实现程序的完整功能,每个下层模块再调用更下层的模块,最下层的模块完成最具体的功能。l软件结构通过层次图或结构图来描绘,可以直接从数据流程图映射出软件结构。6.数据库设计l模式设计:确定逻辑数据库结构;l子(外)模式设计:用户使用的数据视图;l完整性和安全性设计:l优化:4.1总体
3、设计的过程总体设计的过程7.制定测试计划8.书写文档l系统说明:概要设计说明书l用户手册l测试计划l详细的实现计划l数据库设计结果:数据库设计说明书9.审查和复审l先技术审查l后管理审查4.2 软件设计的概念和原理软件设计的概念和原理一、模块化1.模块:数据说明、可执行语句等程序对象的集合,如过程、函数、子程序等。2.模块化:把程序划分成若干个模块,每个模块完 成一个子功能,把这些模块集总起来组 成一个整体,可以完成指定的功能满足 问题的要求。4.2 软件设计的概念和原理软件设计的概念和原理3.模块化的理论根据 设函数C(x)定义问题x的复杂程度,函数E(x)确定解决问题x需要的工作量。对于两
4、个问题P1和P2,如果:C(P1)C(P2),则显然有:E(P1)E(P2)根据人类解决一般问题的经验,有:C(P1+P2)C(P1)+C(P2)进而获得:E(P1+P2)E(P1)+E(P2)4.2 软件设计的概念和原理软件设计的概念和原理模块化与软件成本成成本本成本成本 /模块模块最小成本区最小成本区接口成本接口成本软件总成本软件总成本模块数目模块数目4.2 软件设计的概念和原理软件设计的概念和原理二、抽象 抽出事务的本质特性而忽略细节,分层理解问题,自顶向下层层加细。当我们考虑任何问题的解决方案时,可以给出许多抽象级别。在最高的抽象级别中,解决方案使用问题环境的语言来进行概括性术语描述,
5、在低一些的抽象级别中,会有更加面向过程的倾向;最后,在最低的抽象层次用可以直接实现的方式叙述问题的解法。在软件工程中,从系统定义到实现,每进展一步都可在软件工程中,从系统定义到实现,每进展一步都可以看做是对软件解决方法的抽象化过程的一次细化。以看做是对软件解决方法的抽象化过程的一次细化。4.2 软件设计的概念和原理软件设计的概念和原理三、逐步求精 逐步求精:“为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。”事实上,可以把逐步求精看作是一项把一个时期内必须解决的种种问题按优先级排序的技术。逐步求精方法确保每个问题都将被解决,而且每个问题都将在适当的时候被解决,但是,在任何时候一个人都不需
6、要同时处理7个以上知识块。逐步求精最初是一种自顶向下的设计策略。按照这种设计策略,程序的体系结构是通过逐步精化处理过程的层次而设计出来的。通过逐步分解对功能的宏观陈述而开发出层次结构,直至最终得出用程序设计语言表达的程序。抽象与求精是一对互补的概念。抽象使得设计者能够说明过程和数据,同时却忽略低层细节。事实上,可以把抽象看作是一种通过忽略多余的细节同时强调有关的细节,而实现逐步求精的方法。求精则帮助设计者在设计过程中逐步揭示出低层细节。这两个概念都有助于设计者在设计演化过程中创造出完整的设计模型。4.2 软件设计的概念和原理软件设计的概念和原理四、信息隐蔽和局部化 信息隐蔽原理:应该这样设计和
7、确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。局部化的概念和信息隐蔽概念是密切相关的。所谓局部化是指把一些关系密切的软件元素物理地放得彼此靠近。“隐藏”意味着有效的模块化可以通过定义一组独立的模块而实现,这些独立的模块彼此间仅仅交换那些为了完成系统功能而必须交换的信息。4.2 软件设计的概念和原理软件设计的概念和原理五、模块独立性 模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。开发具有独立功能而且和其他模块之间没有过多的相互作用的模块,就可以做到模块独立。好设计的关键:每个模块完成一个相对独立的子功能,并且与其它模块间的接口简单。有
8、效的模块化的软件比较容易开发出来;独立的模块比较容易测试和维护 独立性的度量:耦合耦合(Coupling)&内聚内聚(Cohesion)模块独立性比较强的模块应是模块独立性比较强的模块应是高内聚低耦合高内聚低耦合高内聚低耦合高内聚低耦合的模块。的模块。4.2 软件设计的概念和原理软件设计的概念和原理1.耦合(Coupling)耦合耦合耦合耦合是模块之间的互相连接的紧密程度的度量。是模块之间的互相连接的紧密程度的度量。在软件设计中应该追求尽可能松散耦合的系统。模块间的耦合程度强烈影响系统的可理解性、可测试性、可靠性和可维护性。模块耦合程度从弱到强的依次为:非直接耦合数据耦合控制耦合公共耦合内容耦
9、合4.2 软件设计的概念和原理软件设计的概念和原理(1)非直接耦合 两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。非直接耦合的模块独立性最强。4.2 软件设计的概念和原理软件设计的概念和原理(2)数据耦合 一个模块访问另一个模块时,彼此之间是通过一个模块访问另一个模块时,彼此之间是通过简单数简单数据参数据参数 (不是控制参数、公共数据结构或外部变量不是控制参数、公共数据结构或外部变量)来来交换输入、输出信息的。交换输入、输出信息的。尽量使用。4.2 软件设计的概念和原理软件设计的概念和原理(3)控制耦合 如果一个模块通过传送开关、标志、名字等控制信息,如果一个模
10、块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。明显地控制选择另一模块的功能,就是控制耦合。ABFlagF2F1FnFlag接口单一,但仍接口单一,但仍然影响被控模块然影响被控模块的内部逻辑。的内部逻辑。可把模块适当分可把模块适当分解之后用数据耦解之后用数据耦合代替。合代替。4.2 软件设计的概念和原理软件设计的概念和原理(4)公共环境耦合 若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。Global:V1 V2A:A1=V1+V2B:V1=B1Global:V1 V2A:
11、V1+B:V2=B1+V1问题:问题:公共部分的改动将影响所有调用它的模块;公共部分的改动将影响所有调用它的模块;公共部分的数据存取无法控制;公共部分的数据存取无法控制;复杂程度随耦合模块的个数增加而增加。复杂程度随耦合模块的个数增加而增加。4.2 软件设计的概念和原理软件设计的概念和原理(5)内容耦合 如果发生下列情形,两个模块之间就发生了内容耦合 (a)一个模块直接访问另一个模块的内部数据;(b)一个模块不通过正常入口转到另一模块内部;(c)两个模块有一部分程序代码重迭;(d)一个模块有多个入口。例1:A访问C的内部数据或不通过正常入口而转入C的内部。ABCDA:goto C1C:C1:完
12、全不用完全不用4.2 软件设计的概念和原理软件设计的概念和原理例2:部分代码重叠(常出现在汇编程序中)B A例3:一个模块有多个入口(功能)A:entry 1:entry 2:原则:原则:尽量使用数据耦合,少用控制耦合,限制公共尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,完全不用内容耦合。耦合的范围,完全不用内容耦合。4.2 软件设计的概念和原理软件设计的概念和原理2.内聚(Cohesion)内聚内聚内聚内聚是模块功能强度是模块功能强度(一个模块内部各个元素彼此一个模块内部各个元素彼此结合的紧密程度结合的紧密程度)的度量。的度量。模块内聚程度从高到底的依次为:内聚性内聚性模块独立性模块
13、独立性高高低低强强弱弱功能内聚功能内聚 顺序内聚顺序内聚通信内聚通信内聚过程内聚过程内聚 时间内聚时间内聚 逻辑内聚逻辑内聚 偶然内聚偶然内聚4.2 软件设计的概念和原理软件设计的概念和原理(1)偶然内聚 当模块内各部分之间没有联系,或者即使有联系,这种当模块内各部分之间没有联系,或者即使有联系,这种联系也很松散,则称这种模块为偶然内聚模块,它是内聚联系也很松散,则称这种模块为偶然内聚模块,它是内聚程度最低的模块。程度最低的模块。如:把程序中多如:把程序中多 处出现的语句作为一处出现的语句作为一 个模块。个模块。4.2 软件设计的概念和原理软件设计的概念和原理(2)逻辑内聚 把几种相似的功能组
14、把几种相似的功能组 合在一起,每次被调用时,合在一起,每次被调用时,由传送给模块的判定参数由传送给模块的判定参数 来确定该模块应执行哪一来确定该模块应执行哪一 种功能。种功能。问题:不同功能混在一个模块中,有时共用部分编码,使局部功能的修改牵动全局。4.2 软件设计的概念和原理软件设计的概念和原理(3)时间内聚 模块的各个功能的执行与时间有关,通常要求所有功模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。能必须在同一时间段内执行。例如:系统的初始化(4)过程内聚 模块内的处理元素是相关的,而且必须以特定次序执模块内的处理元素是相关的,而且必须以特定次序执行。行。例如:使
15、用流程图做为工具设计程序时,把流程图中的使用流程图做为工具设计程序时,把流程图中的某一部分划出组成模块,就得到过程内聚模块。例如,把某一部分划出组成模块,就得到过程内聚模块。例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块这三个模块都是过程内聚模块 。4.2 软件设计的概念和原理软件设计的概念和原理(5)通信内聚 如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块。4.2 软件设计的概念和原理软件设计的概念和原理(6)顺序内聚 如果一个模块内的处理元素和同一个功能
16、密切相关,如果一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行(通常一个处理元素的输出数而且这些处理必须顺序执行(通常一个处理元素的输出数据作为下一个处理元素的输入数据),则称顺序内聚。据作为下一个处理元素的输入数据),则称顺序内聚。顺序聚合维护起来不如功能聚合方便,要修改模块中的一个功能,会影响到同一个模块中的其他功能。(7)功能内聚 一个模块中各个部分都是一个模块中各个部分都是完成某一具体功能完成某一具体功能必不可必不可少的组成部分,或者说该模块中所有部分都是为了完成一少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该项具
17、体功能而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模块。模块为功能内聚模块。4.2 软件设计的概念和原理软件设计的概念和原理模块内聚性的判断 该模块该模块只能执只能执行一个行一个功能吗功能吗?功能内聚功能内聚模块内模块内各组成各组成部分的部分的关系如关系如何?何?是是否否次序重要次序重要吗?吗?次序重要次序重要吗?吗?逻辑相似逻辑相似吗?吗?数据流数据流控制流控制流两者都不是两者都不是是是是是是是否否否否否否顺序内聚顺序内聚通讯内聚通讯内聚过程内聚过程内聚时间内聚时间内聚逻辑内聚逻辑内聚偶然内聚偶然内聚4.2 软件设计的概念和原理软件设计的概念和原理七种内聚模块的性能比较 4.3启发
18、式规划启发式规划 人们在开发计算机软件的长期实践中积累了丰富的经验,人们在开发计算机软件的长期实践中积累了丰富的经验,总结这些经验得出了一些启发式规则。总结这些经验得出了一些启发式规则。1.1.改进软件结构提高模块独立性改进软件结构提高模块独立性 通过模块分解或和并,力求降低耦合提高内聚。通过模块分解或和并,力求降低耦合提高内聚。2.模块规模适中模块规模适中3.过大不易理解;太小则接口开销过大,注意分解后不过大不易理解;太小则接口开销过大,注意分解后不应降低模块的独立性。应降低模块的独立性。4.一般一个模块内包含的语句在一般一个模块内包含的语句在30-5030-50条左右较好。条左右较好。3.
19、适当控制适当控制 深度深度=分层的层数。过大表示分工过细。分层的层数。过大表示分工过细。宽度宽度=同一层上模块数的最大值。过大表示系统复同一层上模块数的最大值。过大表示系统复 杂度大。杂度大。4.3启发式规划启发式规划扇出=一个模块直接调用控制的模块数。3 扇出 9AA的扇出的扇出AA的扇入的扇入 扇入扇入=直接调用该模块的直接调用该模块的模块数模块数在不破坏独立性的前提下,在不破坏独立性的前提下,扇入大的比较好。扇入大的比较好。4.3启发式规划启发式规划 4、作用域在控制域内作用域在控制域内u控制域控制域:模块模块本身及所有直接或间接从属于它本身及所有直接或间接从属于它的模块集合。如:的模块
20、集合。如:M M的控制域为的控制域为 MM,A A,B B,CCMACB作用域:作用域:M中的一个判定所影响的模块。中的一个判定所影响的模块。原则:原则:A.A.对于任何一个内部存在判断调用的模块,它的对于任何一个内部存在判断调用的模块,它的判断作用的范围应该是其控制范围的一个子集。判断作用的范围应该是其控制范围的一个子集。B.B.存在判断调用的模块,所在层次不要与那些属存在判断调用的模块,所在层次不要与那些属于判断作用范围的模块所在的层次相隔太远。于判断作用范围的模块所在的层次相隔太远。4.3启发式规划启发式规划例如:例如:A:if then goto B1 B:B1:作用域在控制域内作用域
21、在控制域内A:if then goto M1 M:M1:goto C1 作用域超出了控制域作用域超出了控制域 上例中上例中A的作用超出了控制域。改进方法之一,的作用超出了控制域。改进方法之一,可以把可以把A中的中的 if 移到移到M中;方法之二,可以把中;方法之二,可以把C移到移到A下面。下面。4.3启发式规划启发式规划5、降低接口的复杂程度降低接口的复杂程度模块接口复杂是软件发生错误的一个主要原因。应该仔模块接口复杂是软件发生错误的一个主要原因。应该仔细设计模块接口,使得信息传递简单并且和模块的功能细设计模块接口,使得信息传递简单并且和模块的功能一致。一致。接口复杂或不一致(即看起来传递的数
22、据之间没有联系)接口复杂或不一致(即看起来传递的数据之间没有联系),是紧耦合或低聚合的征兆,应该重新分析这个模块的,是紧耦合或低聚合的征兆,应该重新分析这个模块的独立性。独立性。6、单出单入,避免内容耦合。、单出单入,避免内容耦合。7、模块功能可预测、模块功能可预测 相同输入必产生相同输出。反例:模块中使用全局变量相同输入必产生相同输出。反例:模块中使用全局变量或静态变量,则可能导致不可预测。或静态变量,则可能导致不可预测。4.4图形工具1、层次图和HIPO例:P.65 图4.4正文加工正文加工系统系统输出输出2.0编辑编辑3.0输入输入1.0加标题加标题4.0插入插入3.3删除删除3.2添加
23、添加3.1存储存储5.0检索检索6.0编目录编目录7.0格式化格式化8.0合并合并3.5修改修改3.4列表列表3.6 这里的层次图表现软件的结构,而非数据结构;这里的层次图表现软件的结构,而非数据结构;每个矩形框代表一个模块,连线表示每个矩形框代表一个模块,连线表示“调用调用”而非而非“组成组成”;所谓所谓HIPO,即对每个模块附一张即对每个模块附一张IPO图。每个图。每个IPO图中应明确标出对图中应明确标出对应模块的编号。应模块的编号。4.4图形工具2、结构图结构图(Structured Diagram)符号:符号:数据传递数据传递;控制信息;控制信息;或;或;循环循环.例:BAMM1M2M
24、3CD注:此图一般不注:此图一般不入文档,仅用于入文档,仅用于检查设计的正确检查设计的正确性和模块独立性。性和模块独立性。须检查须检查:每个传递的数据是否每个传递的数据是否必须必须?完成模块功能所必须的数据是否完成模块功能所必须的数据是否都传递了都传递了?传输的数据是否只与传输的数据是否只与单一单一的功能有关?是否目的明确?的功能有关?是否目的明确?4.5面向数据流的设计方法(又称为SD:结构化设计)基本思想:DFD 软件结构一、Data Flow 的分类1.变换流(Transform Flow):内部表示内部表示变换流变换流输出流输出流输入流输入流外部表示外部表示时间时间信信息息信息流信息流
25、 参看图形,信息沿输入通路参看图形,信息沿输入通路进入系统,同时由外部形式变换进入系统,同时由外部形式变换成内部形式,进入系统的信息通成内部形式,进入系统的信息通过变换中心,经过加工处理以后过变换中心,经过加工处理以后再沿输出通路变换成外部形式离再沿输出通路变换成外部形式离开软件系统。开软件系统。当数据流具有这些特征时,当数据流具有这些特征时,这种信息流称为变化流。这种信息流称为变化流。4.5面向数据流的设计方法2.事务流(Transaction Flow)T事务事务 活动通路活动通路 数据沿输入通路到达一个处理数据沿输入通路到达一个处理T T,这个处理根据输入数据的类型在若这个处理根据输入数
26、据的类型在若干个动作序列中选出一个来执行。这干个动作序列中选出一个来执行。这种种“以事务为中心的以事务为中心的”的数据流称为的数据流称为“事务流事务流”。处处理理T T称称为为事事务务中中心心,完完成成以以下下任务:任务:接收输入数据;接收输入数据;分析每个事务以确定它的类型;分析每个事务以确定它的类型;根据事务类型选取一条活动通路根据事务类型选取一条活动通路。事务事务中心中心4.5面向数据流的设计方法二、SD的设计过程:“变换变换”“事物事物”精化数据流图精化数据流图流类型流类型区分事物中心和区分事物中心和数据接收通路数据接收通路区分输入和区分输入和输出分支输出分支映射成事务结构映射成事务结
27、构映射成变换结构映射成变换结构用启发式设计规用启发式设计规则精化软件结构则精化软件结构导出接口描述和导出接口描述和全程数据结构全程数据结构复复 查查详细设计详细设计变换分析变换分析事物分析事物分析优化的前题是:优化的前题是:“Get it to work,then make it fast.”4.5面向数据流的设计方法三、变换分析 变换分析是一系列设计步骤的总称,经过这些步骤把变换分析是一系列设计步骤的总称,经过这些步骤把具有变换流特点的数据流图按预先确定的模式映射成软件具有变换流特点的数据流图按预先确定的模式映射成软件结构。结构。例:例:P.68-69 汽车数字仪表板的设计汽车数字仪表板的设
28、计功能:功能:通过模通过模-数转换实现传感器和微处理机接口;数转换实现传感器和微处理机接口;在发光二极管面板上显示数据;在发光二极管面板上显示数据;指示每小时英里数指示每小时英里数(mph),行驶的里程,每加仑油行行驶的里程,每加仑油行驶的英里数驶的英里数(mpg)等等;等等;指示加速或减速;指示加速或减速;如果车速超过如果车速超过55mph,则发出警告铃声。则发出警告铃声。4.5面向数据流的设计方法 步骤:步骤:1.1.复查基本系统模型复查基本系统模型复查的目的是确保系统的输入数据和输出数据符合实复查的目的是确保系统的输入数据和输出数据符合实际。际。2.2.复查并精华数据流程图复查并精华数据
29、流程图确保正确的逻辑模型,而且每个处理代表一个规模适确保正确的逻辑模型,而且每个处理代表一个规模适中相对独立的子功能。中相对独立的子功能。3.3.确定数据流程图具有变换特性还是事务特性确定数据流程图具有变换特性还是事务特性只有当遇到有明显事务特性的信息流时,才采用事务只有当遇到有明显事务特性的信息流时,才采用事务分析方法,否则,一般都认为是变换流,采用变换分分析方法,否则,一般都认为是变换流,采用变换分析的方法。析的方法。4.5面向数据流的设计方法4.确定输入流和输出流的边界,从而孤立出变换中心(1)检查“输入流”的边界l从输入的数据源开始,沿着每一个由数据源传入的数据流的移动方向进行跟踪分析
30、,逐个分析它所经过的处理逻辑功能。如果仅是传入的数据流作形式上的转换,逻辑上没有进行实际的数据处理功能,则这些处理逻辑属于系统的“输入处理部分”。顺着传入的数据流的移动方向,一直跟踪到它被真正地处理为止。(2)检查“输出流”的边界l从输出结果的地方开始,逆着每一个传递出去的数据流,由外向里反方向跟踪,逐个分析它的处理逻辑功能,一直反方向跟踪到它被真正地产生出来为止。(3)得到变换中心l根据前两步的分析结果,画出一个闭环界线,在界线以内的就是变换中心。燃料流燃料流 传感器信号传感器信号SPS旋转信号旋转信号读读旋转信旋转信号号收集和收集和求平均求平均确定加确定加/减速减速转换成转换成转转/分分计
31、算里计算里程程计算计算mph,超超速值速值产生产生加加/减速减速显示显示计算燃计算燃料消耗料消耗计算计算gph读和校读和校核核产生产生mpg显显示示产生产生mph显显示示发出铃发出铃声声产生里产生里程显示程显示SPS SPS箭头指示箭头指示燃烧流燃烧流上箭头上箭头水平线水平线下箭头下箭头rpmrpmgphmphmpgmph超速值超速值英里英里显示显示铃声铃声mph显示显示mpg显示显示4.5面向数据流的设计方法5.完成“第一级分解”CmCaCtCe4.5面向数据流的设计方法 5.完成“第一级分解”l控制模块Cm是抽象出来的,它位于软件结构最顶层,协调控制下属模块。l输入信息处理控制模块Ca,协
32、调对所有输入数据的接收。l变换中心控制模块Ct,管理对内部形式的数据的所有操作。l输出信息处理控制模块Ce,协调输出信息的产生过程。数字仪表板数字仪表板控制控制数据转换数据转换控制控制驱动仪表板驱动仪表板接收传感器接收传感器信号信号4.5面向数据流的设计方法6.完成“第二级分解”l所谓第二级分解就是把数据流程图中的每个处理映射成软件结构中一个适当的模块。l完成第二级分解的方法是,从变换中心的边界开始沿着输入通路向外移动,把输入通路中每个处理逻辑映射成软件结构中Ca控制下的一个低层模块;l然后沿输出通路向外移动,把输入通路中每个处理逻辑映射成直接或间接受模块Ce控制的一个低层模块;l最后把变换中
33、心内的每个处理映射成受Ct控制的一个模块。4.5面向数据流的设计方法ADCBCmCaCBDA4.5面向数据流的设计方法例:(与P.70 图4.12 对照)数字仪表板数字仪表板控制控制数据转换数据转换控制控制驱动仪表板驱动仪表板接收传感器接收传感器信号信号计算计算gph读燃料流读燃料流转换成转换成rpm收集收集sps读旋转信号读旋转信号确定确定加加/减速减速计算计算mph计算计算mpg计算计算里程里程加加/减速减速显示显示显示显示mpg显示显示mph显示显示里程里程发出发出铃声铃声发光二极管显示发光二极管显示4.5面向数据流的设计方法7.本着高内聚、低耦合的原则对第一次分割得到的软件结构进一步精
34、化。为了得到一个易于实现、易于测试和易于维护的软件结构,根据软件设计的基本原则和其它启发性原则,对初步分割得到的模块进行再分解或合并。注:每个模块应附一简要说明描述注:每个模块应附一简要说明描述 进出该模块的信息(接口描述);进出该模块的信息(接口描述);模块内部的信息;模块内部的信息;过程陈述,包括主要判定点及任务等;过程陈述,包括主要判定点及任务等;对约束和特殊特点的简短讨论。对约束和特殊特点的简短讨论。4.5面向数据流的设计方法四、事务分析l虽然在任何情况下都可以使用变换分析方法设计软件解构,但数据流具有事务特点时,还是以采用事务分析方法为宜。l事务分析的设计步骤和变换分析的设计步骤大部
35、分相同或类似,主要差别仅在由数据流程图到软件结构的映射方法不同。由事务流映射成的软件结构包括一个接收分支和一个发送分支。l映射出接收分支结构的方法和变换分析映射出输入结构的方法相似,即从事务中心的边界开始,把沿着接收流通路的处理逻辑映射成模块。l发送分支的结构包含一个调度模块,它控制下层的所有活动模块;然后把数据流程图中的每一个活动流通路映射成与它的特征相对应的结构。4.5面向数据流的设计方法例:MIIISABCIIISBAC4.5面向数据流的设计方法五、总结l对于一个大系统,常常把变换分析和事务分析应用到同一个数据流程图的不同部分,由此得到的子结构形成“构件”,可以利用它们构造完整的软件结构
36、。l一般说来,如果数据流不具有显著的事务特点,最好使用变换分析;反之,如果具有明显的事务中心,则应该采用事务分析技术。l进行设计优化,应力求做到在有效的模块化的前提下使用最少量的模块,以及在能够满足信息要求的前提下使用最简单的数据结构。1 1引言引言1.11.1编写目的编写目的1.21.2背景背景1.31.3定义定义1.41.4参考资料参考资料2 2总体设计总体设计2.12.1需求规定需求规定2.22.2运行环境运行环境2.32.3基本设计概念和处理流程基本设计概念和处理流程2.42.4结构结构2.52.5功能需求与程序的关系功能需求与程序的关系2.62.6人工处理过程人工处理过程2.72.7
37、尚未问决的问题尚未问决的问题3 3接口设计接口设计3.13.1用户接口用户接口3.23.2外部接口外部接口3.33.3内部接口内部接口4 4运行设计运行设计4.14.1运行模块组合运行模块组合4.24.2运行控制运行控制4.34.3运行时间运行时间5 5系统数据结构设计系统数据结构设计5.15.1逻辑结构设计要点逻辑结构设计要点5.25.2物理结构设计要点物理结构设计要点5.35.3数据结构与程序的关系数据结构与程序的关系6 6系统出错处理设计系统出错处理设计6.16.1出错信息出错信息6.26.2补救措施补救措施6.36.3系统维护设计系统维护设计总体设计说明书总体设计说明书课后作业课后作业5-3 用面向数据流的方法设计下列系统的软件用面向数据流的方法设计下列系统的软件结构结构:(1)储蓄系统储蓄系统(参见习题参见习题2第第2题题);(2)机票预订系统机票预订系统(参见习题参见习题2第第3题题);