《第4章 总体设计精选文档.ppt》由会员分享,可在线阅读,更多相关《第4章 总体设计精选文档.ppt(71页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第4章 总体设计本讲稿第一页,共七十一页 4.1 软件设计概述软件设计概述 简单地说,简单地说,软件设计软件设计就是根据需求分析所确立就是根据需求分析所确立的的“做什么做什么(What to do?)”来确定系统应该来确定系统应该“怎么怎么做做”(How to do?)的过程的过程。本讲稿第二页,共七十一页开发阶段的信息流开发阶段的信息流 软件设计概述软件设计概述本讲稿第三页,共七十一页 4.2 软件设计的目标软件设计的目标 软件设计的目标软件设计的目标是为系统制定是为系统制定总的蓝图总的蓝图,权衡各,权衡各种技术和实施方法中的利弊,合理利用各种资源,种技术和实施方法中的利弊,合理利用各种资源
2、,精心规划出系统的一个总的设计方案。精心规划出系统的一个总的设计方案。本讲稿第四页,共七十一页软件设计的任务软件设计的任务软件设计的任务:软件设计的任务:采采用用合合适适的的设设计计方方法法进进行行系系统统结结构构、数数据据和和过过程程的的设设计计,把把分分析析阶阶段段产产生生的的软软件件需需求求说说明明书书转转换换为为用用适适当当手手段段表表示示的的软软件件设设计文档计文档。软件设计按生存周期可划分为两个阶段:软件设计按生存周期可划分为两个阶段:1)概要设计概要设计:给出软件系统的整体模块结构。:给出软件系统的整体模块结构。2)详详细细设设计计:给给出出软软件件模模块块中中各各个个模模块块的
3、的输输入入、输输出出及及详详细细的的过过程描述。程描述。本讲稿第五页,共七十一页概要设计的任务概要设计的任务概要设计(总体设计)的基本任务:概要设计(总体设计)的基本任务:将将系系统统划划分分成成模模块块结结构构形形式式,决决定定每每个个模模块块要要完完成成的的功功能能,每个模块之间的每个模块之间的调用关系调用关系,决定模块,决定模块接口接口。概要设计阶段的主要产品:概要设计阶段的主要产品:模块结构图模块结构图模块说明书模块说明书 每个模块的描述每个模块的描述还有数据结构、数据库和评审报告等。还有数据结构、数据库和评审报告等。系统的模块组成及模块间系统的模块组成及模块间的调用关系的调用关系主要
4、包含功能和接口主要包含功能和接口描述描述本讲稿第六页,共七十一页4.3 软件设计的原则软件设计的原则1 1、模块化、模块化 模块化,就是指把一个待开发的软件系统分解成若干小的部分,即将一个大的问题分成若干小的问题逐一解决。本讲稿第七页,共七十一页为何要采用模块化这种设计方法呢?软件设计的原则软件设计的原则本讲稿第八页,共七十一页 在软件开发过程中,大型软件系统的设计往往是非常在软件开发过程中,大型软件系统的设计往往是非常复杂的,而复杂的,而采用模块化的设计方法,能将一个大的复杂的问采用模块化的设计方法,能将一个大的复杂的问题,分解成若干小的简单的问题逐一解决题,分解成若干小的简单的问题逐一解决
5、。对一个大的系统分解成若干小的功能模块,对一个大的系统分解成若干小的功能模块,有利于有利于我我们对各具体问题的解决,使得程序的们对各具体问题的解决,使得程序的结构更加清晰,便于结构更加清晰,便于阅读、理解阅读、理解。另外,模块化也使得软件的测试和维护人。另外,模块化也使得软件的测试和维护人员员更易于进行软件测试及维护更易于进行软件测试及维护。软件设计的原则软件设计的原则本讲稿第九页,共七十一页 通过对软件系统的不断细分可以将系统开发的工作量不断减小,工作量的大小将随着模块化程度的加大而不断减小。但能不能说把系统划分的越细,开发的工作量就越小?不能,因为还有一些因素不容我们忽视,那就是接口的开发
6、成本。软件设计的原则软件设计的原则本讲稿第十页,共七十一页模块化程度与软件成本的关系最小成本区域最小成本区域软件总成本软件总成本成本成本/模块模块成本成本模块数量模块数量接口成本接口成本软件设计的原则软件设计的原则本讲稿第十一页,共七十一页 从图中我们可以看出,在进行模块化设计时,既要尽量的细分模块,又要考虑设计接口所带来的成本,设计中尽量使模块化程度接近于图中的最小成本区域。软件设计的原则软件设计的原则本讲稿第十二页,共七十一页2、抽象与逐步求精、抽象与逐步求精 抽象是人们认识复杂事物的一种强有力的思维工具。抽象,即抽出事物固有的本质的共同属性,而忽略其他不重要、存在差异的细节。软件设计的原
7、则软件设计的原则本讲稿第十三页,共七十一页 在软件开发的过程中,每前进一步实际上就是在软件开发的过程中,每前进一步实际上就是对软件解法抽象层次的进一步细化,即为我们所说对软件解法抽象层次的进一步细化,即为我们所说的的逐步求精逐步求精。抽象与逐步求精之间事实上是一种抽象与逐步求精之间事实上是一种互补关系互补关系,逐步求精即为抽象的逐步求精即为抽象的细化过程细化过程,由抽象的最高层次,由抽象的最高层次,经历软件工程中需求分析、总体设计和详细设计经历软件工程中需求分析、总体设计和详细设计的过渡过程,不断的一步步细化,最后结束于代的过渡过程,不断的一步步细化,最后结束于代码的编写,也即达到抽象的最低层
8、。码的编写,也即达到抽象的最低层。软件设计的原则软件设计的原则本讲稿第十四页,共七十一页3、信息屏蔽与局部化、信息屏蔽与局部化 信息隐蔽的思想主要是强调模块的独立特性及其信息的隐蔽,即对于一个整体的程序划分为若干模块,而每个模块隐藏、封装一定功能的程序成分,并尽可能少地显露其内部实现细节。软件设计的原则软件设计的原则本讲稿第十五页,共七十一页 局部化局部化则是指把一些关系密切的软件元素彼此间靠近,使关系密切的元素位于同一局部范围之内。软件设计的原则软件设计的原则本讲稿第十六页,共七十一页4、模块的独立性、模块的独立性 是指软件系统中是指软件系统中每个模块只涉及软件要求的具体的子功能每个模块只涉
9、及软件要求的具体的子功能,而,而和软件系统中其它的模块的和软件系统中其它的模块的接口尽可能简单接口尽可能简单。模块的独立性是衡量软件质量的关键模块的独立性是衡量软件质量的关键。对软件的功能加以分割以。对软件的功能加以分割以后,如果模块的独立性好,相互间的接口不复杂,在各自设计和修改后,如果模块的独立性好,相互间的接口不复杂,在各自设计和修改代码时所引起的二次影响不大,错误传播少,所以开发的软件质量就代码时所引起的二次影响不大,错误传播少,所以开发的软件质量就好。好。软件设计的原则软件设计的原则本讲稿第十七页,共七十一页模块模块独立性的度量独立性的度量:一般采用两个准则度量模块独立性。即一般采用
10、两个准则度量模块独立性。即模块模块间的耦合性和模块的内聚性间的耦合性和模块的内聚性。耦合性耦合性是是模块之间模块之间互相连接的紧密程度的度量。互相连接的紧密程度的度量。模块之间的连接越紧密,联系越多,耦合性就越高,模块之间的连接越紧密,联系越多,耦合性就越高,而其独立性就越弱。而其独立性就越弱。软件设计的原则软件设计的原则本讲稿第十八页,共七十一页内聚性内聚性是一个是一个模块内部模块内部各个元素彼此结合的紧密程度各个元素彼此结合的紧密程度的度量。的度量。一个模块内部各个元素之间的联系越紧密,则一个模块内部各个元素之间的联系越紧密,则它的内聚性就越高,相对地,它与其它模块之间的耦它的内聚性就越高
11、,相对地,它与其它模块之间的耦合性就会减低,而模块独立性就越强。合性就会减低,而模块独立性就越强。模块独立性比较强的模块应是模块独立性比较强的模块应是高内聚低耦合高内聚低耦合的的模块。模块。软件设计的原则软件设计的原则本讲稿第十九页,共七十一页耦合度:耦合度:模块间联系的模块间联系的紧密程度紧密程度称之为耦合度。称之为耦合度。如果一个模块在不需要另一个模块的情况下,能够完整地执行其功如果一个模块在不需要另一个模块的情况下,能够完整地执行其功能,就称这两个能,就称这两个模块完全独立模块完全独立。通常模块之间总是相互关联的,因。通常模块之间总是相互关联的,因为完全独立的模块是无法构成系统的。关键是
12、连接的为完全独立的模块是无法构成系统的。关键是连接的程度和复杂度程度和复杂度。软件设计的原则软件设计的原则本讲稿第二十页,共七十一页紧耦合紧耦合模块间连接很强。模块间连接很强。松耦合松耦合模块间的连接弱叫。模块间的连接弱叫。我们的目标是努力实现我们的目标是努力实现“松耦合松耦合”系统。系统。软件设计的原则软件设计的原则本讲稿第二十一页,共七十一页模块模块耦合性耦合性:非直接耦合非直接耦合 数据耦合数据耦合 标记耦合标记耦合 控制耦合控制耦合 外部耦合外部耦合 公共耦合公共耦合 内容耦合内容耦合 低低高高耦合性耦合性强强弱弱模块独立性模块独立性软件设计的原则软件设计的原则本讲稿第二十二页,共七十
13、一页1 1、非直接耦合、非直接耦合 两个模块之间没两个模块之间没有直接关系,它们之有直接关系,它们之间的联系完全是通过间的联系完全是通过主模块的控制和调用主模块的控制和调用来实现的。来实现的。独立性最强独立性最强。软件设计的原则软件设计的原则本讲稿第二十三页,共七十一页2 2、数据耦合、数据耦合 一个模块访问另一个模块时,彼此之间是通过一个模块访问另一个模块时,彼此之间是通过简单数据简单数据参数来参数来交换输入、输出信息的。交换输入、输出信息的。软件设计的原则软件设计的原则本讲稿第二十四页,共七十一页3 3、标记耦合、标记耦合(特征耦合特征耦合)一个模块通过参数表一个模块通过参数表传递记录信息
14、传递记录信息。这个记录信息是数据结构的子。这个记录信息是数据结构的子结构(如结构体、公用体),而实际所用到的数据只是其中的一部分。结构(如结构体、公用体),而实际所用到的数据只是其中的一部分。软件设计的原则软件设计的原则本讲稿第二十五页,共七十一页4 4、控制耦合、控制耦合 一个模块通过传送开关、标一个模块通过传送开关、标志、名字等志、名字等控制信息控制信息,明显地控,明显地控制选择另一模块的功能。制选择另一模块的功能。软件设计的原则软件设计的原则本讲稿第二十六页,共七十一页5 5、外部耦合、外部耦合 一组模块都访问同一全局简单变量而不是同一全局数据结一组模块都访问同一全局简单变量而不是同一全
15、局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。例如部耦合。例如C语言程序中各个模块都访问被说明为语言程序中各个模块都访问被说明为extern类型的外类型的外部变量。部变量。软件设计的原则软件设计的原则本讲稿第二十七页,共七十一页6 6、公共耦合、公共耦合 一组模块都访问同一个公共数据环境。公共数据环境可以是全局数一组模块都访问同一个公共数据环境。公共数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。据结构、共享的通信区、内存的公共覆盖区等。软件设计的原则软件设计的原则本讲稿第二十八页,共七十一页7 7、内
16、容耦合(、内容耦合(出现的情况较少出现的情况较少)发生下列情形,两模块之间就发生了内容耦合:发生下列情形,两模块之间就发生了内容耦合:1 1)一个模块直接访问另一个模块的内部数据。)一个模块直接访问另一个模块的内部数据。2 2)一个模块不通过正常入口转到另一模块内部。)一个模块不通过正常入口转到另一模块内部。3 3)两个模块有一部分程序代码重叠。(汇编语言)两个模块有一部分程序代码重叠。(汇编语言)软件设计的原则软件设计的原则本讲稿第二十九页,共七十一页 耦合度耦合度是一个抽象的概念,但它能用一个是一个抽象的概念,但它能用一个可操作的概念来描述可操作的概念来描述,即程序员在编码、调试和修改一个
17、模块时,需要考虑即程序员在编码、调试和修改一个模块时,需要考虑修改另外一个模修改另外一个模块的概率块的概率。如果两个模块是紧耦合的,那么它修改一个模块时,需要修如果两个模块是紧耦合的,那么它修改一个模块时,需要修改另外一个模块的概率就高。改另外一个模块的概率就高。软件设计的原则软件设计的原则本讲稿第三十页,共七十一页 耦合度是评价程序质量的重要指标耦合度是评价程序质量的重要指标,耦合度越小,则每个模块,耦合度越小,则每个模块越容易独立地被理解、编写和修改,同时每个模块的错误越不越容易独立地被理解、编写和修改,同时每个模块的错误越不容易扩散蔓延到其他模块。容易扩散蔓延到其他模块。为了降低耦合度为
18、了降低耦合度,可采取如下方法:,可采取如下方法:1 1、用、用过程语句过程语句(函数方式等)调用其它模块,降低接口复杂性;(函数方式等)调用其它模块,降低接口复杂性;2 2、模块间传送的、模块间传送的参数是数据参数是数据,尽量使用数据耦合,少用控,尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,坚决避免使用内容耦合;制耦合,限制公共耦合的范围,坚决避免使用内容耦合;3 3、模块间、模块间公用的信息尽量少公用的信息尽量少。软件设计的原则软件设计的原则本讲稿第三十一页,共七十一页模块模块内聚性:内聚性:内聚是描述一个模块内各个元素之间关系的一个概念,是内聚是描述一个模块内各个元素之间关系的一个
19、概念,是对各元素彼此结合的对各元素彼此结合的紧密程度的一种度量紧密程度的一种度量。功能内聚功能内聚 顺序内聚顺序内聚 通信内聚通信内聚 过程内聚过程内聚 时间内聚时间内聚 逻辑内聚逻辑内聚 巧合内聚巧合内聚 高高低低内聚性内聚性强强弱弱模块独立性模块独立性软件设计的原则软件设计的原则本讲稿第三十二页,共七十一页内聚性分类内聚性分类功能内聚:功能内聚:模块中的各个程序段模块中的各个程序段联合起来共同完成联合起来共同完成一个特定的一个特定的具体的具体的单一的功能单一的功能,模块中各个部分都是完成该功能必,模块中各个部分都是完成该功能必不可少的部分,模块的各个部分协同工作、紧密联系、不可少的部分,模
20、块的各个部分协同工作、紧密联系、不可分割。不可分割。本讲稿第三十三页,共七十一页 如果一个模块内处理如果一个模块内处理元素和同一功能密切相关,元素和同一功能密切相关,而且这些处理元素必须顺而且这些处理元素必须顺序执行,则称为顺序内聚。序执行,则称为顺序内聚。顺序内聚顺序内聚求一元二求一元二次方程的次方程的根的模块根的模块1、输入系数2、求解3、输出方程的解内聚性分类内聚性分类本讲稿第三十四页,共七十一页 模块中的成分模块中的成分需要用同需要用同样的输入数据或产生的相样的输入数据或产生的相同的输出数据同的输出数据时称为通信内时称为通信内聚。模块内各功能段有公用聚。模块内各功能段有公用的信息区。的
21、信息区。如图:如图:1和和2所对应的功所对应的功能均需要利用文件能均需要利用文件File进行进行操作。操作。通信内聚通信内聚模块模块A从文件从文件File中读出数据中读出数据1、由数据产生报表一、由数据产生报表一2、由数据产生报表二由数据产生报表二内聚性分类内聚性分类本讲稿第三十五页,共七十一页过程内聚:过程内聚:模块内部模块内部各个组成部分的处理各个组成部分的处理动作不相同。但他们动作不相同。但他们受同一控制流支配,受同一控制流支配,并由这个控制流决定并由这个控制流决定它们的执行顺序。它们的执行顺序。过程内聚过程内聚内聚性分类内聚性分类循环体计算累积事务记录累积销售额累积订货量本讲稿第三十六
22、页,共七十一页 要求在系统运行的同一要求在系统运行的同一时间内处理的元素组成一个时间内处理的元素组成一个模块。图中关闭文件、报警、模块。图中关闭文件、报警、保留现场等任务必须无间断保留现场等任务必须无间断地同时处理。地同时处理。时间内聚时间内聚关闭文件紧急意外故障处理报警保留现场内聚性分类内聚性分类本讲稿第三十七页,共七十一页逻辑内聚逻辑内聚:几种相关的功能:几种相关的功能组合在一起,每次被调用时,组合在一起,每次被调用时,由传送给模块的控制型参数由传送给模块的控制型参数来确定该模块应执行哪一种来确定该模块应执行哪一种功能。逻辑内聚模块表明了功能。逻辑内聚模块表明了各部分之间在功能上的相关各部
23、分之间在功能上的相关关系。关系。内聚性分类内聚性分类逻辑内聚逻辑内聚本讲稿第三十八页,共七十一页模块模块T MOV A TO B READ Card file MOV C TO DPQRS巧合性内聚巧合性内聚 此例中每条语句之间各不相干,此例中每条语句之间各不相干,只因为只因为P、Q、R、S都要用到它们,都要用到它们,为了节省一些存储空间,将它们放为了节省一些存储空间,将它们放在一个模块中。在一个模块中。问题:问题:这种模块不易取名,这种模块不易取名,模块含义不易理解,难以测试,模块含义不易理解,难以测试,不易修改。当不易修改。当P、Q有不同要求有不同要求(如(如P要求要求MOVE A TO
24、E)时时 T的修改会很复杂。因为它们本来互不的修改会很复杂。因为它们本来互不相关,所以变动的可能性很大。相关,所以变动的可能性很大。当存储空间不是很紧张时,应尽量当存储空间不是很紧张时,应尽量避免巧合性内聚。避免巧合性内聚。内聚性分类内聚性分类本讲稿第三十九页,共七十一页软件结构的设计优化准则:软件结构的设计优化准则:1、划分模块时,尽量做到、划分模块时,尽量做到高内聚、低耦合高内聚、低耦合,保持模块相对独立性。,保持模块相对独立性。模块模块划分的准则:划分的准则:“将相关的各部分放在一起,无关的东西不要放在一起。将相关的各部分放在一起,无关的东西不要放在一起。”2、模块的、模块的大小要适中大
25、小要适中。3、软件结构的、软件结构的深度、宽度、扇入、扇出应适当深度、宽度、扇入、扇出应适当。深度深度表示控制的层数。表示控制的层数。宽度宽度表示控制的总分布。表示控制的总分布。扇出扇出是对由某一模块直接控制的模块数目的度量。是对由某一模块直接控制的模块数目的度量。扇入扇入指出有多少个模块直接控制一个给定的模块。指出有多少个模块直接控制一个给定的模块。设计优化准则设计优化准则本讲稿第四十页,共七十一页设计优化准则设计优化准则本讲稿第四十一页,共七十一页软件结构的设计优化准则:软件结构的设计优化准则:4、降低接口复杂性。、降低接口复杂性。5、力求设计、力求设计单入口和单出口单入口和单出口的模块。
26、的模块。6、设计功能可预测的模块(即相同的输入应有相同的输出)。、设计功能可预测的模块(即相同的输入应有相同的输出)。设计优化准则设计优化准则本讲稿第四十二页,共七十一页面向数据流的设计方法面向数据流的设计方法 面向数据流的设计方法,又称结构化设计即面向数据流的设计方法,又称结构化设计即SD(Structured Design)。结结构构化化设设计计的的目目标标:将将软软件件设设计计为为多多个个结结构构合合理理、功功能能单单一一的的模模块块,建建立立系系统统的的模模块块结结构构图图。它它的的主主要要表表示示方方法法是是一一种种分分层层次次的的结构图。结构图。4.4 面向数据流的设计方法面向数据
27、流的设计方法本讲稿第四十三页,共七十一页SD设计方法的设计方法的主要思想主要思想:认认为为一一个个程程序序、一一组组程程序序或或一一个个系系统统,是是由由一一组组功功能能模模块块来来构成的。构成的。软软件件设设计计者者首首先先必必须须无无视视程程序序、模模块块或或过过程程的的内内部部情情况况,而而只只对对它它们们之之间间的的关关系系进进行行分分析析。将将系系统统看看作作是是逻逻辑辑功能的抽象集合功能的抽象集合功能模块的集合功能模块的集合。面向数据流的设计方法面向数据流的设计方法本讲稿第四十四页,共七十一页结构化设计的结构化设计的优点优点:(1 1)减减少少设设计计复复杂杂性性。将将对对大大目目
28、标标的的实实现现转转化化为为一一些些小小目目标标来来实实现。结构化设计是一种减少设计复杂性的技术。现。结构化设计是一种减少设计复杂性的技术。(2)结构独立结构独立。结构化设计将功能性程序划分成多个相对。结构化设计将功能性程序划分成多个相对独立的程序模块。独立的程序模块。(3)单一的功能模块单一的功能模块,易于进行软件修改,易于开发和维护。,易于进行软件修改,易于开发和维护。(4)加强了代码的)加强了代码的可重用性可重用性。面向数据流的设计方法面向数据流的设计方法本讲稿第四十五页,共七十一页描述工具:描述工具:结构化设计方法提出了一种图形工具结构化设计方法提出了一种图形工具结构图结构图。结结构构
29、图图是是精精确确表表达达程程序序结结构构的的图图形形表表示示方方法法。它它作作为为软软件件文文档档的的一一部部分分,清清楚楚地地反反映映出出程程序序中中模模块块之之间间的的层层次次调调用用关关系系和联系。和联系。面向数据流的设计方法面向数据流的设计方法本讲稿第四十六页,共七十一页结构图的主要符号:结构图的主要符号:1、模块模块:方框表示,并用名字标识该模块。:方框表示,并用名字标识该模块。2、模块的调用关系模块的调用关系:用单向箭头或直线连接模块间:用单向箭头或直线连接模块间的控制关系。的控制关系。3、模块间的、模块间的信息传递信息传递:用带注释的短箭头表示模块间:用带注释的短箭头表示模块间传
30、递的信息。传递的信息。4、两个、两个附加符号附加符号:弧形线表示循环调用,菱形表示选:弧形线表示循环调用,菱形表示选择调用。择调用。面向数据流的设计方法面向数据流的设计方法本讲稿第四十七页,共七十一页查询成绩学生记录学号查询标志记录地址ABC模块间的控制关模块间的控制关系及信息传递系及信息传递模块间选择调用模块间选择调用模块间循环调用模块间循环调用MT1T3T2面向数据流的设计方法面向数据流的设计方法本讲稿第四十八页,共七十一页系统结构图中有系统结构图中有4种类型的模块:种类型的模块:1、传入模块、传入模块:从下属模块取得数据,经过某些处理,再将其送给上级模从下属模块取得数据,经过某些处理,再
31、将其送给上级模块。它传送的数据叫做逻辑输入数据流。块。它传送的数据叫做逻辑输入数据流。图示图示2、传出模块、传出模块:从上级模块取得数据,进行某些处理后,传送给下从上级模块取得数据,进行某些处理后,传送给下属模块。它传送的数据流叫做逻辑输出数据流。属模块。它传送的数据流叫做逻辑输出数据流。图示图示3、变换模块、变换模块:从上级模块取得数据,进行特定处理后,送回原上级从上级模块取得数据,进行特定处理后,送回原上级模块。它加工的数据流叫做变换数据流。模块。它加工的数据流叫做变换数据流。图示图示4、协调模块、协调模块:对其下属模块进行控制和管理的模块。在一个好的对其下属模块进行控制和管理的模块。在一
32、个好的系统结构图中,协调模块应在较高层出现。系统结构图中,协调模块应在较高层出现。图示图示 面向数据流的设计方法面向数据流的设计方法本讲稿第四十九页,共七十一页系统结构图中主要有系统结构图中主要有4种类型的模块:种类型的模块:传入模块传入模块AA传出模块传出模块DD变换模块变换模块 BCY协调模块协调模块XXY面向数据流的设计方法面向数据流的设计方法本讲稿第五十页,共七十一页数据流图的类型数据流图的类型 SD方方法法是是以以数数据据流流图图为为基基础础设设计计系系统统的的模模块块结结构构的的。不不同同类类型型的的数数据据流流图图设设计计的的过过程程以以及及所所导导出出的的初初始始的的软软件件结
33、结构构不不同同。不不管管系系统统的的数数据据流流图图如如何何庞庞大大和和复复杂杂,一一般般均均可可分分为为变变换换型、事务型和变换型、事务型和变换/事务混合型事务混合型。面向数据流的设计方法面向数据流的设计方法本讲稿第五十一页,共七十一页变换型(变换型(IPO型)型)变变换换型型的的数数据据流流图图是是一一个个线线性性结结构构,由由输输入入、变变换换和和输出输出三部分组成。三部分组成。数数据据沿沿输输入入通通路路进进入入系系统统,同同时时数数据据由由外外部部形形式式变变换换成成内内部部形形式式。进进入入系系统统的的数数据据通通过过变变换换中中心心经经加加工工处处理理以以后再沿后再沿输出通路输出
34、通路变换成外部形式离开软件系统。变换成外部形式离开软件系统。面向数据流的设计方法面向数据流的设计方法本讲稿第五十二页,共七十一页物理输物理输入入物理输出物理输出输入流输入流变换中心变换中心输出流输出流逻辑输出逻辑输出逻辑输入逻辑输入变换型变换型DFD图图面向数据流的设计方法面向数据流的设计方法本讲稿第五十三页,共七十一页 事务型事务型 事事务务型型的的数数据据流流图图中中,数数据据沿沿输输入入通通路路到到达达一一个个加加工工处处理理(如如下下图图中中的的C),这这个个处处理理将将输输入入分分为为许许多多相相互互平平行行的的加加工工路路径径,并并根根据据输输入入数数据据的的类类型型,选选择择某某
35、一一加加工工路路径径。其其中中C为为事事务务处处理理中中心心,其其任任务务是是得得到到输输入入数数据据(输输入入数数据据又又称称为为事事务务)、分分析析每每个个事事务务以以确确定定它它的的类类型型、根根据据事事务务类类型型选选取取一条活动通路。一条活动通路。面向数据流的设计方法面向数据流的设计方法本讲稿第五十四页,共七十一页事务型事务型DFD图图面向数据流的设计方法面向数据流的设计方法C加工路径加工路径输入流输入流事务处理中心事务处理中心加工路径加工路径加工路径加工路径本讲稿第五十五页,共七十一页面向数据流设计方法的过程面向数据流设计方法的过程:1、精化精化DFD。去除数据流图中的数据存储等信
36、息,对数据流图进行去除数据流图中的数据存储等信息,对数据流图进行精化。精化。2、确定确定DFD类型类型,和逻辑输入、逻辑输出的界限,映射出变换结构,和逻辑输入、逻辑输出的界限,映射出变换结构的顶层合第一层;如果为事务型,确定事务中心和加工路径,映射的顶层合第一层;如果为事务型,确定事务中心和加工路径,映射出事务结构的顶层合第一层。出事务结构的顶层合第一层。3、分解上层模块,设计中下层模块结构分解上层模块,设计中下层模块结构。4、对软件结构求精对软件结构求精。5、复查,如有错转向、复查,如有错转向2、修改完善,否则进入详细设计。、修改完善,否则进入详细设计。面向数据流的设计方法面向数据流的设计方
37、法本讲稿第五十六页,共七十一页变换分析设计:变换分析设计:1、确定、确定DFD中的变换中心,逻辑输入、逻辑输出。中的变换中心,逻辑输入、逻辑输出。通常通常几股数据流的汇合处几股数据流的汇合处就是系统的加工中心,也可用以下就是系统的加工中心,也可用以下方法确定加工中心:从物理输入(方法确定加工中心:从物理输入(出出)端开始,沿()端开始,沿(逆逆)数据流方)数据流方向向系统中心寻找,直到有这样的数据流,它不能再被看作是系统向向系统中心寻找,直到有这样的数据流,它不能再被看作是系统的输入(出)时,则它的前一数据流就是系统的逻辑输入(出)。的输入(出)时,则它的前一数据流就是系统的逻辑输入(出)。介
38、于逻辑输入和逻辑输出间的加工就是加工中心介于逻辑输入和逻辑输出间的加工就是加工中心。面向数据流的设计方法面向数据流的设计方法本讲稿第五十七页,共七十一页2、设计软件结构的顶层和第一层、设计软件结构的顶层和第一层变换结构。变换结构。顶层就是顶层就是主模块主模块的位置,其功能是完成对所有模块的控制,其名的位置,其功能是完成对所有模块的控制,其名称就是系统名称;称就是系统名称;第一层一般至少有第一层一般至少有输入、变换、输出输入、变换、输出三种功能模块。三种功能模块。面向数据流的设计方法面向数据流的设计方法本讲稿第五十八页,共七十一页3、设计中、下层模块。对第一层模块自顶向下逐层分解。、设计中、下层
39、模块。对第一层模块自顶向下逐层分解。输入模块下属模块的设计输入模块下属模块的设计:为每个输入模块设计两个下属模块,:为每个输入模块设计两个下属模块,一个接受数据,一个将数据转换成调用模块所需的信息。用类似的一个接受数据,一个将数据转换成调用模块所需的信息。用类似的方法一直分解下去,直至物理输入端。方法一直分解下去,直至物理输入端。输出模块下属模块的设计输出模块下属模块的设计:为每个输出模块设计两个下属模块,:为每个输出模块设计两个下属模块,一个将数据转换成下属模块所需的信息,一个发送数据。用类似的一个将数据转换成下属模块所需的信息,一个发送数据。用类似的方法一直分解下去,直至物理输出端。方法一
40、直分解下去,直至物理输出端。变换模块下属模块的设计变换模块下属模块的设计:根据变换中心的组成情况,按照模块独:根据变换中心的组成情况,按照模块独立性原则,为每个基本加工建立一个功能模块。立性原则,为每个基本加工建立一个功能模块。面向数据流的设计方法面向数据流的设计方法本讲稿第五十九页,共七十一页4、设计优化:对初始结构进行细化和改进。、设计优化:对初始结构进行细化和改进。对模块进行合并和调整,为每个物理输入和物理输出设对模块进行合并和调整,为每个物理输入和物理输出设计专门模块,以体现系统的外部接口。计专门模块,以体现系统的外部接口。面向数据流的设计方法面向数据流的设计方法本讲稿第六十页,共七十
41、一页A物理输入物理输入BCD物理输出物理输出G变换中心变换中心逻辑输出逻辑输出逻辑输入逻辑输入f1f2f3EFHf4f5f6f7f8f9f10f11变换型分析设计变换型分析设计面向数据流的设计方法面向数据流的设计方法本讲稿第六十一页,共七十一页变换型分析设计变换型分析设计主模块主模块Get f3将将f3变换成变换成f7和和f8Put f7Put f8 f3 f3 f7 f8 f8 f7Get f2BGet f1AFPut f9GPut f8HPut f8CDE f3 f5 f4 f4 f6 f7 f8 f5 f6 f2 f2 f1 f1 f2 f8 f10 f10 f11 f10 f11面向数
42、据流的设计方法面向数据流的设计方法本讲稿第六十二页,共七十一页事务分析设计:事务分析设计:1、确定、确定DFD中的事物中心和加工路径。中的事物中心和加工路径。通常当通常当DFD中的某个加工具有明显的将中的某个加工具有明显的将一个输入数据流分一个输入数据流分解成多个发散的输出数据流解成多个发散的输出数据流时,该加工就是系统的事务中心,时,该加工就是系统的事务中心,从事务中心辐射出去的数据流就是各个加工路径。从事务中心辐射出去的数据流就是各个加工路径。面向数据流的设计方法面向数据流的设计方法本讲稿第六十三页,共七十一页2、设计软件结构的顶层和第一层、设计软件结构的顶层和第一层事务结构。事务结构。顶
43、层就是主模块的位置,有两个功能,一是顶层就是主模块的位置,有两个功能,一是接收数据接收数据,二,二是根据事务类型调度相应的是根据事务类型调度相应的处理模块处理模块。因此事务型软件结构应包括。因此事务型软件结构应包括两个部分,接收分支和发送分支。两个部分,接收分支和发送分支。接收分支接收分支:负责接收数据,其设计方法与变换型:负责接收数据,其设计方法与变换型DFD的输入部分相的输入部分相同。同。发送分支发送分支:通常包含一个调度模块,控制管理所有的下层事务处理模:通常包含一个调度模块,控制管理所有的下层事务处理模块。块。3、设计中、下层模块并优化。、设计中、下层模块并优化。具体过程同变换结构设计
44、。具体过程同变换结构设计。面向数据流的设计方法面向数据流的设计方法本讲稿第六十四页,共七十一页AB加工路径加工路径输入流输入流事务处理中心事务处理中心事务分析设计事务分析设计CDf1面向数据流的设计方法面向数据流的设计方法本讲稿第六十五页,共七十一页事务分析设计事务分析设计主模块主模块Get f1调度调度 f1 f1BCD接接收收分分支支发发送送分分支支动作层动作层细节层细节层面向数据流的设计方法面向数据流的设计方法本讲稿第六十六页,共七十一页画结构图应注意的事项:画结构图应注意的事项:1、同一名字的模块在结构图中仅、同一名字的模块在结构图中仅出现一次出现一次。2、调用关系调用关系只能从上到下
45、。只能从上到下。3、结构图、结构图不严格表示模块的调用次序不严格表示模块的调用次序,习惯上从左,习惯上从左到右。有时为了减少连线的交叉,适当地调整同一层模块的到右。有时为了减少连线的交叉,适当地调整同一层模块的左右位置,以保持结构图的清晰。左右位置,以保持结构图的清晰。面向数据流的设计方法面向数据流的设计方法本讲稿第六十七页,共七十一页例:高考录取统分子系统有如下功能:例:高考录取统分子系统有如下功能:1)计算标准分:根据考生原始分计算,得到标准分,存入考生分数文件;)计算标准分:根据考生原始分计算,得到标准分,存入考生分数文件;2)计算录取线:根据标准分、招生计划文件中的招生人数,计算录)计算录取线:根据标准分、招生计划文件中的招生人数,计算录取线存入录取线文件。取线存入录取线文件。要求:要求:对以上问题画出数据流图。对以上问题画出数据流图。画出该子系统的软件结构图画出该子系统的软件结构图举例举例本讲稿第六十八页,共七十一页举例举例本讲稿第六十九页,共七十一页举例举例本讲稿第七十页,共七十一页概要设计说明书概要设计说明书(参考标准文档参考标准文档)总体设计文档总体设计文档本讲稿第七十一页,共七十一页
限制150内