您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 设计及方案 > 软件工程概论-电子教案--第4章-概要设计
高职高专院校“十二五”精品示范系列教材(软件技术专业群)软件工程2020/3/25SoftwareEngineering2020/3/252结束返回第4章概要设计4.1软件设计过程4.2概要设计的目标和任务4.3概要设计原则4.4体系结构设计工具4.5概要设计的启发式规则4.6面向数据流的设计方法4.7概要设计说明书从工程管理的角度来看,软件设计分两步完成。概要设计,将软件需求转化为数据结构和软件的系统结构。详细设计,即过程设计。通过对系统结构进行细化,得到软件的详细数据结构和算法。第4章概要设计从工程管理角度看软件设计过程4.1软件设计过程从技术角度来看,软件设计包括数据设计、体系结构设计、接口设计、过程设计。数据设计将实体关系图中描述的对象和关系,以及数据字典中描述的详细数据内容转化为数据结构的定义。体系结构设计划分软件系统模块及模块之间的关系。接口设计是根据数据流图定义软件内部各成份之间、软件与其它协同系统之间及软件与用户之间的交互机制。过程设计则是把结构成份(模块)转换成软件的过程性描述(即详细设计)。4.1软件设计过程第4章概要设计把分析模型转换成软件的过程4.1软件设计过程第4章概要设计数据字典数据流图实体关系图状态转换图加工规格说明控制规格说明数据对象描述过程设计接口设计体系结构设计数据设计软件设计是后续开发及软件维护工作的基础,没有设计的软件系统是一个不稳定的系统。第4章概要设计4.1软件设计过程目标系统的运行环境在设计目标系统时,软件设计人员要充分认识和分析目标系统的运行环境,以便在设计时考虑运行的约束条件及系统接口。软、硬件环境目标系统管理员、用户上级系统同级系统下级系统支撑使用使用调用调用目标系统的运行环境第4章概要设计4.1第4章概要设计1.概要设计的目标概要设计又称为总体设计,它的基本目的就是回答“概括地说系统应该如何实现”。软件设计的目标,就是为系统制定总的蓝图,权衡各种技术和实施方法的利弊,合理利用各种资源,精心规划出系统总的设计方案。这是一个将软件系统需求转换为目标系统体系结构的过渡过程。在该阶段,软件设计人员审查可行性研究报告、需求规格说明书,在此基础上将系统划分为层次结构和模块,决定各模块的功能、模块的调用关系。4.2概要设计的目标和任务2020/3/259结束返回2.概要设计的任务概要设计的主要任务是把需求分析得到的DFD转换为软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。数据结构设计包括数据特征的描述、确定数据的结构特性以及数据库的设计。第4章概要设计4.2概要设计的目标和任务概要设计的具体任务包括:(1)制定软件设计规范(2)软件体系结构设计(3)处理方式设计(4)数据结构设计(5)可靠性设计(6)编写概要设计说明书(7)概要设计评审第4章概要设计4.2概要设计的目标和任务2020/3/2511结束返回1.模块化一个软件系统可按功能不同划分成若干功能模块。软件系统的层次结构正是模块化的具体体现。把一个大而复杂的软件系统划分成易于理解的比较单纯的模块结构,这些模块可以被组装起来以满足整个问题的需求。4.3概要设计原则第4章概要设计概要设计要遵循的原则有:模块化;抽象;自顶向下,逐步细化;信息隐蔽;模块独立性。其中,模块独立性是最核心的原则。4.3概要设计原则第4章概要设计模块:是组成目标系统逻辑模型和物理模型的基本单位,它的特点是可以组合、分解和更换。系统中任何一个处理功能都可以看成是一个模块。根据模块功能具体化程度的不同,可以分为逻辑模块和物理模块。在系统逻辑模型中定义的处理功能可视为逻辑模块,物理模块是逻辑模块的具体化,可以是一个计算机程序、子程序或若干条程序语句,也可以是人工过程的某项具体工作。4.3概要设计原则第4章概要设计一个模块应具备以下4个要素:(1)输入和输出:模块的输入来源和输出去向都是同一个调用者,即一个模块从调用者那里取得输入,进行加工后再把输出返回调用者。(2)处理功能:指模块把输入转换成输出所作的工作。(3)内部数据:指仅供该模块本身引用的数据。(4)程序代码:指用来实现模块功能的程序。前两个要素是模块的外部特性,即反映了模块的外貌。后两个要素是模块的内部特性。在结构化设计中,主要考虑的是模块的外部特性,其内部特性只作必要了解,具体的实现将在系统实施阶段完成。4.3概要设计原则第4章概要设计Meyer的良好模块设计标准:模块可分解性:可将系统按问题/子问题分解的原则分解成系统的模块层次结构。模块可组装性:可利用已有的设计构件组装成新系统,不必一切从头开始。模块可理解性:一个模块可不参考其他模块而被理解。模块连续性:对软件需求的一些微小变更只导致对某个模块的修改而整个系统不用大动。模块保护:将模块内出现异常情况的影响范围限制在模块内部。4.3概要设计原则第4章概要设计问题复杂性、开发工作量和模块数之间的关系:设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)4.3概要设计原则第4章概要设计2020/3/2517结束返回模块大小、模块数目与费用的关系4.3概要设计原则第4章概要设计接口成本软件成本最小区域成本/模块模块数成本(工作量)M2020/3/2518结束返回如果模块是相互独立的,当模块变得越小,每个模块花费的工作量越少;但当模块数增加时,模块间的联系也随之增加,把这些模块联接起来的工作量(接口成本)也随之增加。因此,存在一个模块个数M,它使得总的开发成本达到最小。实践证明,一般人们能够同时考虑的问题个数为7±2,因此,一个软件项目划分5-9个模块较好。4.3概要设计原则第4章概要设计模块分割方法:横向分割,根据输入、处理、输出等功能的不同来分割模块。纵向分割,根据系统对信息处理过程中不同的阶段来分割模块。4.3概要设计原则第4章概要设计2020/3/2520结束返回2.抽象人类在认识复杂现象的过程中使用的最强有力的思维工具是抽象。人们在实践中认识到,现实世界中一定事物、状态或过程之间总存在着某些相似的方面(共性)。抽象就是抽出事物的本质特性而暂时不考虑它们的细节。这样可以集中精力分析事物的主要问题,而细节问题靠进一步细化。在软件工程过程中,从系统定义到实现,每进展一步都可以看做是对软件解决方案的抽象化过程的一次细化。而在从概要设计到详细设计的过程中,抽象化的层次逐次降低。当产生源程序代码时到达最低的抽象层次。4.3概要设计原则第4章概要设计2020/3/2521结束返回将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能够实现为止,从而最后确立整个软件的体系结构。3.自顶向下,逐步细化4.3概要设计原则第4章概要设计4.3概要设计原则第4章概要设计系统结构图2020/3/2523结束返回4.信息隐蔽信息隐蔽是指一个模块的实现细节对于其它模块来说是隐蔽的。就是说,模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。通过信息隐蔽,可定义和实施对模块的过程细节和局部数据结构的存取限制。如定义公共变量和私有变量。4.3概要设计原则第4章概要设计2020/3/2524结束返回4.3概要设计原则第4章概要设计5.模块独立性模块独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其它模块的接口是简单的。度量模块独立性有两个准则。即模块间的耦合和模块的内聚。耦合:耦合是模块间互相联系的紧密程度的度量。它取决于各个模块之间接口的复杂程度,一般由模块之间的调用方式、传递信息的类型和数量来决定。内聚:内聚是一个模块内部各个元素彼此结合的紧密程度的度量。2020/3/2525结束返回块间耦合:耦合性是程序结构中各个模块之间相互关联的度量,它取决于各个模块之间接口的复杂程度、调用模块的方式以及哪些信息通过接口。高低内容耦合公共耦合控制耦合标记耦合外部耦合数据耦合非直接耦合弱强耦合性模块独立性耦合性第4章概要设计4.3概要设计原则非直接耦合:也称偶然耦合,是指两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。非直接耦合的模块独立性最强。主控模块被调用模块1被调用模块2耦合非直接耦合第4章概要设计4.3概要设计原则2020/3/2527结束返回数据耦合:一个模块访问另一个模块时,彼此之间通过参数交换信息,且局限于数据信息(非控制信息)。一个好的软件系统,都需要进行各种数据的传输,某些模块的输出数据作为另一模块的输入数据。第4章概要设计4.3概要设计原则标记耦合:一组模块通过参数表传递记录信息,这组模块共享了该记录,就是标记耦合。传递的记录是某一数据结构的子结构,而不是简单变量。在软件设计时应尽量避免这种耦合。第4章概要设计4.3概要设计原则模块A模块B数据结构标记耦合2020/3/2529结束返回控制耦合:如果一个模块通过传送控制信息来控制另一模块的功能,就是控制耦合。控制耦合属于中等程度的耦合,它增加了系统的复杂性。第4章概要设计控制耦合4.3概要设计原则外部耦合:一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。第4章概要设计模块A模块B模块CPublicN外部耦合4.3概要设计原则公共耦合:若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是两模块间有公共数据环境,则公共耦合有两种情况:松散的公共耦合和紧密的公共耦合。4.3概要设计原则第4章概要设计2020/3/2532结束返回松散的公共耦合:一个模块往公共数据区传送数据,而另一个模块从公共数据区接收数据。紧密的公共耦合:两个模块既往公共数据区传送数据,又从公共数据区接收数据。公共数据区AB公共数据区AB松散的公共耦合紧密的公共耦合第4章概要设计4.3概要设计原则2020/3/2533结束返回内容耦合如果发生下列情形之一,则两个模块之间就发生了内容耦合:一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一模块内部;两个模块有一部分程序代码重迭;一个模块有多个入口。第4章概要设计4.3概要设计原则第4章概要设计内容耦合4.3概要设计原则软件设计应追求尽可能松散耦合,避免强耦合,这样模块间的联系就越小,模块的独立性就越强,对模块的测试、维护就越容易。因此建议:尽量使用数据耦合,少用控制耦合,限制公共耦合,完全不用内容偶合。第4章概要设计4.3概要设计原则2020/3/2536结束返回模块内聚低偶然内聚逻辑内聚过程内聚通信内聚时间内聚信息内聚功能内聚高强弱内聚性模块独立性模块内聚性模块内聚分为7级:4.3概要设计原则第4章概要设计2020/3/2537结束返回偶然内聚:当模块内部各元素之间没有联系,或者即使有联系也很松散。则称这种模块为偶然内聚模块。偶然内聚存在很大缺点,它不利于程序的修改与维护。4.3概要设计原则第4章概要设计偶然内聚2020/3/2538结束返回调用模块判定读一个记录写一个记录被调用模块逻辑内聚4.3概要设计原则第4章概要设计逻辑内聚:如果一个模块中包含多个逻辑上相关的功能,每次被调用时,根据传递给该模块的判定参数来确定模块应执行的功能,称作逻辑内聚。逻辑内聚模块中各功能存在着某种相关的联系,但它执行的不是一种功能,而是多种功能,这样往往增加了软件修改和维护的难度。时间
本文标题:软件工程概论-电子教案--第4章-概要设计
链接地址:https://www.777doc.com/doc-4563923 .html