软件工程第3章课件_第1页
软件工程第3章课件_第2页
软件工程第3章课件_第3页
软件工程第3章课件_第4页
软件工程第3章课件_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件工程,主讲人:武斌,第三章软件设计基础,软件设计的目标和任务根据用信息域表示的软件需求,以及功能和性能需求,进行数据设计系统结构设计过程设计接口设计,第三章软件设计,将分析模型转换为设计,数据词典,状态转换图,过程设计,接口设计,体系结构设计,数据设计,数据设计将实体关系图中描述的对象和关系,以及数据词典中描述的详细数据内容转化为数据结构的定义。体系结构设计定义软件系统各主要成份之间的关系。接口设计根据数据流图定义软件内部各成份之间、软件与其它协同系统之间及软件与用户之间的交互机制。过程设计则是把结构成份转换成软件的过程性描述。,软件设计是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不稳定的系统结构。,软件设计任务,从工程管理的角度来看,软件设计分两步完成。概要设计,将软件需求转化为数据结构和软件的系统结构。详细设计,即过程设计。通过对结构表示进行细化,得到软件的详细的数据结构和算法。,软件设计过程,1.制定规范在进入软件开发阶段之初,首先应为软件开发组制定在设计时应该共同遵守的标准,以便协调组内各成员的工作。包括:,阅读和理解软件需求说明书,确认用户要求能否实现,明确实现的条件,从而确定设计的目标,以及它们的优先顺序根据目标确定最合适的设计方法规定设计文档的编制标准规定编码的信息形式,与硬件,操作系统的接口规约,命名规则,2.软件系统结构的总体设计基于功能层次结构建立系统。采用某种设计方法,将系统按功能划分成模块的层次结构确定每个模块的功能建立与已确定的软件需求的对应关系确定模块间的调用关系确定模块间的接口评估模块划分的质量,3.处理方式设计,确定为实现系统的功能需求所必需的算法,评估算法的性能确定为满足系统的性能需求所必需的算法和模块间的控制方式周转时间响应时间吞吐量精度确定外部信号的接收发送形式,4.数据结构设计,确定软件涉及的文件系统的结构以及数据库的模式、子模式,进行数据完整性和安全性的设计确定输入,输出文件的详细的数据结构结合算法设计,确定算法所必需的逻辑数据结构及其操作确定对逻辑数据结构所必需的那些操作的程序模块(软件包),限制和确定各个数据设计决策的影响范围若需要与操作系统或调度程序接口所必须的控制表等数据时,确定其详细的数据结构和使用规则数据的保护性设计防卫性设计:在软件设计中就插入自动检错,报错和纠错的功能。一致性设计:保证软件运行过程中所使用的数据的类型和取值范围不变。在并发处理过程中使用封锁和解除封锁机制保持数据不被破坏。冗余性设计:针对同一问题,由两个开发者采用不同的程序设计风格不同的算法设计软件,当两者运行结果之差不在允许范围内时,利用检错系统予以纠正,或使用表决技术决定一个正确结果。,5.可靠性设计,可靠性设计也叫做质量设计。在运行过程中,为了适应环境的变化和用户新的要求,需经常对软件进行改造和修正。在软件开发的一开始就要确定软件可靠性和其它质量指标,考虑相应措施,以使得软件易于修改和易于维护。,6.编写概要设计阶段的文档,概要设计阶段完成时应编写以下文档:概要设计说明书数据库设计说明书用户手册制定初步的测试计划,7.设计评审,可追溯性:确认该设计是否复盖了所有已确定的软件需求,软件每一成份是否可追溯到某一项需求接口:确认该软件的内部接口与外部接口是否已经明确定义。模块是否满足高内聚和低耦合的要求。模块作用范围是否在其控制范围之内风险:确认该设计在现有技术条件下和预算范围内是否能按时实现实用性:确认该设计对于需求的解决方案是否实用技术清晰度:确认该设计是否以一种易于翻译成代码的形式表达,可维护性:确认该设计是否考虑了方便未来的维护质量:确认该设计是否表现出良好的质量特征各种选择方案:看是否考虑过其它方案,比较各种选择方案的标准是什么限制:评估对该软件的限制是否现实,是否与需求一致其它具体问题:对于文档、可测试性、设计过程.等进行评估,总体设计过程首先寻找实现目标系统的各种不同的方案,需求分析阶段得到的数据流图是设想各种可能方案的基础。总体设计又称为概要设计或初步设计,通过这个阶段的工作将划分出组成系统的物理元素程序、文件、数据库、人工过程和文档等。总体设计的必要性:从全局的高度,花较少的成本,从抽象的层次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和最合理的软件结构,从而用较低的成本开发出较高质量的软件系统。,第三章软件设计,3.1总体设计的过程该过程有两个主要阶段组成:1、系统设计,确定系统的具体实现方案。2、结构设计,确定软件结构。3.1.1设想供选择的方案设想供选择的方案的一种常用的方法是:设想把数据流图中的处理分组的各种可能的方法,抛弃在技术上行不通的分组方法,余下的分组方法代表可能的实现策略,并且可以启示供选择的物理系统。3.1.2选取合理的方案通常至少选取低成本,中等成本,高成本三种方案,对于每个合理的方案分析员都应准备下列四份资料:系统流程图组成系统的物理元素清单成本/效益分析实现该系统的进度计划,第三章软件设计,3.1.3推荐最佳方案分析员应该综合分析对比各种合理方案的利弊,推荐最佳的方案,并为推荐的方案制定详细的实现计划。用户及专家应认真审查该方案,是否满足用户的要求,应请部门负责人进一步审批,然后进入下一个阶段结构设计。3.1.4功能分解为实现目标系统,通常分为两个阶段完成:结构设计:确定程序由哪些模块组成及几个模块之间的关系;过程设计:确定每个模块的处理过程。结构设计是总体设计阶段的任务,过程设计是详细设计阶段的任务。,第三章软件设计,3.1.5设计软件结构通常程序中的一个模块完成一个适当的功能。应该把模块组织成良好的的层次系统。软件结构(即由模块组成的层次系统)可以用层次图或结构图来描绘(第3章介绍),数据流图已经细化到适当的层次,则可以直接从数据流图映射出软件结构。3.1.6数据库设计对于需要使用数据库的应用领域,分析员应该在需求分析阶段对系统的数据要求所作的分析的基础上进一步设计数据库。,第三章软件设计,3.2设计原理3.2.1模块化模块是数据说明,可执行语句等程序对象的集合,它是单独命名的,而且是可通过名字来访问。例如:过程、函数、子程序、宏等等都可作为模块。模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。有人讲:模块化是为了使一个复杂的大型程序能被人的智力所管理,软件应该具备的唯一属性。如果一个问题由P1和P2两个问题组合而成,那么它的复杂程度大于分别考虑每个问题时的复杂程度。因此,采用“各个击破”的方法,把复杂问题分解成许多容易解决的小问题,原来的问题也就容易解决了。这就是模块化的根据。,第三章软件设计,3.2.2抽象l抽象概念的描述软件工程过程中的每一步,都是对软件解的抽象层次的一次细化。当从总体设计转入详细设计过渡时,抽象的程度随之减少,最后当源代码写出以后,抽象的最低层也就到达了。l抽象细化后分为如下二种抽象1.数据抽象:是一个命名的说明数据对象的数据集合。例如工资单,含有信息有:单位、姓名、房租、水电、有线电视费,最后是总额。2过程抽象:是一个命令的指令序列。例如:“入门”是一个过程抽象,它含有一个很长的过程步骤的序列,如:走到门口,伸出手,把住门把,旋转门把和推门,走进门等。,第三章软件设计,开发一个软件,该软件为底层的计算机辅助设计应用,可以实现二维绘图系统的所有功能。第一层抽象:包括计算机图形接口l与绘图人员和鼠标之间进行可视通信,l鼠标器替代绘图板和丁字尺,l全部直线,曲线,全部计算和辅助视图都可由CAD软件完成。l画法存贮在一个绘图文件中,其中含有所有集合,文本和辅助设计信息,,第三章软件设计,第二层抽象:CAD软件的任务图形显示任务用户交互任务绘图文件管理任务二维绘图任务结束第三层抽象:Procedure:二维图形绘图Repeatuntil绘图任务终止Dowhile与绘图机进行交互绘图机接口任务终止绘图请求直线:直线绘制任务曲线:曲线绘制任务enddowhile与键盘进行交互键盘交互任务分析/计算选择,第三章软件设计,视图:辅助视图任务;剖面图:横剖面任务;endendrepetitionendprocedure在这个层次上,一个初步的过程表达式已经产生,所用术语已经是面向软件(如使用了诸如dowhile等结构),而且开始显露出模块化的含义。,第三章软件设计,5.2.3逐步求精逐步求精是人类解决复杂问题时采用的基本方法,也是许多软件工程技术(例如,规格说明技术,设计和实现技术)的基础。可以把逐步求精定义为:“为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。”逐步求精方法的强大作用就在于,它能帮助软件工程师把精力集中在与当前开发阶段最相关的那些方面上,而忽略那些对整体解决方案来说虽然是必要的,然而目前还不需要考虑的细节,这些细节将留到以后再考虑。事实上,可以把逐步求精看作是一项把一个时期内必须解决的种种问题按优先级排序的技术。逐步求精方法确保每个问题都将被解决,而且每个问题都将在适当的时候被解决,但是,在任何时候一个人都不需要同时处理7个以上知识块。,求精实际上是细化过程。我们从在高抽象级别定义的功能陈述(或信息描述)开始,也就是说,该陈述仅仅概念性地描述了功能或信息,但是并没有提供功能的内部工作情况或信息的内部结构。求精要求设计者细化原始陈述,随着每个后续求精(即细化)步骤的完成而提供越来越多的细节。抽象与求精是一对互补的概念。抽象使得设计者能够说明过程和数据,同时却忽略底层细节。事实上,可以把抽象看作是一种通过忽略多余的细节同时强调有关的细节,而实现逐步求精的方法。求精则帮助设计者在设计过程中逐步揭示出低层细节。这两个概念都有助于设计者在设计演化过程中创造出完整的设计模型。,5.2.4局部化和信息隐蔽局部化是指把一些关系密切的软件元素物理的放得彼此靠近。在模块中使用局部数据元素是局部化的一个例子。显然,局部化有助于实现信息隐藏。“隐藏”意味着有效的模块化可以通过定义一组独立的模块而实现,这些独立的模块彼此间仅仅交换那些为了完成系统功能而必须交换的信息。,第三章软件设计,3.2.5模块独立模块独立的概念是模块化,抽象、信息隐蔽和局部化概念的直接结果。模块独立重要性:1有效的模块化软件比较容易开发。2模块容易测试和维护。模块独立程度可由两个定性标准度量,即:1耦合:它是衡量不同模块彼此间互相依赖的紧密程度。2内聚:它是衡量一个模块内部各个元素彼此结合的紧密程度。,第三章软件设计,功能内聚(FunctionalCohesion)一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模块。,顺序内聚(SequentialCohesion)图中模块有4个功能。该模块根据不同要求,确定执行某个功能,由于该模块所有功能基于同一个数据结果(符号表)故为顺序内聚模块。,信息内聚模块可以看成是多个功能内聚模块的组合,并且达到信息的隐蔽。即把某个数据结构、资源或设备隐蔽在一个模块内,不为别的模块所知晓。,通信内聚(CommunicationCohesion)如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块。通常,通信内聚模块是通过数据流图来定义的。,过程内聚(ProceduralCohesion)使用流程图做为工具设计程序时,把流程图中的某一部分划出组成模块,就得到过程内聚模块。例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。,时间内聚(ClassicalCohesion)时间内聚又称为经典内聚。这种模块大多为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。例如初始化模块和终止模块。,逻辑内聚(LogicalCohesion)这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的判定参数来确定该模块应执行哪一种功能。,巧合内聚(CoincidentalCohesion)巧合内聚(偶然内聚)。当模块内各部分之间没有联系,或者即使有联系,该联系也很松散,则称这种模块为巧合内聚模块,它是内聚程度最低的模块。,各种内聚关系(内聚的定义请参见教材P88页内容),第三章软件设计,耦合:内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。耦合是模块之间的互相连接的紧密程度的度量。模块独立性比较强的模块应是高内聚低耦合的模块。,模块间的耦合,非直接耦合(NondirectCoupling)两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。非直接耦合的模块独立性最强。,数据耦合(DataCoupling)一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的。标记耦合(StampCoupling)一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。,控制耦合(ControlCoupling)如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。,外部耦合(ExternalCoupling)一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。公共耦合(CommonCoupling)若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。,公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是两模块间有公共数据环境,则公共耦合有两种情况。松散公共耦合和紧密公共耦合。,内容耦合(ContentCoupling)如果发生下列情形,两个模块之间就发生了内容耦合(1)一个模块直接访问另一个模块的内部数据;(2)一个模块不通过正常入口转到另一模块内部;(3)两个模块有一部分程序代码重迭(只可能出现在汇编语言中);(4)一个模块有多个入口。,3.3启发式规则1、改进软件结构提高模块独立性软件结构设计力求降

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论