软件工程03-1(设计工程)

上传人:无*** 文档编号:138899050 上传时间:2022-08-22 格式:PPTX 页数:63 大小:336.05KB
返回 下载 相关 举报
软件工程03-1(设计工程)_第1页
第1页 / 共63页
软件工程03-1(设计工程)_第2页
第2页 / 共63页
软件工程03-1(设计工程)_第3页
第3页 / 共63页
点击查看更多>>
资源描述
1n软件设计工程概述软件设计工程概述n软件设计过程软件设计过程 n软件体系结构设计软件体系结构设计n部件级设计技术部件级设计技术(自学)(自学)n设计规约与设计评审设计规约与设计评审(自学)(自学)2n软件设计原则软件设计原则 n软件体系结构设计软件体系结构设计n部件级设计技术部件级设计技术 n设计规约与设计评审设计规约与设计评审3n软件需求分析解决软件需求分析解决“做什么做什么”的问题,软的问题,软件设计过程则解决件设计过程则解决“怎么做怎么做”的问题的问题 n软件设计是把软件需求变换成软件表示的软件设计是把软件需求变换成软件表示的过程,它主要包含两个阶段:过程,它主要包含两个阶段:软件体系结构设计阶段和和部件级设计 4n 使用一种设计方法,软件分析模型中通过数据、使用一种设计方法,软件分析模型中通过数据、功能和行为模型所展示的软件需求的信息被传功能和行为模型所展示的软件需求的信息被传送给设计阶段,产生数据送给设计阶段,产生数据/类设计、体系结构类设计、体系结构设计、接口设计、部件级设计设计、接口设计、部件级设计 5n接口设计主要包括三个方面:接口设计主要包括三个方面:u设计软件模块间的接口u设计模块和其他非人的信息生产者和消费者(比如外部实体)之间的接口u设计人(用户)和计算机间的接口 6n部件级设计将软件体系结构的结构性部件级设计将软件体系结构的结构性元素变换为对软件部件的元素变换为对软件部件的过程性描述过程性描述。n从类为基础的模型、流模型、行为模从类为基础的模型、流模型、行为模型中得到的信息是部件设计的基础。型中得到的信息是部件设计的基础。71)设计出来的结构应是分层结构,从而建立软件设计出来的结构应是分层结构,从而建立软件成份之间的控制。成份之间的控制。2)设计应当模块化,从逻辑上将软件划分为完成设计应当模块化,从逻辑上将软件划分为完成特定功能或子功能的部件。特定功能或子功能的部件。3)设计应当既包含数据抽象,也包含过程抽象。设计应当既包含数据抽象,也包含过程抽象。4)设计应当建立具有独立功能特征的模块。设计应当建立具有独立功能特征的模块。5)设计应当建立能够降低模块与外部环境之间复设计应当建立能够降低模块与外部环境之间复杂连接的接口。杂连接的接口。6)设计应能根据软件需求分析获取的信息,建立设计应能根据软件需求分析获取的信息,建立可驱动、可重复的方法。可驱动、可重复的方法。8n 总体设计的基本目的就是回答总体设计的基本目的就是回答“概括地说,系概括地说,系统应该如何实现统应该如何实现?”。因此,总体设计又称为概因此,总体设计又称为概要设计或初步设计。要设计或初步设计。n 通过这个阶段的工作将划分出通过这个阶段的工作将划分出组成系统的物理组成系统的物理元素元素程序、文件、数据库、人工过程和文程序、文件、数据库、人工过程和文档等等,但是每个物理元素仍然处于黑盒子级。档等等,但是每个物理元素仍然处于黑盒子级。n 总体设计阶段的另一项重要任务是设计总体设计阶段的另一项重要任务是设计软件的软件的结构结构,也就是要确定系统中每个程序是由哪些,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。模块组成的,以及这些模块相互间的关系。9n可以站在全局高度上,可以站在全局高度上,花较少成本花较少成本,从,从较较抽象的层次抽象的层次上分析对比多种可能的系统实上分析对比多种可能的系统实现方案和软件结构,从中选出现方案和软件结构,从中选出最佳方案和最佳方案和最合理的软件结构最合理的软件结构,从而用较低成本开发,从而用较低成本开发出较高质量的软件系统。出较高质量的软件系统。10 总体设计过程通常由两个主要阶段组成:总体设计过程通常由两个主要阶段组成:A.系统设计阶段系统设计阶段,确定系统的具体实现方,确定系统的具体实现方案;案;B.结构设计阶段结构设计阶段,确定,确定软件结构软件结构(模块组成模块组成的层次系统的层次系统)。11典型的总体设计过程包括下述典型的总体设计过程包括下述9个步骤:个步骤:1.设想供选择的方案设想供选择的方案 在总体设计阶段分析员应该考虑各种可能的实在总体设计阶段分析员应该考虑各种可能的实现方案,并且力求从中选出最佳方案。在总体现方案,并且力求从中选出最佳方案。在总体设计阶段开始时只有系统的设计阶段开始时只有系统的逻辑模型逻辑模型,分析员,分析员有充分的自由分析比较不同的有充分的自由分析比较不同的物理实现方案物理实现方案。一种常用的方法:设想把数据流图中的一种常用的方法:设想把数据流图中的处理分处理分组组的各种可能的方法。抛弃在技术上行不通的的各种可能的方法。抛弃在技术上行不通的方法。方法。122.选取合理的方案选取合理的方案 通常至少选取通常至少选取低成本低成本、中等成本中等成本和和高成本高成本的的三种方案。在判断哪些方案合理时应该考虑在三种方案。在判断哪些方案合理时应该考虑在问题定义和可行性研究阶段确定的工程规模和问题定义和可行性研究阶段确定的工程规模和目标,有时可能还需要进一步征求用户的意见。目标,有时可能还需要进一步征求用户的意见。对每个合理的方案分析员都应该准备下列对每个合理的方案分析员都应该准备下列4份资料:份资料:(1)系统流程图;系统流程图;(2)组成系统的物理元素清单;组成系统的物理元素清单;(3)成本成本/效益分析;效益分析;(4)实现这个系统的进度计划。实现这个系统的进度计划。133.推荐最佳方案推荐最佳方案 分析员应该综合分析对比各种合理方案的利弊,分析员应该综合分析对比各种合理方案的利弊,推荐一个最佳的方案,并且为推荐的方案制定推荐一个最佳的方案,并且为推荐的方案制定详细的实现计划。详细的实现计划。1.用户和有关的技术专家用户和有关的技术专家应该认真应该认真审查审查分析员分析员所推荐的最佳系统,如果该系统确实符合用户所推荐的最佳系统,如果该系统确实符合用户的需要,并且是在现有条件下完全能够实现的,的需要,并且是在现有条件下完全能够实现的,则则 2.应该提请应该提请使用部门负责人使用部门负责人进一步审批。在使进一步审批。在使用部门的负责人也接受了分析员所推荐的方案用部门的负责人也接受了分析员所推荐的方案之后,将进入总体设计过程的下一个重要阶之后,将进入总体设计过程的下一个重要阶段段结构设计结构设计。144.功能分解功能分解 为了最终实现目标系统,必须设计出组成这为了最终实现目标系统,必须设计出组成这个系统的所有程序和文件个系统的所有程序和文件(或数据库或数据库)。对程序。对程序(特别是复杂的大型程序特别是复杂的大型程序)的设计,通常分为两的设计,通常分为两个阶段完成:首先进行个阶段完成:首先进行结构设计结构设计,然后进行,然后进行过过程设计程设计。1.结构设计确定程序由哪些模块组成,以及这些模块之间的关系,属于总体设计阶段的任务;2.过程设计确定每个模块的处理过程。结构设计是总体设计阶段的任务,过程设计是详细设计阶段的任务。155.设计软件结构设计软件结构n通常程序中的一个模块完成一个适当的子通常程序中的一个模块完成一个适当的子功能。应该把模块组织成良好的层次系统,功能。应该把模块组织成良好的层次系统,顶层模块调用它的下层模块以实现程序的顶层模块调用它的下层模块以实现程序的完整功能,每个下层模块再调用更下层的完整功能,每个下层模块再调用更下层的模块,从而完成程序的一个子功能,最下模块,从而完成程序的一个子功能,最下层的模块完成最具体的功能。层的模块完成最具体的功能。软件结构软件结构(即由即由模块组成的层次系统模块组成的层次系统)可以用层次可以用层次图或结构图来描绘。图或结构图来描绘。166.设计数据库设计数据库 对于需要使用数据库的那些应用系统,对于需要使用数据库的那些应用系统,软件工程师应该在需求分析阶段所确定的软件工程师应该在需求分析阶段所确定的系统数据需求的基础上,进一步设计数据系统数据需求的基础上,进一步设计数据库。库。7.制定测试计划制定测试计划 在软件开发的早期阶段考虑测试问题,能在软件开发的早期阶段考虑测试问题,能促使软件设计人员在设计时注意提高软件促使软件设计人员在设计时注意提高软件的可测试性。的可测试性。178.书写文档书写文档 应该用正式的文档记录总体设计的结果,在这个阶应该用正式的文档记录总体设计的结果,在这个阶段应该完成的文档通常有下述几种:段应该完成的文档通常有下述几种:(1)系统说明:主要内容包括用系统流程图描绘的系统构成方案,组成系统的物理元素清单,成本/效益分析;对最佳方案的概括描述,精化的数据流图,用层次图或结构图描绘的软件结构,用IPO图或其他工具(例如,PDL语言)简要描述的各个模块的算法,模块间的接口关系等等。(2)用户手册:根据总体设计阶段的结果,修改更正在需求分析阶段产生的初步的用户手册。(3)测试计划:包括测试策略,测试方案,预期的测试结果,测试进度计划等等。(4)详细的实现计划(5)数据库设计结果189.审查和复审审查和复审 最后应该对总体设计的结果进行严格的技最后应该对总体设计的结果进行严格的技术审查,在技术审查通过之后再由使用部术审查,在技术审查通过之后再由使用部门的负责人从管理角度进行复审。门的负责人从管理角度进行复审。19n软件设计工程概述软件设计工程概述 n软件体系结构设计软件体系结构设计n部件级设计技术部件级设计技术 n设计规约与设计评审设计规约与设计评审20n抽象,是在软件设计的规模逐渐增大,是在软件设计的规模逐渐增大的情况下,的情况下,控制复杂性的基本策略。控制复杂性的基本策略。n抽象的过程是从特殊到一般的过程,抽象的过程是从特殊到一般的过程,上层概念是下层概念的抽象,下层概上层概念是下层概念的抽象,下层概念是上层概念的念是上层概念的精化和细化精化和细化。n软件工程过程的每一步都是对较高一软件工程过程的每一步都是对较高一级抽象的解作一次具体化的描述级抽象的解作一次具体化的描述 21n逐步求精,把问题的求解过程分解成若干,把问题的求解过程分解成若干步骤或阶段,每步都比上步更精化,更接步骤或阶段,每步都比上步更精化,更接近问题的解法近问题的解法(“为了能集中解决主要问为了能集中解决主要问题而尽量推迟对问题细节的考虑题而尽量推迟对问题细节的考虑”)。n抽象抽象使得设计者能够描述过程和数据而忽使得设计者能够描述过程和数据而忽略低层的细节,而略低层的细节,而求精求精有助于设计者在设有助于设计者在设计过程中揭示低层的细节;计过程中揭示低层的细节;二者的目的不同二者的目的不同22n模块化,即把软件按照规定原则,划分为,即把软件按照规定原则,划分为一个个较小的,相互独立的但又相互关联一个个较小的,相互独立的但又相互关联的的部件部件,实际上是系统分解和抽象的过程。,实际上是系统分解和抽象的过程。n模块是数据说明、可执行语句等程序对象是数据说明、可执行语句等程序对象的集合,它是单独命名的,并且可以通过的集合,它是单独命名的,并且可以通过名字来访问。名字来访问。u例如,过程。函数、子程序、宏等u面向对象方法学中的对象、对象内的方法(服务)也是模块。模块是构成程序的基本构件。23n设设C(x)是描述问题是描述问题x复杂性的函数,复杂性的函数,E(x)是解决问题是解决问题x所需工作量所需工作量(按时间计算按时间计算)的的函数。对于两个问题函数。对于两个问题p1 和和p2,如果:,如果:C(p1)C(p2)(5.1a)那么那么 E(p1)E(p2)(5.1b)n即:问题越复杂,解决问题所需要的花即:问题越复杂,解决问题所需要的花费更多。费更多。24n 通过对人解决问题的实验,又存在另一个有趣通过对人解决问题的实验,又存在另一个有趣的规律:的规律:C(p1p2)C(p1)C(p2)(5.2)n 方程式方程式(5.2)意味着意味着p1和和p2组合后的复杂性比组合后的复杂性比单独考虑每个问题时的复杂性要大。考虑方程单独考虑每个问题时的复杂性要大。考虑方程式式(5.2)和方程式和方程式(5.1)隐含的条件,我们可以隐含的条件,我们可以得出:得出:E(p1p2)E(p1)E(p2)(5.3)n 不等式不等式(5.3)表达出了一个对于模块化和软件表达出了一个对于模块化和软件具有十分重要意义的具有十分重要意义的结论结论(即,模块化的论(即,模块化的论据):据):将复杂问题分解成可以管理的片断会更将复杂问题分解成可以管理的片断会更使解决问题更加容易。使解决问题更加容易。25n问题:问题:如果我们无限制地划分软件,开发如果我们无限制地划分软件,开发它所需的工作量会变得小到可以忽略?它所需的工作量会变得小到可以忽略?n事实上,影响软件开发的工作量的因素还事实上,影响软件开发的工作量的因素还有很多,例如模块接口费用等等。有很多,例如模块接口费用等等。n上述不等式只能说明,当模块的总数增加上述不等式只能说明,当模块的总数增加时,单独开发各个子模块的工作量之和会时,单独开发各个子模块的工作量之和会有所减少。有所减少。26n 如果模块是相互独立的,当模块变得越小,每如果模块是相互独立的,当模块变得越小,每个模块花费的工作量越低;个模块花费的工作量越低;n 但当模块数增加时,模块间的联系也随之增加,但当模块数增加时,模块间的联系也随之增加,把这些模块联接起来的工作量也随之增加把这些模块联接起来的工作量也随之增加(设设计模块间接口所需工作量增加计模块间接口所需工作量增加)。27n信息隐藏:信息隐藏:每个模块的实现细节对于其它每个模块的实现细节对于其它模块来说应该是隐蔽的模块来说应该是隐蔽的;n块中所包含的信息(包括数据和过程)不块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用;允许其它不需要这些信息的模块使用;n通过通过信息隐蔽信息隐蔽,则可定义和实施对模块的,则可定义和实施对模块的过程细节和局部数据结构的存取限制。过程细节和局部数据结构的存取限制。28n模块独立:模块完成独立的功能并且与:模块完成独立的功能并且与其他模块的接口简单,符合信息隐蔽和其他模块的接口简单,符合信息隐蔽和信息局部化原则,模块间关联和依赖程信息局部化原则,模块间关联和依赖程度尽可能小。度尽可能小。n模块独立的重要性模块独立的重要性u功能被划分,并且接口被简化,所以具有有效模块化的软件更易于开发。u由于因设计和编码修改引起的副作用受到局限,错误传播被减小,并且模块复用成为可能,所以独立的模块更易于维护和测试。29n模块的独立性可以由两项指标来衡量:模块的独立性可以由两项指标来衡量:内聚度与与耦合度:u内聚(内聚(cohesion)是一个模块内部各个元素彼此结合的紧密程度的度量。u耦合耦合(coupling)是模块之间的相对独立性(互相连接的紧密程度)的度量。30n一般模块的内聚性分为七种类型一般模块的内聚性分为七种类型 311)巧合内聚(偶然内聚):如果一个模块完成一组如果一个模块完成一组任务,这些任务彼此间即使有关系,关系也是很任务,这些任务彼此间即使有关系,关系也是很松散的。将几个模块中没有明确表现出独立功能松散的。将几个模块中没有明确表现出独立功能的相同程序代码段独立出来建立的模块称为巧合的相同程序代码段独立出来建立的模块称为巧合内聚模块。内聚模块。2)逻辑内聚:指完成一组逻辑相关任务的模块,调指完成一组逻辑相关任务的模块,调用该模块时,由传送给模块的控制型参数来确定用该模块时,由传送给模块的控制型参数来确定该模块应执行哪一种功能。该模块应执行哪一种功能。3)时间内聚:指一个模块中的所有任务必须在同一指一个模块中的所有任务必须在同一时间段内执行。例如初始化模块和终止模块。时间段内执行。例如初始化模块和终止模块。324)过程内聚:指一个模块完成多个任务,这些任指一个模块完成多个任务,这些任务必须按指定的过程(务必须按指定的过程(procedural)执行。)执行。5)通信内聚:指一个模块内所有处理元素都集中指一个模块内所有处理元素都集中在某个数据结构的一块区域中。在某个数据结构的一块区域中。6)顺序内聚:指一个模块完成多个功能,这些功指一个模块完成多个功能,这些功能又必须顺序执行。能又必须顺序执行。7)功能内聚:指一个模块中各个部分都是为完成指一个模块中各个部分都是为完成一项具体功能而协同工作,紧密联系,不可分一项具体功能而协同工作,紧密联系,不可分割的。割的。33n 耦合和内聚的概念是耦合和内聚的概念是Constantine,Yourdon,Myers和和Stevens等人提出来的。按照他们的观点,如果给上述等人提出来的。按照他们的观点,如果给上述几种内聚的优劣评分,将得到如下结果:几种内聚的优劣评分,将得到如下结果:功能内聚功能内聚10分分时间内聚时间内聚3分分 顺序内聚顺序内聚9分分逻辑内聚逻辑内聚1分分 通信内聚通信内聚7分分偶然内聚偶然内聚0分分 过程内聚过程内聚5分分 事实上,没有必要精确确定内聚的级别事实上,没有必要精确确定内聚的级别。重要的是设重要的是设计时力争做到高内聚计时力争做到高内聚,并且能够辨认出低内聚的模块,并且能够辨认出低内聚的模块,有能力通过修改设计提高模块的内聚程度降低模块间的有能力通过修改设计提高模块的内聚程度降低模块间的耦合程度,从而获得较高的模块独立性。耦合程度,从而获得较高的模块独立性。34n一般模块之间可能的耦合方式有七种类型一般模块之间可能的耦合方式有七种类型 351)内容耦合:如果一个模块直接访问另一个模块如果一个模块直接访问另一个模块的内部数据;或者一个模块不通过正常入口转的内部数据;或者一个模块不通过正常入口转到另一模块内部;或者两个模块有一部分程序到另一模块内部;或者两个模块有一部分程序代码重迭;或者一个模块有多个入口,则两个代码重迭;或者一个模块有多个入口,则两个模块之间就发生了内容耦合。模块之间就发生了内容耦合。2)公共耦合:若一组模块都访问同一个公共数据若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。信区、内存的公共覆盖区等。3)外部耦合:指模块间通过软件之外的环境联结指模块间通过软件之外的环境联结(如(如I/O将模块耦合到特定的设备、格式、通将模块耦合到特定的设备、格式、通信协议上)时,称为外部耦合。信协议上)时,称为外部耦合。364)控制耦合:如果一个模块传送给另一个模块的如果一个模块传送给另一个模块的参数中包含了控制信息,该控制信息用于控制参数中包含了控制信息,该控制信息用于控制接收模块中的执行逻辑,则称为控制耦合。接收模块中的执行逻辑,则称为控制耦合。5)标记耦合:两个模块之间通过参数表传递一个两个模块之间通过参数表传递一个数据结构的一部分(如某一数据结构的子结数据结构的一部分(如某一数据结构的子结构),就是标记耦合。构),就是标记耦合。6)数据耦合:两个模块之间仅通过参数表传递简两个模块之间仅通过参数表传递简单数据,则称为数据耦合。单数据,则称为数据耦合。7)非直接耦合:如果两个模块之间没有直接关系,如果两个模块之间没有直接关系,即它们中的任何一个都不依赖于另一个而能独即它们中的任何一个都不依赖于另一个而能独立工作,这种耦合称为非直接耦合。立工作,这种耦合称为非直接耦合。37n模块之间的连接越紧密,联系越多,耦模块之间的连接越紧密,联系越多,耦合性就越高,而其模块独立性就越弱。合性就越高,而其模块独立性就越弱。n一个模块内部各个元素之间的联系越紧一个模块内部各个元素之间的联系越紧密,则它的内聚性就越高。密,则它的内聚性就越高。n模块独立性比较强的模块应是模块独立性比较强的模块应是高内聚低耦合的模块。的模块。38n人们在开发计算机软件的长期实践中积累人们在开发计算机软件的长期实践中积累了丰富的经验,总结这些经验得出了一些了丰富的经验,总结这些经验得出了一些启发式规则。启发式规则。n这些启发式规则在许多场合仍然能给软件这些启发式规则在许多场合仍然能给软件工程师以有益的启示,往往能帮助他们找工程师以有益的启示,往往能帮助他们找到改进软件设计提高软件质量的途径。到改进软件设计提高软件质量的途径。391.改进软件结构提高模块独立性改进软件结构提高模块独立性 设计出软件的初步结构以后,应该审设计出软件的初步结构以后,应该审查分析这个结构,通过模块分解或合并,查分析这个结构,通过模块分解或合并,力求降低耦合提高内聚。例如:力求降低耦合提高内聚。例如:p多个模块公有的一个子功能可以独立成一个模块,由这些模块调用;p有时可以通过分解或合并模块以减少控制信息的传递及对全程数据的引用,并且降低接口的复杂程度。402.模块规模应该适中模块规模应该适中 经验表明,一个模块的规模不应过大。有人经验表明,一个模块的规模不应过大。有人从心理学角度研究得知,当一个模块包含的语从心理学角度研究得知,当一个模块包含的语句数超过句数超过30以后,模块的可理解程度迅速下降。以后,模块的可理解程度迅速下降。过大的模块往往是由于分解不充分,但是进过大的模块往往是由于分解不充分,但是进一步分解必须符合问题结构,一般说来,分解一步分解必须符合问题结构,一般说来,分解后不应该降低模块独立性。后不应该降低模块独立性。过小的模块开销大于有效操作,而且模块数过小的模块开销大于有效操作,而且模块数目过多将使系统接口复杂。目过多将使系统接口复杂。413.深度、宽度、扇出和扇入都应适当(深度、宽度、扇出和扇入都应适当(1/2)深度深度表示软件结构中控制的层数,它往往能表示软件结构中控制的层数,它往往能粗略地标志一个系统的大小和复杂程度。如果粗略地标志一个系统的大小和复杂程度。如果层数过多则应该考虑是否有许多管理模块过分层数过多则应该考虑是否有许多管理模块过分简单了,能否适当合并。简单了,能否适当合并。宽度宽度是软件结构内同一个层次上的模块总数是软件结构内同一个层次上的模块总数的最大值。一般说来,宽度越大系统越复杂。的最大值。一般说来,宽度越大系统越复杂。对宽度影响最大的因素是模块的扇出。对宽度影响最大的因素是模块的扇出。423.深度、宽度、扇出和扇入都应适当(深度、宽度、扇出和扇入都应适当(2/2)扇出扇出是一个模块直接控制是一个模块直接控制(调用调用)的模块数目,扇出过大意味着模的模块数目,扇出过大意味着模块过分复杂,需要控制和协调过多的下级模块;扇出过小块过分复杂,需要控制和协调过多的下级模块;扇出过小(例如总例如总是是1)也不好。经验表明,一个设计得好的典型系统的平均扇出通常也不好。经验表明,一个设计得好的典型系统的平均扇出通常是是3或或4(扇出的上限通常是扇出的上限通常是59)。扇出太大一般是因为缺乏中间层次,应该适当增加中间层次的扇出太大一般是因为缺乏中间层次,应该适当增加中间层次的控制模块。扇出太小时可以把下级模块进一步分解成若干个子功控制模块。扇出太小时可以把下级模块进一步分解成若干个子功能模块,或者合并到它的上级模块中去。当然分解模块或合并模能模块,或者合并到它的上级模块中去。当然分解模块或合并模块必须符合问题结构,不能违背模块独立原理。块必须符合问题结构,不能违背模块独立原理。一个模块的一个模块的扇入扇入表明有多少个上级模块直接调用它,扇入越大表明有多少个上级模块直接调用它,扇入越大则共享该模块的上级模块数目越多,这是有好处的,但是,不能则共享该模块的上级模块数目越多,这是有好处的,但是,不能违背模块独立原理单纯追求高扇入。违背模块独立原理单纯追求高扇入。观察大量软件系统后发现,设计得很好的软件结构通常顶层扇观察大量软件系统后发现,设计得很好的软件结构通常顶层扇出比较高,中层扇出较少,底层扇入到公共的实用模块中去出比较高,中层扇出较少,底层扇入到公共的实用模块中去(底层底层模块有高扇入模块有高扇入)。434.模块的作用域应该在控制域模块的作用域应该在控制域之内之内 模块的作用域定义为受该模块的作用域定义为受该模块内一个判定影响的所有模块内一个判定影响的所有模块的集合。模块的控制域模块的集合。模块的控制域是这个模块本身以及所有直是这个模块本身以及所有直接或间接从属于它的模块的接或间接从属于它的模块的集合。集合。在一个设计得很好的系统在一个设计得很好的系统中,所有受判定影响的模块中,所有受判定影响的模块应该都从属于做出判定的那应该都从属于做出判定的那个模块,最好局限于做出判个模块,最好局限于做出判定的那个模块本身及它的直定的那个模块本身及它的直属下级模块。属下级模块。445.力争降低模块接口的复杂程度力争降低模块接口的复杂程度模块接口复杂是软件发生错误的一个主要原因。模块接口复杂是软件发生错误的一个主要原因。应该仔细设计模块接口,使得信息传递简单并应该仔细设计模块接口,使得信息传递简单并且和模块的功能一致。且和模块的功能一致。6.设计单入口单出口的模块设计单入口单出口的模块这条启发式规则警告软件工程师不要使模块间出这条启发式规则警告软件工程师不要使模块间出现内容耦合。当从顶部进入模块并且从底部退现内容耦合。当从顶部进入模块并且从底部退出来时,软件是比较容易理解的,因此也是比出来时,软件是比较容易理解的,因此也是比较容易维护的。较容易维护的。457.模块功能应该可以预测模块功能应该可以预测 模块的功能应该能够预测,但也要防模块的功能应该能够预测,但也要防止模块功能过分局限。止模块功能过分局限。如果一个模块可以当做一个黑盒子,如果一个模块可以当做一个黑盒子,也就是说,只要输入的数据相同就产生同也就是说,只要输入的数据相同就产生同样的输出,这个模块的功能就是可以预测样的输出,这个模块的功能就是可以预测的。的。46n软件设计工程概述软件设计工程概述n软件设计原则软件设计原则 n部件级设计技术部件级设计技术 n设计规约与设计评审设计规约与设计评审47n常见的软件体系结构常见的软件体系结构u单主机结构单主机结构uC/S(Client/Server)结构)结构uB/S(Browser/Server)结构)结构 48n系统部件封装数据和操作数据的系统部件封装数据和操作数据的方法。方法。n部件之间的交互和协调通过消息部件之间的交互和协调通过消息来传递。来传递。49n在这种结构中,定义不同的层次,每层都在这种结构中,定义不同的层次,每层都完成了相对外层更靠近机器指令的操作完成了相对外层更靠近机器指令的操作50n对于同一个软件需求,由于各种设计方法对于同一个软件需求,由于各种设计方法的原理不同,会导出不同的软件结构。的原理不同,会导出不同的软件结构。n同一问题的不同软件结构:同一问题的不同软件结构:51n 在进行软件体系结构设计时,可以参考如下规在进行软件体系结构设计时,可以参考如下规则:则:(1)改进软件结构提高模块独立性(2)模块适当的深度、宽度、扇出和扇入(3)模块判断作用范围应在其控制作用范围内(4)力争降低模块接口的复杂度(5)设计单入口单出口的模块(6)模块功能应该是可以预测的模块大小适中(7)一般一个模块包含的语句在3050条左右较好。(8)一个设计好的软件结构,通常顶层扇出比较高,中层扇出比较少,底层有高扇入。52n软件设计工程概述软件设计工程概述n软件设计原则软件设计原则 n软件体系结构设计软件体系结构设计 n设计规约与设计评审设计规约与设计评审53n在结构化分析和设计方法时部件往往被称在结构化分析和设计方法时部件往往被称为为模块n在面向对象分析和设计时部件被称为类,在面向对象分析和设计时部件被称为类,在基于构件的开发方法中,部件被称为在基于构件的开发方法中,部件被称为构件。54在部件级设计阶段,主要完成如下工作:在部件级设计阶段,主要完成如下工作:(1)为每个部件确定采用的算法,选择某种适当的工具表达算法的过程,编写部件的详细过程性描述;(2)确定每一部件内部使用的数据结构;(3)在部件级设计结束时,应该把上述结果写入部件级设计说明书,并且通过复审形成正式文档,作为下一阶段(编码阶段)的工作依据。55n软件设计工程概述软件设计工程概述n软件设计原则软件设计原则 n软件体系结构设计软件体系结构设计n部件级设计技术部件级设计技术 56.工作范围工作范围A.系统目标系统目标 B.运行环境运行环境C.主要软件需求主要软件需求D.设计约束设计约束限制限制.体系结构设计体系结构设计A.数据流与控制流复审数据流与控制流复审 B.导出的程序结构导出的程序结构C.功能与程序交叉索引功能与程序交叉索引 .数据设计数据设计A.数据对象与形成的数据结构数据对象与形成的数据结构 B.文件和数据库结构文件和数据库结构 文件的逻辑结构文件的逻辑结构 文件逻辑记录描述文件逻辑记录描述 访问方式访问方式 C.全局数据全局数据D.文件文件数据与程序交叉索引数据与程序交叉索引 .接口设计接口设计A.人机界面规格说明人机界面规格说明 B.人机界面设计规则人机界面设计规则 C.外部接口设计外部接口设计 外部数据接口外部数据接口 外部系统或设备接口外部系统或设备接口 D.内部接口设计规则内部接口设计规则57.各部件的过程设计各部件的过程设计A.处理与算法描述处理与算法描述 B.接口描述接口描述C.设计语言设计语言(或其它或其它)描述描述D.使用的部件使用的部件E.内部程序逻辑描述内部程序逻辑描述F.注释注释约束约束限制限制 .运行设计运行设计A.运行部件组合运行部件组合 B.运行控制规则运行控制规则C.运行时间安排运行时间安排.出错处理设计出错处理设计A.出错处理信息出错处理信息 B.出错处理对策出错处理对策 设置后备设置后备 性能降级性能降级 恢复和再启动恢复和再启动.安全保密设计安全保密设计.需求需求设计交叉索引设计交叉索引.测试部分测试部分A.测试方针测试方针 B.集成策略集成策略C.特殊考虑特殊考虑.特殊注解特殊注解.附录附录 58n软件设计的最终目标是要取得最佳方软件设计的最终目标是要取得最佳方案案 n“最佳最佳”是指在所有候选方案中,就是指在所有候选方案中,就节省开发费用,降低资源消耗,缩短节省开发费用,降低资源消耗,缩短开发时间的条件,选择能够赢得较高开发时间的条件,选择能够赢得较高的生产率、较高的可靠性和可维护性的生产率、较高的可靠性和可维护性的方案的方案 591.可追溯性:即分析该软件的系统结构、子系统结构,确:即分析该软件的系统结构、子系统结构,确认该软件设计是否覆盖了所有已确定的软件需求,软件认该软件设计是否覆盖了所有已确定的软件需求,软件每一成分是否可追溯到某一项需求。每一成分是否可追溯到某一项需求。2接口:即分析软件各部分之间的联系,确认该软件的:即分析软件各部分之间的联系,确认该软件的内部接口与外部接口是否已经明确定义。部件是否满足内部接口与外部接口是否已经明确定义。部件是否满足高内聚和低耦合的要求。部件作用范围是否在其控制范高内聚和低耦合的要求。部件作用范围是否在其控制范围之内。围之内。3风险:即确认该软件设计在现有技术条件下和预算范:即确认该软件设计在现有技术条件下和预算范围内是否能按时实现。围内是否能按时实现。4实用性:即确认该软件设计对于需求的解决方案是否:即确认该软件设计对于需求的解决方案是否实用。实用。605技术清晰度:即确认该软件设计是否以一种易于翻译:即确认该软件设计是否以一种易于翻译成代码的形式表达。成代码的形式表达。6可维护性:从软件维护的角度出发,确认该软件设计:从软件维护的角度出发,确认该软件设计是否考虑了方便未来的维护。是否考虑了方便未来的维护。7质量:即确认该软件设计是否表现出良好的质量特征。:即确认该软件设计是否表现出良好的质量特征。8各种选择方案:看是否考虑过其它方案,比较各种选:看是否考虑过其它方案,比较各种选择方案的标准是什么。择方案的标准是什么。9限制:评估对该软件的限制是否现实,是否与需求一:评估对该软件的限制是否现实,是否与需求一致。致。10其它具体问题:对于文档、可测试性、设计过程等等:对于文档、可测试性、设计过程等等进行评估。进行评估。61n评审分评审分正式评审和和非正式评审两种两种 u1.正式评审正式评审除软件开发人员外,还邀请用户代表和领域专家参加,通常采用答辩形式 u2.非正式评审非正式评审多少有些同行切磋的性质,不拘泥于时间和形式 62谢谢观看/欢迎下载BY FAITH I MEAN A VISION OF GOOD ONE CHERISHES AND THE ENTHUSIASM THAT PUSHES ONE TO SEEK ITS FULFILLMENT REGARDLESS OF OBSTACLES.BY FAITH I BY FAITH
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!