软件构造(精)课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《软件构造(精)课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 构造 课件
- 资源描述:
-
1、 软件构造软件构造陈旻MinkeyCHEN Kunming College Software-Engineering2“建筑体系结构建筑体系结构”MinkeyCHEN Kunming College Software-Engineering3“计算机体系结构”定义是1964年C. M. Amdahl在介绍IBM 360系统时提出的:计算机体系结构是程序员所看到的计算机的属性,即概念性结构与功能特性。“软件体系结构”的概念是20世纪90年代中期David Garlan和Mary Shaw在An Introduction to Software Architecture中提到的。http:/www
2、.cs.utexas.edu/users/EWD/http:/www.cs.utexas.edu/users/EWD/ewd01xx/EWD196.PDFMinkeyCHEN Kunming College Software-Engineering4 软件体系结构是一个软件系统的高层结构,它高度抽象,超越了算法和数据结构,基本着眼点是系统结构和需求与实现之间的交互,是一个用于理解系统级目标的框架。 Mary Shaw和David Garlan认为,软件体系结构是软件设计过程中,超越计算中的算法设计和数据结构设计的一个层次。体系结构问题包括各方面的组织和全局控制结构,通信协议同步,数据存取,给设
3、计元素分配特定功能,设计元素的组织,规模和性能,在各设计方案间进行选择等。 MinkeyCHEN Kunming College Software-Engineering5 软件体系结构对软件生命周期中的各个阶段以及项目的管理有着重要的影响。体系结构设计是基于需求分析的一个迭代的过程,这就不可避免地会与需求分析阶段进行交互。体系结构的设计又是后续阶段详细设计的基础。在开发阶段,开发人员正确地理解系统的体系结构是开发工作顺利进行的前提。在测试阶段,体系结构对测试起指导作用。在维护阶段,维护中的大量时间都花费在对现存代码的理解上,如果原始的设计结构能够得到清楚和明确的表达,特别是高层次的表达,就可
4、以大大减少花在这方面的时间,而如果不知道系统的体系结构则使维护工作很难进行。对于一些已经存在但是不知其体系结构的系统,甚至有必要进行体系结构重构。另外,体系结构对于项目的组织管理也具有重要的意义,合理的体系结构设计还有利于开发任务在开发人员之间的分配,有利于开发人员之间关系的协调。 MinkeyCHEN Kunming College Software-Engineering6综上所述,软件体系结构是整个软件设计成功的基础和关键所在:l软件体系结构是软件开发中各种角色之间进行交流的手段软件体系结构是软件开发中各种角色之间进行交流的手段l软件体系结构是早期设计决策的体现软件体系结构是早期设计决策
5、的体现l软件体系结构制约着软件的质量属性软件体系结构制约着软件的质量属性l软件体系结构是可重用的模型软件体系结构是可重用的模型l软件体系结构影响着开发和维护组织的组织结构软件体系结构影响着开发和维护组织的组织结构l软件体系结构为软件系统的整个开发过程都提供了有力的软件体系结构为软件系统的整个开发过程都提供了有力的支持支持MinkeyCHEN Kunming College Software-Engineering71 1、软件体系结构研究的主要内容、软件体系结构研究的主要内容v软件体系结构描述语言 v体系结构描述构造与表示 v体系结构的设计、分析与验证 v体系结构发现、演化与重用 v基于体系结
6、构的软件开发方法 v特定领域的软件体系结构 v软件体系结构支持工具 v软件产品线体系结构 MinkeyCHEN Kunming College Software-Engineering8(1 1)软件体系结构描述语言)软件体系结构描述语言软件体系结构描述语言(Architecture Description Language,简称为ADL)是一种形式化语言,它在底层语义模型的支持下,为软件系统的概念体系结构建模提供了具体的语法和概念框架。基于底层语义的工具为软件体系结构的表示、分析、演化、细化、设计过程等提供支持,包括构件、连接件和约束三个基本元素。主要的体系结构描述语言有C2,UniCon,
7、MetaH,Aesop,SADL,Rapide,Wright等。ADL的目的就是提供一种规范化的体系结构描述,以便与人交流,并能够用提供的工具对许多实例进行分析。 MinkeyCHEN Kunming College Software-Engineering9(2 2)体系结构描述构造与表示)体系结构描述构造与表示按照一定的描述方法,用体系结构描述语言对体系结构进行说明的结果则称为体系结构的表示,而将描述体系结构的过程称为体系结构构造。在体系结构描述方面,Kruchten提出的“4+1”模型是当今软件体系结构描述的一个经典范例,该模型由逻辑视图、开发视图、过程视图和物理视图组成,并通过场景将这
8、四种视图有机地结合起来,比较细致地描述了需求和体系结构之间的关系。而Booch从UML的角度出发给出了一种由设计视图、过程视图、实现视图和部署视图,再加上一个用例视图构成的体系结构描述模型。IEEE于1995年成立了体系结构工作组,综合了体系结构描述研究的成果,并参考业界的体系结构描述的实践,起草了体系结构描述标准IEEE P1471。MinkeyCHEN Kunming College Software-Engineering10(3 3)体系结构的设计、分析与验证)体系结构的设计、分析与验证生成一个满足软件需求的体系结构的过程即为体系结构设计。体系结构设计生成一个满足软件需求的体系结构的过
9、程即为体系结构设计。体系结构设计的本质在于:将系统分解成相应的组成成分,并将这些成分重新组装成一个的本质在于:将系统分解成相应的组成成分,并将这些成分重新组装成一个系统。软件体系结构设计是软件设计中非常重要的一个环节,软件开发过程系统。软件体系结构设计是软件设计中非常重要的一个环节,软件开发过程中只要需求和体系结构确定之后,这个软件基本上也就定型了。体系结构设中只要需求和体系结构确定之后,这个软件基本上也就定型了。体系结构设计有过程驱动方法和问题列表驱动方法。体系结构设计研究的重点内容之一计有过程驱动方法和问题列表驱动方法。体系结构设计研究的重点内容之一是体系结构风格,体系结构风格在本质上反映
10、了一些特定的元素按照特定的是体系结构风格,体系结构风格在本质上反映了一些特定的元素按照特定的方式组成一个特定的结构,该结构应有利于上下文环境中的特定问题的解决。方式组成一个特定的结构,该结构应有利于上下文环境中的特定问题的解决。体系结构是对系统的高层抽象,并只对感兴趣的属性进行建模。由于体系结体系结构是对系统的高层抽象,并只对感兴趣的属性进行建模。由于体系结构是在软件开发过程之初产生的,因此好的体系结构可以减少和避免软件错构是在软件开发过程之初产生的,因此好的体系结构可以减少和避免软件错误的产生和维护阶段的高昂代价。体系结构是系统集成的蓝本、系统验收的误的产生和维护阶段的高昂代价。体系结构是系
11、统集成的蓝本、系统验收的依据,体系结构本身需要分析与测试,以确定这样的体系结构是否满足需求。依据,体系结构本身需要分析与测试,以确定这样的体系结构是否满足需求。比较重要的体系结构分析(评估)方法有体系结构权衡分析方法比较重要的体系结构分析(评估)方法有体系结构权衡分析方法(Architecture Tradeoff Analysis Method,简称为,简称为ATAM)、软件体系结)、软件体系结构分析方法(构分析方法(Software Architecture Analysis Method,简称为,简称为SAAM)和中间设计积极评审法(和中间设计积极评审法(Active Reviews f
12、or Intermediate Design,简称,简称为为ARID)。)。 MinkeyCHEN Kunming College Software-Engineering11(4 4)体系结构发现、演化与重用)体系结构发现、演化与重用对于一个已经存在但是不知道其体系结构的软件系统,对其进行维护是一件很困难的事情,这时可以通过体系结构发现来解决这个问题。体系结构发现就是从己经存在的软件系统中提取出软件体系结构,这可以帮助维护人员理解系统,保证维护工作的顺利进行。由于系统需求、技术、环境、分布等因素的变化而最终导致软件体系结构的变动,称为软件体系结构演化。而体系结构重用是属于比代码重用更高级的设
13、计重用。重用是软件工程领域所倡导的有效技术之一,体系结构级的重用会导致大批构件的重用,不仅极大地提高了软件开发的效率、降低了软件开发的成本,而且对于提高多种软件质量都有很大的作用。 MinkeyCHEN Kunming College Software-Engineering12(5 5)基于体系结构的软件开发方法)基于体系结构的软件开发方法在本质上,软件体系结构是对软件需求的一种抽象解决方案。在引入了体系结构的软件开发之后,应用系统的构造过程变为“问题定义软件需求软件体系结构软件实现”,可以认为软件体系结构架起了软件需求和软件设计之间的一座桥梁。在基于构件和软件体系结构的软件开发逐渐成为主流
14、的开发方法的情况下,已经出现了基于构件的软件工程。MinkeyCHEN Kunming College Software-Engineering13(6 6)特定领域的软件体系结构)特定领域的软件体系结构特定领域的软件体系结构(Domain Specific Software Architecture,简称为DSSA)是一门以软件重用为核心,研究软件应用框架的获取、表示和应用等问题的软件方法学。DSSA将软件体系结构理论应用到具体领域,因为特定领域的应用具有相似的特征,所以可以借鉴领域中己经成熟的软件体系结构。通过特定领域的软件体系结构,可以实现解决方法在某个领域内的重用。MinkeyCHEN
15、 Kunming College Software-Engineering14(7 7)软件体系结构支持工具)软件体系结构支持工具几乎每一种软件体系结构描述语言都有相应的支持工具,如Unicon, Aesop等体系结构支持环境,C2的支持环境ArchStudio等。除了软件体系结构描述语言的支持工具外,还有一些基于软件体系结构的开发方法的支持工具,例如ABC(architecture-based component composition)是一种基于软件体系结构面向构件的软件开发方法,ABC-Tool就是ABC方法的支持工具。另外还有一些支持体系结构静态分析的工具、体系结构性能仿真工具等,但是
16、与其他成熟的软件开发环境相比,体系结构的支持工具还不是很实用。MinkeyCHEN Kunming College Software-Engineering15(8 8)软件产品线体系结构)软件产品线体系结构软件体系结构的开发是大型软件系统开发的关键环节,对于软件产品线的开发来说更是具有至关重要的作用。在这种开发生产中,基于同一个软件体系结构,可以创建具有不同功能的多个系统。在软件产品族之间共享体系结构和一组可重用的构件,可以降低开发和维护的成本。MinkeyCHEN Kunming College Software-Engineering162 SA2 SA的定义的定义MinkeyCHEN
17、Kunming College Software-Engineering17SASA的定义的定义v Booch, Rumbaugh, and Jacobson, 1999:An architecture is the set of significant decisions about the organization of a software system, the selection of the structural elements and their interfaces by which the system is composed, together with their be
18、havior as specified in the collaborations among those elements, the composition of these structural and behavioral elements into progressively larger subsystems, and the architectural style that guides this organization-these elements and their interfaces, their collaborations, and their composition
19、 (The UML Modeling Language User Guide, Addison-Wesley, 1999).v 体系结构是一系列重要决策的集合,这些决策与以下内容相关:软件的组织,构成系统的结构元素及其接口的选择,这些元素在相互协作中明确表现出的行为,这些结构元素和行为元素进一步组合构成的更大规模的子系统,和引导这一组织包括这些元素及其接口、它们的协作、它们的组合的体系结构风格。 MinkeyCHEN Kunming College Software-Engineering18SASA的定义的定义定义1: (BoochRumbaughJacobson定义) 软件体系结构组织,元
20、素,子系统,风格MinkeyCHEN Kunming College Software-Engineering19SASA的定义的定义定义2: (Bass定义) Bass等人在Software Architecture in Practice一书中提到,程序或计算系统的软件体系结构是系统的一个或多个结构,包括软件构件(components)、构件的外部可视属性(propenies)和构件之间的关系。 这里的外部可视属性,是指其他构件认为该构件所具备的特征,如所提供的服务、具有的性能特点、错误处理机制、共享资源的用法等。要注意的是,此定义中,特意未指明什么是构件,什么是关系。构件既可以是对象,也
21、可以是进程,还可以是函数库,或是数据库。 MinkeyCHEN Kunming College Software-Engineering20SASA的定义的定义定义3: (Shaw定义) 在第一届软件系统体系结构国际讨论会上,Mary Shaw对于当时术语使用的混乱情况予以了澄清。从会议论文中,Shaw整理出他们的定义和观点,并对当时的各种观点作了如下的分类: 结构模型;框架模型;动态模型;过程模型 。MinkeyCHEN Kunming College Software-Engineering21SASA的定义的定义(1)结构模型 结构模型认为,软件体系结构由构件、构件之间的连接和一些其他方
22、面组成。这些方面包括如下几类: 配置,风格。 约束,语义。 分析,属性。 原理,需求。(2)框架模型框架模型 框架模型的观点与框架模型的观点与结构模型相似,但其重结构模型相似,但其重点在于整个系统的连贯点在于整个系统的连贯结构结构(这种结构通常是唯这种结构通常是唯一的一的),这与重视其组成,这与重视其组成恰好相反。框架模型常恰好相反。框架模型常常以某种特定领域或某常以某种特定领域或某类问题为目标。类问题为目标。 MinkeyCHEN Kunming College Software-Engineering22SASA的定义的定义(3)动态模型 动态模型强调系统的行为质量。“动态”可以有多种含意
23、。它可以是指整个系统配置的变化也可以是指禁止预先激活了的通信或交互,还可以是指计算中表现中的动态特性,如改变数据的值。 (4)(4)过程模型过程模型 过程模型关注系统过程模型关注系统结构的构建及其步骤和结构的构建及其步骤和过程。在这一观点下,过程。在这一观点下,体系结构是所进行的一体系结构是所进行的一系列过程的结果。系列过程的结果。 MinkeyCHEN Kunming College Software-Engineering23SASA的定义的定义v Garlan and Shaw, 1993:.beyond the algorithms and data structures of the
展开阅读全文