ImageVerifierCode 换一换
格式:PPT , 页数:78 ,大小:628KB ,
资源ID:14086015      下载积分:8 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/14086015.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(软件工程设计方法.ppt)为本站上传会员【w****g】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

软件工程设计方法.ppt

1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。文档如有不当之处,请联系本人或网站删除。,(1)可行性研究与计划,(2)需求分析,(3),总体设计,(4),详细设计,(5)实现,(6)集成测试,(7)确认测试,(8)使用和维护,(根据国标计算机软件开发规范),下游,上游,软件设计-将分析模型转换为设计模型,数据词典,数,据,流,图,实,体,关,系,图,状态转换图,加,工,规,格,说,明,控,制,规,格,说,明,数,据,对,象,描,述,过程设计,接口设计,体系结构设计(总体),数据设计,将设计模

2、型,金字塔倒立,的后果是什么?,数 据 设 计,体系结构设计,接口设计,过程设计,软件设计是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不稳定的系统结构,学习要求,明确,结构化设计的主要任务、设计步骤、具体方法;,了解,其他设计方法如 Jackson方法的思想及特点,具体掌握,软件的概要设计及详细设计的基本思想和方法;,重点掌握,从数据流图导出初始结构图及如何对初始结构图进行改进的方法。,6.1 模 块,6.2 概要设计的基本概念,6.3 结构化设计(SD方法)概要,6.4 块间联系和块内联系,6.5 设计技巧,6.6 从数据流图导出初始结构图,6.1 模 块,考核要求:,识记

3、模块的,概念及其特性,。.,分析阶段主要解决软件系统“做什么”。,设计阶段主要解决软件系统“怎么做”。,如果问题较简单,要求一旦确定了,立刻就可以开始编程。但对大型系统来说,为了保证产品的质量,并使开发工作能顺利进行,我们必须先为编程制订一个周密的计划,这项工作就称为设计(Design),设计实际上是为需求说明书到程序间的过渡架起一座桥梁。,软件结构,设计的内容:软件系统的结构,包括数据结构、程序结构。,程序结构,程序结构表明了程序各个部件(模块)的组织情况,是软件的过程表示。,程序系统应由许多较小的单元组成(右图),这种单元可称为模块,,即用一个名字可以调用的一段程序语句,,也可以暂将它

4、理解成类似“子程序”的概念。,结构图反映程序中模块之间的层次调用关系和联系:它以特定的符号表示模块、模块间的调用关系和模块间信息的传递,1模块:模块用矩形框表示,并用模块的名字标记它。,结构图,2模块的调用关系和接口:模块之间用单向箭头联结,箭头从调用模块指向被调用模块。,3 模块间的信息传递:当一个模块调用另一个模块时,调用模块把数据或控制信息传送给被调用模块,以使被调用模块能够运行。而被调用模块在执行过程中又把它产生的数据或控制信息回送给调用模块。,4在模块A的箭头尾部标以一个菱形符号,表示模块A有条件地调用另一个模块B。当一个在调用箭头尾部标以一个弧形符号,表示模块A反复调用模块C和模块

5、D,程序的系统结构图,信息隐蔽,由 parnas 方法提倡的信息隐蔽是指,每个模块的实现细节对于其它模块来说是隐蔽的。也就是说,模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。,一个模块具有,输入和输出、功能、内部数据、程序代码等四个特性。,输入和输出分别是模块需要的和产生的信息,功能是指模块所做的工作,输入输出和功能构成了一个模块的,外貌,即模块的外部特性。,模块用程序代码完成它的功能,内部数据是仅供该模块本身引用的数据,,内部数据和程序代码是模块的内部特性。,对模块的外部环境 只需了解它的外部特性就足够了,其内部特性应该是不必了解的。,“由外向里”是较合理的一种思考

6、过程、所以应先确定模块的外部特性,再确定其内部特性,6.2 概要设计的基本概念,考核要求:,识记:,概要设计的基本任务、几种设计方法,构成模块的原则。,领会,:,概要设计的主要工作是完成,模块分解,,确定系统的模块,层次结构,。,概要设计(又称总体设计)的基本任务,:,将系统划分成模块,决定每个模块的功能,决定模块的调用关系,决定模块的界面,即模块间传递的数据,概要设计的,主要工作:,完成模块分解,确定系统的模块层次结构,。,概要设计需,交付的文档:,数据结构的描述部分;,模块说明部分,它包括模块结构图及 每个模块的功能说明。,模块结构图(前图)描述了系统的模块组成以及模块间的调用关系,每个模

7、块的功能说明则需描述模块的输入输出及其功能(即“做什么”,不是“怎么做”)。,6.3 结构化设计(SD方法)概要,考核要求:,识记:,结构化设计(Structure Design,简称SD方法)的基本思想、目标、描述方式步骤。,结构图中的主要成分。,块间联系与块内联系的概念。,领会:,块间联系和块内联系是衡量模块之间相对 独立性的标准。,SD方法的,目标:,建立结构良好的程序系统。,评价设计质量的两个标准:,块间联系和块内联系。,SD遵循的原则:,自顶向下,逐步细化,模块化,抽象化,信息隐蔽,6.3.1 相对独立单一功能的模块结构,SD方法的基本思想:,是将系统设计成由相对独立、单一功能的模块

8、组成的结构。,用SD方法设计的程序系统,由于模块之间是相对独立的,所以每个模块可以独立地被理解、编程、测试、排错和修改,这就使复杂的研制工作得以简化,此外,模块的相对独立性也能有效地防止错误在模块之间扩散蔓延,因而提高了系统的可靠性。,6.3.2 块间联系和块内联系,块间联系和块内联系是衡量模块之间相对独立性的两个标准(见下图)。,块间联系:,指模块之间的联系,它是对模块独立性的直接衡量,块间联系越小就意味着模块的独立性越高,所以这是一个最基本的标准。,块内联系:,指一个模块内部各成分(语句或语句段)之间的联系,块内联系大了,则模块的相对独立性势必会提高。,SD方法的目标,是使块间联系尽量小,

9、块内联系尽量大。,6.3.3 描述方式,SD方法使用的描述方式是,结构图(下图)描述了程序的模块结构,并反映了块间联系和块内联系等特性。,结构图中的主要成分有:,模块,它用方框表示,方框中写有模块的名字,一个模块的名字应适当地反映这个模块的功能,这就在某种程度上反映了块内联系。,调用,从一个模块指向另一模块的箭头表示前一模块中含有对后一模块的调用。,数据,调用箭头边上的小箭头表示调用时从一个模块传送给另一模块的数据,小箭头也指出了传送的方向。,左图(a)的结构图说明模块A含有一个或多个对模块B的调用。A调用B时,A将数据X、Y传送给B,B返回到A时,将数据Z传送给A。如果B将对Y作修改,然后再

10、将Y回送给A。则Y应出现在调用箭头的两边(左图(b).,左图中的A为B的调用模块或调用者,B为A的被调模块或下层模块。,除上述基本符号外,结构图中可以再加上一些辅助性的符号,如左图表示模块A有条件地调用模块B,并有条件地调用C或D,图中的,菱形符号,表示一个条件。右图表示模块A循环地调用 B和C,,弧形箭头,表示循环。下页图中,带有双竖线的方框,表示现成的模块(如程序库中现有的模块),它们不必再另行编写,这种模块总出现在结构图的底层。设计员可根据具体情况决定是否有必要画出这些辅助性的符号。,结构图并不一定是树形的,许多程序的结构呈“清真寺”状(左图),即顶是尖的,中间较宽,而底部较窄。如果所使

11、用的高级语言允许递归,则程序结构可以是右图的形状。,应该注意:,一个模块在结构图中只能出现一次,否则修改模块结构时就需要修改多处,这容易造成错误。为了避免线条交叉过多,可采用右图的表示方式:在某些地方用圆表示被调用模块。,为了便于理解程序的整个结构,设计员应将整个结构图画在,一张纸,上。,画结构图的一般习惯:,输入模块在左,输出模块在右,而计算模块居中。,6.3.4 步骤,SD方法可分两步进行:,建立一个满足系统说明书要求的初始结构图。,对结构图作逐步改进,即在结构图中找出块间联系和块内联系尚可改进之处,然后对,有关部分的结构作适当的修改,以提高块内联系和减少块间联系。,6.4 块间联系和块内

12、联系,考核要求:,识记:,块间联系的各种类型、块内联系的各种类型。,领会:,块间联系的衡量角度、块内联系各种类型的含义和特点。SD方法的设计总则。,应用:,模块分解时使块间联系尽可能,小、,块内联系尽可能,大。,6.4.1 块间联系的各种类型,块间联系的大小一般可从三个角度来衡量,:,方式,块间联系是通过怎样的方式进行的。,作用,块间共用的信息是作什么用的。,数量,块间共用信息的多少。,1.联系的方式,块间联系的方式一般有两种,:“用过程语句调用”或“直接引用”。用过程语句调用是通过模块的名字调用整个模块,而“直接引用”是指一个模块直接存取另一模块内部的某些信息,这两种方式相比,前者的块间联系

13、较低,而后者的块间联系则很高。,图4.11(a)的是某个缺乏经验的设计员设计的结构。模块GET A COMMAND的功能是从终端获取一条命令,,为完成该功能,它调用模块,READ TERMINAL,后者,的功能是从终端读入一行字符,(LINE),GET A COMMAND对这,行字符再进行处理就可得到一条,命令。假设系统有多个终端,从哪个终端读呢?READ TERMINAL需要终端号。设计员在模块GET A COMMAND中安排了一个单元存放终端号TERMNUM。READ TERMINAL执行时引用这个单元,然后从所指终端读入,并将一行字符返回给 GET A COMMAND。该图中从模块REA

14、D TERMINAL内部到模块GET A COMMAND内部的箭头就表示“直接引用”。,现在假设系统需要作一个修改,增加一个模块GET A DATA LINE,其功能是从终端获取一行数据。修改人员意识到应该利用模块 READ TERMINAL作为子模块,下面有几种修改方案:,1)GET A DATA LINE在调用 READ TERMINAL之前,修改GET A COMMAND中的TERMNUM(图 4.11(b)。,这样有可能造成错误,因为原先编写GET A COMMAND时不知道会有其他模块修改TERMNUM,因此在GET A DATA LINE执行后再执行GET A COMMAND时,它

15、就可能使用错误的终端号一TERMNUM。,2)如果修改人员意识到上述问题,他可能会在 GET A DATA LINE中先保护TERMINAL的当前值,再设置新的值,然后调用READ TERMINAL,返回后再恢复TERMNUM原先的值。但这样做还有问题,因为如果GET A DATA LINE同GET A COMMAND并行执行(例如在多道程序的环境中),则错误仍然存在;即使没有并行执行的可能性,这种设计亦是隐晦的,将来很容易造成错误。,3)修改模块GET A COMMAND,使其每次调用 READ TERMINAL之前重新设置TERMINAL。但这样修改后,编写 GET A DATA LINE

16、和程序员还必须去修改模块GET A COMMAND而这是一个本应与它无关的模块。另外,如果 GET A DATA LINE同GET A COMMAND并行执行,则错误仍然存在。,4)GET A DATA LINE调用READ TERMINAL 从前先保护TERMINAL原先值再设置新值,从READ TERMINAL返回后再恢复原先值;对GET A COMMAND亦作类似的修改,即调用READ TERMINAL之前和之后分别保护或恢复TERMINAL的原先值。这样,如果GET A DATA LINE的保护或恢复指令有错时,GET A DATA LINE执行时就会失误。为了解决GET A DATA

17、 LINE的失误,必需去研究其他的模块,也就是说,一个模块的错误可能造成另一个模块执行时失误,因此为解决某个模块的失误,需要到其他模块去找原因。可以想像,这样的排错是极其困难的。,5)修改人员另外编写一个读终端模块,不再利用原有的READ TERMINAL。现在,因为有两个不同的读终端模块,首先是增加了额外的工作量;第二,如果将来终端的硬件特征有了变化时,程序员必须记着有两个读终端模块要随之作修改。,上面的几种修改方案都有各种问题,没有一个是令人满意的。,“直接引用”的缺点:,界面不清楚,理解某个模块时必须同时去了解另一模块内部的情况,编程时亦是如此;修改时往往要涉及多个模块;排错时亦必须同时

18、分析几个模块才能找出错误的原因.。,总之,“直接引用”使两个模块间出现了密切的联系,致使理解、编程、修改、排错时,这两个模块不能单独处理,造成“分而不解”的局面,两个模块实际上不能成为“独立的”单元。,“直接引用”是病态的,它造成极强的块间联系,这种块间联系方式增加了开发工作的难度,使理解、编程、修改、排错等活动都难以进行。,图 4.11(c)的块间联系方式是用过程语句调用,此时两个模块共用的信息是作为过程语句的参数显式传送的,因而每个模块的输入输出数据明显可见。另外,用过程语句调用是通过引用模块名调用整个模块,而不是像“直接引用”那样,用模块名之外的其他名字引用模块内部个别的信息。,对图4.

19、ll的例子,有经验的设计员会认识到造成上述修改难题的根本原因是GET A COMMAND和READ TERMINAL之间病态的直接引用,所以原先的设计应该将终端号TERMNUM作为READ TERMINAL一个输入参数显式传送给它(图 4.11(c)。,2.共用信息的作用,模块间共用信息可以作控制信息用,也可以做数据用.但是如果混合用则块间联系最高.,“混合”型是指一个模块修改另一模块的指令。图 4.12(a)中,模块A修改模块 B中的指令 L,由于从修改一方看来,L是数据,而从被修改一方看来L是指令,所以称为“混合”型,或“数据控制”型。,缺点:如果模块A将L改错了,则模块B执行时会失误,即

20、修改一方的错误,会使被修改一方执行时失误,这样为了解决某个模块的失误,必须到另一模块去寻找致错的原因;另外,在理解、编程、修改时,这两个模块也是难以单独考虑的。所以共用信息作“数据控制”,其块间联系是很高的。,共用信息作“控制”用的情况有好几种:,一种是一个模块直接转向另一模块内部的某个位置,图4.12(b)中,模块A转向棋块B中的某个位置L,这里L对双方来说都是指令,所以称为“控制”型。这种情况的缺点是:一个模块的内部改动可能对其他模块有直接的影响。如模块B欲将 L前的某些指令移到L之后,此时就必需考虑这一改动会给模块A带来什么影响,这样的程序是不易维护的;同样,在理解和编程时,这两个模块也

21、是“分而不解”。,图4.12(a)和(b)都是引用了模块名之外的另一个名字(模块的内部名),因而都是病态的。,另一种情况是:将控制信号作为参数显式传送到另一模块。图4.13(a)中,模块 A将一个参数“平均最高”传送给模块B,模块B按这个参数的值是“平均”还是“最高”,取出“平均成绩”或取出“最高成绩”回送给模块A。,参数“平均最高”是一个开关量,它的作用是告诉模块B如何工作。,这种设计方案完全是人为地增加了不必要的额外负担,调用模块向被调模块传送“控制”型参数(开关量)的情况是完全可以避免的,图 4.13(a)只需改成图4.13(b)就可以了,这里模块A根据需要调用模块B1或B2,即需要取“

22、平均成绩”时调用B1,需要取“最高成绩”时调用 B2,这就降低了模块间的联系,使结构也更易理解并更易实现了。,3.共用信息的数量,程序中的联系是因共享信息造成的,模块间的共用的信息越多则块间的联系越大。,为了提高可理解性、可维护性和可靠性,一个模块最好只引用其调用模块显式传送给它的参数以及它本身的局部变量,这样,模块同系统其他部分的联系就会大大减少。,各类块间联系的特性见下表:,块间联系类型 对修改的敏感性 可修改性 可理解性 复用性,数据型 不一定 好 好 好,复合型 不一定 中 中 中,控制型 中 差 差 差,公共型 差 中 坏 坏,内容型 坏 坏 坏 坏,模块分解的目的,是为了降低复杂性

23、如果能将一个复杂的大问题,化为几个孤立的小问题,从而可以分而治之、各个击破,就降低了问题的复杂性。,如何达到块间联系尽可能小?,每个模块用过程语句(或函数方式等)调用其他模块。,模块间传送的参数作数据用。,模块间共用的信息(如参数等)尽量少。,6.4.2 块内联系的各种类型,块内联系,是指一个模块内部各成分之间(如语句之间或语句段之间)的联系。,SD方法的另一个目标是:,块内联系尽量大,即,模块分解时应尽量把相互有密切联系的成分划分在同一模块,而不要把不相关的成分凑到一个模块中。,块内联系常见的类型:,偶然型,特点:组成模块的成分纯属偶然,没有必然联系。,图4.14模块T中的三个语句实际上没

24、有任何联系(假定 A、B、C、D不在文件CAREDFILE中),但是因为模块P、Q、R、S中都含有这样的语句段,设计员为节省空间将它们放在模块T中。,主要缺点:不易修改、模块含义不易理解,难以测试。,偶然型块内联系通常是为了节省空间而产生的,所以只要有足够的空间就应避免构造这种模块,免得造成维护时的困难。,逻辑型(Logical cohesion),特点:将几个逻辑上相似的功能放到一个模块中。,模块 ABC本身的程序流程图会像图4.15(c)那样:各个功能可以共用某一段程序(事实上就是为了节省这些空间,设计员才构造了这个模块),但对各个功能中不相同的部分,程序必须判别一个开关量后,才能选择执行

25、某一个分支。,主要缺点:难理解、难编程.难修改。,“偶然型”和“逻辑型”联系都是很弱的,它们都是为了节省空间,而把没有联系的成分放到一个模块中了。,瞬时型,特点:将需要同时执行的成分放在同一模块中。,如初始化模块(为各种变量置初值,打开若干个文件等)或结束模块等。,“瞬时型”的块内联系稍强于“逻辑型”的。,通讯型(Communicational Cohesion),特点:模块中的成分引用共同的数据。,图4.16中的三个模块都属于这一类,模块A中包含三个部分,这三部分使用同一数据来源产生几个报告,模块B包含两个部分,一部分将输入数据存入,另一部分将输入数据打印;模块C中的两个部分都是对同一文件进

26、行管理。,缺点:复用性较差。,“通讯型”的块内联系比“顺序型”稍弱,因为各成分的执行次序可以是任意的。,顺序型,特点:模块中某个成分的输出是另一个成分的输入。,图 4.17中的两个模块都属于这一类型:模块A读入数据并进行编辑,模块B进行累加并将结果打印。,“顺序型”比“通讯型”强,因为无论从数据的角度或执行的先后次序来看,模块中某一部分的执行依赖于另一部分,但是同“功能性”相比,“顺序型”还是相当弱的,因为模块中可能包含了几个功能,也可能仅包含某个功能的一部分。,缺点:复用性较差。,功能型(Functional Cohesion),特点:一个模块包括并仅包括为完成某一个具体任务所必需的所有成分

27、如:,求平方根,计算每小时工资,计算利息,印出支票,解一个方程,优点:,界面比较清晰,易于理解,同其他模块的联系较低。,功能型模块也易于测试和维护。复用性较好。,例如:见图4.18,从模块A的调用者看来,A的作用是“处理一个命令”,所以它是功能型的,至于模块A 是“怎么做”的,它是否又要调用其他模块,它的调用者是不关心,也不知道的。从模块的调用者看来,B的作用是“处理SEND命令”,所以它也是功能型的。同理图中其他的模块也都是功能型的。,图4.19,是个求解一元二次方程的程序。,从模块A的调用者看来,模块A的功能是“求ax2+bx+c=0的根”,显然,这是一个功能,所以A是功能型的。,再看

28、模块B。从它的调用者看来,B的功能是求平方根,所以B也是功能型的。显然,B的内部也有许多细节,但模块A是不必知道的。,各类块内联系的特性:,块内联系类型 块间联系 清晰性 复用性 可修改性 可理解性,功能型 好 好 好 好 好,顺序型 好 好 中 好 好,通讯型 中 好 差 中 中,瞬时型 差 中 坏 中 中,逻辑型 坏 坏 坏 坏 差,偶然型 坏 差 坏 坏 坏,6.4.3 设计总则,SD方法的设计总则是:,使每个模块执行一个功能。,模块间传送数据型参数。,模块间共用信息尽量少。,6.5 设计技巧,考核要求:,识记,:变换型程序结构、事务型程序结构;作用范围和控制范围;模块的大小;模块的扇出

29、和扇入等概念。,领会,:病人监护系统设计中使用的设计技巧。,应用,:对初始结构图进行改进。,结构图的改进有两条途径,:减少块间联系和提高块内联系。,6.5.1,建立了初始结构图之后,就可考虑对结构图作逐步改进,结构图的改进是围绕着SD的总则进行的,即要使每个模块执行一个功能,模块间应传送数据型参数,而且参数尽可能少。设计员可以逐个检查每个模块及其界面,找出可改进的地方。,在设计时使用了以下一些技巧:,减少块间联系,其中用得最多的是减少模块之间传送的参数个数。,消除重复的功能。,消除“管道”性模块。,要考虑将来可能发生的变化。,如果一个模块的篇幅较大,可以从中抽出一些功能构成它的下层模块。,如果

30、一个模块的篇幅较小,可以考虑将它同其调用模块合并。,尽可能研究整张结构图,而不是由几个设计员分别考虑一张结构图的各个部分。,初始结构图也可以暂不满足系统说明书中的某些要求,而在改进过程中使这些要求逐步得到满足,因为越到后面,结构图的“可维护性”越好,局部的改动不会影响整个大局。,从以上讨论可以看出,改进的过程带有很强的试探性,设计员需对各种可能的方案作比较和权衡,设计员的经验也是非常重要的。,6.5.2 功能型的模块的组成,一个功能型的模块应包括以下成分:,执行某项具体任务的部分。,通知它的调用模块发生了例外情况的部分。,在数据结束时通知调用模块“文件完”的部分。,6.5.3 消除重复的功能,

31、设计过程中经常会发现几个模块具有相类似的功能,这将给编程、修改带来麻烦。图 4.36(a)中,Q1和 Q2两个模块具有类似的功能,但又不完全相同,如何将其中重复的部分消去呢?,错误的方法:,将Q1和Q2合并成一个模块Q(图4.36(b),此时模块Q是“逻辑型”的。,正确的方法是:,先仔细分析Q1、Q2,找出这两个模块中相同的功能(图4.36(a)中的虚线部分),然后把这个功能分离出来,构成它们的一个公共的下层模块Q(图 4.36(c)。如果余下的模块Ql或Q2比较简单,则可以同它们的调用模块X或Y合并,所以图 4.36(d)、图4.36(e)的方案都是可能的。,图4.36(c)、(d)、(e)

32、的几个方案消除了重复的功能,而且块内联系较高,块间联系较低。,6.5.4 作用范围和控制范围,一个判定的作用范围,是指所有受这个判定影响的模块的集合。只要模块中含有一些依赖于这个判定的操作,那么该模块就在这个判定的作用范围之中。如果整个模块是否执行取决于某个判定,则该模块的调用模块也在这个判定的作用范围之中。,一个模块的控制范围,包括它本身及其所有的下属模块(即由这个模块管理的整个结构层次),控制范围纯粹是结构方面的特点,而与模块的功能无关。,SD方法认为作用范围应该是控制范围的子集,,也就是说,受某个判定影响的所有模块应该在该判定所在模块的管理之下。,作用范围和控制范围的4种情况:,作用范围

33、不在控制范围之内,见设计图 4.37(a),质量较差。,作用范围在控制范围之内,但判定在层次结构中的位置太高了,见设计图 4.37(b)。,判定所在位置是合适的,见设计图4.37(c)。,判定的作用范围恰好在判定所在模块的下一层,见设计图4.37(d)。,以上前3种情况的块间联系较大,而最后一种情况的块间联系最小,是最理想的设计。,如果发现作用范围不在控制范围之内,可选用以下一些手段对结构图作改进:,将作判定的模块合并到它的调用模块中,从而使判定处于足够高的位置。,将受判定影响的模块下移到控制范围内。,把判定上移到足够高的位置。,6.5.5 模块的大小,模块的大小是指源程序的行数。适当地控制模

34、块的大小也是降低复杂性的手段之一。一般说来,模块大小以,一至三页为宜(约5OlO0行),,这样比较易于阅读、易于理解。,对篇幅较大的模块,,应该检查一下它是否包含了好几个功能,是否可以从中,分离,出一些功能来构成同层或下一层的其他模块。,对篇幅较小的模块,,可以,考虑,是否同它的调用模块,合并,。,6.5.6 扇出和扇入,一个模块调用其他模块的个数,称为该,模块的扇出。,扇出越大,设计该模块时需要考虑的问题就越多,因而复杂性越高。,为了控制模块的复杂性,一个模块的扇出不宜过大,一般认为不要超过7。如果发现某个模块的,扇出较大,(如图 4 38(a),可以考虑,重新分解,(例如改为图 438(b

35、)的方案)。,一个模块被其他模块调用的个数,称为该,模块的扇入,。扇入大些,一般不会影响问题的复杂性、而且,扇入,越大,说明该模块的,复用性越好。,6.6 从数据流图导出初始结构图,考核要求:,识记:,变换分析、事务分析的特点。,领会,:从数据流图导出初始结构图的方法;银行文件管理实例。,应用:,用“变换分析”与“事务分析”技术从数据流图导出标准形式的程序结构。,设计阶段的SD方法与分析阶段的SA方法有着密切的联系,SD方法通常与 SA方法衔接起来使用,分析阶段用SA方法获得了用数据流图等描述的系统说明书,SD方法则以数据流图为基础设计程序的模块结构。从表达“用户要求”的数据流图可以根据一些简单的规则导出,初始的模块结构。,将分析模型转换为软件设计,数据,字典,数据,流图,E-R图,状态变迁图,加,工,规,约,控制规约,数,据,对,描,述,象,数 据 设 计,体系结构设计,接口设计,过程设计,分析模型,设计模型,将设计模型,金字塔倒立,的后果是什么?,数 据 设 计,体系结构设计,接口设计,过程设计,数据处理系统的数据流图一般有两种典型的结构:变换型结构和事务型结构。,两种典型的结构可分别通过“变换分析”和“事务分析”技术导出标准形式的程序结构图,这些技术都是先设计模块结构顶端的主模块,然后“由顶向下逐步细化”,最后得到一个满足数据流图所表达的用户要求的程序结构。,

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服