




已阅读5页,还剩54页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
5、总体设计,授课教师:崔晓晖联系方式:cuixiaohui授课学时:40,总体设计的基本目的与任务,基本目的回答“概括的说,系统应该如何实现”任务划分出组成系统的元素程序、文件、数据库、人工过程等,但是每个元素的具体内容还应该在详细设计阶段完成;设计出软件的结构,确定系统中的程序由哪些模块组成以及模块之间的相互关系。,软件工程,主要内容,5.1总体设计基本任务5.2总体设计的过程5.3软件设计的概念和原理5.4启发规则5.5描绘软件结构的图形工具5.6面向数据流的设计方法,软件工程,5.1总体设计基本任务,5.1.1设计软件系统结构(简称软件结构)5.1.2数据结构的设计5.1.3数据库的设计,软件工程,5.1.1设计软件系统结构,(1)采用某种设计方法,将一个复杂的系统按功能划分成模块。(2)确定每个模块的功能。(3)确定模块间的调用关系。(4)确定模块间接口,即模块间传递的信息。(5)评价模块结构的质量。,软件工程,5.1.1设计软件系统结构,软件结构的设计是以模块为基础的。在需求分析阶段,通过某种分析方法把系统分解成层次结构。在设计阶段,以需求分析的结果为依据,从实现的角度划分模块,并组成模块的层次结构。软件结构的设计是概要设计关键的一步,直接影响到详细设计与编码的工作。软件系统的质量及一些整体特性都在软件结构的设计中决定。因此,应由经验丰富的软件人员担任,采用一定的设计方法,选取合理的设计方案。,软件工程,5.1.2数据结构的设计,逐步细化的方法适用于数据结构的设计。在需求分析阶段,可通过数据字典对数据的组成、操作约束和数据之间的关系等进行描述,确定数据的结构特性,在概要设计阶段要加以细化,详细设计则规定具体的实现细节。在概要设计阶段,宜使用抽象的数据类型。如“栈”是数据结构的概念模型,在详细设计中可用线性表和链表来实现“栈”。设计有效的数据结构,将大大简化软件模块处理过程的设计。,软件工程,5.1.3数据库设计,数据库的设计指数据存储文件的设计,其主要包括以下几方面的设计:概念设计逻辑设计物理设计,软件工程,5.1.3数据库设计概念设计,在数据分析的基础上,从用户角度采用自底向上的方法进行视图设计。一般用E-R模型来表示数据模型。E-R模型既是数据库设计的基础,也是数据结构设计的基础。对应于系统开发中的“需求分析”。,软件工程,5.1.3数据库设计逻辑设计,ER模型是独立于DBMS的,要结合具体的DBMS特征来建立数据库的逻辑结构。对于关系型的DBMS来说,将概念结构转换为数据模式、子模式并进行规范,要给出数据结构的定义,即定义所含的数据项、类型、长度及它们之间的层次或相互关系的表格等。对应于系统开发中的“概要设计”。,软件工程,5.1.3数据库设计物理设计,对于不同的DBMS,物理环境不同,提供的存储结构与存取方法各不相同。物理设计就是设计数据模式的物理细节,如数据项存储要求、存取方式和索引的建立等。对应于系统开发中的“详细设计”。,软件工程,主要内容,5.1总体设计基本任务5.2总体设计的过程5.3软件设计的概念和原理5.4启发规则5.5描绘软件结构的图形工具5.6面向数据流的设计方法,软件工程,5.2总体设计的过程,一、设想供选择的方案二、选择合理的方案三、推荐最佳方案四、功能分解五、设计软件结构六、数据库设计七、制定测试计划八、书写文档九、审查和复审,软件工程,5.2总体设计的过程,一、设想供选择的方案将需求分析阶段得到的数据流图按某种原则对处理进行分组,将相关的处理作为一组,划定自动边界。使用这种方法设想尽可能多的解决方案,抛弃技术上行不通的分组方法,余下的分组方法就是可能的实现策略。,软件工程,5.2总体设计的过程,二、选择合理的方案从可供选择的方案中选择若干个合理的方案。对每个合理的方案系统分析员应该给出如下四份资料:1、系统流程图2、组成系统的物理元素清单3、成本/效益分析4、实现系统的进度计划,软件工程,5.2总体设计的过程,三、推荐最佳方案系统分析员就每个合理的方案进行对比,推荐一个最佳方案,并给出详细的实现计划。四、功能分解从系统实现的角度出发,把复杂功能进一步分解,使得分解之后的功能对大多数程序员而言是明显易懂的,从而确定软件系统的结构。五、设计软件结构将模块组织成良好的层次系统,顶层模块调用下层模块,这种调用直到完成具体功能的底层模块。,软件工程,5.2总体设计的过程,六、数据库设计模式设计、子模式设计、完整性和安全性设计、优化七、制定测试计划八、书写文档1、总体设计说明书2、用户手册3、测试计划4、详细的实现计划5、数据库设计结果九、审查和复审对总体设计提交的文档进行审查和复审,系统流程图、组成系统的物理元素清单、成本/效益分析;对最佳方案的描述,精化的数据流图、层次图或结构图描述的软件结构、用IPO图表示的模块算法、模块间的接口关系、需求/功能/模块交叉参照。,软件工程,主要内容,5.1总体设计基本任务5.2总体设计的过程5.3软件设计的概念和原理5.4启发规则5.5描绘软件结构的图形工具5.6面向数据流的设计方法,软件工程,5.3软件设计的概念和原理,模块化抽象信息隐蔽及局部化模块独立,软件工程,5.3软件设计的概念和原理模块化,模块化基本原理:设函数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),软件工程,5.3软件设计的概念和原理模块化,模块与开发软件开发成本,软件工程,5.3软件设计的概念和原理模块化,根据模块化的原理,可以对系统的模块进行划分,这样将使工作量下降,但随着模块数量的增加,模块间接口的数量和复杂度将提高,使得工作量增加,所以要综合考虑问题。,软件工程,5.3软件设计的概念和原理抽象,抽象是解决复杂问题的有利工具。忽略掉次要矛盾,集中精力解决主要矛盾。抽象是认识复杂现象过程中使用的思维工具,即抽出事物本质的共同特性,而暂不考虑它的细节,不考虑其他因素。抽象的概念广泛应用于计算机软件领域,在软件工程学中更是如此。软件工程实施中的每一步都可以看作是对软件抽象层次的一次细化。,软件工程,5.3软件设计的概念和原理抽象,软件工程整个过程的抽象层次在系统定义阶段,软件可作为整个计算机系统的一个元素来对待;在软件需求分析阶段,软件解决方案使用问题环境中的术语来描述;从概要设计到详细设计阶段,抽象的层次逐步降低,将面向问题的术语与面向实现的术语结合起来描述解决方法;到产生源程序时到达最低的抽象层次。,软件工程,5.3软件设计的概念和原理抽象,具体到软件设计阶段,又有不同的抽象层次。在进行软件设计时,抽象与逐步求精、模块化密切相关,可帮助定义软件结构中模块的实体,由抽象到具体地分析和构造出软件的层次结构,提高软件的可理解性。,软件工程,5.3软件设计的概念和原理信息隐蔽及局部化,定义信息隐蔽,是指在设计和确定模块时,使一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说,是不能访问的;“隐蔽”的意思是,有效的模块化通过定义一组相互独立的模块来实现,这些独立的模块彼此之间仅仅交换那些为了完成系统功能所必需的信息,而将那些自身的实现细节与数据“隐藏”起来。局部化是指把一些关系密切的软件元素物理的放得彼此靠近。,软件工程,5.3软件设计的概念和原理信息隐蔽及局部化,意义通过信息隐蔽,可以定义和实施对模块的过程细节和局部数据结构的存取限制。一个软件系统在整个生存期中要经过多次修改,信息隐蔽为软件系统的修改、测试及以后的维护都带来好处。应用在划分模块时要采取措施,如采用局部数据结构,使得大多数过程(即实现细节)和数据对软件的其他部分是隐藏的,这样,修改软件时偶然引入的错误所造成的影响只局限在一个或少量几个模块内部,不波及其他部分。,软件工程,5.3软件设计的概念和原理模块独立,概念模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。模块独立性概念是模块化、抽象及信息隐蔽这些软件工程基本原理的直接产物。优点良好的模块独立性能使开发的软件具有较高质量。由于模块独立性强,信息隐藏性能好,并完成独立的功能,且它的可理解性、可维护性及可测试性好,必然导致软件的可靠性高。接口简单、功能独立的模块易开发,且可并行工作,有效地提高了软件的生产率。,软件工程,5.3软件设计的概念和原理模块独立,如何衡量软件的独立性?根据模块的外部特征和内部特征,提出了两个定性的度量标准耦合性和内聚性。耦合:衡量不同模块彼此间相互依赖(连接)的紧密程度内聚:衡量一个模块内部各个元素彼此结合的紧密程度。,软件工程,耦合性(coupling),概念耦合性也称块间联系,指软件系统结构中各模块间联系紧密程度的一种度量。模块间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。,软件工程,耦合性(coupling),模块的耦合性的类型,按耦合性由低到高:,软件工程,耦合性(coupling),公共耦合通过公共数据环境相互作用的那些模块间的耦合。公共数据环境可以是全程变量或数据结构、共享的通信区、内存的公共覆盖区及任何存储介质上的文件和物理设备等(也有将共享外部设备分类为外部耦合的)。公共耦合的复杂程度随耦合模块的个数增加而增加。,软件工程,耦合性(coupling),公共耦合如果只有两个模块之间有公共数据环境,那么这种公共耦合就有两种情况:一个模块只给公共数据环境送数据,另一个模块只从公共环境中取数据,这只是数据耦合的一种形式,是比较松散的公共耦合;两个模块都既往公共数据环境中送数据,又从里面取数据,这是紧密的公共耦合。,软件工程,耦合性(coupling),公共耦合使用公共耦合的场合模块间共享的数据很多通过参数的传递很不方便公共耦合会引起以下问题:影响到软件的可靠性。耦合的复杂程度随模块的个数增加而增加,无法控制各个模块对公共数据的存取,若某个模块有错,可通过公共区将错误延伸到其他模块。使软件的可维护性变差。若某一模块修改了公共区的数据,则会影响到与此有关的所有模块。降低了软件的可理解性。各个模块使用公共区的数据,使用方式往往是隐含的,某些数据被哪些模块共享,不易很快搞清。,软件工程,内聚性(cohesion),概念内聚性也称块内联系,指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语句之间、程序段之间)联系的越紧密,则它的内聚性就越高。,软件工程,内聚性(cohesion),模块的内聚性的类型,按内聚性由低到高:,软件工程,5.3软件设计的概念和原理模块独立,耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。但也有内聚性与耦合性发生矛盾的时候,为了提高内聚性而可能使耦合性变差,在这种情况下,建议给予耦合性以更高的重视。,软件工程,主要内容,5.1总体设计基本任务5.2总体设计的过程5.3软件设计的概念和原理5.4启发规则5.5描绘软件结构的图形工具5.6面向数据流的设计方法,软件工程,5.4启发规则,5.4.1软件结构准则5.4.2软件结构优化准则,软件工程,5.4.1软件结构准则,软件结构图是软件系统的模块层次结构,反映了整个系统的功能实现,即将来程序的控制层次体系。对于一个“问题”,可用不同的软件结构来解决,不同的设计方法和不同的划分和组织,可得出不同的软件结构。软件结构常用树状或网状结构的图形来表示。软件工程中,一般采用70年代中期美国Yourdon等提出的称为结构图(StructureChart,简称SC)来表示软件结构。,软件工程,软件结构准则,结构图的主要内容有:(1)模块用方框表示,并用名字标识该模块,名字应体现该模块的功能。(2)模块的控制关系两个模块间用单向箭头或直线连接起来表示它们的控制关系。按照惯例,总是图中位于上方的模块调用下方的模块,所以不用箭头也不会产生二义性。,用模块和被调用模块的关系称为上属与下属的关系,或者称为“统率”与“从属”的关系。如上图所示,模块M调用模块A、B、C,模块D从属于模块A,也从属于M。,软件工程,软件结构准则,结构图的主要内容有:(3)模块间的信息传递模块间还经常用带注释的短箭头表示模块调用过程中来回传递的信息。有时箭头尾部带空心圆的表示传递的是数据,带实心圆的表示传递的是控制信息,如右图所示。,软件工程,软件结构准则,结构图的主要内容有:(4)两个附加符号:表示模块有选择调用(a)或循环调用(b)。,软件工程,软件结构准则,(5)结构图的形态特征。结构图的形态特征包括:深度:指结构图控制的层次,也是模块的层数宽度:指一层中最大的模块个数扇出:一个模块直接下属模块的个数,结构图的深度为5宽度为8模块M的扇出为3,软件工程,软件结构优化准则,改进软件结构提高模块独立性高内聚、低耦合模块规模应该适中50-150条语句深度、宽度、扇入、扇出都应适当模块的作用域应该在控制域之内力争降低模块接口的复杂程度设计单入口单出口的模块模块功能应该可以预测,软件工程,描绘软件结构的图形工具,层次图HIPO图结构图,软件工程,描绘软件结构的图形工具,层次图:表示系统中模块的层次及调用关系,软件工程,描绘
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年互联网行业ARVR技术应用前景分析报告
- 2025年电子器材行业智能家居器材市场前景及发展趋势研究报告
- 2025年医疗服务行业远程医疗服务市场前景分析报告
- 2025年互联网教育行业未来发展前景预测报告
- 2025年清洁能源行业可再生能源发展现状与前景研究报告
- 2025年医疗大数据行业健康大数据应用前景报告
- 岳阳楼区2025湖南岳阳市岳阳楼区事业单位招聘44人笔试历年参考题库附带答案详解
- 安置房委托代建协议书6篇
- 定西市2025年甘肃省兰州市事业单位招聘(536人)笔试历年参考题库附带答案详解
- 四川省2025年四川乐至县引进急需紧缺专业人才笔试历年参考题库附带答案详解
- 住房供给调控预案
- 培训行业转介绍
- 文科物理(兰州大学)学习通网课章节测试答案
- 人教版高二数学(上)选择性必修第一册1.2空间向量基本定理【教学设计】
- catia考试图纸题目及答案
- pos机风险管理办法
- 2025年行业机器人边缘计算技术应用与场景分析
- 2025年安徽省公务员录用考试《行测》真题及答案
- 2025年加油站行业需求分析及创新策略研究报告
- 2025中国工业传感器行业市场白皮书
- 手机桌面市场深度解析
评论
0/150
提交评论