软件体系结构Chap基本概念分析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
动态连接性:连接的动态约束,指连接件对于不同的所连接构件实施不同的动态 处理方法的能力。
请求响应特性:响应的并发性、时序性、正确协调多个构件交互请求的逻辑关系 和时序关系。
2、连接件的描述 用Wright体系结构语言描述的一个客户服务器结构: Type C-S Is Connector Role C: Start= xC x.request xC x.result Start∨√ Role S: Start= yS S.Invoke yS y.return Start∨√ Behavior Start = xC x.request yS y.Invoke yS y.return xC x.result Start∨√ End C-S
• 组件是对数据和方法的简单封装。C++ Builder中,一个组件就是一个从TComponent派生出 来的特定对象。组件可以有自己的属性和方法。属性是组件数据的简单访问者。方法则是组 件的一些简单而可见的功能。
• 组件是C++ Builder环境中最令人激动的部分。使用组件可以实现拖放式编程、快速的属性 处理以及真正的面向对象的设计。VCL和CLX组件是C++ Builder系统的核心。
语义完整、语法正确、有可重用价值; 隐藏具体实现,只通过接口提供服务,构件的使用与它的开发、生产无关。
PS: 开发构件在结构上要考虑语义描述、通信接口和实现代码等三方面的复合体
• 构件与组件的区别: – 抽象视觉不同 组件是对客观世界基本实体的抽象,强调和实体的对应及对实体的建模。关注实体的 静态属性特征 构件是对客观世界的实体或实体联合提供的功能和服务的建模。关注实体的功能和服 务 – 可复用程度和复用机制 复用是构件的生命线 构件做为“零部件”,构件通过组合实现复用;继承是组件生 命线,组件通过继承来实现复用; – 粒度不同 构件要包含完整的功能,组件是协作来完成这个构件的功能;构件的粒度大于组建的 粒度
有限制的构件:提供接口,但用一定的前提条件,装配过程中可能产生资源冲突、 覆盖等影响,使用时需要测试,如面向对象的基础类库等;
适应性构件:通过包装或接口技术,处理了不兼容性和资源冲突等因素,可直接使 用如ActiveX等;
3、构件外部形态上的分类(续):
装配的构件:可装配在操作系统、数据库管理系统的不同层次上,使用胶水 代码(glue code)连接使用;
ADL构件描述示例
用Rapide体系结构语言描述的客户服务器结构: Type App Is Interface Public action Results (Msg:String) /*提供的功能*/ Extern action Receive (Msg:String) /*需要的功能*/ Behavior
• 领域构件是在某个具体领域范围内适用的构件,按其在体系架构中所处的位置分为门户类、 应用类、应用支撑类以及业务实体管理类构件等。领域构件的描述要基于在领域范围内形成 的标准规范、数据模型等知识,以更好的实现领域范围内的重用。
• 通用构件是指在各应用领域都适用的构件,包括打印类、安全类、日志类、日期类、数据转 换类、权限类、统计分析类等等。通用构件的描述可以参考国际上的标准的构件描述模型如 WSDL,BIDM等。
框架 模式 中间件 构件 组件 模块
1.2.2 构件管理
构件管理是构件重用的基础,包括构件描述、构件分类、构件库组织(存储、检索、 提取)、人员及权限管理;
管理需要描述构件的信息:实现方式、实现体、注释、生产者、生产日期、大小、价 格、版本、关联构件,等等。
1、使用构件需要的描述信息可分为: 计算功能:构件所实现的整体功能; 额外功能特性:构件的执行效率、处理能力、环境假设和整体特性; 结构特性:描述特定构件如何与其他构件组织在一起,构成整个系统的信息; 家族特性:描述相同或相关门类的构件之间的关系;
可修改的构件:通过版本替换修改错误,增加功能。可利用重新“包装”或 写接口实现构件的替换。
4、构件组织: 构件组织的要求 :
支持构件库的增加、删除、修改等维护操作; 支持精确和模糊查找; 支持按功能或行为进行比较和查找; 对应用领域具有较强的描述能力和描述精度; 库管理员和用户容易使用。
– 通过遗产工程(legacy engineering),将具有潜在重用价值的构件提取出来;
2、基于构件的软件开发(续)
– 从市场上购买现成的商业构件COTS (Commercial Off-The-Shell);
– 开发新的符合要求的构件;
• 一个企业或组织在进行以上决策时,须考虑到不同方式获取构件的一次性成本和以后的 维护成本,做出最优的选择。
– 基于数据的组装技术:根据当前问题的核心数据结构设计框架,对各节点提取构 件;面向数据的设计方法;
6、构件组装(续)
– 面向对象的组装技术:面向对象的封装和继承特征使得它更适用于软件重用;
• 构造法:在子类中引进基类的对象作为子类的成员变量,使用库中基类的 属性和方法;
• 子类法:将新子类直接说明为库中基类的子类,通过继承和修改基类的属 性与行为完成新子类的定义。
通用构件
应用软件构件
领域构件
数统 打安 日 日 据 权 计 … 印全 志 期 转 限 分 … 类类 类 类 换 类 析 …
类类
投 投 投 投 投
投
赔 赔 பைடு நூலகம் 赔 赔 赔
赔 赔 赔 赔 赔 赔
赔 赔
赔 赔
赔 赔
赔 赔
赔 赔
赔 赔 赔 赔
赔 赔 赔 赔 赔
… … …
1.2.3 构件重用
1、面向领域工程的构件重用 – 领域是一组具有相似或相近软件需求的应用系统所覆盖的功能区域;领域工程是一组 相似或相近系统的应用工程建立基本能力和必备基础的过程; – 可重用信息具有领域特定性,依赖于特定问题及其解决方法; – 领域具有内聚性(cohesion)和稳定性(stability),内聚性使得可通过一组有限的、相 对较少的可重用信息来解决大量问题;稳定性使得获取的信息可以在较长的时间内多 次使用。
软件体系结构Chap基本概念分析
§1.1 概述 体系结构(Architecture) = 构件(Components) + 连接件(Connectors) + 约束(Constraints)
构件
1~*
端口
软件体系结构
1~*
连接件
1~*
角色
约束
通用风格
管道/过滤器
分层 ...... 解释器
图1.1 软件体系结构的基本概念
4、理解与评价构件 – 面向重用的构件开发:遵循公共软件工程规范,在文档中给出构件功能、行为、 领域知识、约束条件、修改方法等方面的详细说明; – CASE工具:扫描分析,提取相关信息入库; – 逆向工程:通过对构件的分析,结合领域知识,半自动地生成相应的设计信息; – 评价:给收集分析构件用户在实际重用该构件历史过程中的各种反馈信息来完成 :成功重用次数、修改量、性能度量。
§1.2 词汇定义 1.2.1 中间件:
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源 ,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。
中间件是一类软件,而非一种软件; 中间件不仅仅实现互连,还要实现应用之间的互操作; 中间件是基于分布式处理的软件,最突出的特点是其网络通信功能。 IDC提供
(MMsgs(App)) Receive(M)Results(M) End App
2、商业化构件的分类: 用户界面类、数据库类; 商务应用类; 工具类、网络通信类:如TCP/IP协议、图像压缩、加密算法; 核心技术类:语音识别、字符识别。
3、构件外部形态上的分类:
独立成熟的构件:经过多次实践检验,隐藏所有接口,只需按命令调用,如数据库 管理系统和操作系统等;
应用软件构件分类
应用软件构件是应用软件的构成元素,具有一定的功能和结构,并符合一定的标准,具有 一个或多个特定的功能,隐藏了具体的实现,并通过接口对外提供服务。应用软件构件按复 用范围的不同分为两大类,在多领域范围内进行复用的称之为通用应用软件构件(简称通用 构件),在单个领域内复用的称之为领域应用软件构件(简称领域构件)。
PS 组件开发者应该掌握的三项主要内容是:属性、事件和方法。
1.2.5 构件概念 构件是构件(component)是可复用的软件组成成份,可被用来构造其他软件。它可以是被封装的
对象类、类树、一些功能模块、软件框架(framwork)、软件构架(或体系结构Architectural) 、文档、分析件、设计模式(Pattern)等。构件分为构件类和构件实例,通过给出构件类的参数 ,生成实例,通过实例的组装和控制来构造相应的应用软件,这不仅大大提高了软件开发者的开 发效率,也大大提高了软件的质量。 特点:
§1.3 连接件
1、连接件的概念及特点 连接件(Connector)是用来建立构件间的交互以及支配这些交互规则的体系结构构造 模块; 构件之间的交互包括消息或信号量的传递,功能或方法调用,数据的传送和转换,构 件之间的同步关系、依赖关系,等等; 例:管道/过滤器体系结构中的管道,客户服务器体系结构中的通信协议或通信机制 。
软件体系结构 ::= 软件体系模型 | 软件体系风格 体系结构模型 ::= (构件,连接件,约束) 构件 ::= {端口1,端口2,……,端口n} 连接件 ::= {角色1,角色2,……,角色n} 约束 ::= {(端口i,角色j),……} 体系结构风格 ::= {管道过滤器,客户服务器,……,解释器}
连接件的接口称为角色(Role),由连接件与所连接构件之间的一组交互点构成;角色代表 了参与连接的构件的作用和地位,并体现了连接所具有的方向性,有主动/被动、请求/响 应之分;
连接件的主要特性:
可扩展性:允许动态改变被关联构件的集合和交互关系的性质;
• 连接件的主要特性(续): – 互操作性:被连接的构件通过连接件对其他构件进行直接或间接操作的能力;
3、检索与提取构件
– 基于关键字的检索:给出关键字,系统挑选合适构件;简单易行,但用户可能无 法用关键字描述想要得到的构件;
– 刻面检索法:构造查询、检索构件、对构件排序;易于实现相似构件查找,构造 查询困难;
– 超文本检索法:给出关键字,系统搜索匹配,给出构件说明;用户界面友好,但 易迷失方向,难于正确选择。
5、修改构件 – 构件开发应使构件的功能、行为和接口设计更为抽象化、通用化和参数化; – 通过对实参的选取来调整构件的功能和行为; – 借助设计信息和文档来理解、修改构件; – 改写实现方法,如Java到C++。
6、构件组装
– 基于功能的组装技术:对系统进行功能分解,对各个模块选择构件,通过子程序 调用和参数传递完成组装;首先应将目标软件系统分解为强内聚、松耦合的功能 模块;
1.2.2 模式(pattern)
• 模式就是解决某一类问题的方法论。你把解决某类问题的方法总结归纳到理论高度,那就是模式。 • Alexander给出的经典定义是:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了
该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相 同的工作。 • 模式有不同的领域,建筑领域有建筑模式,软件设计领域也有设计模式。当一个领域逐渐成熟的时候 ,自然会出现很多模式。
2、基于构件的软件开发(Component-Based Software Development: CBSD)
• 通常包括构件获取、构件分类和检索、构件评估、适应性修改以及将现有构件在新的语 境下组装成新的系统;
• 构件获取的主要途径: – 从现有构件中获得符合要求的构件,直接使用或作适应性修改;
1.2.3 框架(framework)
• 框架是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别 人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。
1.2.4 组件
• 简而言之,组件就是对象。C++ Builder中叫组件,Delphi中叫部件,而在Visual BASIC中 叫控件。
请求响应特性:响应的并发性、时序性、正确协调多个构件交互请求的逻辑关系 和时序关系。
2、连接件的描述 用Wright体系结构语言描述的一个客户服务器结构: Type C-S Is Connector Role C: Start= xC x.request xC x.result Start∨√ Role S: Start= yS S.Invoke yS y.return Start∨√ Behavior Start = xC x.request yS y.Invoke yS y.return xC x.result Start∨√ End C-S
• 组件是对数据和方法的简单封装。C++ Builder中,一个组件就是一个从TComponent派生出 来的特定对象。组件可以有自己的属性和方法。属性是组件数据的简单访问者。方法则是组 件的一些简单而可见的功能。
• 组件是C++ Builder环境中最令人激动的部分。使用组件可以实现拖放式编程、快速的属性 处理以及真正的面向对象的设计。VCL和CLX组件是C++ Builder系统的核心。
语义完整、语法正确、有可重用价值; 隐藏具体实现,只通过接口提供服务,构件的使用与它的开发、生产无关。
PS: 开发构件在结构上要考虑语义描述、通信接口和实现代码等三方面的复合体
• 构件与组件的区别: – 抽象视觉不同 组件是对客观世界基本实体的抽象,强调和实体的对应及对实体的建模。关注实体的 静态属性特征 构件是对客观世界的实体或实体联合提供的功能和服务的建模。关注实体的功能和服 务 – 可复用程度和复用机制 复用是构件的生命线 构件做为“零部件”,构件通过组合实现复用;继承是组件生 命线,组件通过继承来实现复用; – 粒度不同 构件要包含完整的功能,组件是协作来完成这个构件的功能;构件的粒度大于组建的 粒度
有限制的构件:提供接口,但用一定的前提条件,装配过程中可能产生资源冲突、 覆盖等影响,使用时需要测试,如面向对象的基础类库等;
适应性构件:通过包装或接口技术,处理了不兼容性和资源冲突等因素,可直接使 用如ActiveX等;
3、构件外部形态上的分类(续):
装配的构件:可装配在操作系统、数据库管理系统的不同层次上,使用胶水 代码(glue code)连接使用;
ADL构件描述示例
用Rapide体系结构语言描述的客户服务器结构: Type App Is Interface Public action Results (Msg:String) /*提供的功能*/ Extern action Receive (Msg:String) /*需要的功能*/ Behavior
• 领域构件是在某个具体领域范围内适用的构件,按其在体系架构中所处的位置分为门户类、 应用类、应用支撑类以及业务实体管理类构件等。领域构件的描述要基于在领域范围内形成 的标准规范、数据模型等知识,以更好的实现领域范围内的重用。
• 通用构件是指在各应用领域都适用的构件,包括打印类、安全类、日志类、日期类、数据转 换类、权限类、统计分析类等等。通用构件的描述可以参考国际上的标准的构件描述模型如 WSDL,BIDM等。
框架 模式 中间件 构件 组件 模块
1.2.2 构件管理
构件管理是构件重用的基础,包括构件描述、构件分类、构件库组织(存储、检索、 提取)、人员及权限管理;
管理需要描述构件的信息:实现方式、实现体、注释、生产者、生产日期、大小、价 格、版本、关联构件,等等。
1、使用构件需要的描述信息可分为: 计算功能:构件所实现的整体功能; 额外功能特性:构件的执行效率、处理能力、环境假设和整体特性; 结构特性:描述特定构件如何与其他构件组织在一起,构成整个系统的信息; 家族特性:描述相同或相关门类的构件之间的关系;
可修改的构件:通过版本替换修改错误,增加功能。可利用重新“包装”或 写接口实现构件的替换。
4、构件组织: 构件组织的要求 :
支持构件库的增加、删除、修改等维护操作; 支持精确和模糊查找; 支持按功能或行为进行比较和查找; 对应用领域具有较强的描述能力和描述精度; 库管理员和用户容易使用。
– 通过遗产工程(legacy engineering),将具有潜在重用价值的构件提取出来;
2、基于构件的软件开发(续)
– 从市场上购买现成的商业构件COTS (Commercial Off-The-Shell);
– 开发新的符合要求的构件;
• 一个企业或组织在进行以上决策时,须考虑到不同方式获取构件的一次性成本和以后的 维护成本,做出最优的选择。
– 基于数据的组装技术:根据当前问题的核心数据结构设计框架,对各节点提取构 件;面向数据的设计方法;
6、构件组装(续)
– 面向对象的组装技术:面向对象的封装和继承特征使得它更适用于软件重用;
• 构造法:在子类中引进基类的对象作为子类的成员变量,使用库中基类的 属性和方法;
• 子类法:将新子类直接说明为库中基类的子类,通过继承和修改基类的属 性与行为完成新子类的定义。
通用构件
应用软件构件
领域构件
数统 打安 日 日 据 权 计 … 印全 志 期 转 限 分 … 类类 类 类 换 类 析 …
类类
投 投 投 投 投
投
赔 赔 பைடு நூலகம் 赔 赔 赔
赔 赔 赔 赔 赔 赔
赔 赔
赔 赔
赔 赔
赔 赔
赔 赔
赔 赔 赔 赔
赔 赔 赔 赔 赔
… … …
1.2.3 构件重用
1、面向领域工程的构件重用 – 领域是一组具有相似或相近软件需求的应用系统所覆盖的功能区域;领域工程是一组 相似或相近系统的应用工程建立基本能力和必备基础的过程; – 可重用信息具有领域特定性,依赖于特定问题及其解决方法; – 领域具有内聚性(cohesion)和稳定性(stability),内聚性使得可通过一组有限的、相 对较少的可重用信息来解决大量问题;稳定性使得获取的信息可以在较长的时间内多 次使用。
软件体系结构Chap基本概念分析
§1.1 概述 体系结构(Architecture) = 构件(Components) + 连接件(Connectors) + 约束(Constraints)
构件
1~*
端口
软件体系结构
1~*
连接件
1~*
角色
约束
通用风格
管道/过滤器
分层 ...... 解释器
图1.1 软件体系结构的基本概念
4、理解与评价构件 – 面向重用的构件开发:遵循公共软件工程规范,在文档中给出构件功能、行为、 领域知识、约束条件、修改方法等方面的详细说明; – CASE工具:扫描分析,提取相关信息入库; – 逆向工程:通过对构件的分析,结合领域知识,半自动地生成相应的设计信息; – 评价:给收集分析构件用户在实际重用该构件历史过程中的各种反馈信息来完成 :成功重用次数、修改量、性能度量。
§1.2 词汇定义 1.2.1 中间件:
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源 ,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。
中间件是一类软件,而非一种软件; 中间件不仅仅实现互连,还要实现应用之间的互操作; 中间件是基于分布式处理的软件,最突出的特点是其网络通信功能。 IDC提供
(MMsgs(App)) Receive(M)Results(M) End App
2、商业化构件的分类: 用户界面类、数据库类; 商务应用类; 工具类、网络通信类:如TCP/IP协议、图像压缩、加密算法; 核心技术类:语音识别、字符识别。
3、构件外部形态上的分类:
独立成熟的构件:经过多次实践检验,隐藏所有接口,只需按命令调用,如数据库 管理系统和操作系统等;
应用软件构件分类
应用软件构件是应用软件的构成元素,具有一定的功能和结构,并符合一定的标准,具有 一个或多个特定的功能,隐藏了具体的实现,并通过接口对外提供服务。应用软件构件按复 用范围的不同分为两大类,在多领域范围内进行复用的称之为通用应用软件构件(简称通用 构件),在单个领域内复用的称之为领域应用软件构件(简称领域构件)。
PS 组件开发者应该掌握的三项主要内容是:属性、事件和方法。
1.2.5 构件概念 构件是构件(component)是可复用的软件组成成份,可被用来构造其他软件。它可以是被封装的
对象类、类树、一些功能模块、软件框架(framwork)、软件构架(或体系结构Architectural) 、文档、分析件、设计模式(Pattern)等。构件分为构件类和构件实例,通过给出构件类的参数 ,生成实例,通过实例的组装和控制来构造相应的应用软件,这不仅大大提高了软件开发者的开 发效率,也大大提高了软件的质量。 特点:
§1.3 连接件
1、连接件的概念及特点 连接件(Connector)是用来建立构件间的交互以及支配这些交互规则的体系结构构造 模块; 构件之间的交互包括消息或信号量的传递,功能或方法调用,数据的传送和转换,构 件之间的同步关系、依赖关系,等等; 例:管道/过滤器体系结构中的管道,客户服务器体系结构中的通信协议或通信机制 。
软件体系结构 ::= 软件体系模型 | 软件体系风格 体系结构模型 ::= (构件,连接件,约束) 构件 ::= {端口1,端口2,……,端口n} 连接件 ::= {角色1,角色2,……,角色n} 约束 ::= {(端口i,角色j),……} 体系结构风格 ::= {管道过滤器,客户服务器,……,解释器}
连接件的接口称为角色(Role),由连接件与所连接构件之间的一组交互点构成;角色代表 了参与连接的构件的作用和地位,并体现了连接所具有的方向性,有主动/被动、请求/响 应之分;
连接件的主要特性:
可扩展性:允许动态改变被关联构件的集合和交互关系的性质;
• 连接件的主要特性(续): – 互操作性:被连接的构件通过连接件对其他构件进行直接或间接操作的能力;
3、检索与提取构件
– 基于关键字的检索:给出关键字,系统挑选合适构件;简单易行,但用户可能无 法用关键字描述想要得到的构件;
– 刻面检索法:构造查询、检索构件、对构件排序;易于实现相似构件查找,构造 查询困难;
– 超文本检索法:给出关键字,系统搜索匹配,给出构件说明;用户界面友好,但 易迷失方向,难于正确选择。
5、修改构件 – 构件开发应使构件的功能、行为和接口设计更为抽象化、通用化和参数化; – 通过对实参的选取来调整构件的功能和行为; – 借助设计信息和文档来理解、修改构件; – 改写实现方法,如Java到C++。
6、构件组装
– 基于功能的组装技术:对系统进行功能分解,对各个模块选择构件,通过子程序 调用和参数传递完成组装;首先应将目标软件系统分解为强内聚、松耦合的功能 模块;
1.2.2 模式(pattern)
• 模式就是解决某一类问题的方法论。你把解决某类问题的方法总结归纳到理论高度,那就是模式。 • Alexander给出的经典定义是:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了
该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相 同的工作。 • 模式有不同的领域,建筑领域有建筑模式,软件设计领域也有设计模式。当一个领域逐渐成熟的时候 ,自然会出现很多模式。
2、基于构件的软件开发(Component-Based Software Development: CBSD)
• 通常包括构件获取、构件分类和检索、构件评估、适应性修改以及将现有构件在新的语 境下组装成新的系统;
• 构件获取的主要途径: – 从现有构件中获得符合要求的构件,直接使用或作适应性修改;
1.2.3 框架(framework)
• 框架是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别 人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。
1.2.4 组件
• 简而言之,组件就是对象。C++ Builder中叫组件,Delphi中叫部件,而在Visual BASIC中 叫控件。