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

下载本文档

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

文档简介

1、第4章 软件设计掌握:概要设计的方法、详细设计的方法、软掌握:概要设计的方法、详细设计的方法、软件设计阐明书的规范化编写。件设计阐明书的规范化编写。4.1 软件设计概述4.1.1 软件设计的义务 软件设计的根本目的就是回答“系统应该如何实现?这个问题。软件设计的义务,就是把分析阶段产生的软件需求阐明转换为用适当手段表示的软件设计文档。 1系统构造设计 系统构造设计用于定义软件主要构造性元素之间的关系。系统构造设计表示即基于计算机的系统的框架可以从系统规约、分析模型以及分析模型中所定义的子系统的交互中导出。 2数据设计 数据设计用于将分析阶段创建的信息模型,如数据字典、数据流图等,转变为实现软件

2、所需的数据构造。部分数据设计能够和软件系统构造的设计同时发生,但更详细的数据设计活动那么会发生在设计每个详细软件构件或模块的时候。 3接口设计 接口设计描画软件内部模块之间以及软件与人之间是如何通讯的包括数据流和控制流。一个接口意味着特定的信息流如数据流或控制流以及行为类型,因此,数据和控制流图提供了接口设计所需的信息。 4构件设计 从工程管理的角度来看,传统的软件设计义务通常分两个阶段完成,即概要设计和详细设计。 4.1.2 模块与模块化 在软件系统设计中,模块是一个明确定义的输入、输出和特性的程序实体,通常程序中单独命名且可经过名字访问的过程函数、子程序或宏调用都可看作模块。普通模块具有以

3、下几种特征: 1接口:模块的输入/输出。 2功能:模块实现什么功能,有什么作用。 3逻辑:描画模块内部如何实现需求及所需数据。 4形状:模块的运转环境,模块间调用与被调用关系。 软件设计该当遵照“模块化的原那么。所谓“模块化,就是将程序划分成假设干个独立的模块的过程,其中,每个模块完成一个特定子功能,每个模块既相对独立,又相互联络,它们共同完成系统指定的各项功能。 4.1.3 笼统与细化笼统是指从一些事物中抽取其本质的共同的特性,而忽略其非本质细节的差别。细化是一种先总体、后部分的思想原那么,也就是一种逐层分解、分而治之的方法。模块的“粒度是指模块的规模。假设模块的规模过大,会使得模块的可重用

4、性差,同时,修正、维护也比较困难。在模块设计中,“细化与“笼统的思想极为重要。经过细化,可以将一个大模块分解成假设干个小模块;经过笼统,可以将多个模块中的公共部分概括出来,用单独的模块表示,从而降低了模块的粒度。4.1.4 信息隐蔽 信息隐蔽是在设计和确定模块时,使得一个模块内包含的信息过程和数据对于不需求这些信息的模块来说是不能访问的。它经过定义一组独立的模块来实现有效的模块化。信息隐蔽作为一种设计准那么用于模块化系统,在测试与维护期间会为软件修正带来极大的益处。4.1.5 模块的独立性 模块的独立性是指软件系统中的每个模块只涉及软件要求的详细的子功能,应与软件系统中其他模块的接口坚持简单化

5、,即模块间的联络不要太多。例如,假设一个模块只具有单一的功能,且与其他模块没有太多的联络,那么称此模块具有模块独立性。1. 耦合 耦合是模块之间的相对独立性相互衔接的严密程度)的度量。模块之间的衔接越严密,联络越多,耦合性就越高,而其模块独立性就越弱。 1非直接耦合 非直接耦合是指两个模块之间无直接关系,它们之间的联络完全是经过主程序的控制和调用来实现的。非直接耦合的模块间耦合程度最低,即模块独立性最强。 2数据耦合 数据耦合指的是模块间的通讯参数都是数据项。数据是模块间进展信息交流的一种必不可少的联络方式。在模块之间传输的数据项越少,产生的不利影响越少。图4-1 数据耦合 3标志耦合 假设两

6、个模块经过参数表传送记录信息,而这个记录是某一数据构造的子构造如字符串,而不是简单变量 4控制耦合 控制耦合是指一个模块向另一个模块传送的信息控制了另一个模块的执行。图4-2 控制耦合图4-3 控制耦合的修正 5外部耦合 假设一组模块经过同个全局简单变量相互作用,那么它们之间的耦合称为外部耦合。 6公共耦合 公共耦合就是一组模块都访问同一全局数据构造。 7内容耦合 内容耦合是指一个模块直接访问另一模块的内容。图4-4 7种耦合的耦合性及数据独立性2. 内聚 内聚是模块功能强度(一个模块内部各个元素彼此结合的严密程度)的度量。一个模块内部各个元素之间的联络越严密,那么它的内聚性就越高,相对地,它

7、与其他模块之间的耦合性就会减低,而模块独立性也就越强。 1偶尔内聚 假设一个模块的各个部分之间没有联络,或者即使有联络,这种联络也是很松散的,就称为偶尔内聚。 2逻辑内聚 假设把几个逻辑上相关的功能放在同一个模块中,那么模块每次被调用时,根据传送给该模块的断定参数来确定模块应执行的功能,就称为逻辑内聚。 3时间内聚 时间内聚是指一个模块的各个组成部分的处置动作和时间有关。 4通讯内聚 通讯内聚是指一个模块内各个组成部分的处置动作都运用一样的输入数据或产生一样的输出数据。 5顺序内聚 顺序内聚是指一个模块内部的各个组成部分执行的几个处置动作有这样的特征:前一处置动作所产生的输出数据是下一个处置动

8、作的输入数据。 6功能内聚 功能内聚是指一个模块内部的各个组成部分的处置动作全部都为执行同一个功能而存在,并且只执行一个功能。图4-5 6种耦合的耦合性及数据独立4.1.6 自底向上与自顶向下设计战略采用自顶向下的战略,首先将整个系统分解成子系统,再将子系统分解成更小的子系统,直至分解为可以直接实现的软件模块。采用自底向上的战略那么首先思索最根本的系统构件和系统的内部函数,然后逐渐将这些构件聚合成更大的软件模块、子系统,最终构成整个系统。4.1.7 构造化设计原那么1设计过程应该可以预测和评价。 2设计对于分析模型应该是可跟踪的。 3设计应该注重资源重用。 4设计应该使最终软件尽能够和现实世界

9、中的问题“类似,也就是说,软件设计的构造应该尽能够地模拟问题域的构造。 5设计应该表现出一致性和集成性。 6设计应该顺应扩展和变卦。 7设计应该思索软件的容错性和处置错误、异常的才干。 8设计不是编码,编码也不是设计。 9在创建设计时就应该可以评价质量,而不是在事情完成之后评价。 10应该评审设计,以减少概念性语义性错误。4.2 概要设计4.2.1 概要设计的根本义务1. 制定规范如规定代码体系、接口规约、命名规那么等。2. 总体构造设计1将软件功能转换成模块,规定每个功能用哪些模块实现,保证每个功能都有相应的模块来实现。2决议模块层次构造和模块间的调用关系。3模块间的接口设计决议模块间传送的

10、信息及构造。4用户界面设计。5详细的数据构造设计,如表、索引、文件等。6与算法相关的逻辑数据构造及操作。7其他性能方面的设计。4.2.2 概要设计的步骤1. 构造化软件设计方法 构造化软件概要设计的步骤如下: 1详细阅读需求规格阐明书,了解系统建立目的、业务现状、现有系统、用户需求的各功能阐明。 2分析数据流图,弄清数据流加工的过程。 3根据数据流图来决议数据处置问题的类型,普通分为变换型、事务型。 4推导出系统的初始构造图。 普通遵照以下步骤: 找出系统底层逻辑输入、主加工和逻辑输出; 设计顶层模块和第一层模块; 对输入、变换、输出模块逐个分解,便可得到初始构造图5对初始构造图进展改良完善:

11、一切的加工都要能对应到相应模块模块的完好性在于它们完成了需求中的一切加工,消除完全类似或部分类似的反复功能,理清模块间的层次、控制关系,平衡模块大小。6由数据字典导出逻辑数据构造、每种数据构造上的操作,操作该当属于某个模块。7确定系统包含哪些运用效力子系统、客户端、数据库管理子系统。8对每个挑选后的模块进展列表阐明。9对逻辑数据构造进展列表阐明。10编写概要设计阐明书。2. 面向对象的软件设计方法 运用面向对象的设计方法,首先需求构建软件的体系构造,其过程是:先将系统划分为子系统可以运用包来描画子系统,根据子系统提供的操作定义它们的接口,然后设计子系统的概念模型。对复杂的子系统,可以继续将其分

12、解,得到更简单的子系统。3. 构造化软件设计方法和面向对象的软件设计方法之间的比较 1从概念方面看,构造化软件是功能的集合,经过模块以及模块和模块之间的分层调用关系实现;面向对象软件是事物的集合,经过对象以及对象和对象之间的通讯联络实现。 2从构成方面看,构造化软件过程数据,以过程为中心;面向对象软件数据相应操作的封装,以数据为中心。 3从运转控制方面看,构造化软件采用顺序处置方式,由过程驱动控制;面向对象软件采用交互式、并行处置方式,由音讯驱动控制。 4从开发方面看,构造化方法的任务重点是设计;面向对象方法的任务重点是分析。但是,在构造化方法中,分析阶段和设计阶段采用了不相吻合的表达方式,需

13、求把在分析阶段采用的具有网络特征的数据流图转换为设计阶段采用的具有分层特征的构造图,而在面向对象方法中那么不存在这一问题。 5从运用方面看,相对而言,构造化方法和面向对象的方法均适宜数据处置、事务处置软件的开发,但相对而言,构造化方法更适宜数据类型比较简单的数值计算软件的开发,面向对象方法那么更适宜大型复杂软件的开发。4.2.3 软件构造图图4-6 成果管理系统的软件构造图4.2.4 数据流图 数据流图简称DFD,是采用图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是构造化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。4.3 详细设计4.3.1 详细设计的

14、根本义务1对每个模块进展详细的算法设计。用某种图形、表格、言语工具将每个模块处置过程的详细算法描画出来。2对模块内的数据构造进展设计。对需求分析、概要设计确定的概念性的数据类型进展确切的定义。3对数据构造进展物理设计,即确定数据库的物理构造。物理构造主要指数据库的存储记录格式、存储记录安排和存储方法,这些都依赖于详细所运用的数据库系统。4其他设计:为了提高数据的输入、分类、存储、检索等操作的效率,节约内存空间,对数据库中的某些数据项的值要进展代码设计。为了规范系统的输入和输出,还需求进展输入/输出格式设计。对于一个实时系统,用户与计算机频繁对话,因此要进展对话方式、内容、格式的详细设计。5编写

15、详细设计阐明书。6评审。对处置过程的算法和数据库的物理构造都要评审。4.3.2 程序流程图符号说明端点:流程的开始点或结束点处理:定义一个操作(一个或多个程序语句)流线:表示程序控制转向判断:测试条件是否满足表4-1 程序流程图的符号阐明图4-7 程序流程图的一个简单例子4.3.3 盒图图4-8 盒图的顺序构造图4-9 盒图的条件构造图4-10 盒图的While循环构造图4-11 盒图的Until循环构造图4-12 盒图的选择构造图4-13 盒图的端点表示图4-14 盒图的模块调用图4-15 盒图表示的一个简单例子4.3.4 详细设计中的IPO图 IPO图既是需求分析的工具,也是详细设计的工具

16、。它的优点是输入、输出明显,容易被人了解,适宜于进展自顶向下设计,有一定的灵敏性。另外,运用IPO图开发软件还可以便于人员分工,具有易于测试、纠错等优点。它的缺陷是:制造量较大,修正较困难。4.3.5 PAD图图4-16 PAD图的常见构造4.3.6 伪代码 伪代码是一种算法描画言语,它介于自然言语与实践的编程言语之间。相比实践的编程言语而言,伪代码的代码简单、可读性好,但它不可以在实践的编程环境中编译运转。相比自然言语而言,伪代码更容易被转换为实践的程序。普通来说,在软件设计中,一些复杂的算法可以用伪代码来表示。4.4 软件设计阐明书与案例分析4.4.1 软件设计阐明书1. 概要设计阐明书1引言1.1编写目的1.2背景1.3定义1.4参考资料2总体设计2.1需求规定2.2运转环境2.3根本设计概念和处置流程2.4构造2.5功能需求与程序的关系2.6人工处置过程2.7尚未问决的问题3接口设计3.1用户接口3.2外部接口3.3内部接口4运转设计4.1运转模块组合

温馨提示

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

评论

0/150

提交评论