欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    软件工程模型与方法课件.ppt

    • 资源ID:3916741       资源大小:1.85MB        全文页数:106页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    软件工程模型与方法课件.ppt

    2008 BUPT TSEG,第六章 软件设计修佳鹏,软件工程模型与方法Models&Methods of Software Engineering,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,本章内容,6.1 软件设计历史及目标6.2 软件设计的重要性6.3 软件设计过程6.4 软件概要设计步骤6.5 软件详细设计步骤6.6 软件设计原则6.7 软件设计基础6.8 软件体系结构,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,本章要解决的问题,相对于分析而言,设计是什么?为什么要进行设计?软件设计在软件开发过程中处于什么位置?经过软件需求分析,确定了系统必须“做什么”的问题,这些功能是如何在系统中得以实现的的呢?为了实现合理分配系统功能并尽可能提高处理用户需求的性能,系统中这些功能之间是什么关系呢?为了满足用户在处理业务过程中的一些习惯,怎样合理而又灵便的分配系统界面功能呢?,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.1 软件设计历史及目标,早期的设计工作集中在模块化程序的开发标准和自顶向下求精软件结构的方法,称为结构化程序设计的理论。将数据流或数据结构转化为设计定义的方法;面向对象的软件设计方法 如今,在软件设计方面的着重点已转移到软件体系结构和可用于实现软件体系结构的设计模式。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,软件设计的目标,首先,设计通常是开发活动的第一步。设计定义为:“应用各种技术和原理,对设备、过程或系统做出足够详细的定义,使之能够在物理上得以实现”。软件设计是软件工程过程中的技术核心,是构造和验证软件所需的三项技术活动之一。软件设计也是后续开发步骤及软件维护工作的基础。软件设计的最基本目标就是回答“概括地描述系统如何实现用户所提出来的功能和性能等方面的需求”软件设计的最终目标是要取得最佳方案。“最佳”是指在所有候选方案中,就节省开发费用,降低资源消耗,缩短开发时间的条件,选择能够赢得较高的生产率、较高的可靠性和可维护性的方案。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,设计模型与分析模型的关系,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.2 软件设计的重要性,软件设计是开发阶段中最重要的步骤,它提供了软件结构的内外表示,使得软件的质量评价成为可能,也是质量得以保证的关键步骤。,软件设计是将用户要求准确地转化成为最终的软件产品的唯一途径。也是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不稳定的系统。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.3 软件设计过程,从工程管理的角度,软件设计分成:概要设计:将软件需求转化为数据结构和软件的系统结构,并建立接口 详细设计:即过程设计,通过对软件结构进行细化,得到各功能模块的详细数据结构和算法,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.3 软件设计过程,系统结构设计:定义了软件系统各主要成份之间的关系。其中包括软件的接口设计,它特指软件内部各成份之间、软件与其它协同系统之间及软件与用户之间的交互机制的设计;数据设计:将实体关系图中描述的对象和关系,以及数据词典中描述的详细数据内容转化为数据结构的定义;过程设计:把系统结构设计转换成软件的过程性描述。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.4 软件概要设计步骤,6.4.1 制定设计规范6.4.2 软件系统结构的总体设计6.4.3 处理方式设计6.4.4 数据结构设计6.4.5 可靠性设计6.4.6 编写概要设计说明书6.4.7 概要设计评审,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.4.1 制定设计规范,在软件设计阶段,首先应为软件开发组制定在设计时应该共同遵守的标准,以便协调组内各成员的工作。阅读和理解软件需求说明书,在给定预算范围内和现有的技术条件下,确认用户的需求能否实现。若不能实现,则需明确实现的条件,从而确定设计的目标,以及它们的优先顺序。根据目标确定最合适的设计方法。规定设计文档的编制标准,包括文档体系、用纸及样式、记述详细的程度、图形的画法等。规定编码的信息形式(代码体系),与硬件、操作系统的接口规约,命名规则等。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.4.2 软件系统结构的总体设计,基于分析阶段的层级数据流图内的功能层次结构,设计并合理分配各功能模块的组成以及功能模块之间的关系,最终形成一个能满足用户需求的系统结构。采用某种设计方法,将一个复杂的系统按功能划分成模块的层次结构确定每个模块的功能,建立与已确定的软件需求的对应关系。确定模块间的调用关系。确定模块间的接口,即模块间传递的信息。设计接口的信息结构。评估模块划分的质量及导出模块结构的规则。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.4.3 处理方式设计,基于系统结构的设计,确定各功能需求所必需的算法,评估算法的性能。确定为满足软件系统的性能需求所必需的算法和模块间的控制方式。周转时间:系统接收处理的请求后,从输入开始,经过处理直到输出结果为止的整个时间。响应时间:这是对于实时联机系统的性能需求。系统接收处理的请求后,用户需要多次对计算机进行输入输出,一次输入输出的时间就是响应时间。吞吐量:单位时间内能够处理的数据量叫做吞吐量。这是表示系统能力的指标。精度:在进行科学计算或工程计算时,运算精确度的要求。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.4.4 数据结构设计,确定软件涉及的文件系统的结构以及数据库的模式、子模式,进行数据完整性和安全性的设计。它包括:确定输入、输出文件的详细的数据结构。结合算法设计,确定算法所必需的逻辑数据结构及其操作。确定对逻辑数据结构所必需的那些操作的程序模块(软件包)。限制和确定各个数据设计决策的影响范围。若需要与操作系统或调度程序接口所必须的控制表等数据时确定其详细的数据结构和使用规则。数据的保护性设计防卫性设计;在软件设计中就插入自动检错,报错和纠错的功能。一致性设计:一是保证软件运行过程中所使用的数据的类型和取值范围不变。二是在并发处理过程中使用封锁和解除封锁机制保持数据不被破坏。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.4.5 可靠性设计,可靠性设计也叫做质量设计。软件可靠性简言之是指程序和文档中出现的错误较少。在运行过程中,为了适应软件需求经常变更的情况,在软件开发的一开始就要确定软件可靠性和其它质量指标,考虑相应措施,以使得软件易于修改和易于维护。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.4.6 编写概要设计说明书,概要设计说明书:给出系统目标、总体设计、数据设计、处理方式设计、运行设计、出错设计等。数据库设计说明书:给出所使用数据库简介、数据模式设计、物理设计等。用户手册:对需求分析阶段编写的初步的用户手册进行审订。制定初步的测试计划:对测试的策略、方法和步骤提出明确的要求。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.4.7 概要设计评审,可追溯性:即分析该软件设计是否覆盖了所有已确定的软件需求,软件每一成分是否可追溯到某一项需求。接口:即分析软件各部分之间的联系,确认该软件的内部接口与外部接口是否已经明确定义。模块是否满足高内聚和低耦合的要求。模块作用范围是否在其控制范围之内。风险:即确认该软件设计在现有技术条件下和预算范围内是否能按时实现。实用性:即确认该软件设计对于需求的解决方案是否实用。技术清晰度:即确认该软件设计是否以一种易于翻译成代码的形式表达。可维护性:从软件维护的角度出发,确认该软件设计是否考虑了方便未来的维护。质量:即确认该软件设计是否表现出良好的质量特征。各种选择方案:看是否考虑过其他方案,比较各种选择方案的标准是什么。限制;评估对该软件的限制是否现实,是否与需求一致。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.5 软件详细设计步骤,确定软件各个功能模块内的算法以及各功能模块的内部数据组织。选定某种表达形式来描述各种算法。进行详细设计的评审。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,软件设计的整体流程,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.6 软件设计原则,软件设计既是过程又是模型。设计过程是一系列的细化过程,使设计人员能够描述目标系统的各个侧面。设计模型首先描述目标系统的整体架构,然后逐步细化架构得到构造每个细节的指导原则,从而得到系统的一系列不同视图。良好的设计原则可为设计过程导航。衡量设计过程的技术原则衡量设计模型的技术原则,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.6.1 设计过程的技术原则,设计必须实现分析模型中描述的所有显式需求,必须满足用户希望的所有隐式需求。对于开发者和维护者而言,设计必须是可读的、可理解的,使得将来易于编程、易于测试、易于维护。设计应该给出软件的全貌,包括从实现角度可看到的数据、功能、行为。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.6.2 设计模型的技术原则,设计模型应该是一个分层结构。该结构:使用可识别的设计模式搭建系统结构。由具备良好设计特征的构件构成。可以用演化的方式实现。设计应当模块化。设计应当包含数据、系统结构、接口和构件(模块)的清晰的视图。设计应当根据将要实现的对象和数据模式导出合适的数据结构。设计应当建立具有独立功能特征的构件。设计应当建立能够降低模块与外部环境之间复杂连接的接口。设计模型应当通过使用软件需求信息所驱动的可重复的方法导出。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.6.3 抽象化,抽象是人类在解决复杂问题时经常采用的一种思维方式,它将现实世界中具有共性的一类事物的相似的、本质的方面集中概括起来,而暂时忽略它们之间的细节差异。在软件开发中运用抽象的概念,可以将复杂问题的求解过程分层,在不同的抽象层上实现难度的分解。软件开发过程中从问题定义到最终的软件生成,每一阶段都是在前一阶段基础上对软件解法的抽象层上的一次求精和细化。对软件进行模块设计的时候,可以有不同的抽象层次。在最高的抽象层次上,可以使用问题所处环境的语言描述问题的解法。而在较低的抽象层次上,则采用过程化的方法。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,三类抽象,过程抽象:软件计划阶段:软件被看作是一个相对宏观的系统元素软件需求分析阶段:用“问题所处环境的为大家所熟悉的术语”来描述软件的解决方法。概要设计阶段:使用规定的符号表示软件的轮廓和结构详细设计阶段:使用面向代码的符号表示软件的内部结构数据抽象:允许设计人员在不同层次上描述数据对象的细节。控制抽象:可以包含一个程序控制机制而无须规定其内部细节。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.6.4 模块化,按照自顶向下的设计原则,需将一个大规模的软件分解成若干相对独立的模块,然后分别对这些规模较小的模块进行处理。实际上,难点在于合理的划分模块如果模块是相互独立的,当模块变得越小,每个模块花费的工作量越低 但当模块数增加时,模块间的联系也随之增加,把这些模块联接起来的工作量也随之增加。,降低了系统的复杂性,使得系统容易修改;推动了系统各个部分的并行开发,从而提高了软件的生产效率。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.6.4.1模块的定义,模块(module):整个软件可被划分成若干个可单独命名且可编址组成部分,这些部分称之为模块。模块具有如下三个基本属性:功能:实现什么功能,做什么事情。逻辑:描述模块内部怎么做。状态:该模块使用时的环境和条件。模块的表示模块的外部特性:是指模块的模块名、参数表、以及给程序以至整个系统造成的影响。模块的内部特性:是指完成其功能的程序代码和仅供该模块内部使用的数据。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.6.4.2 模块设计的标准,模块可分解性:可将系统按问题子问题分解的原则分解成系统的模块层次结构;模块可组装性:可利用已有的设计构件组装成新系统,不必一切从头开始。模块可理解性:一个模块可不参考其他模块而被理解;模块连续性:对软件需求的一些微小变更只导致对某个模块的修改而整个系统不用大动;模块保护:将模块内出现异常情况的影响范围限制在模块,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.6.5 信息隐藏,由Parnas提倡的信息隐藏是指,每个模块的实现细节对于其它模块来说是隐蔽的。就是说,模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。其最大的好处就是使得模块的修改和软件的维护所造成的影响可以局限在一个或几个模块范围内。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.6.6 模块的独立性,功能独立性是抽象、模块化和信息隐藏的直接产物。如果一个模块能够独立于其他模块被编程、测试和修改,而和软件系统中其它的模块的接口是简单的,则该模块具有功能独立性。1978年Meyer提出了两个准则度量模块独立性,即模块间的耦合和模块的内聚。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.6.6.1 模块的内聚性,内聚是模块功能强度的度量,一个模块内部各个元素之间的联系越紧密,则它的内聚性就越高,相对地,它与其他模块之间的耦合性就会减低,而模块独立性就越强。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,模块的内聚性,巧合内聚 当几个模块内凑巧有一些程序段代码相同,又没有明确表现出独立的功能,为了减少存储把这些代码独立出来建立一个新的模块,这个模块就是巧合内聚模块。它是内聚程度最低的模块。逻辑内聚这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的判定参数来确定该模块应执行哪一种功能。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,模块的内聚性,时间内聚时间内聚又称为经典内聚。这种模块一般为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。过程内聚使用流程图做为工具设计程序时,把流程图中的某一部分划出组成模块,就得到过程内聚模块。例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块就是过程内聚模块。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,模块的内聚性,通信内聚如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块。通常,通信内聚模块是通过数据流图来定义的。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,模块的内聚性,信息内聚这种模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。这个模块将根据不同的要求,确定该执行哪一个功能。由于这个模块的所有功能都是基于同一个数据结构(符号表),因此,它是一个信息内聚的模块。信息内聚模块可以看成是多个功能内聚模块的组合,并且达到信息的隐蔽。功能内聚一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模块。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.6.6.2 模块的耦合性,耦合是模块之间的相对独立性(互相连接的紧密程度)的度量。模块之间的连接越紧密,联系越多,耦合性就越高,而其模块独立性就越弱。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,模块的耦合性,内容耦合一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一模块内部;两个模块有一部分程序代码重迭(只可能出现在汇编语言中);一个模块有多个入口。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,模块的耦合性,公共耦合(Common Coupling)若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是两模块间有公共数据环境,则公共耦合有两种情况:松散公共耦合和紧密公共耦合。只有在模块之间共享的数据很多,且通过参数表传递不方便时,才使用公共耦合。,公共耦合会引起下列问题:所有公共耦合模块都与某一个公共数据环境内部各项的物理安排有关,若修改某个数据的大小,将会影响到所有的模块。无法控制各个模块对公共数据的存取,严重影响软件模块的可靠性和适应性。公共数据名的使用,明显降低了程序的可读性。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,模块的耦合性,外部耦合一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。,控制耦合如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。控制耦合的实质是在单一接口上选择多功能模块中的某项功能。且控制模块必须知道所控制模块内部的一些逻辑关系,降低了模块的独立性。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,模块的耦合性,标记耦合如果一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。要求这一组模块都必须清楚该数据结构,并按结构的要求进行操作。它使在数据结构上的操作复杂化了,应该把数据结构上的操作全部集中在一个模块中,来消除这种耦合。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,模块的耦合性,数据耦合如果一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合。由于限制了只通过参数传递数据,该方式开发的程序简单、安全可靠,因此它是一种松散的耦合,模块间独立性强。非直接耦合如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。这种耦合的模块独立性最强。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.7 软件设计基础,6.7.1 自顶向下,逐步细化6.7.2 系统控制结构6.7.3 结构划分和结构图6.7.4 数据结构6.7.5 软件过程,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.7.1 自顶向下逐步细化,这是Niklaus Wirth提出的设计策略。将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能够实现为止,从而最后确立整个的体系结构。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.7.2 系统控制结构,系统控制结构表明了程序构件(模块)的组织情况。控制层次往往用程序的层次(树形或网状)结构来表示。程序结构的深度:程序结构的层次数称为结构的深度。程序结构的宽度:层次结构中同一层模块的最大模块个数称为结构的宽度。模块的扇入和扇出:扇出表示一个模块直接调用(或控制)的其它模块数目。扇入则定义为调用(或控制)一个给定模块的模块个数。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,程序结构,反映了程序结构的规模和复杂程度,反映了程序结构的控制规模,多扇出意味着需要控制和协调许多下属模块。而多扇入的模块通常是公用模块,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.7.3 结构划分,程序结构可以按水平方向或垂直方向进行划分。水平划分:水平划分按主要的程序功能来定义模块结构的各个分支。优点是:由于主要的功能相互分离,易于修改、易于扩充,且没有副作用。缺点是:需要通过模块接口传递更多的数据,使程序流的整体控制复杂化。垂直划分:也叫做因子划分,主要用在程序的体系结构中。优点是:对低层模块的修改不太可能引起副作用的传播,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,结构图,结构图是精确表达程序结构的图形表示方法。它清楚地反映出程序中模块间的层次调用关系和联系:严格地定义了各个模块的名字、功能和接口反映了设计思想即以特定的符号表示模块、模块间的调用关系和模块间信息的传递,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,模块,在结构图中,模块用矩形框表示,并用模块的名字标记它。模块的名字应当能够表明该模块的功能。对于现成的模块,则以双纵边矩形框表示。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,模块调用关系和接口,箭头从调用模块指向所调用模块,表示调用模块调用了所调用模块。但其中隐含了一层意思,就是执行所调用模块完成了之后,控制又返回到了调用模块。为了表示在模块之间传递的数据和控制信息,在联结模块的箭头旁边另给出箭头,并且用尾端带有空心圆的短箭头表示数据信息,用尾端带有实心圆的短箭头表示控制信息,通常在短箭头附近应注有信息的名称。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,模块间的消息传递,当一个模块调用另一个模块时,调用模块把数据和控制信息传送给所调用模块,以使所调用模块能够运行。而在执行所调用模块的过程中又把它产生的数据或控制信息回送给调用模块。箭头尾部标带菱形符号表示模块A有条件地调用模块B;箭头尾部带弧形符号表示模块A反复地调用模块C和模块D。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.7.4 数据结构,数据结构是数据的各个元素之间的逻辑关系的一种表示。数据结构设计应确定数据的组织、存取方式、相关程度、以及信息的不同处理方法。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,数据结构,标量是最简单的一种数据结构。所谓标量项就是单个的数据元素,例如一个布尔量、整数、实数或一个字符串。可以通过名字对它们进行存取。若把多个标量项组织成一个表或者顺序邻接为一组时,就形成了顺序向量。顺序向量又称为一维数组。通常可以通过下标及数组名来访问数组中的某一元素。把顺序向量扩展到二维、三维,直至任意维,就形成了n维向量空间。最常见的n维向量空间是二维矩阵。链表是一种更灵活的数据结构,它把不相邻的标量项、向量或空间结构用拉链指针链接起来,使得它们可以像表一样得到处理。组合上述基本数据结构可以构成其它数据结构。例如,可以用包含标量项、向量或 n维空间的多重链表来建立分层结构和网络结构。而利用它们又可以实现多种集合的存储。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.7.5 软件过程,软件过程必须提供精确的处理说明,包括事件的顺序、正确的判定点、重复的操作直至数据的组织和结构等等。程序结构与软件过程是有关系的。对每个模块的处理必须指明该模块所在的上下级环境。软件过程遵从程序结构的主从关系,因此它也是层次化的。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.8 软件体系结构,6.8.1 软件体系结构的定义6.8.2 软件体系结构三要素6.8.3 软件构件的分类6.8.4 构件的调用方式6.8.5 软件体系结构风格,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,软件体系结构简介,对于大规模的复杂软件系统来说,系统的总体结构设计和规格说明比数据结构和算法的选择重要的多。在这种背景下,人们认识到软件体系结构的重要性。软件体系结构研究的主要内容涉及软件体系结构描述、软件体系结构风格、软件体系结构评价和软件体系结构的形式化方法等。其根本目的是要解决软件重用、软件质量和软件维护问题。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,软件体系结构的重要性,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.8.1 软件体系结构定义,Booch&Rumbaugh&Jacobson 定义软件体系结构=组织,元素,子系统,风格软件体系结构是一系列重要决策的集合,这些决策与软件组织、构成系统的结构元素、接口的选择以及这些元素在相互协作中表现的行为有着重要的关系。这些结构元素和行为元素进一步组合构成更大规模的子系统,并进一步组合成为体系结构风格。Bass定义软件体系结构是系统的一个或多个结构,包括软件构件(Components)构件的外部可视属性(Properties)构件之间的关系(Relationships),2008 BUPT TSEG 北京邮电大学 通信软件工程中心,软件体系结构定义,Shaw定义结构模型:软件体系结构由构件、构件之间的连接和一些其它方面组词组成:框架模型:其重点在于整个系统的连贯结构,这与重视其组成恰好相反。框架模型常常以某种特定领域或某类问题为目标。动态模型:动态模型强调系统的行为质量。它可以指整个系统配置的变化,也可以是禁止预先激活了的通信或交互,还可以使计算中表现的动态特性等。过程模型:过程模型关注系统结构的构建及其步骤和过程。在这一观点下,体系结构是软件开发所进行的一系列过程的结果。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,软件体系结构定义,Garlan&Shaw 模型软件体系结构=构件,连接件,约束构件可是一组代码,也可是一个独立的程序,构件是一组对象集合,可实现某些计算逻辑。构件相对独立,仅通过接口与外部进行交互,可作为独立单元嵌入到不同的应用系统中。连接件可以是过程调用、管道、远程过程调用等,用于表示构件之间的相互作用。约束一般为对象连接时的规则,或指明构件连接的条件。他们认为软件体系结构是软件设计过程的一个层次,这一层次超越计算过程中的算法设计和数据结构设计。体系结构问题包括总体组织和全局控制、通信协议、同步、数据存取,给设计元素分配特定功能,设计元素的组织、规模和性能,在各设计方案间进行选择等。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,对软件体系结构的理解,软件体系结构是系统的抽象定义了元素以及它们如何交互元素:模块、类、对象、进程隐瞒了纯粹的属于局部的信息,元素的细节不属于体系结构Interface:元素之间通过接口实现交互元素外部可见的特性该元素对其它元素来说:提供的服务,需要的服务,具备的性能特性,容错能力,共享资源的使用等元素的某些不容忽视的行为那些影响了其它元素的设计和实现的行为那些影响了整个系统可接受程度的行为,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,对软件体系结构的理解,每一个系统都有一个体系结构每个系统都是由元素以及元素之间的关系组成最简单的例子:一个系统就是由一个元素组成如果不明确地开发一个体系结构,那么你仍然拥有一个只是可能不是你喜欢或者期望的系统有多个结构stuctures和相应的视图View类比于建筑,对同一栋大楼,承包商、设计师、室内设计人员、庭院设计人员、电工、最终用户都有不同的理解任何一个结构视图只能表示体系结构的部分内容,不能与体系结构等同,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.8.2 软件体系结构三要素,软件设计的一个目标是建立软件的体系结构表示,将这个表示当作一个框架,从事更详细的设计活动。软件体系结构的三要素是:程序构件(模块)的层次结构构件之间交互的方式数据的结构 在软件体系结构设计中应保持的几个性质:结构:定义系统的构件,以及这些构件打包的方式和相互交互的方式。附属功能:描述设计出来的体系结构如何实现对功能、性能、可靠性、安全性、适应性,以及其它的系统需求 可复用:设计应能复用体系结构中的构造块,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.8.3 软件构件的分类,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.8.4 构件的调用方式,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.8.5 软件体系结构风格,软件体系结构设计的一个核心问题是能否使用重复的体系结构模式。基于这个目的,学者们开始研究和实践软件体系结构的风格和类型问题。软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,使用软件结构风格带来的好处,促进设计重用带来巨大的代码重用采用例行的结构,将使系统组成更易于被他人理解使用标准化的风格有益于系统的互操作性采用了某种体系结构风格的设计,通常允许专门的、此风格特有的体系结构分析,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,对体系结构风格的研究点,构件和连接件的类型是什么拓扑结构风格的不变性是什么常见例子是什么使用此风格的优缺点是什么,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.8.5.1 体系结构风格的四要素,体系结构风格具有四个主要元素,即提供一个词汇表、定义一套配置规则、定义一套语义解释原则和定义对基于这种风格的系统所进行的分析。体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。对软件体系结构风格的研究和实践促进了对设计的重用,一些经过实践证实的解决方案也能可靠地用于解决新的问题。体系结构风格的不变部分使不同的系统可以共享同一个实现代码。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.8.5.2 管道和过滤器风格,在管道过滤器(pipe and filter)风格最早出现在Unix系统中,它适用于对有序数据进行一系列已经定义的独立计算的应用程序。构件:在管道和过滤器风格中,构件被称为过滤器(filter)。它对输入流进行处理、转换,处理后的结果在输出端流出。而且,这种计算处理方式是递进的,所以可能在全部的输入接受完之前就开始输出。此外,系统中可以并行地使用过滤器。连接件:连接件位于过滤器之间,起到信息流的导管作用,被称为管道(pipe)。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,优点,结构简单系统的行为是所有过滤器行为的组合;系统易于维护和增强增加新的过滤器;替换旧的;支持复用过滤器仅与输入输出端口的数据相关;支持并发各过滤器可以并发运行;方便系统分析允许对运行吞吐量、死锁等问题的分析,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,缺点,容易导致批处理风格的系统设计不适合交互式的应用在处理两个独立但是相关的流之间的同步时可能会遇到困难同实现有关:过滤器之间的数据传输率较低,而且每个过滤器都要做类似的数据打包和解包工作,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.8.5.3 调用和返回风格,调用/返回风格的体系结构在过去的30年之间占有重要的地位,是大型软件开发中的主流风格的体系结构。主/子程序风格的体系结构 对象风格的体系结构 分层风格的体系结构,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,主/子程序风格的体系结构,这种风格的主要目的是将程序划分为若干个小片段,从而使程序的可更改性大大提高。这种风格有一定的层次性,主程序位于一层,下面可以再划分一级子程序,二级子程序甚至更多。这种风格是单线程控制的,同一时刻只有一个孩子结点的子程序可以得到父亲结点的控制。该风格的特点:由于单线程控制,计算的顺序得以保障。并且有用的计算结果在同一时刻只会产生一个。可以直接由程序设计语言来支持子程序的正确性与它调用的子程序的正确性有关。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,优点,支持广泛是程序设计语言中最基本的表现形式,几乎所有的语言都支持,并以函数、过程、库、包等形式出现支持复用程序中需要多次执行的代码,可以使用函数或子过程的形式,提高代码的使用率易于理解和维护合理的组织子程序和恰当的子程序命名方法,为代码的理解和维护提供了方便,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,缺点,难以表达构件之间的复杂连接关系,直观的连接关系只是过程之间的调用关系软件规模增长时,造成代码可维护性和易理解性变差可复用的层次低,难以在设计层或体系结构层次上形成复用。基于过程调用和函数的复用,大都是一些科学计算和基本数据结构的经典算法。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,对象风格的体系结构,这种风格建立在数据抽象和面向对象的基础上,数据的表示方法和它们的相应操作封装在一个抽象数据类型或对象中。对象是一种被称作管理者的构件,由它负责保持资源的完整性。对象是通过函数和过程调用来交互的。对象抽象使得构件和构件之间的操作以黑箱的方式进行。封装性使得细节内容对外部环境得以良好的隐藏。对象之间的访问是通过方法调用来实现的。考虑操作和属性的关联性,封装完成了相关功能和属性的包装,并由对象来对它们进行管理。使用某个对象提供的服务并不需要知道服务内部是如何实现的,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,优点,提高软件生产力利用封装、继承、聚合提高生产力对象的内部实现容易修改因为对象对其它对象隐藏了它的数据表示,所以可以改变一个对象的数据表示,而不影响其它的对象;,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,缺点,一个功能由多个对象协调工作来实现,使得系统可能难以理解;此外对象的海洋需要额外的结构来容纳。为了使一个对象和另一个对象通过方法调用等进行交互,必须知道对象的标识。只要一个对象的标识改变了,就必须修改所有其它明确调用它的对象。不同对象的操作关联性弱,当两个对象同时访问一个对象时,可能会引起副作用,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,分层风格的体系结构,将系统组织成一个层次结构,每一层为上层提供服务,并作为下层的客户端。这种风格支持基于可增加抽象层的设计。这样,允许将一个复杂问题分解成一个增量步骤序列的实现。由于每一层最多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,同样为软件复用提供了强大的支持。最典型的分层体系结构就是OSI和TCP/IP网络通信协议。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,优点,支持抽象程度递增的系统设计设计者可以把一个复杂系统按照递增的步骤进行分解。支持功能扩充和修改因为每一层之多和相邻的上下层交互,因此功能的改变最多影响相邻的上下层。支持灵活的实现和重用只要提供的服务接口定义不变,同一层的不同实现可以交换使用。这样,就可以定义一组标准的接口,而允许各种不同的实现方法。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,缺点,并不是每个系统都可以很容易地划分为层次结构,甚至即使一个系统的逻辑结构是层次化的,设计者出于对于系统性能的考虑,往往把一些低级和高级的功能综合起来。效率的降低。由分层风格构成的系统,运行效率往往低于整体结构。在上层中的服务如果有很多依赖于最底层,则相关的数据必须通过中间层的若干次转化,才能传到。难于认可合适的、正确的层次抽象方法:层次太少,分层不能完全发挥这种风格的可重用性、可更改性、可移植性上的潜力。层次过多,则引入不必要的复杂性和层间隔离冗余以及层间传输的开销目前,没有可行的广为人们认可的层次粒度的确定和层任务的分配方法。,2008 BUPT TSEG 北京邮电大学 通信软件工程中心,6.8.5.4 基于事件的风格,在此风格的系统结构中,构件并不直接调用一个过程,而是声明或广播一个或多个事件。构件的接口不仅提供一个过程的集合,也提供一个事件的集合。这些过程既可以用一般的方式调用,也可能被注册为与某些事件相关。构件可以声明或广播一个或多个事件,或者向系统注册用以表明它希望响应一个或多个事件。典型应用为守护进程。,这种风格适用于设计低耦合构件集合的应用程序,其中每个构件完成一定的操作,并可能

    注意事项

    本文(软件工程模型与方法课件.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开