欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    软件工程各章节重点.ppt

    • 资源ID:6206861       资源大小:696.50KB        全文页数:211页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    软件工程各章节重点.ppt

    -软件设计,软件工程,内容提要,软件设计基础原理概要设计详细设计,软件设计,软件设计是软件开发的最重要阶段;是保证软件质量的重要步骤;软件设计是把用户需求准确转化为软件系统的唯一途径。,软件设计,软件设计是把软件需求转换为软件表示的过程。它包含两个阶段:概要设计将软件需求转化为数据结构和软件的系统结构。详细设计通过对结构表示进行细化,得到软件详细的数据结构和算法。,软件设计的基础概念,软件结构软件结构包括两部分,一是软件模块的层次结构;二是数据的结构。通常软件的体系结构通过一个划分过程来完成。该划分过程从需求分析确立的目标系统模型出发,对整个问题进行分解,使其每一部分用一个或几个软件成分加以解决,从而解决整个问题。该过程可用下图形象表示:,P1,P2,P3,S1,S2,S3,软件设计的基本原理,抽象模块化逐步求精信息隐藏与局部化模块的独立性,抽象,抽象,即析取出事物的本质特征而不考虑他们的细节。抽象是人类认识复杂问题的重要思维工具之一。抽象的过程是从特殊到一般的过程,上层概念是下层概念的抽象。下层概念是上层概念的精化和细化。,模块化,模块是数据说明、可执行语句等程序对象的集合,它是单独命名的,并且可以通过名字来访问的。例如,过程。函数、子程序、宏等等都可作为模块。模块具有三个基本属性:功能模块实现的功能逻辑描述模块内部怎么做状态模块使用时的环境和条件,模块化,模块的特征:内部特征模块的名字、参数等;外部特征完成模块功能的程序代码和模块内部数据。模块化,即把软件按照规定原则,划分为一个个较小的,相互独立的但又相互关联的部件。模块化实际上是系统分解和抽象的过程。,模块化,理想的模块每个模块只解决一个问题;每个模块的功能应该明确,使人容易理解;模块之间的联结关系简单,具有独立性;用理想模块构建的系统,容易使人理解,易于编程,易于测试,易于修改和维护。对用户来说,其感兴趣的是模块的功能,而不必理解模块内部的结构和原理。,模块化的理论依据,设函数C(x)定义问题x的复杂程度,函数E(x)确定解决问题x需要的工作量。对于两个问题P1和P2,如果有:C(P1)C(P2),则显然有:E(P1)E(P2);根据人类解决一般问题的经验,有:C(P1+P2)C(P1)+C(P2);进而获得:E(P1+P2)E(P1)+E(P2)。,模块化的理论依据,此不等式表明:单独解决问题P1和P2所需的工作量之和,比把P1和P2合起来作为一个问题来解决所需要的工作量要少。这种“分而治之”的思想提供了模块化的理论依据:把复杂问题分解成许多容易解决的小问题,则原来复杂的问题也就容易解决了。,模块化与软件成本,成本或工作量,模块数目,模块成本,接口成本,最小成本区,软件总成本,M,模块化,采用模块化原理使软件结构清晰,不仅容易设计也容易阅读和理解:因为程序错误通常局限在有关的模块及它们之间的接口中,所以模块化使软件容易调试和测试,有助于提高软件的可靠性;因为变动往往只涉及少数几个模块,所以模块化能够提高软件的可修改性;模块化也有助于软件项目的组织管理,一个复杂的大型软件可以有许多程序员分工编写,进而提高了开发效率。,逐步求精,逐步求精是人类解决复杂问题的基本技术之一,它是把问题的求解过程分解成若干步骤或阶段,每步都比上步更精化,更接近问题的解法。为了能集中精力解决主要问题而尽量推迟问题细节的考虑。它可以看作是一项把一个时期必须解决的种种问题按优先级别排序的技术。逐步求精和抽象是一对互补的概念。,信息隐藏和局部化,应用模块化原则,自然会产生一个问题“为了得到一组模块,应该怎样分解软件呢?”信息隐藏原理指出:应该这样设计和确定模块,使得一个模块内包含的信息对不需要这些信息的模块来说是不能访问的。局部化指把一些关系密切的软件元素放得彼此靠近。显然,局部化有助于信息隐藏。,信息隐藏和局部化,实际上应该隐藏的不是模块的一切信息,而是模块的实现细节。因此这条原理也被称作“细节隐藏”。隐藏,意味着有效的模块化可以通过定义一组独立的模块而实现,这些独立的模块彼此间仅仅交换那些为了完成系统功能而必须交换的信息。信息隐藏和局部化有助于软件测试和维护!,模块独立性,模块独立性是模块化、信息隐藏和局部化等概念的直接结果。,为什么模块独立性很重要?有效模块化的软件比较容易开发出来;独立的模块比较容易测试和维护。总之,模块独立是设计好坏的关键!,模块独立的含义:模块完成独立的功能,与其他模块的接口简单;符合信息隐蔽和信息局部化原则;模块间关连和依赖程度尽可能小。,模块独立的度量,模块的独立程度可由两个定性标准来衡量:耦合耦合衡量不同模块彼此间相互依赖的紧密程度;内聚内聚衡量同一模块内部各元素彼此组合的紧密程度;,耦合性,耦合是程序结构内不同模块之间相互关联的度量,是影响软件复杂程度和设计质量的重要因素。耦合强度依赖的因素:一模块对另一模块的引用一模块向另一模块传递的数据量一模块施加到另一模块控制的数量模块间接口的复杂程度,设计目标:低耦合(建立模块间耦合尽可能松散的系统),耦合度,耦合性,模块独立性,数据耦合,控制耦合,公共环境耦合,内容耦合,特征耦合,外部耦合,非直接耦合,非直接耦合(Nodirect Coupling),两个模块没有直接关系(模块1和模块2),它们之间的联系完全是通过主模块的控制和调用来实现,非直接耦合是模块独立性最强的。,数据耦合(Data Coupling),一模块调用另一模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构和外部变量)来交换输入、输出信息。属松散耦合。,开发票,计算水费,单价数量,金额,特征耦合(Stamp Coupling),如两个模块之间是通过传递数据结构(不是简单数据,而是记录、数组等)加以联系,或都与一个数据结构有关系,则称这两个模块间存在特征偶合。,计算水电费,计算水费,计算电费,住户情况,水费,电费,住户情况,“住户情况”是一个数据结构,图中模块都与此数据结构有关。“计算水费”和“计算电费”本无关,由于引用了此数据结构产生依赖关系,它们之间就是特征偶合。,特征耦合,将特征耦合改为数据耦合:,计算水电费,计算水费,计算电费,本月用水量,水费,电费,本月用电量,控制耦合(Control Coupling),一模块向下属模块传递的信息控制了被调用模块的内部逻辑。如开关量、标志、名称等控制决策的变量,控制选择了被调用模块的功能。,A,Flag,F1,F2,Fn,Flag,.,B,控制耦合举例-1,控制耦合举例-2,A,B计算平均分或最高分,平均/最高(控制信号),成绩,读入分数,输出结果,计算平均分,计算最高分,平均/最高?,B,控制耦合,控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,增加了模块间的相互依赖关系。去除模块间控制耦合的方法:将被调用模块内的判定上移到调用模块中进行;被调用模块分解成若干单一功能模块。,控制耦合,修改控制耦合为数据耦合:,A,B1计算平均分,平均成绩,B2计算最高分,最高成绩,外部耦合(External Coupling),一组模块均与同一外部环境关联(例如,I/O模块与特定的设备、格式和通信协议相关联),它们之间便存在外部耦合。外部偶合必不可少,但这种模块数目应尽量少。,公共环境耦合,一组模块引用同一个公用数据区(也称全局数据区、公共数据环境)。其中,公共数据区指:全局数据结构共享的通讯区内存的公共覆盖区等,公共环境耦合,公共耦合的复杂程度随耦合模块的个数增多而显著增加。若只有两个模块间存在公共数据环境,则公共耦合有两种情况,松散公共耦合和紧密公共耦合。,A,B,公共数据区,A,B,公共数据区,a.松散公共耦合,b.紧密公共耦合,公共环境耦合存在的问题,软件可理解性降低诊断错误困难软件可维护性差,软件可靠性差公共数据区及全程变量无保护措施 慎用公共数据区和全程变量!,内容耦合(Content Coupling),如果发生下列情形之一,两模块之间就产生了内容耦合:一个模块直接访问另一模块的内部数据;一个模块不通过正常入口转到另一模块的内部;两个模块有部分程序代码重叠;一个模块有多个入口。,一模块直接访问另一模块的内部信息(程序代码或数据),A,B,A,B,模块代码重叠,Entry1 Entry2,多入口模块,如何降低模块间耦合度,尽量使用数据耦合少用控制耦合限制公共环境耦合的范围坚决避免使用内容耦合 降低接口的复杂性,内聚性,内聚指一个模块内部元素在功能上相互关联的强度(彼此结合的紧密程度),它是信息隐藏和局部化概念的扩展。设计目标:高内聚(模块在软件过程中完成单一的任务),内聚性,模块独立性,偶然内聚,逻辑内聚,时间内聚,过程内聚,通信内聚,信息内聚,功能内聚,内聚性,偶然内聚(Concidental Cohesion),含义:模块内各部分之间没有联系,或者即使有联系,这种联系也很松散。如:A、B两个模块含有相同的一段代码C,程序员为了节约内存,而将A、B放在同一模块内,以共享C,模块AB即为偶然内聚。,缺点:可理解性差,可修改性差,A,B,AB,偶然内聚例子,A,B,C,MOVE O TO RREAD FILE FMOVE S TO T,M,模块M中的三个任务没有任何联系,逻辑内聚(Logical Cohesion),把几种相关的功能(逻辑上相似的功能)组合在一模块内,每次调用时,由传给模块的判定参数来确定该模块应执行哪一个功能。,!逻辑内聚导致模块间的控制耦合,调用模块,判定,读一个记录,写一个记录,被调用模块,E、F、G逻辑功能相似,组成新模块EFG,缺点:增强了耦合(控制);不易修改,效率低,逻辑内聚例子,时间内聚(Classical Cohesion),这种模块大多为多功能模块,但模块内的各个功能的执行与时间有关,通常要求所有功能必须在同一时间内执行,这些功能只因时间因素关联在一起。,例如:系统初始化模块、系统结束模块、紧急故障处理模块等均是时间性内聚模块.,过程内聚(Procedural Cohesion),模块内各处理成分相关,且必须以特定次序执行。使用流程图作为工具设计程序时,把流程图中的某一部分划出来组成模块,就得到过程内聚模块。例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。,通信内聚(Communication Cohesion),如果一个模块内各功能部分使用了相同的输入数据,或产生了相同的输出结果,则称之为通信内聚模块。通常,通信内聚模块是通过数据流图来定义的。,打印报告A,打印报告B,打印报告C,计算A,计算B,保存,学生信息,通信内聚例子,产生职工工资报表并计算平均工资模块,产生工资报表,计算平均工资,职工工资记录,职工工资报表,平均工资,通信内聚例子,信息内聚(Informational Cohesion),模块完成多个功能,各功能都在同一数据结构上操作,每一功能有唯一的入口点。这个模块将根据不同的要求,确定该执行哪个功能。由于这个模块的所有功能都基于同一个数据结构(符号表),因此,它是一个信息内聚模块,信息内聚例子,符 号 表,查找,登录,删除,修改,功能内聚(Functional Cohesion),一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割。内聚性最强!,耦合与内聚的关系,内聚与耦合密切相关,同其它模块强耦合的模块意味着弱内聚,强内聚模块意味着与其它模块间松散耦合。耦合与内聚都是模块独立性的定性标准,都反映模块独立性的良好程度。但耦合是直接的主导因素,内聚则辅助耦合共同对模块独立性进行衡量。,概要设计,概要设计的基本目的概要设计的基本任务概要设计过程结构化设计方法面向数据流的设计方法概要设计工具层次图和HIPO图结构图,概要设计的基本目的,概要设计的基本目的就是回答“概括的说,系统应该如何实现?”,概要设计的基本任务,确定软件系统的结构和数据库结构划出组成系统的物理元素:程序、文件、数据库、人工过程和文档等等;设计软件结构,即确定系统由哪些模块组成,以及这些模块之间的相互关系(接口)。,概要设计的主要工作是:完成模块分解即每个模块的功能说明!,概要设计过程,设想供选择的方案选择合理的方案推荐最佳方案功能分解设计软件结构数据库设计制订测试计划编写文档审查和复审,设想供选择的方案,在概要设计开始时,只有系统的逻辑模型,分析人员有充分的自由比较分析不同的物理实现方案。设想供选择的方案的一种通常的做法是,设想数据流图中的处理分组的各种可能的方法,抛弃技术上行不通的分组方法,余下的分组方法代表可能的实现策略,并且可以启示供选择的物理系统。,选取合理的方案,在数据流图的基础上,一个边界一个边界设想并列出可供选择的方案。通常,选择的这些方案中至少应包括低成本、中成本和高成本的三种方案;对每个合理方案要提供以下几方面资料:系统流程图;数据字典;成本、效益分析;实现这个系统的进度计划。,推荐最佳方案,分析人员应该在综合分析对比各种合理方案利弊,推荐一个最佳方案,并为推荐的方案拟定详细的实现计划。用户和有关的技术专家应该认真审查分析员所推荐的最佳系统,如果系统符合用户的需求,并且在现有条件下完全能够实现的。则应该提请使用部门负责人进一步审批。在使用部门负责人也接受了分析员的推荐方案之后,才可以进入下一个环节。,对分析结果进一步细化,再进行功能分解。,需要通过软件解决的“问题”,S1,S2,S3,S4,S5,软件的“解决方案”,功能分解,设计软件结构,软件结构反映系统中模块的相互调用关系:顶层模块调用它的下层模块以实现程序的完整功能,每个下层模块再调用更下层的模块,最下层的模块完成最具体的功能;软件结构通过层次图或结构图来描述,可以直接从DFD映射出软件结构。,数据库设计,数据库应用越来越广泛,目前大多数的系统都要用到数据库技术。数据库设计是一项专门的技术,包括模式设计、子模式设计、完整性和安全性设计和优化处理等。,制订测试计划,在软件开发的早期阶段提前考虑软件的测试计划是很有必要的。这样能促使软件设计人员在设计时注意到软件的测试问题,从而有利于提高软件的可测试性。,文档编写,概要设计阶段需要编写的文档包括:系统说明书;用户手册;测试计划;详细的实现计划;数据库设计结果;,审查与复审,最后应该对概要设计的结果进行严格的技术审查,然后再提交使用部门负责人从管理角度进行审查。,概要设计准则,改进软件结构提高模块独立性模块适当的深度、宽度、扇出和扇入模块判断作用范围应在其控制作用范围内力争降低模块接口的复杂度设计单入口单出口的模块模块功能应该是可以预测的,改进软件结构提高模块独立性,设计出软件的初步结构以后,应该审查分析该结构,通过模块分解或合并,力求降低耦合提高内聚。例如,多个模块公有的一个子功能可以独立成一个模块,由这些模块调用;有时也可以通过分解或合并模块以减少信息传递对全局数据的引用,并降低接口的复杂性。模块大小适中,一般一个模块包含的语句在3050条左右较好。,模块适度的宽度、深度、扇出和扇入,深度:软件结构中模块的层数宽度:软件结构内同一层的模块总数的最大值扇出:一个模块所调用(直属下级)的模块个数(控制在7以内)扇入:有多少上级模块调用它经验证明,一个设计好的软件结构,通常顶层扇出比较高,中层扇出比较少,底层有高扇入。,模块适当的深度、宽度、扇出、扇入,M,a,b,c,d,e,l,m,f,g,h,n,o,p,q,i,j,r,Depth,Fan-in,Fan-out,Width,控制作用范围:本身及其所有下级模块判断作用范围:被判断调用的模块对于任何一个内部存在判断调用的模块,它的判断作用范围应该是其控制作用范围的一个子集;,模块G中有一条判断调用模块D的语句。,判断作用范围应在控制作用范围内,存在判断调用的模块所在层次不要与那些属于判断作用范围的模块所在的层次相隔太远。,模块C中有一条判断调用模块G的语句。相隔太远,正确,判断作用范围应在控制作用范围内,力争降低模块接口的复杂性,模块接口的复杂度是软件发生错误的一个主要原因。应该仔细设计模块接口,使得信息传递简单并且和模块的功能一致。接口复杂或不一致(即看起来传递的参数之间没有联系),是高耦合和低内聚的征兆,应该重新分析这个模块的独立性。,设计单入口单出口的模块,即不要使模块间出现内容耦合,模块功能应该是可以预测的,只要输入的数据相同就产生相同的输出数据,这个模块的功能就是可以预测的;模块的功能应该可以预测,但也要防止模块功能过分局限。,概要设计工具,层次图(Hierarchy Chart)输入/处理/输出图(IPO)HIPO图结构图(Structure Chart),层次图,层次图用来描绘软件的层次结构的图形工具。,IPO图,HC图中的每一个模块,均可用一张IPO图来描述。IPO 图由输入、处理和输出三个框组成,需要时还可以增加一个数据文件框。IPO图在需求分析阶段主要用来描述系统的主要算法。,IPO图例子(班务管理系统),IPO图1 财务查询,IPO图1 表示了财务查询系统,它讲述如何查询学生缴费情况,并且验证其是否准确,HIPO图,HIPO图即HC加IPO层次图加上编号称为H图。在层次图的基础上,除最顶层的方框之外,其余每个方框都加了编号。层次图中每一个方框都有一个对应IPO图(表示模块的处理过程)。每张IPO图应增加编号与其表示的(对应的)层次图编号一致。,结构图(SC),结构图是SD方法在概要设计中的主要表达工具,约定:一个方框代表一个模块,框内注明模块的名称或主要功能;方框之间的箭头表示模块的调用关系;尾部带空心圆的短箭头表示数据信息,尾部带实心圆的短箭头表示控制信息。,数据信息,控制信息,结构图,例1:,编辑学生记录,读学生记录,学生数据,无此学生,学号,结构图,例2:,产生最佳解,得到好输入,计算最佳解,输出结果,读输入,编辑输入,结果格式化,显示结果,解,解,解,好输入,原始输入,编辑结果,原始输入,格式化的解,格式化的解,结构图,结构图中还有一些附加符号,来表示模块的选择调用和循环调用:,A根据内部判断决定是否调用B,A按另一判定结果选择调用C或D,A根据内在的循环重复调用B、C等模块,提示,层次图和结构图并不严格表示模块的调用次序,也不指明什么时候调用下层模块,他们仅仅表示一个模块调用那些模块,至于模块内有无其他成分则完全没有表示。通常用层次图作为描述软件结构的文档。结构图作为文档并不合适,因为图中包含信息过多,有时反而降低了清晰程度。但是,结构图可以作为检查设计正确性和评价模块独立性的好方法。,面向数据流的设计方法,面向数据流的设计方法(结构化设计方法)概述变换流与事务流变换分析事务分析,面向数据流的设计方法,面向数据流的设计方法以数据流图为基础,它定义了把数据流图变换成软件结构的不同映射方法。因为任何系统都可以用数据流图表示,所以面向数据流的设计方法理论上可以设计出任何软件的系统结构。数据流类型决定了映射方法。数据流有变换流和事务流两种基本类型。软件结构也被划分为变换型结构、事务性结构两种类型。,变换流,信息沿输入通路进入系统,同时由外部形式变换为内部形式,进入系统的信息通过变换中心,经过加工处理后再沿输出通路变换为外部形式离开软件系统。特点:从同一数据源进入系统的数据,它在DFD中流动的逻辑路径是相同的。,事务流,数据沿输入通路到达一个处理(事务中心)这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。这种以“事务为中心”的数据流,称为“事务流”;事务中心完成:接受输入数据;分析每个事务以确定它的类型;根据事务类型选取一条活动通路。,DFD类型,输入,输出,事务中心,接受路径,动作路径,事务型结构,由输入、变换中心和输出三部分组成,具有在多种事务中选择执行某类事物的能力,变换型数DFD,事务型DFD,变换中心,变换型结构,基本结构,特征,映射,变换型DFD,变换中心,传入部分,传出部分,总控模块,加工模块,输入模块,输出模块,变换型SC,输入,加工,输出,映射,映射,事务型DFD,动作1,事务中心,接受部分,接受事务,事务分析,动作2,动作3,映射,事务型SC,提示,大型系统的数据流图中,变换型和事务型结构往往共存:,T,传入,变换,传出,事务中心,面向数据流的设计过程,精化DFD确定DFD类型把DFD映射到系统模块结构设计出模块结构的上层基于DFD逐步分解高层模块设计出下层模块根据模块独立性原理,精化模块结构模块接口描述,面向数据流方法中两种映射过渡方法,变换型DFD,事务型DFD,初始SC,初始SC,变换分析,事务分析,变换分析步骤,确定输入流和输出流的边界,孤立出变换中心在数据流图上标明分界线,变换分析步骤,第一级分解(建立初始结构图框架)设计顶层和第一层模块,初始的SC,第一层分解后的结构图-1,MC,MT,MA,ME,第一层,顶层,c,e,c,e,u,w,u,w,传出模块,中心变换模块,传入模块,第一层分解后的结构图-2,MC,MA1,c,e,u,w,c,p,MA2,Q,P,R,ME1,e,p,r,r,w,u,w,传入分支模块,中心加工分支模块,传出分支模块,ME2,变换分析步骤,第二级分解:自顶向下分解,设计出每个分支的中、下层模块方法从变换中心的边界开始沿输入通路向外移动,把输入通路中每个处理逻辑映射成软件结构中MA控制的一个下层模块;然后沿输出通路向外移动,把输出通路中每个处理逻辑映射成直接或间接受模块ME控制的一个底层模块;最后把变换中心内的每个处理映射成受MT控制的一个模块。,传入分支的分解,MA,C,B,A,b,a,c,E,D,d,e,c,e,(1),(2),传出分支的分解,ME,W,Put U,Write V,u,u,w,u,U to V,v,v,v,ME,U,Write W,w,w,u,w,u,V,(1),(2),中心加工分支的分解,MT,P,Q,R,e,c,p,r,u,w,p,r,变换分析实例,某校欲设计“成绩录入”程序,由录入员输入成绩信息(学号+课程代码+成绩),对程序要求如下:查询是否有该学生查询该学生的班级信息查询教学计划信息查询成绩是否重复录入在核对以上信息后保存该成绩信息。,成绩库,姓名,班级信息,课程信息,成绩信息,成绩录入精化数据流图,管理员,输入成绩,查询学生,查询班级,查询教学计划,查询成绩,显示姓名,显示班级,显示课程,保存成绩,姓名,班级信息,课程信息,教学计划,班级信息,学生信息,无此学生报告,无此班级报告,无此课程报告,重复输入报告,姓名,班级信息,课程信息,成绩信息,划界的数据流图,管理员,输入成绩,查询学生,查询班级,查询教学计划,查询成绩,成绩信息,成绩信息,成绩信息,成绩信息,成绩信息,显示姓名,显示班级,显示课程,保存成绩,姓名,班级信息,课程信息,成绩库,教学计划,班级信息,学生信息,无此学生报告,无此班级报告,无此课程报告,重复输入报告,输出,加工,输入,成绩录入上层模块图,主模块,查询,输出,成绩录入,如果输入或输出模块已经是原子模块,则不必进一步细化;如果输入和输出模块不需要变换数据,则输入和输出不需设计下层模块;如果有多种输入或输出,则这些输入或输出模块作为输入和输出模块的下层模块。,进一步分解的规则,成绩录入结构二次分解,主模块,查询,输出,成绩录入,查询学生,查询班级,查询教学计划,查询重复,显示姓名,显示班级,显示课程,保存成绩,事务分析,事务分析的设计步骤和变换分析的设计步骤大部分相同或类似,主要差别仅在由数据流图到软件结构图的映射方法不同。由事务流映射成软件结构包括一个接受分支和一个发送分支。映射出接受分支结构的方法和变换分析映射出输入结构的方法相似,即从事务中心的边界开始,把沿着接受流通路的处理逻辑模块映射成模块。发送分支的结构包含一个调度模块,它控制下层的所有活动模块;然后把DFD中的每个活动流通路映射成与它的特征相对应的结构。,事务分析步骤,在数据流图上确定事务中心、接收部分和发送部分。画出结构图框架,把数据流图上的三部分分别映射为事务控制模块、接收模块和动作发送模块。分解细化接收分支和发送分支,完成初始结构图。,初始的SC,事务控制模块,接受模块,动作发送模块,动作1模块,动作2模块,动作3模块,由事务分析产生,主模块,调度模块,事务分析的映射方法,总控,调度,C通路,B通路,A通路,T,A通路,B通路,C通路,接收路径,事务分析举例,I,L,M,N,A,B,C,D,F,E,G,事务中心,事务流设计举例,取 A,总控,A,L,M,N,G,D,B,C,F,E,(主模块),调度,动作分支的典型结构,事务型数据流图举例,I,L,M,O,N,A,B,C,D,F,E,G,H,总控,输入 A,变换控制,A,L,M,N,A,G,D,B,C,F,E,输出 E、F、G,E、F、G,E、F、G,输出H,O,E、F、G,H,H,事务型数据流图举例,事务型分析实例,某校欲设计“收费查询”系统,该程序可以为学生和管理人员服务,由录入员和管理员输入查询请求,即可查出学生的缴费情况,要求做到:按学号查询按姓名查询按专业查询按班级查询,精化数据流图,录入员,接受查询,分析查询,按学号查询,按姓名查询,按专业查询,按班级查询,查询信息,查询信息,学号,姓名,专业,班级,学生,管理员,缴费清单,缴费清单,缴费清单,缴费清单,得出程序结构,首先应设计出事务中心模块,对整个事务进行控制。从数据流图可看出,“分析查询”处理是事务调度中心,可以设计为事务调度模块。由四个事务处理,分别为其设计事务处理模块。输入模块为“接受查询”。,混合流分析-例1,3,4,1,2,6,7,5,8,10,9,11,变换中心,传入,传出,事务型,混合流分析-例2,T,传入,变换,传出,事务中心,接收部分,发送部分,混合流分析-例3,AB,变换中心,传入,传出,a,b,b1,b2,b3,c1,c2,c3,BC,T1,T2,CD,T3,DE,EH,FJ,LM,KL,d,e,g,f,j,L,m,事务流子系统,HK,h,k,混合流分析例4,XX系统,输入D,变换控制,输出K,输入C,d,c,输出L,CD,DE,FJ,EH,HK,KL,c,d,d,k,k,k,L,L,输出M,LM,m,m,L,事务子系统,d,e,f,g,提示,对于一个大型系统,常常把变换分析和事务分析应用到同一个数据流图的不同部分,由此得到的子结构形成“构件”,可以利用它们构造完整的软件结构;一般来说,如果数据流不具有显著的事务特点,使用变换分析;反之,若具有明显的事务中心,则应该采用事务分析技术。,设计优化,考虑设计优化问题时,应该记住“一个不能工作的最佳设计的价值是值得怀疑的”。应该在设计的早期阶段对软件结构进行精化、优化。可以导出不同的软件结构,并对它们进行评价和比较,力求得到“最好”的结果。注意,简单的结构通常既表示优雅的设计风格,又表示高效率。设计优化应该力求做到在有效模块化的前提下使用最少的模块,以及在能够满足系统数据要求的前提下,使用最简单的数据结构。,阶段性成果,系统说明书用户手册测试计划详细的实现计划数据库设计文档,详细设计,内容提要详细设计基础结构化程序设计方法详细设计工具流程图(FC)盒图图(NS)PAD图程序设计语言判定表判定树详细设计说明书设计复审,详细设计又称过程设计,在概要设计阶段,已经确定了软件系统的总体结构,给出系统中各个组成模块的功能和模块间的联系。这一步的工作,就是要在上述结果的基础上,考虑“怎样实现”这个软件系统,直到对系统中的每个模块给出足够详细的过程性描述。需要指出,这些描述应该用详细设计的表达工具来表示,因它们还不是程序,一般不能够在计算机上运行。,详细设计,提示,详细设计是编码的先导。这个阶段所产生的设计文档的质量,将直接影响下一阶段程序的质量。为了提高文档的质量和可读性,本章除要说明详细设计的目的、任务与表达工具外,还将扼要介绍结构程序设计的基本原理,以及如何用这些原理来指导模块内部的逻辑设计,提高模块控制结构的清晰度。,对于功能较简单的系统开发,概要设计之后可以跳过详细设计直接进行编码。,详细设计的目的,详细设计的目的是为软件结构图(SC图或HC图)中的每一个模块确定使用的算法和块内数据结构,并用某种选定的表达工具给出清晰的描述。,表达工具可以由开发单位或设计人员选择,但表达工具必须具有描述过程细节的能力,进而可在编码阶段能够直接将它翻译为用程序设计语言书写的源程序。,详细设计的任务,为每个模块确定采用的算法,选择某种适当的工具表达算法的过程,编写模块的详细过程性描述;确定每一模块使用的数据结构;确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及模块输入数据、输出数据及局部数据的全部细节。在详细设计结束时,应该把上述结果写入详细设计说明书,并且通过复审形成正式文档。交付给下一阶段(编码阶段)的工作依据。,详细设计的任务,要为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行测试。,模块的测试用例是软件测试计划的重要组成部分,通常应包括输入数据,期望输出等内容。由于负责详细设计的软件人员对模块的功能、逻辑和接口最清楚,所以由他们提出对各个模块的测试要求最为合适。,详细设计的原则,模块的逻辑描述要清晰易读、正确可靠。选择恰当描述工具来描述各模块算法。采用结构化设计方法,改善控制结构,降低程序的复杂程度,从而提高程序的可读性、可测试性、可维护性。其基本内容归纳如下:程序语言中应尽量少用GOTO语句,以确保程序结构的独立性。使用单入口单出口的控制结构,确保程序的静态结构与动态执行情况相一致。保证程序易理解。程序的控制结构一般采用顺序、选择、循环三种结构来构成,确保结构简单。用自顶向下逐步求精方法完成程序设计。结构化程序设计的缺点是存储容量和运行时间增加 10一20,但可读性和可维护性好。,详细设计的方法-结构程序设计方法,结构程序设计的概念最早由提出。1965年他在一次会议上指出“可以从高级语言中消除goto语句”,“程序的质量和程序中所包含的goto语句的数量成反比”。1966年Bohm、Jacopomo证明了只用三种基本的控制结构顺序、选择、循环,就能实现任何单入口单出口程序。,结构程序设计方法,实际上用顺序和循环结构(do-while)完全可以实现选择结构(if-then-else)因此理论上最基本的控制结构只有两种。,A,B,Exp,B,T,F,Exp,T,F,A,B,结构程序设计方法,随着对高级语言中是否取消GOTO语句讨论的深入,人们逐渐认识到:不是简单去掉GOTO语句,而是要建立一种新的程序设计思想、方法和风格,以显著的提高软件生产率和降低软件维护代价。成功的项目实践:纽约时报信息库管理系统美国宇航局空间实验室飞行模拟系统验证了结构设计方法的有效性。,结构程序设计方法,1972年Mills进一步指出:程序应该只有一个入口和一个出口,补充了结构程序设计的规则。,结构程序设计的定义,经典定义“如果一个程序的代码块仅仅通过顺序、选择和循环这三种基本控制结构进行连结,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。”上述经典定义过于狭隘,结构程序设计的实质并不是无goto语句的编程方法,而是一种使程序代码容易阅读、容易理解的编程方法。为此我们给出如下定义:“结构程序设计是尽可能少用goto语句的程序设计方法。最好在检测出错误时才使用goto语句。”,结构程序设计,虽然理论上上述三种基本控制结构就可以实现任何单入口单出口的程序,但是为了实际使用方便起见,常常允许使用do-until和do-case结构:,Exp,T,A,F,Do Case i,CASE 1,CASE n,结构程序设计,有时要立即从循环中转移出来,如果允许使用leave或break结构,则不仅方便而且高效。Leave和break实质是受限制的goto语句。,详细设计工具,如何用一种合适的表示方式来描述每个模块的执行过程?目前常用的描述方式一般有三类,即图形描述、语言描述和表格描述:图形描述包括程序流程图、盒图、问题分析图等;语言描述,即用某种高级语言(称之为伪码)来描述过程的细节。表格描述包括判定表等。,程序流程图,程序流程图又称之为程序框图,它是软件开发者最熟悉的一种算法表达工具。它独立于任何一种程序设计语言,能比较直观和清晰地描述过程的控制流程,易于学习掌握。因此,程序流程图是软件开发者最普遍采用的一种工具。,程序流程图,在程序流图中定义了下述的五种基本控制结构:顺序型选择性While型循环Until型循环多情况型选择,程序流程图,顺序型由几个连续的处理步骤依次排列构成选择型是指由某个逻辑判断式的取值决定选择两个处理中的一个,A,B,P,程序流程图,while型循环是先判定型循环,在循环控制条件成立时,重复执行特定的处理until型循环是后判定型循环,重复执行某些特定的处理,直到控制条件成立为止,程序流程图,多情况型选择列举多种处理情况,根据控制变量的取值,选择执行其一。,程序流程图的主要缺点,程序流程图本质上不是逐步求精的好工具,它诱使程序员过早考虑程序控制流程,而不去考虑程序的全局结构。程序流图中用箭头表示控制流,因此程序员不受任何约束,可以完全不顾结构程序设计思想,随意转移控制。程序流程图不易表示数据结构。,N-S图,Nassi和Shneiderman提出了一种符合结构化程序设计原则的图形描述工具,称之为盒图(N-S图)。在N-S图中,为了表示五种基本控制结构,规定了五种图形构件:顺序型结构选择型结构While重复型循环结构Until重复型循环结构多分支选择型结构,N-S图,顺序型,选择型,多分支选择型,While循环结构,Until型循环结构,N-S图,另外,补充调用子程序的盒图表示方法如下:,A,N-S图,例1:,A,X1,T,F,X2,T,F,DO-WHILE X2,C,D,B,N-S图,例2:,N-S图的特点,图形清晰、准确;控制转移不能任意规定,必须遵守结构化程序设计原则;很容易确定局部数据和全局数据的作用域;容易表现嵌套关系和模块的层次结构。,PAD图,PAD是Problem analysis diagram的英文缩写,它是日本日立公司提出的。它是用结构化程序设计思想表现程序逻辑结构的图形工具。PAD也设置了五种基本控制结构的图示,并允许递归使用:,PAD图,按顺序先执行A,再执行B。给出了判断条件为C的选择型结构。当P为真值时执行上面的A框,C取假值时执行下面的B 框中的内容。如果这种选择型结构只有A 框,没有B框,表示该选择结构中只有THEN后面有可执行语句A,没有ELSE部分。,PAD图,While型循环结构,Until型循环结构,多分支选择型结构,PAD图的扩充结构,为了反映增量型循环结构,在 PAD图中增加了对用于 FOR i:=n1 to n2 step n3 do 的循环控制结构,如下图所示。其中,n1是循环初值,n2是循环终值,n3是循环增量。,PAD图的扩充结构,PAD所描述程序的层次关系表现在纵线上。每条纵线表示一个层次。把PAD图从左到右展开,随着程序层次的增加,PAD逐渐向右展开,有可能会超过一页纸,这时,对PAD增加了一种如下图所示的扩充形式:,当一个模块A在一页纸上画不下时,可在图中该模块相应位置矩形框中简记一个“NAME A”,再在另一页纸上详细画出A的内容,用def及双下划线来定义作A的PAD。这种方式可使在一张纸上画不下的图,分在几张纸上画出,也可以用它定义子程序。,PAD图的特点,PAD图的结构化程度高;PAD图中的第一条纵线是程序的主干线,即程序的第一层结构。其后,每增加一个层次,则向右扩展一条纵线。程序中的层数就是PAD图中的纵线数。因此,PAD图的可读性强。利用 PAD图设计出的程序必定是结构化的程序。利用软件工具可以将 PAD图转换成高级语言程序,进而提高了软件的可靠性和生产率。PAD图支持自顶向下的逐步求精的方法。,PDL过程设计语言,PDL(Procedure Design Language)是过程设计语言的英文

    注意事项

    本文(软件工程各章节重点.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开