软件工程概论第四章软件设计课件

PPT
  • 阅读 72 次
  • 下载 0 次
  • 页数 107 页
  • 大小 1.288 MB
  • 2022-11-25 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档40.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
软件工程概论第四章软件设计课件
可在后台配置第一页与第二页中间广告代码
软件工程概论第四章软件设计课件
可在后台配置第二页与第三页中间广告代码
软件工程概论第四章软件设计课件
可在后台配置第三页与第四页中间广告代码
软件工程概论第四章软件设计课件
软件工程概论第四章软件设计课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 107
  • 收藏
  • 违规举报
  • © 版权认领
下载文档40.00 元 加入VIP免费下载
文本内容

【文档说明】软件工程概论第四章软件设计课件.ppt,共(107)页,1.288 MB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-50493.html

以下为本文档部分文字说明:

软件工程概论河南工程学院第四章软件设计4.1软件设计的概述4.2软件设计的概念与原理4.3软件设计的原则4.4结构化设计的方法4.5系统包装4.6软件详细设计概述4.7软件详细设计表示法第1页,共107页。软件工程概论河南工程学院学习目标•重点掌握软件设计的工具和方法•正确理解概要设

计与详细设计的任务和目标,灵活运用相关的工具和方法•深刻理解软件结构设计的原则及详细设计的规范化第2页,共107页。软件工程概论河南工程学院•可将软件生命周期分为定义、开发及维护三个阶段。可行性研究初步项目计划需求分析概要设计详细设计实现测试使用维护退役定义阶段开发阶段维护阶段

第3页,共107页。软件工程概论河南工程学院软件设计的重要性1•软件开发阶段的第一步,其基本任务是回答“如何做?”•它是在对系统信息、功能、行为和各种要求理解的基础上构建未来的系统。•设计的决策影响软件实现的成功与否。第4页,共107页。软件工程概论河南

工程学院软件设计的重要性2•是软件开发过程中用以保证质量的关键步骤。•是整个软件工程和软件维护的基础。•如果没有设计,只能建立一个不稳定的系统。第5页,共107页。软件工程概论河南工程学院软件设计的重要性3•软件需求分析阶段

已经完全清楚了软件的各种需求,较好地解决了要让所开发的软件“做什么”的问题,并已在软件需求规格说明和数据要求规格说明中详尽和充分的阐明了这些需求。下一步就要着手实现软件的需求,即要解决“怎么做”的问题。第6页,共107页。软件工程概论河南工程学院软件设计的重要性4•软件设计是开发阶段中

重要的步骤,是软件开发过程中用以保证质量的关键步骤。软件设计提供了软件的表示,使软件的质量评价成为可能。•同时,软件设计又是将用户要求准确地转化为最终的软件产品的唯一途径。第7页,共107页。软件工程概论河南工程学院软件设计的重要性•软件设计是后续开发步骤几软件维护工作的基

础。如果没有设计,只能建立一个不稳定的系统。•如图所示,只要出现一些微小的变动,就会使得软件受创,而且难以测试。设计实现维护测试维护有设计测试没有设计实现维护第8页,共107页。软件工程概论河南工程学院系统分析与需求分析

的区别•需求分析是一个项目的开端,也是项目建设的基石。是对用户需求的定义,对软件系统的描述。在以往建设失败的项目中,80%是由于需求分析的不明确而造成的。因此一个项目成功的关键因素之一,就是对需求分析的把握程度。而项目的整体风险往往表现在需求分析不明确、业务流程不合理,用

户不习惯或不愿意去用承建方的软件。作为第三方的监理公司,必须提醒承建方、客户方重视需求分析的重要性。•系统分析的任务:将用户的业务逻辑转化为程序逻辑,计算时间和成本。根据开发人员的理论知识和实际的经验,人们会采用各种满足实际情况的系统分

析、开发方法、步骤以及文档等等。一般情况下,在系统分析书中应该有以下内容(视项目而定):1、系统需求说明说明系统是一个什么样的系统,用市场上现有的系统来类比,用客户(或是我们自己)需要一个什么样的系统进行说明,力求完整。第9页,共107页。软件工程概论河南工程学院2

、系统资源说明对系统所需要的软件、硬件资源进行说明。描述系统所需要的所有的成本(包括人员、时间、设备、系统、一次性投入资金、持续性投入资金这样的所有资源)。3、系统可行性分析对系统的实施中的资源进行分析,说明投入的合理性和必然性,

对其中的所有不可预见性的投入进行合理的量化说明,来说明系统的实施的可行性。•系统分析阶段就是要全面了解系统的商业需求和处理要求并制作书面文件,详细地定义信息系统的功能。这一阶段的最根本的目的就是解决系

统要做什么的问题---Whattodo?•系统分析准备在进行详细的系统开发前,开发人员必须先理解一些概念,包括方法、模型、工具和技术。第10页,共107页。软件工程概论河南工程学院1.模型:是对问题做出的一种抽象,它由一组图示符号和组织这些符号的规则组成。建模是问题域

中定义软件解的一种方法。建模的目的主要是为了减少问题的复杂性。2.工具系统开发工具是一些帮助生成模型或其它组件的软件。系统开发人员常用的是CASE工具,如MicrosoftVisio、RationalRose等。用了CASE工具,开发软件能更加规范,标准化,从而提高软件开发的效率

。3.技术技术就是帮助分析员完成系统开发活动或任务的一组方法。有时一种技术适用于整个生命周期。常在开发过程中使用的技术有:项目管理技术、用户面谈技术、数据建模技术、结构化分析技术、软件测试技术、面向对象分析与设计技术等。4.系统开发方法第11页,共107页。软件工程概

论河南工程学院•方法是一组完成系统开发生命周期每一阶段活动的技术,它提供了完成每一步的详细指导。常用的方法有结构化方法和面向对象方法。本章主要以结构化方法为例。•20世纪70年代出现了结构化的系统分析设计方法

。结构化系统分析(StructuredAnalysis,简称SA),是一种简单实用,使用很广的方法。它往往是将一个复杂的系统分解、抽象成为多个简单的子系统;使用"自顶向下逐层分解"的方式,将一个复杂系统分解,抽象成为多个简单的子系统,

如果某个子系统仍然复杂,将其进一步分解。第12页,共107页。软件工程概论河南工程学院•目前作为针对“软件危机”的最佳对策,面向对象(OO)技术已经引起人们的普遍关注。而许多编程语言(C++、VB、VF、PB、Delphi等)也都推出了支持面向对象的新版本。面向对象方法的基本思想是,从

现实世界客观存在的事物出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式。开发一个软件是为了解决某些问题。面向方法强调直接以现实世界中的事物为中心来思考问题、认识问题,并根据这些事物的本质特征,把它们抽象

地表示为系统中的对象,作为系统的基本构成单位。这可以使系统直接地映射问题域,保持问题域中事物及其相互关系的本来面貌。第13页,共107页。软件工程概论河南工程学院•系统分析阶段的任务主要解决了系统“做什么”的问题,系统设计阶段要解决的任务则是系统“怎么做”的问题。•系统分析员审查可行性研究报告

、软件项目开发计划、软件需求规格说明书,提出候选的最佳推荐方案,用系统流程图(注意画法,见前面),组成系统物理元素清单,将成本效益分析、系统的进度计划,供专家审定,审定后即进入软件设计阶段。软件设计阶段的主要任务是要实现逻辑模型(DFD和DD等)向物理模型转换,即要解决“系统如何实现”问题

,该阶段又可画分为概要设计和详细设计两个阶段。第14页,共107页。软件工程概论河南工程学院1软件设计的概述•概要设计:面向逻辑功能的设计•详细设计:面向物理的设计第15页,共107页。软件工程概论河南工程学院•从工程管理的角度来看,软件设计分两步•概要设计,将软件需求转化为数据

结构和软件的系统结构,并建立接口。•详细设计,即过程设计。通过对结构表示进行细化,得到软件的数据结构和算法。4.1软件设计的概述第16页,共107页。软件工程概论河南工程学院概要设计概要设计又称为总体设计或初步设计,它的基本目的就是回答“概括地说,系统应该如何实现

?”这个问题。在总体设计阶段,应划分出组成系统的物理元素——程序、文件、数据库、人工过程和文档等,并确定系统中每个程序由哪些模块组成以及这些模块相互间的关系。第17页,共107页。软件工程概论河南工程学院1.基本任务•设计软件系统结构:–采用某种设

计方法,将一个复杂的系统按功能划分成模块。–确定每个模块的功能。–确定模块之间的调用关系。–确定模块之间的接口,即模块之间传递的信息。–评价模块结构的质量.第18页,共107页。软件工程概论河南工程学院第19页,共107页。软件工程概论河南工程学院4.1.1概要设计的基本任务与过程•

1软件结构设计•2数据结构的设计•3编写概要设计文档•4评审第20页,共107页。软件工程概论河南工程学院1软件结构设计1.采用某种设计方法,将一个复杂的系统按功能分成模块2.确定每个模块的功能3.确定模块之间的

层次(调用)关系4.确定模块之间的联结形式5.评价模块结构的质量第21页,共107页。软件工程概论河南工程学院2数据结构及数据库设计1.数据结构设计需求分析:确定数据结构特性概要设计:加以细化详细设计:规定具体的实现细节•数据库设计概

念设计逻辑设计物理设计第22页,共107页。软件工程概论河南工程学院3编写概要设计文档•概要设计说明书•数据库设计说明•用户手册•修订测试计划第23页,共107页。软件工程概论河南工程学院4评审•任务•判断是否实现了需求中规定的功能、性能•设计的方案是否可行第24页,

共107页。软件工程概论河南工程学院4.1.2概要设计文档1.引言2.总体设计3.接口设计4.运行设计5.系统数据结构设计6.系统出错设计第25页,共107页。软件工程概论河南工程学院4.2软件设计的概念与原

理第26页,共107页。软件工程概论河南工程学院4.2.1模块化1.定义•所谓模块,是指具有相对独立性的,由数据说明、执行语句等程序对象构成的集合。程序中的每个模块都需要单独命名,通过名字可实现对指定模块的访问。在高级语言中,

模块具体表现为函数、子程序、过程等。一个模块具有输入/输出(接口)、功能、内部数据和程序代码四个特征。•模块化是指将整个程序划分为若干个模块,每个模块用于实现一个特定的功能。划分模块对于解决大型复杂的问题是非常

必要的,可以大大降低解决问题的难度。第27页,共107页。软件工程概论河南工程学院例如,我们设C(x)为问题x所对应的复杂度函数,E(x)为解决问题x所需要的工作量函数。对于两个问题P1和P2,如果:C(P1)>C(P2)即问题P1的复

杂度比P2高,则显然有:E(P1)>E(P2)即解决问题P1比P2所需的工作量大。•在人们解决问题的过程中,发现存在有另一个有趣的规律:•C(P1+P2)>C(P1)+C(P2)•即解决由多个问题复合而成的大问题的复杂度大于单独解决各个问题的复杂度之

和。也就是说,对于一个复杂问题,将其分解成多个小问题分别解决比较容易。由此我们可以推出:•E(P1+P2)>E(P1)+E(P2)第28页,共107页。软件工程概论河南工程学院•即将复杂问题分解成若干个小问题,各个击破,所

需要的工作量小于直接解决复杂问题所需的工作量。•模块化可以降低解决问题的复杂度,从而降低软件开发的工作量。模块化不但可以降低软件开发的难度,而且可以使程序结构清晰,增加易读性和易修改性。此外,模块化还有利于提高代码的可重用性及团队合作开发大型软件的可行性。第29页,共1

07页。软件工程概论河南工程学院模块化和软件成本的关系M软件总成本成本或工作量最小成本区接口成本模块数目第30页,共107页。软件工程概论河南工程学院4.2.2抽象•抽象是人类在解决复杂问题过程中使用的思

维工具,即抽出事物本质的共同的特性而暂不考虑它的细节.•软件系统进行模块设计时,可有不同的抽象层次。•在最高的抽象层次上,可以使用问题所处环境的语言概括地描述问题的解法。•在较低的抽象层次上,则采用过程化的方法

。结构化程序中自顶向下、逐步求精的模块划分思想正是人类思维中运用抽象方法解决复杂问题的体现。此外,在程序设计中运用抽象的方法还能够提高代码的可重用性。第31页,共107页。软件工程概论河南工程学院1.功能分解法2.

面向数据的分解法3.面向事件的分解法4.有外向内的分解法5.面向对象的分解法第32页,共107页。软件工程概论河南工程学院1.对于复杂的问题,经过抽象、概括,可以把握主要问题,暂时忽略事务的细微差别2.不同

的抽象层次,对问题的概括成都不同,使用的专业程序也不一样3.软件工程中阶段性的工作成果及方法,是对抽象的思想的具体应用,是逐步趋于具体化,逐步求精的过程。第33页,共107页。软件工程概论河南工程学院4.2.3信息隐蔽•信息隐蔽:在设计和确定模块时,使得一个模块包含

的信息对于不需要这些信息的其它模块来说是不能访问的.•也就是说,模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。•信息隐蔽的目的主要是为了提高模块的独立性,减少将一个模块中的错误扩散到其他模块的机会。第34页,共10

7页。软件工程概论河南工程学院4.2.4模块的独立性•模块独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其它的模块的联系最小且接口是简单的.–一般采用两个准则度量模块独立性。即模块间耦合和模块内聚第35页,共1

07页。软件工程概论河南工程学院–耦合是模块之间的互相连接的紧密程度的度量。–内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。–模块独立性比较强的模块应是高内聚低耦合的模块。第36页,共107页。软件工程概论河南工程学院非直接数据标记控制

外部公共内容耦合耦合耦合耦合耦合耦合耦合耦合性模块独立性模块间的耦合第37页,共107页。软件工程概论河南工程学院非直接耦合(NondirectCoupling)两个模块之间没有直接关系,它们之间的联系完

全是通过主模块的控制和调用来实现的。非直接耦合的模块独立性最强。第38页,共107页。软件工程概论河南工程学院数据耦合(DataCoupling)一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构或外部变量)来传递交换输入、输出信息的

(“传值”)。main(){intx,y;printf("x+y=%d",sum(x,y));}/*主函数与sum函数之间即为数据耦合关系*/sum(inta,intb){intc;c=a+b;return(c);}…第39页,共107页。软件工程概论河南工程学院标记耦合(Stamp

Coupling)一组模块通过数据结构(标记)传递记录信息,就是标记耦合。这个标记是某一数据结构的子结构,而不是简单变量(“传地址”)。例如高级语言中的数组名,记录名,文件名等即为标记,其实传递的标记的地址.第40页,共107页。软件工程概论河南工程学院控制耦合(ControlCouplin

g)如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。标志变量第41页,共107页。软件工程概论河南工程学院外部耦合(ExternalCoupling)一组模块都访问同一全局简

单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。公共耦合(CommonCoupling)若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全

局数据结构、共享的通信区、内存的公共覆盖区等。第42页,共107页。软件工程概论河南工程学院•公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是两模块间有公共数据环境,则公共耦合有两种情况。松散公共耦合和紧密公

共耦合。第43页,共107页。软件工程概论河南工程学院内容耦合(ContentCoupling)如果发生下列情形,两个模块之间就发生了内容耦合(1)一个模块直接访问另一个模块的内部数据;(2)一个模块不通过正常入口转到另一模块内部;(3)两个模块有一部分

程序代码重迭(只可能出现在汇编语言中);(4)一个模块有多个入口。第44页,共107页。软件工程概论河南工程学院c总结:数据耦合的程度最低,其次是控制耦合,再其次是公共耦合,程度最高的是内容耦合。第45页,共107页。软件工程概论河南工程学院模块内聚内聚性是对一个模块内部各个组

成元素之间相互结合的紧密程度的度量指标。模块中组成元素结合的越紧密,模块的内聚性就越高,模块的独立性也就越高。理想的内聚性要求模块的功能应明确、单一,即一个模块只做一件事情。在进行模块化设计时,耦合性和内聚性都

是必须考虑的重要指标。但经实践证明,保证模块的高内聚性比低耦合性更为重要,在软件设计时应将更多的注意力集中在提高模块的内聚性上。模块的内聚性主要可划分为如上几种不同的类型。巧合逻辑时间过程通信信息功能内聚内聚内聚内聚内聚内聚内聚内聚性模块独立性第46页,共107页。软件工程概论河南

工程学院偶然内聚(CoincidentalCohesion)巧合内聚(偶然内聚)。当模块内各部分之间没有联系,或者即使有联系,这种联系也很松散,则称这种模块为巧合内聚模块,它是内聚程度最低的模块。第47

页,共107页。软件工程概论河南工程学院逻辑内聚(LogicalCohesion)这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的判定参数来确定该模块应执行哪一种功能。第48页,共107页。软件工程概论河南工程学院时间内聚(ClassicalCohesion)时间内聚

又称为经典内聚。这种模块大多为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。例如初始化模块和终止模块。第49页,共107页。软件工程概论河南工程学院过程内聚(ProceduralCohesion)

使用流程图做为工具设计程序时,把流程图中的某一部分划出组成模块,就得到过程内聚模块。例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。第50页,共107页。软件工程概论河南工程学院通信内聚(CommunicationCohes

ion)如果一个模块内所有处理元素都在同一个数据结构上或各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块。通常,通信内聚模块是通过数据流图来定义的。第51页,共107页。软件工程概论河南工程学院第52页,共107页。软

件工程概论河南工程学院顺序内聚(SquenceCohesion)一个模块内的处理元素和同一个功能密切相关,且必须顺序执行。第53页,共107页。软件工程概论河南工程学院功能内聚:是最强的内聚(Functio

nalCohesion)一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,不可分割的。则称该模块为功能内聚模块。第54页,共107页。软件工程概论河南工程学院4.3软件结构设计原则(1)模块的分解,尽量做到“

高内聚,低耦合”。•分解是指把一个模块分解成若干个从属于它的下层模块。•一般按功能分解,分解到成为一个小的功能单一的模块为止。•一般一个模块内包含的语句在30-50条左右较好(指高级语言)。第55页,共107页。软件工程概论

河南工程学院(2)模块的扇出和扇入•模块的扇出指一个模块拥有的直属下级模块的个数,一般扇出数控制在7以内。•模块的扇入是指一个模块的直接上级模块的个数。•在设计中,扇入系数大,说明模块分解得好,通用性强,冗余度低。第56页,共107页。软件工程概论河南工程学院(3)模块的控制范围和判断作用

范围•模块的控制范围:本身及其所有下级模块。•模块的判断作用范围:被判断调用的模块。•原则:A.对于任何一个内部存在判断调用的模块,它的判断作用的范围应该是其控制范围的一个子集。B.存在判断调用的模块,所在层次不要与那些属于判断作用范围的模块所在的

层次相隔太远。第57页,共107页。软件工程概论河南工程学院ABCDEFG模块G中有一条判断调用D的语句,违反第1条原则第58页,共107页。软件工程概论河南工程学院ABCDEFG违反第2条原则第59页,共107页。软件工程概论河南工程学院ABCDEFG违反第2条原则第60页

,共107页。软件工程概论河南工程学院ABCDEFG正确第61页,共107页。软件工程概论河南工程学院(4)力争降低模块接口的复杂程度•模块接口复杂是软件发生错误的一个主要原因。应该仔细设计模块接口,使得信息传递简单并且和模块的功能一致

。•接口复杂或不一致(即看起来传递的数据之间没有联系),是紧联结或低聚合的征兆,应该重新分析这个模块的独立性。(5)设计单入口单出口的模块(6)模块功能应该可以预测•模块的功能应该能够预测,但也要防止模块功能

过分局限。第62页,共107页。软件工程概论河南工程学院4软件系统设计技术•层次图和HIPO(=H层次图+IPO输入处理输出图)销售管理系统检验订单查阅库存确定能否供货根据供货单修改库存开备货单汇总各项缺货量打印缺货通知单根

据进货单修改库存处理缺货订单修改缺货记录按销售货物名统计按销售日期统计按顾客名统计处理订单供货处理销售统计处理进货单缺货统计按顾客所在地区第63页,共107页。软件工程概论河南工程学院•改进的IPO图(表):IPO表系统:_________作者:__________

模块:_________日期:__________编号:_________被调用:处理:调用:输出:输入:局部数据元素注释:第64页,共107页。软件工程概论河南工程学院•结构图:•结构化设计的主要思想是自顶向下地分解功能,以使分解后的功

能可由系统的一个给定程序执行。结构图可以将程序功能有层次地组织起来,其中的每一个程序都执行一系列的功能。建立结构图的主要规则是:程序是分层的,模块按高内聚、低耦合的方式组织。•(1)结构图的主要内容(如图3.2.5)(2)图3-10(书P44)第65页,共107页。软件工程概论

河南工程学院4.4结构化设计的方法结构化设计方法是已结构化分析产生的数据流图为基础,根据数据流图的特征,按一定的策略映射出软件的功能结构图的方法。第66页,共107页。软件工程概论河南工程学院4.4结构化设计的方法面向数据流的设计方

法(即结构化设计SD---与SA衔接)以需求分析阶段产生的DFD为基础,把信息流映射成软件结构,信息流的类型决定了映射的方法。信息流分为两种类型:变换流和事务流。(一)概念1.变换流2.事务流3.设计过程第67页,共107页。软件工程概论河南工程学

院1.变换流外部表示内部表示信息输入流输出流变换流信息流时间参看图形,信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经过加工处理以后再沿输出通路变换成外部形式离开软

件系统。当数据流具有这些特征时,这种信息流称为变换流。第68页,共107页。软件工程概论河南工程学院2.事务流T事务事务中心数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。这

种“以事务为中心的”的数据流,成为“事务流”。处理T称为事务中心,完成以下任务:接收输入数据;分析每个事务以确定它的类型;根据事务类型选取一条活动通路。第69页,共107页。软件工程概论河南工程学院精化数据流程图流类型区分事

务中心和数据接收通路区分输入和输出分支映射成事务结构映射成变换结构运用模块设计规则,精化软件结构导出接口描述和全程数据结构复查详细设计事务分析变换分析事务变换面向数据流的设计过程第70页,共107页。软件工程概论河南工程学院(二)变换分析1.复查基本系

统模型•复查的目的是确保系统的输入数据和输出数据符合实际。2.复查并精化数据流程图3.确定数据流程图具有变换特性还是事务特性•只有当遇到有明显事务特性的信息流时,才采用事务分析方法,否则,一般都认为是变换流,采用变换分析的方法。第71页,共107页。软件工程概论河南工程学院4.确定输入流和输出流

的边界,从而孤立出变换中心(1)检查“输入流”的边界•从输入的数据源开始,沿着每一个由数据源传入的数据流的移动方向进行跟踪分析,逐个分析它所经过的处理逻辑功能。如果仅是传入的数据流作形式上的转换,逻辑上没有进行实际的数据处理功能,则这些

处理逻辑属于系统的“输入处理部分”。顺着传入的数据流的移动方向,一直跟踪到它被真正地处理为止。第72页,共107页。软件工程概论河南工程学院(2)检查“输出流”的边界•从输出结果的地方开始,逆着每一个传递出去的数据流,由外向里反方向跟踪,逐个分析它的处理逻辑功能,一直反方向跟踪到它被真正地产

生出来为止。(3)得到变换中心•根据前两步的分析结果,画出一个闭环界线,在界线以内的就是变换中心。第73页,共107页。软件工程概论河南工程学院5.完成“第一级分解”CmCaCtCe第一级分解的方法第74页,共107页。软件工程概论河南工程学院•控制模块Cm是抽象出来的,它位于软件结构

最顶层,协调控制下属模块。•输入信息处理控制模块Ca,协调对所有输入数据的接收。•变换中心控制模块Ct,管理对内部形式的数据的所有操作。•输出信息处理控制模块Ce,协调输出信息的产生过程。第75页,共107页。软件工程概论河南工程学院6

.完成“第二级分解”•所谓第二级分解就是把数据流程图中的每个处理映射成软件结构中一个适当的模块。•完成第二级分解的方法是,从变换中心的边界开始沿着输入通路向外移动,把输入通路中每个处理逻辑映射成软件结构中Ca控制下的一个低层模块;•然后沿输出通路向外移动,把输入通路中每个处理逻辑映射成直接或间

接受模块Ce控制的一个低层模块;•最后把变换中心内的每个处理映射成受Ct控制的一个模块。第76页,共107页。软件工程概论河南工程学院ADCBCmCaCBDA第二级分解的方法第77页,共107页。软件工程概论河南工程学院7.使用模块的设计原则,对第一次分割得到的软件结构

进一步精化。•为了得到一个易于实现、易于测试和易于维护的软件结构,根据软件设计的基本原则和其它启发性原则,对初步分割得到的模块进行再分解或合并。第78页,共107页。软件工程概论河南工程学院(三)事务分析•事务分析的设计步骤和变换分析的设计步骤大部分相同或类似,主要差

别仅在由数据流程图到软件结构的映射方法不同。由事务流映射成的软件结构包括一个接收分支和一个发送分支。•映射出接收分支结构的方法和变换分析映射出输入结构的方法相似,即从事务中心的边界开始,把沿着接收流通路的处理逻辑映射成模块。•发送分支的结

构包含一个调度模块,它控制下层的所有活动模块;然后把数据流程图中的每一个活动流通路映射成与它的特征相对应的结构。第79页,共107页。软件工程概论河南工程学院总控调度A_CTLB_CTLC_CTL接收通路C通路B通路A通路事务分析

的映射方法第80页,共107页。软件工程概论河南工程学院(四)总结•对于一个大系统,常常把变换分析和事务分析应用到同一个数据流程图的不同部分,由此得到的子结构形成“构件”,可以利用它们构造完整的软件结构。•一般说来,如果数

据流不具有显著的事务特点,最后使用变换分析;反之,如果具有明显的事务中心,则应该采用事务分析技术。第81页,共107页。软件工程概论河南工程学院4.5系统包装•将系统的功能按作业流程图顺序组织成若干个功能单元、部件,最后进行“实体化”组装

,实现一个可以运作的软件系统第82页,共107页。软件工程概论河南工程学院4.5.1把系统定义成若干个作业1.硬件分界线(反映系统的分布特性)2.处理方式分界线(反映系统的交互特性)3.周期分界线第83页,共107页。软件工程概论河南工程学院4.5.2把作业定义成若干个作业步1.利用现有的

软件包2.由于安全和保密的需要3.资源的限制等。第84页,共107页。软件工程概论河南工程学院4.5.3定义程序和装配单元第85页,共107页。软件工程概论河南工程学院4.6软件详细设计概述详细设计(又称过程设计)是对概要设计阶段建立的模型(即每个组成模块)再进行详细定

义和说明。包括定义每一模块的详细功能、输入数据、使用文件及使用方式,确定输出内容及格式,模块实现的详细算法,每一模块的程序构成等。详细设计的任务具体主要有如下五点。(1)确定每个模块的具体算法。(2)确定每个模块的内部数据结构及数据库的物理结构。(3)确定模块接

口的具体细节。(即确定模块接口的详细信息,包括模块之间的接口信息、模块与系统外部的接口信息及用户界面等。)第86页,共107页。软件工程概论河南工程学院(4)为每个模块设计一组测试用例。(5)编写文档,参加复审。详细设计阶段给出了程序的框架,它基本上决定了最终的程序代码的质量。结构化程序设计

就是保证程序的简明易懂的重要技术。1.结构化程序设计结构化程序设计的基本思路,是把一个复杂的问题分阶段进行,每个阶段处理的问题都在人们容易理解和处理的范围内,这也正是前面介绍的结构化方法的主体思想。结构程序设计是釆

用“自顶向下,逐步细化”的设计方法和单入口单出口的控制结构。结构程序设计使用三种基本控制结构:顺序、选择、循环。流程图如下。第87页,共107页。软件工程概论河南工程学院这三种基本结构就可以实现任何单入口单出口的程序。但为了使用方便,还允许有D

O_UNTIL和DO_CASE两种控制结构。有时为了提前从循环中跳出,还允许有BREAK结构。我们称只允许使用三种基本结构的为经典的结构化程序设计;除三种基本结构外,还可用DO_UNTIL和DO_CASE的为扩展的结构程

序设计;若再加上BREAK则称为修正的结构程序设计。第88页,共107页。软件工程概论河南工程学院2.详细设计可采用的工具1).(传统的)程序流程图程序流程图是最早出现且使用较为广泛的算法表达工具之一,能够有效地描述问题求解过程中的程序逻辑结构。程

序流程图中经常使用的基本符号如图5.17所示。图3.2.10‘程序流程图中的基本符号(a)一般处理框;(b)输入/输出框;(c)判断框;(d)流程线;(e)起止框(a)(b)(c)(d)(e)第89页,共107页。软件工程概论河南工程学院程序流程图的主要优点在于对程序的控制流程描述直

观、清晰,使用灵活,便于阅读和掌握,因此在20世纪40年代末到70年代初被普遍采用。但随着程序设计方法的发展,程序流程图的许多缺点逐渐暴露出来,这些缺点主要体现在以下方面:(1)程序流程图中可以随心所欲地使用流程线,容易造成程序控制结构

的混乱,与结构化程序设计的思想相违背。(2)程序流程图难以描述逐步求精的过程,容易导致程序员过早考虑程序的控制流程,而忽略程序全局结构的设计。(3)程序流程图难以表示系统中的数据结构。为此,人们宁可选择其他一些更有利于结构化设计的表达工具,N-S图和PAD图就是其中的两种图形工具。第9

0页,共107页。软件工程概论河南工程学院2).N-S图N-S图又称为盒图,它是为了保证结构化程序设计而由Nassi和Shneiderman共同提出的一种图形工具。在N-S图中,所有的程序结构均使用矩形框表示,它可以清晰地表达结构中的嵌套及模块的层次关系。N-S图中,基本控制结构的表示

符号如图3.2.11所示。由于N-S图中没有流程线,不可能随意转移控制,因而表达出的程序结构必然符合结构化程序设计的思想,有利于培养软件设计人员的良好设计风格。但当所描述的程序嵌套层次较多时,不仅影响可读性而且不易修改。

第91页,共107页。软件工程概论河南工程学院图3.2.11N-S图中基本控制结构的表示符号(a)顺序结构;(b)分支结构;(c)多分支CASE结构;(b)(d)while-do结构;(e)do-until结构;(f)调用模块A值1…值2值nCASE

1部分CASE2部分…CASEn部分CASE条件(c)(b)S1S2IF条件TFS2S1(a)while循环条件while-do部分(d)until条件do-until部分(e)(f)A第92页,共107页。软件工程概论河南工程

学院3).PAD图PAD(ProblemAnalysisDiagram,问题分析图)是继程序流程图和N-S图后,由日立公司在20世纪70年代提出的又一种用于详细设计的图形表达工具。它只能用于结构化程序的描述。PAD图采用了易于

使用的树型结构图形符号,既利于清晰地表达程序结构,又利于修改。PAD图中所经常使用的基本符号如图5.19所示。第93页,共107页。软件工程概论河南工程学院图5.19PAD中基本符号(a)顺序结构;(b)分支结构;

(c)多分支CASE结构;(b)(d)当型循环;(e);直到型循环;(f)对s的细化S1S2(a)S1S2(b)条件TFS1S2(c)CASE值1…Sn值2值n…SWHILE条件(d)SUNTIL条件(e

)S1S2…Sn(f)S第94页,共107页。软件工程概论河南工程学院PAD图具有的主要优点如下:(1)使用PAD图描述的程序结构层次清晰,逻辑结构关系直观、易读、易记、易修改。(2)PAD图为多种常用高级语言提供了相应的图形符号,每种控制语句都与一个专门的图形符号相对应,易于P

AD图向高级语言源程序转换。(3)支持自顶向下、逐步求精的设计过程。(4)既能够描述程序的逻辑结构,又能够描述系统中的数据结构。第95页,共107页。软件工程概论河南工程学院图5.20三种详细设计中使用的图形工具示例(a)采用程序流

程图描述计算应发工资模块;(b)(b)采用N-S图描述计算应发工资模块;(c)采用PAD图描述计算应发工资模块是文件结束位置吗?开始在工资档案中读一条记录是文件结束位置吗?计算工资档案各项基本数据之和并存入paynum=当前职工号在奖金发放表中查找职工号与

num相同的记录找到了吗?计算各项奖金总和并存入bonus应发工资=pay+bonus读下一条记录YN显示错误NY结束(a)(b)计算工资各项基本数据之和并存入paynum=当前职工号在奖金表中查职工号与num相同的记录找到了吗

?计算各项奖金总和并存入bonus应发工资=pay+bonus显示错误读下一条记录TF在工资档案中读一条记录第96页,共107页。软件工程概论河南工程学院结束(a)(b)在工资档案中读一条记录当文件没有读完时计算应发工资检索

个人奖金num=当前职工号在奖金表中查找职工号与num相同的记录计算应发工资显示错误信息TF找到了吗?读下一条记录检索个人奖金def计算各项奖金之和并存入bonus计算工资基本数据项之和并存入pay应发工资=pay+bonus计算应发工资def(c)第97页,共107页。软件工

程概论河南工程学院4).PDL语言PDL(ProcessDesignLanguage)语言即过程设计语言,是一种用于描述程序算法和定义数据结构的伪代码。PDL语言的构成与用于描述加工的结构化语言相似,是一种兼有自然语言和结构化程序设计语言语法的“混合型”语言。PDL语言与结构化语言的主要区别

在于:由于PDL语言表达的算法是编码的直接依据,因此其语法结构更加严格并且处理过程描述更加具体详细。第98页,共107页。软件工程概论河南工程学院PDL语言的主要特点如下:(1)各种定义语句及控制结构的表达都具有严格的语法形式,使程序结构、数据说明等更加清晰。(2)提

供了数据说明机制,可用于定义简单及复杂的数据结构。(3)提供了模块的定义和调用机制,方便了程序模块化的表达。(4)用PDL写出的程序,既可以很抽象,又可以很具体。因此,容易实现自顶向下逐步求精的设计原则。(5)PDL描

述可以直接作为注释插在源程序中,成为程序的内部文档。这对提高程序的可读性是非常有益的。(6)PDL描述与程序结构相似,故PDL语言便于将详细设计的结果转换为源程序。PDL的缺点是不如图形描述形象直观,因此常常将PDL描述与一种图形描述结合起来使用。第99页,共107页。软件工程概论

河南工程学院PDL语言的主要定义语句及基本控制结构的表达如下所示:定义语句(1)数据定义:DECLARE属性变量名,„属性包括:整型、实型、双精度型、字符型、指针、数组及结构等类型。(2)模块定义:PROCEDURE模块名(参数)……R

ETURNEND第100页,共107页。软件工程概论河南工程学院基本控制结构(1)顺序结构:顺序结构的语句序列采用自然语言进行描述。语句序列S1语句序列S2语句序列Sn…(2)选择结构:①IF-ELSE结构IF条件IF条件语句序列S1或语句序列SELSEENDIF语句序列S2EN

DIF第101页,共107页。软件工程概论河南工程学院②多分支IF结构IF条件1语句序列S1ELSEIF条件2语句序列S2ELSE语句序列SnENDIF…③CASE结构CASE表达式OFCASE取值1语句序列S1CASE取值2语句序列S2CASE语句序列SnENDCASE…第102页,共107

页。软件工程概论河南工程学院(3)循环结构:①FOR结构FOR循环变量=初值TO终值循环体SENDFOR②WHILE结构WHILE条件循环体SENDWHILE③UNTIL结构REPEAT循环体SUNTIL条件输入/输出语句①输入语句:GET(输入变量表)②输出语句:PUT(输

出变量表)模块调用语句CALL模块名(参数)第103页,共107页。软件工程概论河南工程学院5)判定表:当算法中包含多重嵌套的条件选择时使用。表示复杂的条件组合与相应的动作适宜。6)判定树:比判定表直观

。第104页,共107页。软件工程概论河南工程学院详细设计的原则为了能够使模块的逻辑描述清晰准确,在详细设计阶段应遵循下列原则。(1)将保证程序的清晰度放在首位。(2)设计过程中应采用逐步细化的实现方法。(3)选择适当的表达工具。第1

05页,共107页。软件工程概论河南工程学院详细设计说明书详细设计说明书是详细设计阶段最重要的技术文档。与系统结构设计说明书相比,前者侧重于软件结构的规定,后者则侧重于对模块实现具体细节的描述。详细设计说明书可以看作是在系统结构设计说明书所确定的系统总体结构的基础上,对

其中各个模块实现过程的进一步描述和细化。通常,详细设计说明书中应主要包括以下几方面的内容:第106页,共107页。软件工程概论河南工程学院(1)引言:用于说明编写本说明书的目的、背景,定义所用到的术语和缩略语,以及列出文档中所引用的参考资料等。(2)总体设计:用于给出

软件系统的体系结构图。(3)模块描述:依次对各个模块进行详细的描述,主要包括模块的功能和性能,实现模块功能的算法,模块的输入及输出,模块接口的详细信息等。第107页,共107页。

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?