软件体系结构(SA)概论
软件体系结构知识总结
![软件体系结构知识总结](https://img.taocdn.com/s3/m/0921fa82bceb19e8b8f6baf9.png)
第一部分-------填空,选择,判断1.软件工程三个要素:方法、工具和过程2.软件元素:程序代码、测试用例、设计文档、设计过程、需求分析文档3.构件分类:关键字分类刻画分类法和超文本组织法4.软件体系结构技术反战经历四个阶段(1)无体系结构设计阶段----以汇编语言进行小规模应用程序开发(2)萌芽阶段-----以控制流图和数据流图构成软件结构为特征(3)初期阶段-----出现了从不同侧面描述系统的结构模型,UML(4)高级阶段-----描述系统的高层抽象结构,出现“4+1”模型5.软件体系结构模型:结构模型、框架模型、动态模型、过程模型和功能模型。
6.“4+1”视图模型从五个不同的视角,包括逻辑试图,进程试图,物理视图,开发视图和场景视图来描述软件体系结构。
逻辑视图主要支持系统的功能需求,是系统提供给最终用户的服务。
通过抽象,封装和继承,可以用对象模型来代表逻辑视图,用类图来描述逻辑视图;开发视图也称模块视图,主要侧重于软件模块的组织和管理,主要考虑软件内部的需求,如软件开发的容易性、软件的重用等,通过系统输入输出关系的模型图和子系统图来描述,提供给编程人员的;进程视图侧重于系统的运行特性,主要关注非功能性的需求,如系统的性能和可用性。
进程视图强调并发性、分布性、系统集成性和容错能力管道和过滤器风格、客户/服务器风格等适合进程视图,提供给系统集成人员的;物理视图主要考虑如何把软件映射到硬件上,它通常考虑系统性能、规模、可靠性等,解决系统拓扑结构、系统安装、通信问题,提供给系统工程人员的。
而场景是那些重要系统活动的抽象,它使四个视图有机联系起来,是最重要的需求抽象,它可以帮助设计者找到系统结构的构件和他们之间的作用关系。
总之,逻辑视图和开发视图描述系统的静态结构,而进程视图和物理视图描述系统的动态结构。
软件体系结构的核心模型由五中元素组成:构件、连接件、配置、端口和角色。
7. 软件体系结构的核心模型由五中元素组成:构件、连接件、配置、端口和角色。
软件体系结构
![软件体系结构](https://img.taocdn.com/s3/m/2ee98f3367ec102de2bd89b9.png)
第21页
第一章 概述
软件体系结构的意义
1.5 软件体系结构的意义
软件体系结构是早期设计决策的体现:
明确了对系统实现的约束条件 决定了开发和维护组织的结构
制约着系统的质量属性
通过研究软件体系结构可以预测软件的质量 使推理和控制软件更新更加有效 有助于循序渐进的原型设计 可以作为培训的基础
《软件体系结构》 黑龙江大学计算机科学技术学院 版权所有© 2006-2007
《软件体系结构》 黑龙江大学计算机科学技术学院 版权所有© 2006-2007
第14页
第一章 概述
概念
构件(Component)
1.3 软件体系结构的概念和术语
构件是语义完整、语法正确和有重用价值的单位软件。 一般来说,任何在系统运行过程中承担一定功能、发挥一定
作用的软件体都可以看作是构件,譬如设备驱动程序、函数
模块;也可以是一个独立的软件,如数据库服务器。 连接件把不同的构件连接起来形成软件系统。它可以是过程
调用、管道、远程方法调用等等。
约束一般为构件连接时的规则、条件或方式。
《软件体系结构》 黑龙江大学计算机科学技术学院 版权所有© 2006-2007
第11页
第一章 概述
补充说明
1.2 软件体系结构的定义
第20页
第一章 概述
软件体系结构的意义
1.5 软件体系结构的意义
软件体系结构是风险承担者进行交流的手段:系统的
各个风险承担者(客户、项目管理人员、设计开发人 员、测试人员、集成人员)把软件体系结构作为各自
关心的不同方面的描述,并以此作为相互沟通,达成
共识的基础。
《软件体系结构》 黑龙江大学计算机科学技术学院 版权所有© 2006-2007
软件体系结构评估
![软件体系结构评估](https://img.taocdn.com/s3/m/3d951300cc1755270722086a.png)
计算机093 09416612 恽小燕软件体系结构评估近几年来,软件体系结构(Software Architecture ,SA) 成为软件工程发展的一个热门方向。
随着对软件体系结构研究的深入开展,逐渐形成了以软件系统的体系结构形式化描述、风格、建模、评估、软件产品线以及基于软件体系结构的软件开发过程等为主要研究内容的一个新领域。
对一个系统的体系结构进行评估,是为了在系统被构建之前预测它的质量,并不需要精确的评估结果,通过分析SA体系结构对于系统质量的主要影响,进而提出改进。
因此,软件体系结构评估的目的是分析潜在的风险,并检验设计中提出的质量需求。
本文主要讨论三种有代表性的方法,它们可以指导评估人员成功地对系统的体系结构进行评估。
这三种方法是: 基于场景的体系结构分析方法(SAAM) 、体系结构权衡分析方法(ATAM) 、体系结构级别上的软件维护预测(ALPSM) 。
1.主要的术语(1)软件体系结构定义:软件体系结构定义很多,本文采用为大多数人所接受的一种定义:“软件系统或计算系统的软件体系结构就是系统的一个或多个结构,它包括软件组件,这些组件的外部可见属性以及组件之间的相互关系”。
这个定义仅仅关注系统内在的方面,而大多数的分析方法都是基于这个定义的。
这个定义具有如下的含义:①SA 是一个或多个系统的抽象。
SA 以抽象的组件(Com2ponent) 来表示系统,这些组件具有外部可见属性,并且相互之间是有联系的,这种联系有时被称为连接件(Connector) 。
②SA 是一种可重用、可传递的系统抽象,而组件的细节部分不属于体系结构的范畴。
③系统由多个结构组成,通常也称为视图(View) 。
任何一个视图只能表示SA 的部分内容,而不是全部。
(2)质量属性质量属性是一个组件或一个系统的非功能性特征。
软件质量在IEEE 1061中定义,它体现了软件拥有所期望的属性组合的程度。
另一个标准ISO/IEC Draft 91262 1定义了一个软件质量模型。
软件体系结构
![软件体系结构](https://img.taocdn.com/s3/m/15e5de7a657d27284b73f242336c1eb91a373392.png)
1.2软件体系结构研究的内容和范畴
• 体系结构风格、设计模式和应用框架的概念是从不同的目的和出发点讨论
软件体系结构,它们之间的概念经常互相借鉴和引用。
1.3体系结构设计原则
• 抽象
• 分而治之
• 封装和信息隐藏
• 模块化
• 高内聚和低耦合
• 关注点分离
• 策略和实现的分离
• 接口和实现的分离
1.3体系结构设计原则
Filter将文件分离为音频流和视频流,AVI解码Filter对视频流进行解码并送往Video表现Filter,
由后者将各帧在显示器上显示,默认的DirectSound设备用DirectSound将音频流输
出。。
1.1what is SA ?
• 其次,体系结构的描述的作用好像一个框架,系
统属性在这个框架下进行扩充,并且,它在考察
设计出合适的体系结构。经验不丰富的设计师往往把注意力集中在“功能性
需求”而疏忽了“非功能性需求”,殊不知后者恰恰是最能体现设计水平的
地方。
高水平的设计师高就高在“设计出恰好满足客户需求的软件,并且使开
发方和客户方获取最大的利益,而不是不惜代价设计出最先进的软件。(以
设计住宅为例)…
对于软件系统而言,能够满足需求的设计方案可能有很多种,究竟该选
能力,新的、更大的、更复杂的问题又摆在人们的面前。
1.1what is SA ?
• 这种全局结构的设计和规划问题包括 全局组织
结构;全局控制结构;通信和同步以及数据存取
协议;规定设计元素的功能;设计元素的组合;
物理分布;规模和性能;演化的维度;设计方案
的选择等。
• 1随着软件系统的规模和复杂性不断增加,系统
软件体系结构—概述
![软件体系结构—概述](https://img.taocdn.com/s3/m/8212a7b865ce05087632137f.png)
软件体系结构目录第一章软件体系结构概述 (3)1.软件体系结构定义 (3)2.软件体系结构内容 (3)3.UML (4)4.抽象、接口、高内聚、低耦合常用概念 (4)第一章软件体系结构概述1.软件体系结构定义Architecture Styles,定义为根据结构组织模式构成的软件系统族,表达了部件和他们之间的关系。
例如客户/服务器(Client /Server)结构、浏览器/服务器(Browser/Server)结构等。
2.软件体系结构内容1.体系结构风格(Architecture Styles)体系结构风格是描述特定系统组织方式的惯用范例,强调组织模式和惯用范例。
组织模式即静态表述的样例,惯用范例则是反映众多系统共有的结构和语义。
通常,体系结构风格独立于实际问题,强调了软件系统中通用的组织结构,比如管道线,分层系统,客户机-服务器等等。
体系结构风格以这些组织结构定义了一类系统族。
2. 设计模式(Design Pattern)设计模式是软件问题高效和成熟的设计模板,模板包含了固有问题的解决方案。
设计模式可以看成规范了的小粒度的结构成分,并且独立于编程语言或编程范例。
设计模式的应用对软件系统的基础结构没有什么影响,但可能对子系统的组织结构有较大影响。
每个模式处理系统设计或实现中一种特殊的重复出现的问题。
例如,工厂模式,它为解决抽象部分和实现部分独立变化的问题提供了一种通用结构。
因此,设计模式更强调直接复用的程序结构。
3. 应用框架(Application Framework)应用框架是整个或部分系统的可重用设计,表现为一组抽象构件的集合以及构件实例间交互的方法。
可以说,一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法,它为构件复用提供了上下文(Context)关系。
在很多情况下,框架通常以构件库的形式出现,但构件库只是框架的一个重要部分。
第三章软件体系结构风格与模式
![第三章软件体系结构风格与模式](https://img.taocdn.com/s3/m/3a2d62908e9951e79a892741.png)
Software ArchitecturuepSAGroup
软件体系结构的风格和模式
1
建筑模式
SAGroupSAGroupSAGro upSAGroup
❖ Christopher Alexander, The Timeless Way of
Building, p247, 1979
8
SAGroupSAGroupSAGro
管道-过滤器风格特u性pSAGroup
❖ 过滤器是独立运行的构件
▪ 非临近的过滤器之间不共享状态 ▪ 过滤器自身无状态
❖ 过滤器对其处理上下连接的过滤器“无知”
▪ 对相邻的过滤器不施加任何限制
❖ 结果的正确性不依赖于各个过滤器运行的先后次序
▪ 各过滤器在输入具备后完成自己的计算。完整的计算过程包含 在过滤器之间的拓扑结构中。
12
SAGroupSAGroupSAGro
管道-过滤器风格优u点pSAGroup
❖ 管道-过滤器风格支持功能模块的复用
▪ 任何两个过滤器,只要它们之间传送的数据遵守共同的规约, 就可以相连接。每个过滤器都有自己独立的输入输出接口,如 果过滤器间传输的数据遵守其规约,只要用管道将它们连接就 可以正常工作。
Splitter
MergeAndSort
MergeAndSort
Merge
Sort
11
SAGroupSAGroupSAGro
管道-过滤器风格优u点pSAGroup
❖ 设计者可以将整个系统的输入、输出特性简单的理解为 各个过滤器功能的合成。
▪ 设计人员将整个系统的输入输出行为理解为单个过滤器行为的 叠加与组合。这样可以将问题分解,化繁为简。将系统抽象成 一个“黑箱”,其输入是系统中第一个过滤器的输入管道,输 出是系统中最后一个过滤器的输出管道,而其内部各功能模块 的具体实现对用户完全透明。
软件体系结构作业
![软件体系结构作业](https://img.taocdn.com/s3/m/90753e8ba0116c175f0e48b0.png)
软件体系结构作业第一章:软件体系结构概论1、基于构件的软件开发方法能够有效提高开发效率,简述在实际的项目中有哪些方式获得构件、如何管理以及重用构件?答:构件是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统;结构上,它是语义描述、通讯接口和实现代码的复合体。
在实际项目中获取构件的方式有:(1)从现有的构件中获取符合条件的构件,直接使用或做适应性修改,得到可重用的构建。
(2)通过遗留工程,将具有潜在重用价值的构件提取出来,得到可重用的构件。
(3)从市场上购买现成的构件,既COTS构件;(4)开发新的符合条件的构件。
管理构件的方法有:构件分类方法,关键字分类法,刻面分类法,超文本组织法,人员及权限管理。
其中关键字分类法和刻面分类法都是以数据库系统作为实现背景。
构件开发的目的是重用,为了让构件在新的软件项目中发挥作用,库的使用者必须完成以下工作:检索与提取构件,理解与评价构件,修改构件,构件组装。
其中检索与提取构件的方法有:基于关键字的检索,刻面检索法,超文本检索法,其他检索方法。
2、软件体系结构定义众多,你是如何理解软件体系结构的?软件体系结构在软件系统中有何作用?答:软件体系结构虽脱胎于软件工程,但其形成同时借鉴了计算机体系结构和网络体系结构中很多宝贵的思想和方法,最近几年软件体系结构研究已完全独立于软件工程的研究,成为计算机科学的一个最新的研究方向和独立学科分支。
随着软件系统规模越来越大、越来越复杂,整个系统的结构和规格说明显得越来越重要。
对软件体系结构的系统、深入的研究将会成为提高软件生产率和解决软件维护问题的新的最有希望的途径。
软件体系结构研究内容涉及软件体系结构的描述、风格、评估和形式化方法等,根本目的是解决好软件的重用、质量和维护问题。
软件体系结构有四个角度,它们从不同方面对系统进行描述:概念角度描述系统的主要构件及它们之间的关系;模块角度包含功能分解与层次结构;运行角度描述了一个系统的动态结构;代码角度描述了各种代码和库函数在开发环境中的组织。
高级软件工程10SA概述SA风格及实例.ppt
![高级软件工程10SA概述SA风格及实例.ppt](https://img.taocdn.com/s3/m/552292a6760bf78a6529647d27284b73f2423635.png)
1、为什么需要研究软件体系结构
规模增加 复杂性增加 需要演化
“算法+数据结构”对于软件的描述不全面
需要提高对软件总体结构的认识 构成成分、成分之间的关系
提供交流基础 反映高层设计 便于系统演化
1
2、什么是软件体系结构
对系统结构的总体设计与说明 是一种高层设计 关注三方面问题:构件、构件间关系、关系约束
(2)异构体系结构的复合 层次式 以某种体系结构实现的系统,其组成部分 内部可以是另一种体系结构,其连接部分 内部也可以具有体系结构。 对等式 系统以一种体系结构实现一个子系统, 以另外一种体系结构实现另一个子系统
28
(3)处理异构复合匹配问题的方法 不同构件之间不能协调工作的原因可能是它们
事先作了对数据表示、通信、包装、同步、语法等方 面的假设(统称形式)。
32
(1)主程序/子程序加共享数据
主控制程序
输入
循环移位
排序
输出
字符集 输入介质
索引
排序过的索引
输出介质
33
优点:
允许数据有效地表达 计算问题被划分到不同的模块中
缺点:
处理变化的能力不足 例如:数据存储格式的变化将影响 到几乎所有的模块
不易进行处理算法的改进与系统功能增强 对复用的支持不明显
34
当数据被修改时,计算体被隐式调用 交互是基于“主动数据”进行的
优点: 对功能增强的支持好 对复用的支持好
缺点: 难以控制隐式调用模块的处理顺序 占用空间资源较多
38
(4)管道流水线
输入介质 输入
循环移位
序列化
输出 输出介质
39
优点: 维护处理的直接性 支持复用 易于修改
软件体系结构SA概论
![软件体系结构SA概论](https://img.taocdn.com/s3/m/218faeb3760bf78a6529647d27284b73f24236a5.png)
架构设计
架构选择
根据需求分析的结果,选择合适的软件体系结构风格, 如分层架构、事件驱动架构等。
组件设计
设计软件系统的各个组件,包括硬件和软件组件,明 确组件之间的交互和通信方式。
数据设计
设计软件系统所需的数据结构,包括数据库设计、数 据流图等。
架构评估
性能评估
评估软件系统的性能指标,如响应时间、吞吐 量等,确保系统能够满足性能要求。
2
软件体系结构是软件系统的高级视图,描述了系 统的整体结构、功能、行为和交互。
3
软件体系结构不仅关注系统的技术细节,还关注 系统的非功能属性,如性能、可扩展性、可靠性 和安全性。
软件体系结构的重要性
提高软件系统的可维护性 和可重用性
良好的软件体系结构有助于降低系统的复杂 性,提高可维护性和可重用性,降低开发成 本。
客户端-服务器体系结构
02
将系统划分为客户端和服务器两部分,客户端负责用户界面和
请求处理,服务器负责数据存储和业务逻辑。
分布式系统体系结构
03
将系统划分为多个独立的节点,每个节点具有自己的处理能力
和存储能力,节点之间通过网络进行通信和协作。
02 软件体系结构的基本元素
组件与连接器
可重用组件
经过封装和测试的代码模块, 可以在多个项目中重复使用。
人工智能环境下的软件体系结构需要支持机器学习、 深度学习等算法,以及自然语言处理、计算机视觉等
技术,以实现更加智能化的应用。
人工智能环境下的软件体系结构需要与数据科学和知 识工程等技术相结合,以提高人工智能应用的可靠性
和可维护性。
THANKS FOR WATCHING
感谢您的观看
提升软件系统的质量
软件体系结构 ppt课件
![软件体系结构 ppt课件](https://img.taocdn.com/s3/m/343ad8f27f1922791688e848.png)
图A 播放AVI文件的Graph Filter图
上图中每个模块分别代表了不同的Filter,媒体文件Filter从硬盘读取AVI文件,AVI分离 Filter将文件分离为音频流和视频流,AVI解码Filter对视频流进行解码并送往Video表现Filter, 由后者将各帧在显示器上显示,默认的 DirectSound 设备用DirectSound将音频流输 2019 10 出。。
6
•
2019
1概述-软件危机的原因
• 软件复杂度越来越高 • 软件不仅仅是在规模上快速地发展扩大,而且其复 杂性也急剧地增加。软件产品的特殊性和人类智力的 局限性,导致人们无力处理“复杂问题”。 所谓“复杂问题”的概念是相对的,一旦人们采用 先进的组织形式、开发方法和工具提高了软件开发效 率和能力,新的、更大的、更复杂的问题又摆在人们 的面前。
2019
-
3
1概述
• 它是一种简单的、清楚的、完善的方式 形成的
• 软件工程师需要一种更好的视角来理解 软件,并试图找到一种新的方法来构建 更复杂的大型软件系统 • SA (software architecture)
• 一个简单程序到复杂系统软件的距离是 十年
2019 4
1概述-需求开发的主要困难
软件体系结构
刘兴
2019
计算机学院软件工程系
1
软件体系结构内容
• • • • • • • 1概述 2软件体系结构风格 3案例研究 4软件体系结构的分析与评估(略) 5流行的软件体系结构 6设计模式与软件架构 7企业架构师和设计师、企业软件架构简介
2
2019
1概述
• • • • 我们要学的这个是什么玩意? 我们为什么要学这个玩意? 我们将来会怎么干? 其他人是怎么玩的?
软件体系结构(51)
![软件体系结构(51)](https://img.taocdn.com/s3/m/89a8e6730c22590103029d5d.png)
5.2 软件体系结构动态模型
软件体系结构动态演化,不是简单地进行构件、 连接件的创建和删除,它需要确定体系结构变化的 起因,根据系统运行的状态决定体系结构变化的时 间,给出体系结构变化方案,从而确保系统正确、 完整地进行动态演化。因此,动态体系结构建模的 核心问题就是提供系统化的方法,描述体系结构动 态演化的诸多要素,从而能够全面地对动态体系结 构建模。动态体系结构建模时,具体需要考虑的问 题包括:
(7)动态体系结构规约的形式语义。不仅需要提供 体系结构动态演化的描述方法,用以完整地描述体系 结构动态演化,而且需要给出描述方法的形式语义, 从而能够支持体系结构动态演化的分析和仿真。
5.2.1 基于构件的动态系统结构模型
1、模型介绍 基于构件的动态体系结构模型
CBDA(Component Based Dynamic system Architecture model)支持运行系统的动态更新,它分 为三层:应用层、中间层和体系结构层。
5.1 动态软件体系结构概述
2、研究内容 现阶段,动态软件体系结构研究可分为两个部分:
1)体系结构设计阶段的支持。主要包括变化的 描述、根据变化如何生成修改策略、描述修改过程 、在高抽象层次保证修改的可行性以及分析、推理 修改所带来的影响等;
2)运行时刻基础设施的支持。主要包括系统体 系结构的维护、保证体系结构修改在约束范围内、 提供系统的运行时刻信息、分析修改后的体系结构 符合指定的属性、正确映射体系结构构造元素的变 化到实现模块、保证系统的重要子系统的连续执行 并保持状态、分析和测试运行系统等。
第五章 动态软件体系结构
SA在运行时发生的变化包括两类:
一类是软件内部执行所导致的体系结构改变。 比如,很多服务器端软件会在客户请求到达时创建 新的构件来响应用户的需求。某个自适应的软件系 统可能根据不同的配置状况采用不同的连接子来传 送数据;
第1章 SA概论
![第1章 SA概论](https://img.taocdn.com/s3/m/f0698d6c011ca300a6c39065.png)
Perry和Wolf 和
“未来的年代将是研究软件体系结构的时代 未来的年代将是研究软件体系结构的时代!” 未来的年代将是研究软件体系结构的时代
理解SA 理解SA
IEEE(The Institute of Electrical and Electronic Engineers) 1471
System系统 系统
SA: 2000- -
SA从辅助地位变成软件开发的核心 从辅助地位变成软件开发的核心 软件产品线(Bosch,2000)成为企业生存的 软件产品线 成为企业生存的 法宝 第一个标准IEEE1471(2000)诞生 第一个标准 诞生 UML2.0标准制定 标准制定 一批著作涌现(软件构架实践, 一批著作涌现(软件构架实践,Bass) ) 许多大学开设相关课程, 许多大学开设相关课程,架构师成为软件公 司最具吸引力的职位。 司最具吸引力的职位。
SA历史 历史
20世纪 年代以前 世纪70年代以前 世纪 年代以前,
汇编程序 系统规模较小,很少明确考虑系统结构 很少明确考虑系统结构,一般不存 系统规模较小 很少明确考虑系统结构 一般不存 在系统建模工作
70年代中后期 年代中后期, 年代中后期
结构化开发方法出现 软件开发中出现了概要设计与详细设计,而且主 软件开发中出现了概要设计与详细设计 而且主 要任务是数据流设计与控制流设计 软件结构已作为一个明确的概念出现
历史: 历史:David Parnas对SA的 对 的 贡献, 贡献,1970s
关于如何将一个系统分解成若干个元素以提高可维护性和 可重用性。 可重用性。
如果有一个基本原则的话必是 信息隐藏原则
关于只允许通过接口使用元素的原则 强调对软件系统中各结构进行考察, 强调对软件系统中各结构进行考察,并警告不得将这些结 构相互混淆 引入使用结构,该原则控制各元素之间的连接, 引入使用结构,该原则控制各元素之间的连接,以增强系 统的可扩展性, 统的可扩展性,并能够轻松地构造子集 基于组件开发的系统中错误处理和检测原则 将每个程序都看作是程序族中的一员。 将每个程序都看作是程序族中的一员。要充分利用各程序 的共同点。 的共同点。 认识到系统的结构影响着系统的质量
SA核心概念及其建模2
![SA核心概念及其建模2](https://img.taocdn.com/s3/m/7ba5bd705acfa1c7aa00ccfe.png)
房间布局图、电路图、管道图、等等;
A software architecture is a complex entity that cannot be described in a simple one-dimensional fashion (软件体系结构非 常复杂,无法用简单的一维模型加以描述). 多视图SA模型:从多个不同角度建立SA的模型,分别刻画SA 某一方面的性质。
软件体系结构及应用2sa核心概念及其建模21sa的核心概念22sa建模需求23sa多视图模型24sa的生命周期从一个较高的层次来考虑组成系统的构件构件之间的连接以及由构件与构件交互形成的拓扑结构这些要素应该满足一定的限制遵循一定的设计规则能够在一定的环境下进行演化
软件体系结构及应用2 SA核心概念及其建模
13
连接(CONNECTION)
连接(Connection):构件间建立和维护行为关联与信息传递的途径; 连接需要两方面的支持:
连接发生和维持的机制——实现连接的物质基础(连接的机制); 连接能够正确、无二义、无冲突进行的保证——连接正确有效的进行信息
交换的规则(连接的协议)。
简称“机制”(mechanism)和“协议”(protocol)。
系统、理论或现象的图解性的描述,用来描绘其已知的或推测性质的 特性,也用于深入研究它们的特点; 表示物理/生物/社会过程的模型,具有一组变量以及作用在这组变量 之上的逻辑或数量关系;
建立模型的目的: 提供一个理想的论证框架,应用逻辑和数学 工具,评估性能,并在多个类似的场景下进行推理。
Idealized means that model may make explicit assumptions that are known to be false in some detail (理想化:做出一些假设,忽略细节). Models are an important component of scientific theories (以建立科学理 论).
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 组件隐藏了具体的实现,只用接口提供 服务。
2018/8/9 软件体系结构(SA) 12
组件技术的三个主流
• 组件技术发展迅速,已形成三个主要流 派:
• IBM支持的CORBA • Sun的Java平台 • Microsoft的COM+。
2018/8/9
软件体系结构(SA)
13
组件的分类
• 如果把软件系统看成是组件的集合,那 么从组件的外部形态来看,构成一个系 统的组件可分为5类:
2018/8/9 软件体系结构(SA) 16
组件的分类
• 可修改的组件
• 可修改的组件可以进行版本替换。如果对原 组件修改错误、增加新功能,可以利用重新 “包装”或写接口来实现组件的替换。 • 这种组件在应用系统开发中使用得比较多。
2018/8/9
软件体系结构(SA)
17
组件的获取
• 组件获取可以有多种不同的途径:
2018/8/9 软件体系结构(用
• 指在两次或多次不同的软件开发过程中重复 使用相同或相近软件元素的过程。 • 软件元素包括程序代码、测试用例、设计文 档、设计过程、需求分析文档甚至领域知识。 • 这种可重用的元素称作软组件,可重用的软 件元素越大,其重用的粒度就越大。
2018/8/9 软件体系结构(SA) 10
软件组件
• 直观的理解组件
• 是指语义完整、语法正确和有可重用价值的 单位软件,是软件重用过程中可以明确辩识 的系统; • 是语义描述、通讯接口和实现代码的复合体。 • 是具有一定的功能,能够独立工作或能同其 它组件装配起来协调工作的程序体,组件的 使用同他的开发、生产无关。
软件体系结构(SA)概论
陈虔 mrchenq@
1、SA基础
• • • • SA基础; SA的地位; SA技术现状及发展趋势; SA建模;
2018/8/9
软件体系结构(SA)
2
研究背景
• 20世纪60年代末开始出现的“软件危机” • 软件组件和软件重用的推动 • 关于SA研究的兴起
2018/8/9
• • • • •
2018/8/9
独立而成熟的组件 有限制的组件 适应性组件 装配的组件 可修改的组件
软件体系结构(SA) 14
组件的分类
• 独立而成熟的组件
• 得到了实际运行环境的多次检验,它们隐藏 了所有接口,用户只需用规定好的命令进行 使用。如数据库管理系统和操作系统等。
• 有限制的组件
• 它们提供了接口,指出了使用的条件和前提, 这种组件在装配时,会产生资源冲突、覆盖 等影响,在使用时需要加以测试。例如,各 种面向对象对象程序设计语言中的基础类库 等。
2018/8/9 软件体系结构(SA) 7
软件工程
• 软件工程是用工程、科学和数学的原则与方法 研制、维护计算机软件的有关技术及管理方法。 包括三个要素:
• 方法。软件工程方法为软件开发提供了"如何做"的 技术,是完成软件工程项目的技术手段; • 工具。软件工具是人类在开发软件的活动中智力和 体力的扩展和延伸,为软件工程方法提供了自动的 或半自动的软件支撑环境; • 过程。软件工程的过程则是将软件工程的方法和工 具综合起来以达到合理、及时地进行计算机软件开 发的目的。
2018/8/9 软件体系结构(SA) 15
组件的分类
• 适应性组件
• 用封装和接口技术,把不兼容性、资源冲突 等进行了处理,可直接使用在各种环境中。 例如ActiveX等。
• 装配的组件
• 已经装配在操作系统、数据库管理系统或信 息系统不同层次上,使用胶水代码(Blue Code)就可以进行连接使用。 • 软件商提供的多数软件产品都属这一类。
2018/8/9
软件体系结构(SA)
9
软件重用的好处
• 可以减少软件开发活动中大量的重复性工作, 从而:
• 提高软件生产率 • 降低开发成本 • 缩短开发周期
• 由于软组件大都经过严格的质量认证,并在实 际运行环境中得到校验,因此,
• 重用软组件有助于改善软件质量。
• 大量使用软组件,软件的灵活性和标准化程度 也可望得到提高。
软件体系结构(SA)
3
关于软件危机
• 软件的先天不足 • 1968年在原西德加密施(Garmish)召开 的国际软件工程会议上被人们普遍认识 到。 • 软件工程的尴尬
2018/8/9
软件体系结构(SA)
4
从软件危机谈起
• 软件危机的表现
• • • • 软件成本日益增长 开发进度难以控制 软件质量差 软件维护困难
2018/8/9 软件体系结构(SA) 11
软件组件与类
• 从抽象程度来看
• 面向对象技术已达到了类级重用(代码重用), 是类封装。重用粒度太小,不足以解决异构 互操作和效率更高的重用。 • 组件将抽象的程度提到一个更高的层次,它 对一组类的组合进行封装,并代表完成一个 或多个功能的特定服务,也为用户提供了多 个接口。
• 软件危机的程度日益加剧,现有的软件工程方法显 得力不从心。 • 对于大规模复杂软件系统来说,系统结构设计和规 格说明比算法和数据结构的选择更重要。 • 对SA的系统和深入的研究将会成为提高软件生产率 和解决软件维护问题的最有希望的途径之一。
• 从现有组件中获得符合要求的组件,直接使 用或作适应性修改,得到可重用的组件; • 通过遗传工程,将具有潜在重用价值的组件 提取出来,得到可重用的组件; • 从市场上购买现成的商业组件,即COTS组 件; • 开发新的符合要求的组件。
2018/8/9 软件体系结构(SA) 18
SA的兴起
• 1960’s的软件危机引发了软件工程的研究。 • 早期的软件工程将软件设计的重点放在数据结 构和算法的选择上。 • 如今,系统的结构和规格说明显得更重要
2018/8/9
软件体系结构(SA)
5
软件危机的原因
• • • • 用户需求不明确 缺乏正确的理论指导 软件规模越来越大 软件复杂度越来越高
2018/8/9
软件体系结构(SA)
6
如何克服软件危机
• 人们面临的不光是技术问题,更重要的 是管理问题。管理不善必然导致失败。 • 用现代工程的概念、原理、技术和方法 进行计算机软件的开发、管理和维护。 • 软件工程因此而诞生。它在软件开发方 法、工具、管理等方面的应用大大缓解 了软件危机造成的被动局面。