软件工程模型与方法 06、软件设计.ppt
《软件工程模型与方法 06、软件设计.ppt》由会员分享,可在线阅读,更多相关《软件工程模型与方法 06、软件设计.ppt(67页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件工程模型与方法 Models&Methods of SE第六章 软件设计肖丁肖丁 2本章内容本章内容u6.1 软件设计历史及目标u6.2 软件设计的重要性u6.3 软件设计过程u6.4 软件概要设计步骤u6.5 软件详细设计步骤u6.6 软件设计原则u6.7 软件设计基础u6.8 软件体系结构3引言引言u相对于分析而言,设计是什么?为什么要进行设计?u软件设计在软件开发过程中出于什么位置?u经过软件需求分析,确定了系统必须“做什么”的功能,然而这些功能是如何实现用户的需求的呢?u为了实现合理分配系统功能并尽可能提高处理用户需求的性能,系统中这些功能之间是什么关系呢?u为了满足用户在处理业务
2、过程中的一些习惯,怎样合理而又灵便的分配系统界面功能呢?u46.1.1 软件设计历史软件设计历史u早期的设计工作集中在模块化程序的开发标准和自顶向下求精软件结构的方法,称为结构化程序设计的理论。u之后提出了将数据流或数据结构转化为设计定义的方法,之后又提出了一种面向对象方法来导出软件设计。u如今,在软件设计方面的着重点已转移到软件体系结构和可用于实现软件体系结构的设计模式。56.1.2 软件设计方法的通用特征软件设计方法的通用特征u各种软件设计方法都具有各自独特的表示符号体系,而这些方法都具有以下共同特征:一种用于将分析模型变换到设计模型的表示机制;用于表示功能件构件及其接口的符号体系;用于求
3、精和划分的启发信息和机制;质量评价的指导原则。66.1.3(软件)设计的定义(软件)设计的定义u首先,设计通常是开发活动的第一步。u设计定义为:“应用各种技术和原理,对设备、过程或系统做出足够详细的定义,使之能够在物理上得以实现”。u软件设计是软件工程过程中的技术核心,是构造和验证软件所需的三项技术活动之一。软件设计也是后续开发步骤及软件维护工作的基础。u软件设计的最基本目标就是回答“概括地描述系统如何实现用户所提出来的功能和性能等方面的需求?u软件设计的最终目标是要取得最佳方案。“最佳”是指在所有候选方案中,就节省开发费用,降低资源消耗,缩短开发时间的条件,选择能够赢得较高的生产率、较高的可
4、靠性和可维护性的方案。76.2.1 软件设计的重要性软件设计的重要性u软件设计是开发阶段中最重要的步骤,它提供了软件结构的内外表示,使得软件的质量评价成为可能,也是质量得以保证的关键步骤软件设计是将用户要求准确地转化成为最终的软件产品的唯一途径。也是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不稳定的系统。86.2.2 设计模型与分析模型的关系设计模型与分析模型的关系96.3 软件设计过程软件设计过程u从工程管理的角度,软件设计分成:概要设计:将软件需求转化为数据结构和软件的系统结构,并建立接口 详细设计:即过程设计,通过对软件结构进行细化,得到各功能模块的详细数据结构和算法
5、106.3 软件设计过程软件设计过程u系统结构设计:定义了软件系统各主要成份之间的关系。其中包括软件的接口设计,它特指软件内部各成份之间、软件与其它协同系统之间及软件与用户之间的交互机制的设计;u数据设计:将实体关系图中描述的对象和关系,以及数据词典中描述的详细数据内容转化为数据结构的定义;u过程设计:把系统结构设计转换成软件的过程性描述。116.4 软件概要设计步骤软件概要设计步骤1.制定设计规范2.软件系统结构的总体设计3.处理方式设计4.数据结构设计5.可靠性设计6.编写概要设计说明书7.概要设计评审126.4.1 制定软件设计规范制定软件设计规范u在软件设计阶段,首先应为软件开发组制定
6、在设计时应该共同遵守的标准,以便协调组内各成员的工作。阅读和理解软件需求说明书,在预算范围内和现有的技术条件下,确认用户的需求能否实现。若不能实现,则需明确实现的条件,从而确定设计的目标,以及它们的优先顺序。根据目标确定最合适的设计方法。规定设计文档的编制标准,包括文档体系、用纸及样式、记述详细的程度、图形的画法等。规定编码的信息形式(代码体系),与硬件、操作系统的接口规约,命名规则等。136.4.2 软件系统结构的总体设计软件系统结构的总体设计u基于分析阶段的成果(层级数据流图内的功能层次结构),设计并合理分配各功能模块的组成以及功能模块之间的关系,最终形成一个能满足用户需求的系统结构。采用
7、某种设计方法或模式,将一个复杂的系统按功能划分成模块的层次结构确定每个模块的功能,建立与已确定的软件需求的对应关系。确定模块间的调用关系。确定模块间的接口,即模块间传递的信息。设计接口的信息结构。评估模块划分的质量及导出模块结构的规则。146.4.3 处理方式设计处理方式设计u基于系统结构的设计,还需要确定为各功能需求所必需的算法,评估算法的性能。u其次,还需要确定为满足软件系统的性能需求所必需的算法和模块间的控制方式。周转时间:系统接收处理的请求后,从第一个输入开始,经过处理直到最后一个输出结果为止的整个时间。响应时间:系统接收处理的请求后,用户需要多次对计算机进行输入输出,每一次输入输出的
8、时间就是响应时间。吞吐量:单位时间内能够处理的数据量叫做吞吐量。这是表示系统能力的指标。精度:在进行科学计算或工程计算时,运算精确度的要求。156.4.4 数据结构设计数据结构设计u确定软件涉及的文件系统的结构以及数据库的模式、子模式,进行数据完整性和安全性的设计。它包括:确定输入、输出文件的详细的数据结构。结合算法设计,确定算法所必需的逻辑数据结构及其操作。确定对逻辑数据结构所必需的那些操作的程序模块(软件包)。限制和确定各个数据设计决策的影响范围。若需要与操作系统或调度程序接口所必须的控制表等数据时确定其详细的数据结构和使用规则。数据的保护性设计防卫性设计;在软件设计中就插入自动检错,报错
9、和纠错的功能。一致性设计:其一是保证软件运行过程中所使用的数据的类型和取值范围不变。其二是在并发处理过程中使用封锁和解除封锁机制保持数据不被破坏。166.4.5 可靠性设计可靠性设计u可靠性设计也叫做质量设计。可靠性设计也叫做质量设计。u在运行过程中,为了适应软件需求经常变更在运行过程中,为了适应软件需求经常变更的情况,就要确定软件的可靠性和其它质的情况,就要确定软件的可靠性和其它质量指标,考虑相应措施,以使得软件易于量指标,考虑相应措施,以使得软件易于修改和易于维护。修改和易于维护。176.4.6 编写概要设计说明书编写概要设计说明书u概要设计说明书:给出系统目标、总体设计、数据设计、处理方
10、式设计、运行设计、出错设计等。u数据库设计说明书:给出所使用数据库简介、数据模式设计、物理设计等。u用户手册:对需求分析阶段编写的初步的用户手册进行审订。u制定初步的测试计划:对测试的策略、方法和步骤提出明确的要求。186.4.7 概要设计评审概要设计评审u可回溯性:即分析该软件设计是否覆盖了所有已确定的软件需求,软件每一成分是否可追溯到某一项需求。u接口:即分析软件各部分之间的联系,确认该软件的内部接口与外部接口是否已经明确定义。模块是否满足高内聚和低耦合的要求。模块作用范围是否在其控制范围之内。u风险:确认该软件设计在现有技术条件下和预算范围内是否能按时实现。u实用性:确认该软件设计对于需
11、求的解决方案是否实用。u技术清晰度:确认该软件设计是否以一种易于翻译成代码的形式表达。u可维护性:确认该软件设计是否考虑了方便未来的维护。u质量:确认该软件设计是否表现出良好的质量特征。u各种选择方案:看是否考虑过其他方案,比较各种选择方案的标准是什么。u限制;评估对该软件的限制是否现实,是否与需求一致。196.5 软件详细设计步骤软件详细设计步骤u确定软件各个功能模块内的算法以及各功能模块的内部数据组织。u选定某种表达形式来描述各种算法。u进行详细设计的评审。206.5.1 软件设计的整体流程软件设计的整体流程216.6 软件设计原则软件设计原则u软件设计既是过程又是模型。u设计过程是一系列
12、的细化过程,使设计人员能够描述目标系统的各个侧面。u设计模型首先描述目标系统的整体架构,然后逐步细化架构得到构造每个细节的指导原则,从而得到系统的一系列不同视图。u良好的设计原则可为设计过程导航。衡量设计过程的技术原则衡量设计模型的技术原则226.6.1 设计过程的技术原则设计过程的技术原则 u设计必须实现分析模型中描述的所有显式需求,必须满足用户希望的所有隐式需求。u对于开发者和维护者而言,设计必须是可读的、可理解的,使得将来易于编程、易于测试、易于维护。u设计应该给出软件的全貌,包括从实现角度可看到的数据、功能、行为。236.6.2 设计模型的技术原则设计模型的技术原则u设计模型应该是一个
13、分层结构,该结构:使用可识别的设计模式搭建系统结构。由具备良好设计特征的构件构成。可以用演化的方式实现。u设计应当模块化。u设计应当包含数据、系统结构、接口和构件的清晰的视图应根据将要实现的对象和数据模式导出合适的数据结构。应建立具有独立功能特征的构件。应建立能够降低模块与外部环境之间复杂连接的接口。u设计模型应当通过使用软件需求信息所驱动的可重复的方法导出。246.6.3 抽象化抽象化u模型是人类抽象活动的一种表现形式。在软件设计过程中按照自顶向下的设计原则,可通过不同层次的抽象,逐步细化软件的结构。过程抽象:软件计划阶段:软件被看作是一个相对宏观的系统元素软件需求分析阶段:用“问题所处环境
14、的为大家所熟悉的术语”来描述软件的解决方法。概要设计阶段:使用规定的符号表示软件的轮廓和结构详细设计阶段:使用面向代码的符号表示软件的内部结构数据抽象:数据抽象与过程抽象一样,允许设计人员在不同层次上描述数据对象的细节。控制抽象:可以包含一个程序控制机制而无须规定其内部细节。256.6.4 模块化模块化u按照自顶向下的设计原则,需将一个大规模的软件分解成若干相对独立的模块,然后分别对这些规模较小的模块进行处理。u实际上,难点在于合理的划分模块如果模块是相互独立的,当模块变得越小,每个模块花费的工作量越低 但当模块数增加时,模块间的联系也随之增加,把这些模块联接起来的工作量也随之增加。降低了系统
15、的复杂性,使得系统容易修改;推动了系统各个部分的并行开发,从而提高了软件的生产效率。266.6.4.1 模块的定义模块的定义u模块(module):整个软件可被划分成若干个可单独命名且可编址组成部分,这些部分称之为模块。u模块具有如下三个基本属性:功能:实现什么功能,做什么事情。逻辑:描述模块内部怎么做。状态:该模块使用时的环境和条件。u模块的表示模块的外部特性:是指模块的模块名、参数表、以及给程序以至整个系统造成的影响。模块的内部特性:是指完成其功能的程序代码和仅供该模块内部使用的数据。276.6.4.2 模块设计的标准模块设计的标准u模块可分解性:可将系统按问题子问题分解的原则分解成系统的
16、模块层次结构;u模块可组装性:可利用已有的设计构件组装成新系统,不必一切从头开始。u模块可理解性:一个模块可不参考其他模块而被理解;u模块连续性:对软件需求的一些微小变更只导致对某个模块的修改而整个系统不用大动;u模块保护:将模块内出现异常情况的影响范围限制在模块286.6.5 信息隐藏信息隐藏u由Parnas提倡的信息隐藏是指,每个模块的实现细节对于其它模块来说是隐蔽的。u就是说,模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。u其最大的好处就是使得模块的修改和软件的维护所造成的影响可以局限在一个或几个模块范围内。296.6.6 模块的独立性模块的独立性u功能独立性是
17、抽象、模块化和信息隐藏的直接产物。u如果一个模块能够独立于其他模块被编程、测试和修改,而和软件系统中其它的模块的接口是简单的,则该模块具有功能独立性。u1978年Meyer提出了两个准则度量模块独立性,即模块间的耦合和模块的内聚。306.6.6.1 模块的内聚性模块的内聚性u内聚是模块功能强度的度量,一个模块内部各元素之间的联系越紧密,则它的内聚性就越高,相对地,它与其他模块之间的耦合性就会减低,而模块独立性就越强。巧合巧合 逻辑逻辑 时间时间 过程过程 通信通信 信息信息 功能功能内聚内聚 内聚内聚 内聚内聚 内聚内聚 内聚内聚 内聚内聚 内聚内聚内聚性内聚性功能独立性功能独立性31模块的内
18、聚性模块的内聚性u巧合内聚巧合内聚 当几个模块内凑巧有一些程序当几个模块内凑巧有一些程序段代码相同,又没有明确表现段代码相同,又没有明确表现出独立的功能,为了减少存储出独立的功能,为了减少存储把这些代码独立出来建立一个把这些代码独立出来建立一个新的模块,这个模块就是巧合新的模块,这个模块就是巧合内聚模块。内聚模块。它是内聚程度最低它是内聚程度最低的模块的模块。u逻辑内聚逻辑内聚这种模块把几种相关的功能组这种模块把几种相关的功能组合在一起,每次被调用时,由合在一起,每次被调用时,由传送给模块的判定参数来确定传送给模块的判定参数来确定该模块应执行哪一种功能。该模块应执行哪一种功能。32模块的内聚性
19、模块的内聚性u时间内聚时间内聚又称为经典内聚。这种模块一般为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。例如初始化模块和终止模块。u过程内聚使用流程图做为工具设计程序时,把流程图中的某一部分划出组成模块,就得到过程内聚模块。例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块就是过程内聚模块。33模块的内聚性模块的内聚性u通信内聚如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块。通常,通信内聚模块是通过数据流图来定义的。34模块的内聚性模块的内聚性u信息内聚这种模块完成多个功能,各个功能都在
20、同一数据结构上操作,每一项功能有一个唯一的入口点。这个模块将根据不同的要求,确定该执行哪一个功能。由于这个模块的所有功能都是基于同一个数据结构(符号表),因此,它是一个信息内聚的模块。信息内聚模块可以看成是多个功能内聚模块的组合,并且达到信息的隐蔽。u功能内聚一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模块。356.6.6.2 模块的耦合性模块的耦合性u耦合是模块之间互相连接的紧密程度的度量。模块之间的连接越紧密,联系越多,耦合性就越高,而其模块独立性就越弱。非直接非直接 数据数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程模型与方法 06、软件设计 软件工程 模型 方法 06 软件设计
限制150内