结构化系统设计.ppt
《结构化系统设计.ppt》由会员分享,可在线阅读,更多相关《结构化系统设计.ppt(95页珍藏版)》请在三一办公上搜索。
1、第7章 结构化系统设计,蒙 华,本章主要内容,结构化方法系统设计的任务总体设计:软件结构及各组成成分(子系统或模块之间的相互关系)结构化设计的概念、基本原则从数据流图导出结构图结构化设计代码设计输入、输出及人机对话设计模块详细设计数据库设计、网络设计系统设计说明书,7.1 结构化方法概述,结构化方法的主要思想:(1)软件是有组织、有结构的逻辑实体,其结构为自顶向下的形式(2)软件由程序和数据组成,其结构呈现三层组织形式,即系统、子系统、功能模块/数据体(3)软件结构中的各部分既独立又关联从分析到设计,转换,现实领域的各种需求,计算机领域的具体实现,7.2 系统设计的任务和标准,系统设计的任务总
2、体设计和详细设计系统总体设计是把总任务分解成为许多基本的、具体的任务将系统划分为模块决定每个模块的功能、模块的调用关系决定模块的界面,即模块间的数据传递设计就是要回答“怎么做”完成技术实现方案的制定,即信息系统的物理模型一个逻辑模型,可以提出多个物理模型根据物理模型进行实施,得到最终的物理系统,标准:信息系统的功能:是否满足用户的需求系统的效率:响应时间、操作的方便性系统的可靠性:抗干扰能力、故障恢复系统的工作质量:准确性、使用效果系统的可变更性:修改和维护的难易程度系统的经济性:系统收益与支出比,(1)对一个复杂的系统,应用自顶向下、逐步求精的方法予以分解和化简。(2)强调采用模块化的设计方
3、法,并有一组基本设计策略(3)采用结构图作为模块设计的工具。,结构化系统设计的特点:,信息系统的可变更性,统计表示:在信息系统的整个生命周期中,系统维护成本占总成本的80%左右。因此,可变更性是衡量信息系统设计的重要指标。结构简单系统各组成元素分工明确,易于理解元素之间的关系清晰简洁软件设计方法:结构化设计(SD)、面向对象设计(JSD方法)、面向对象的设计方法(OOD方法),7.2.1 模块化的基本思想,结构化设计方法是基于模块化、自顶向下逐步细化、结构化程序设计等技术发展起来。使用模块化一定程度上能够简化系统结构,使系统容易修改和理解。具体做法:把整个软件划分为部分,其中每一部分的功能简单
4、明确,即程序模块(可以是子过程或函数)划分模块工作按层次进行,上层模块调用下层模块每一个模块应尽可能独立模块间的调用接口要阐明(模块名称、输入数据、输出数据),(一)模块的概念,模块(Module)通常对应于用一个名字就可以调用的一段程序语句(子程序或函数)模块具有输入和输出、逻辑功能、运行程序、内部数据四种属性。模块数量和软件成本的关系如下图所示,接口成本,成本,模块数量,单元模块成本,软件总成本,模块设计的度量标准为了衡量模块的相对独立性,提出了模块间的耦合(Coupling)与模块的内聚(Cohesion)两个标准耦合:模块和模块之间的联系程度内聚:模块内部各元素之间的联系程度设计目标:
5、低耦合、高内聚模块内的联系越紧越好模块间的联系越少越好,(二)系统模块设计原则,1、模块之间的耦合原则-模块之间的联系-模块的耦合方式-几种耦合的比较2、模块的内聚性原则3、模块的分解原则4、模块的扇入和扇出原则,1、影响耦合度的因素,如果使用模块A需要了解模块B,那么A和B是耦合的。影响模块间耦合程度有三方面的因素:模块接口的复杂程度、调用模块的方式、通过模块接口的数据。联系方式模块间通过什么方式联系来往信息的作用模块间来往信息作什么用数量模块间来往信息的多少。,混合控制数据,用过程 直接引用语句调用,少,多,数量,方式,作用,0,离坐标原点越远,耦合程度越高,-耦合的方式,根据以上因素,对
6、耦合分类如下:数据耦合:采用子程序调用,调用模块将需要进行处理的数据传递给被调模块。标记耦合:两个模块接口参数包含相同内部结构。控制耦合:一个模块将控制信息传递给另一个模块,以控制被调模块的内部处理逻辑。(可以分解)公共耦合:如果两个模块共享同一公用数据,称为公共耦合。内容耦合:两个模块之间的内部属性有直接关联,也称病态耦合。(某些GOTO语句),数据耦合sum(int a,int b)int c;c=a+b;return(c);main()int x,y;printf(“x+y=%d”,sum(x,y),控制耦合,模块之间交换信息中包含有控制信息(有时控制信息以数据的形式出现)void ou
7、tput(flag)if(flag)printf(“ok!”);else printf(“no!”);main()int flag;output(flag);,公共耦合,如果两个或多个模块都和同一个公用数据域有关1)系统可理解性降低(模块间存在错综复杂的连系)(2)系统可维护性差(修改变量名或属性困难)(3)系统可靠性差(公共数据区及全程变量无保护措施)慎用公共数据区和全程变量!,模块B、E和模块C之间存在着公共耦合,当需要修改公共数据时,与之相关的所有模块可能都要进行修改,内容耦合,-若一个模块访问另一个模块的内容(包括数据和程序段)进行了直接的引用甚至修改;-或通过非正常入口进入到另一模块
8、内部;-或一个模块有多个入口;-或两个模块共享一部分代码;,-几种耦合的比较,系统设计模块之间的联结原则,尽量采用较低的耦合形式(简单耦合和数据耦合)减少控制耦合必要时使用公共耦合,但一定要将数据控制在最少绝对不能采用内容耦合,2、模块的内聚,模块的内聚反映模块内部联系的紧密程度。高内聚性的好处是可以提高程序的可靠性。有一个调查表明,50的强内聚性子程序是没有错误的,而只有 18的弱内聚性子程序才是无错的,弱内聚性子程序的出错机会要比强内聚性出错机会高 6 倍,而修正成本则要高 19 倍。模块的组合形式 功能顺序通信过程暂时逻辑偶然组合模块组合形式的判断模块组合形式的比较,比如显示期末成绩通知
9、:,顺序内聚,例如:一个模块用于计算高于平均分的人数,步骤是先循环累计总分,然后计算得到平均分,最后循环统计高于平均分的人数有步骤的先后,而且前一个步骤的结果要用于后一步骤的运算中,通信内聚,上图中有两个工作:按配件编号查询“数据存储”,获得单价。按配件编号查询“数据存储”,获得库存量。这两个处理动作都使用相同的输入数据,称为通讯内聚,模块组合判断树,该模块只执行一个功能吗?,功能组合,否,模块内各组成部分关系如何?,数据流,否,是,顺序组合,通信组合,否,是,过程组合,暂时组合,否,是,逻辑组合,偶然组合,控制流,两者皆非,是,次序重要吗?,逻辑相似吗?,次序重要吗?,耦合和内聚的关系,二者
10、就像连体兄弟,存在紧密相关的关系:模块内的高内聚往往意味着模块间的松耦合反之,低内聚一般会带来紧耦合松耦合 作为软件设计的军规之一。各部分的关联越少意味着你在测试,集成,维护的时候可以轻松不止一点点。高内聚 也就是说一个类特别是一个方法应该专注于一件事。,作用范围与控制范围,一个判断的作用范围是所有这样的模块的集合,这些模块内含有依赖于这个判断结果的处理。或称影响范围。一个模块的控制范围是指它本身及其所有下属模块的集合。,D计算总工资,C计算职工工资,B计算临时工工资,A计算工资,模块A的控制范围是:A、B、C、D,假如判定出现在模块A,该判断的作用范围是:AB、C、D不受影响,有些处理的执行
11、受判断的影响。由此引出判断的作用范围(或称影响范围)这一概念。模块的作用域是指模块中判定的作用范围,它是指所有受这个判定影响的模块。如果模块中含有受判定影响的操作,则该模块在这个判定的作用范围之中。如果模块执行与否取决于判定的结果,则该模块及其直接或间接调用的模块均在这个判定的作用范围之中。模块的控制域是指模块本身及其直接或间接调用的模块。如果模块的作用域不在控制域之内,则会增加模块间数据的传递量,使模块间出现控制耦合。模块的控制范围:本身及其所有下级模块。模块的判断作用范围:被判断调用的模块。,模块设计中模块控制域与作用域的设计原则:,1.对于任何一个内部存在判断调用的模块,它的判断作用的范
12、围应该是其控制范围的一个子集。2.存在判断调用的模块,所在层次不要与那些属于判断作用范围的模块所在的层次相隔太远。,4、模块的扇入和扇出原则,模块的扇出模块扇出的原则模块的扇入模块的扇入原则模块扇出扇入总原则,模块的扇出(Fan_Out),模块的扇出表达了一个模块对它的直属下级模块的控制范围模块。扇出系数是指其直属下级模块的个数。扇出原则:-模块的扇出直接影响着系统的宽度-模块的扇出过大,控制与协调困难,模块的聚合可能较低-模块的扇出过小,说明上下级模块或本身过大,应进行分解-一个系统的平均扇出系数通常是3至4,一般不应超过7,A的扇出系数为2,B的扇出系数为1,C的扇出系数为3,模块的扇入(
13、Fan_In),模块的扇出表达了一个模块与其的直属上级模块的关系模块的扇入系数是指其直接上级模块的个数,A的扇出系数为3,B的扇出系数为2,F的扇入系数为2,模块的扇入、扇出原则,模块的扇入说明系统的通用情况,扇入系数越大,表明共享该模块的上级模块数目越多,通用性越强(通用性强,维护方便)片面追求高扇入可能使得模块的独立性降低高扇入:扇入就是指被其它类或方法引用。那高扇入也就是说你这个类/方法.被很多其它类引用了。也就是利用率很高了。如果段代码连写了三次,应考虑把它单独作为一个方法或类高层模块的扇出系数较高、中层模块的扇出系数较少低扇出:扇出自然就是引用其它类或方法了。扇出越高,类就越不稳定,
14、因为任何一个引用对象出问题了,这个类也就会出问题。引用超过约七个就算高扇出了.对其它类的引用过多,导致该类不稳定(取决所有引用类),7.2.2 结构化系统设计,面向数据流的设计是以需求分析阶段产生的数据流图为基础,按一定的步骤映射成软件结构,又称结构化设计(Structured Design,简称SD)。该方法由美国IBM公司L.Constantine和E.Yourdon等人于1974年提出,与结构化分析(SA)衔接,构成了完整的结构化分析与设计技术。采用自顶向下的方法进行设计具有系统自动化边界的DFD结构图(简单地说,就是绘制模块结构图)根据DFD导出系统初始的结构图(利用一组设计策略)对结
15、构图的反复改进过程(设计优化-运用一组设计原则),引子,2自动化系统边界划分(Automation System Boundary),将数据流图划分为手工处理部分和系统能自动完成的部分程序的处理过程可以在系统边界内部或外部数据流可以在系统边界内部或外部穿过系统界线的数据流代表了系统的输入和输出在最终的系统中,数据流将成为用户界面中的表单、报表、供其他系统使用的数据文件等,带自动化系统边界的DFD,结构图的基本符号结构图中模块调用关系结构图的表示结构图的特点结构图与数据流程图的区别结构图与程序框图的区别,3、结构图(structure chart),结构图的基本符号,模块名称,表示一个功能模块,
16、表示模块与模块之间的调用关系,表示模块与模块之间的数据传递关系,表示模块与模块之间的控制信息传递关系,表示判断关系,表示循环关系,结构图的关系,A,B,x,y,z,(1),A,C,D,B,(2),A,C,D,B,(3),主调模块,被调模块,被调模块,主调模块,被调模块,被调模块,循环调用,条件调用,1.结构图无严格的模块调用顺序,但一般习惯从左至右2.因为约定遵从从上向下的调用,调用关系也可以不使用箭头,而直接使用直线3.模块间传递的信息如果出现在数据字典中,则视为数据,否则为控制信息,结构图的画法,4、从数据流图导出结构图,转换,设计模型(物理模型),转换存在鸿沟,数据流图着眼于现实世界,结
17、构图着眼于计算机世界。数据流图反映数据流,系统逻辑功能,即能“做什么”;结构图反映程序控制层次,反映系统的物理模型,即怎样逐步实现系统的总功能。数据流图描述线性的工作流程,结构图描述工作的分配(谁负责做什么)数据流图中存在两种典型的结构:变换型(Transform)结构事务型(Transaction)结构。可分别通过变换分析和事务分析方法导出标准形式的结构图。变换分析:用来描述输入、处理、输出数据流。事务分析:用来描述多种事务类型的处理。,要把数据流图(DFD)转化为软件结构,首先必须研究DFD的类型。各种软件系统,不论DFD如何庞大和复杂,一般可分为变换型和事务型。变换型布局的数据流图呈一种
18、线性状况,它所描述的工作可默示为输入、变换及输出。,变换型问题数据流,变换型系统结构图,事务型布局的数据流图则呈束状,即一束数据流平行流人或流出,可能同时有几个事务请求处理。若某个加工将它的输入流分离成许多发散的数据流,形成许多加工路径,并根据输入的值选择其中一条路径来执行,这个加工称为事务处理中心。,事务型问题数据流,事务型系统结构图,混合型设计一个结构图,事务型与变换型DFD结构图转换示例,4.4 设计一个结构图,4 结构化系统设计,事务型与变换型DFD结构图转换示例,面向数据流方法的设计过程,面向数据流设计方法的过程如下:(1)确定DFD类型-如果是变换型,确定变换中心和逻辑输入、逻辑输
19、出的界线,映射为变换结构的顶层和第一层;-如果是事务型,确定事务中心和加工路径,映射为事务结构的顶层和第一层。(2)分解上层模块,设计中下层模块结构。(3)根据优化准则对软件结构求精。(4)描述模块功能、接口及全局数据结构。(5)复查,如果有错,转向(2)修改完善,否则进入详细设计。,5、设计一个结构图,(1)确定DFD中的变换中心、逻辑输入和逻辑输出。(2)设计软件结构的顶层和第一层-变换结构。变换中心决定了主模块的位置,即软件结构的顶层。其主要功能是完成所有模块的控制,名字为系统名称,以体现完成整个系统的功能。第一层一般至少有三种模块:输入、输出和变换模块。(3)设计中、下层模块。对第一层
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构 系统 设计
链接地址:https://www.31ppt.com/p-5299279.html