构件化软件-软件领域的发展课件_第1页
构件化软件-软件领域的发展课件_第2页
构件化软件-软件领域的发展课件_第3页
构件化软件-软件领域的发展课件_第4页
构件化软件-软件领域的发展课件_第5页
已阅读5页,还剩149页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

构件化软件ComponentSoftware2019-8-31谢谢您的观赏1ComponentSoftware2019-8-31谢谢您RoadmapPart1:OO基础OO基本原理DesignbyContract异常处理;并发对象;持久对象Part2:OO设计原则和设计模式敏捷软件开发方法OO设计原则OO设计模式应用框架技术AOP2019-8-31谢谢您的观赏2RoadmapPart1:OO基础2019-8-31谢谢RoadmapPart3:构件技术构件化软件分布对象服务计算2019-8-31谢谢您的观赏3RoadmapPart3:构件技术2019-8-31谢谢摘要引言构件构件技术构件的组合2019-8-31谢谢您的观赏4摘要引言2019-8-31谢谢您的观赏4摘要引言构件构件技术构件的组合2019-8-31谢谢您的观赏5摘要引言2019-8-31谢谢您的观赏5引言2019-8-31谢谢您的观赏6Softwareshouldbecomponentizedbuiltfromprefabricatedcomponents

DouglasMcIlroy'saddressattheNATOconferenceonsoftwareengineeringinGarmisch,Germany,1968titledMassProducedSoftwareComponents.引言2019-8-31谢谢您的观赏6Softwaresho引言软件问题的核心质量不高生产率低常常是一对矛盾能不能向其它成熟产业学习?复用分工市场竞争但软件有其自身特点2019-8-31谢谢您的观赏7引言软件问题的核心2019-8-31谢谢您的观赏7引言2019-8-31谢谢您的观赏8复用--不完全一致的使用场景分工--难以完全解除的部件耦合市场竞争--不能沿用物质产品的盈利模式引言2019-8-31谢谢您的观赏8复用--不完全一引言基于构件的软件开发一直未曾完全实现的老想法重用“工业化”影响因素不仅限于技术层面2019-8-31谢谢您的观赏9引言基于构件的软件开发2019-8-31谢谢您的观赏9回顾:软件领域的发展程序设计方法的发展软件需求的变化软件环境的变化软件开发模式的变化2019-8-31谢谢您的观赏10回顾:软件领域的发展程序设计方法的发展2019-8-31谢谢程序设计方法的发展功能分解法——计算任务结构化程序设计——以数据为中心面向对象程序设计——以对象为中心构件(组件)程序设计——以构件为中心2019-8-31谢谢您的观赏11综合使用程序设计方法的发展功能分解法——计算任务2019-8-3软件需求的变化计算2019-8-31谢谢您的观赏12实用管理(MIS)分布式系统软件需求的变化计算2019-8-31谢谢您的观赏12实用管理软件环境的变化单任务2019-8-31谢谢您的观赏13多任务文字界面图形界面单线程多线程平台相关跨平台单机(本地)网络(分布式)单一语言多种语言软件环境的变化单任务2019-8-31谢谢您的观赏13多任务软件开发模式机器码2019-8-31谢谢您的观赏14高级语言和脚本代码OS+Compiler+EditorOS+Compilers+IDEs+Libraries+Wizards+Components+otherinfrastructures+经验软件开发模式机器码2019-8-31谢谢您的观赏14高级语言发展变化的结果软件学科的形成不变因素:计算机的基本运作模式探求新的计算模型量子计算?生物信息学?2019-8-31谢谢您的观赏15发展变化的结果软件学科的形成2019-8-31谢谢您的观赏1回顾软件学科多年来的变化2019-8-31谢谢您的观赏16软件的产生过程:原始代码编译

Link终代码、脚本混合软件的分发过程:文档、说明书、自动安装工具、培训、升级软件工程:需求分析设计

codetest使用对象技术和构件技术的不断普及,与大环境发展相结合回顾软件学科多年来的变化2019-8-31谢谢您的观赏16软对象技术2019-8-31谢谢您的观赏17用一种新的思路来看待问题多年的发展证明了OO符合软件的规律对象技术的发展需要开发工具和开发语言的支持三大特性:封装性、继承性、多态性两种思想Object-BasedObject-Oriented对象技术2019-8-31谢谢您的观赏17用一种新的思路来看构件技术2019-8-31谢谢您的观赏18构件技术适合于现代的软件环境软件更新快、规模大、强调协作等构件的概念、软件IC构件的可独立发布性要求“接口与实现分离”构件infrastructure,构件体系COM、CORBA(和Java)、.NET中间件(middleware)市场构件技术2019-8-31谢谢您的观赏18构件技术适合于现代摘要引言构件构件技术构件的组合2019-8-31谢谢您的观赏19摘要引言2019-8-31谢谢您的观赏19构件参考文献ClemensSzyperski,DominikGruntz,StephanMurer.ComponentSoftware:BeyondObject-OrientedProgramming,SecondEdition.2019-8-31谢谢您的观赏20构件参考文献2019-8-31谢谢您的观赏20构件的特性独立部署单元必须能跟它所在的环境及其它构件完全分离,因此必须封装自己的全部内部特征(原子性)作为第三方的组装单元必须封装它的实现,并且只通过良好定义的接口与外部环境进行交互(足够好的内聚性)没有(外部的)可见状态构件不能与自己的拷贝有所区别,但某些特殊属性可以没有此种限制2019-8-31谢谢您的观赏21构件的特性独立部署单元必须能跟它所在的环境及其它构件完比较构件vs.对象构件的行为可以通过对象来实现但是构件并非一定要包含类元素,它甚至可以不包含类难以判断一个构件内部是否是“完全面向对象”的构件vs.模块模块化是构件技术产生的前提但对于构件,传统的模块化概念和标准是远远不够的2019-8-31谢谢您的观赏22一个实例单元,具有唯一的标志;可能具有外部可见状态;封装状态和行为包多个类比较构件vs.对象2019-8-31谢谢您的观赏22一个构件分类:白盒,灰盒,黑盒白盒:提供构件的同时也提供实现构件的全部代码,应用构件时需要对源代码进行某些修改,然后才能把它集成到系统中实现一定的目的灰盒:只提供有关界面部分的源代码,对构件的内核不清楚,只能在接口界面上做一些用户化的工作黑盒:完全不提供代码,只提供构件的二进制可执行形式2019-8-31谢谢您的观赏23构件分类:白盒,灰盒,黑盒白盒:提供构件的同时也提供实现构件COTSCommercialOffTheShelf现成买来的,即强调构件的预制性不提供源码,强调构件的封装性和透明性强调可互换性不是为某一个客户定制的,而是某一领域中通用的2019-8-31谢谢您的观赏24COTSCommercialOffTheShelf20软件构件定义ClemensSzyperski,1996:

Asoftwarecomponentisaunitofcompositionwithcontractuallyspecifiedinterfacesandexplicitcontextdependenciesonly.Asoftwarecomponentcanbedeployedindependentlyandissubjecttocompositionbythirdparties.

2019-8-31谢谢您的观赏25软件构件定义ClemensSzyperski,1996:

软件构件定义软件构件是一种组装单元,它具有规范的接口契约和显式的语境依赖,软件构件可以被独立地部署并由第三方任意地组装技术因素:独立性、合约接口,组装市场因素:第三方,部署2019-8-31谢谢您的观赏26软件构件定义软件构件是一种组装单元,它具有规范的接口契约和显软件构件接口:用户与构件发生交互的连接渠道,第3方只能通过构件接口的规格说明理解和复用构件接口规格说明是一种契约,它足够精确地描述构件实现的功能,同时不把构件限定于唯一的实现方法e.g.IDL,WSDL2019-8-31谢谢您的观赏27软件构件接口:用户与构件发生交互的连接渠道,第3方只能通过构软件构件显式语境依赖构件的需求:为了使构件正常工作,必须说明其对部署环境的具体要求。这些要求被称为语境依赖,指的是构件组装和部署的语境。包括了定义组装规则的构件模型和定义构件部署、安装和激活规则的构件平台。RequiredInterfaces2019-8-31谢谢您的观赏28软件构件显式语境依赖2019-8-31谢谢您的观赏28构件的规模“最大化重用”策略:只实现核心功能,然后重用其他所有的一切。缺点:语境依赖的爆炸性增长2019-8-31谢谢您的观赏29最大化重用降低了可用性健壮性简洁性0100%重用率增加语境依赖会使构件因重用而简洁,但却降低其可用性增加自给性可以减少语境依赖,增加可用性,并且使构件更加健壮,但却使构件规模过大构件的规模“最大化重用”策略:只实现核心功能,然后重用其他所构件基础设施构件基础设施(infrastructure)是异构构件互操作的标准和通信平台构件框架(framework)是构件实例即插即用的支撑结构,通过一定的环境条件和交互规则,构件框架允许一组构件形成一个孤岛,独立地与外部构件或其它框架交互和协作,构件框架及其内含的构件也可以视为一个构件。OMGCORBA,MicrosoftCOM/DCOM(或.NET),SUNJavaBean/EJB2019-8-31谢谢您的观赏30构件基础设施构件基础设施(infrastructure)是异软件体系结构软件体系结构(SoftwareArchitecture)是对系统宏观结构的描述,是由一组构件(components),连接件(connectors)以及配置(configuration)组成。在较高级别上抽象出不同系统的共性有助于软件工程师在设计早期正确选择软件构架便于对软件系统的性质进行描述和分析构架本身是可复用的资产,软件构架设计的复用会促进软件代码复用,软件构架为构件的组装提供了框架和语境2019-8-31谢谢您的观赏31软件体系结构软件体系结构(SoftwareArchitec摘要引言构件构件技术构件的组合2019-8-31谢谢您的观赏32摘要引言2019-8-31谢谢您的观赏32构件技术MS:COM(ComponentObjectModel),COM+,.NetOMG:CORBA(CommonObjectRequestBrokerArchitecture),CCM,OMA,MDASUN:JavaBean,EJB(EnterpriseJavaBean)2019-8-31谢谢您的观赏33构件技术MS:COM(ComponentObjectMCOMCOM是MS平台上所有构件的基石93年发布,脱胎于MS的OLE(ObjectLinkingandEmbedding)规范+实现96年,DCOM2019-8-31谢谢您的观赏34COMCOM是MS平台上所有构件的基石2019-8-31谢谢COM:构件对象模型2019-8-31谢谢您的观赏35建立在二进制层次上的标准许多概念与C++的特征相似,如vtable程序与程序之间的通信建立在此基础上COM规范平台无关定义了大量的标准接口用于各种用途COM实现平台相关Windows实现了规范要求以及许多辅助功能COM:构件对象模型2019-8-31谢谢您的观赏35建立在COM特性2019-8-31谢谢您的观赏36语言无关规范和实现都是语言无关的进程透明位置透明inprocserver、out-of-procserver可重用性多线程特性可扩展性COM特性2019-8-31谢谢您的观赏36语言无关COM:接口2019-8-31谢谢您的观赏37COM接口IID:128位的全局唯一标识符接口定义语言COMIDL对应于C++中由纯虚函数组成的类基接口:IUnknownCOM接口特性:接口不变性继承性多态性——运行时刻的多态性COM:接口2019-8-31谢谢您的观赏37COM接口COM:对象2019-8-31谢谢您的观赏38COM对象CLSID实现多个接口COM对象特性:身份确定封装可重用COM:对象2019-8-31谢谢您的观赏38COM对象COCOM:构件2019-8-31谢谢您的观赏39COM对象的载体包含多个COM对象进程内构件DLLExportEntrys进程外构件IPC:RPC/LPCCOM:构件2019-8-31谢谢您的观赏39COM对象的载COM:进程内构件2019-8-31谢谢您的观赏40InprocserverExportEntrysCOM:进程内构件2019-8-31谢谢您的观赏40InprCOM:进程外构件2019-8-31谢谢您的观赏41Out-of-procserverCOM:进程外构件2019-8-31谢谢您的观赏41Out-COM:远程构件2019-8-31谢谢您的观赏42remoteserverCOM:远程构件2019-8-31谢谢您的观赏42remotCOM:构件信息发布2019-8-31谢谢您的观赏43注册表发布构件的信息、对象的信息、接口的信息等注册工具和配置工具Regsvr32.exe.reg自注册-RegServerDCOMCNFG.EXEMTSExplorer、活动目录COM:构件信息发布2019-8-31谢谢您的观赏43注册表COM:创建COM对象2019-8-31谢谢您的观赏44对象的创建过程COM:创建COM对象2019-8-31谢谢您的观赏44对象COM:COM对象管理2019-8-31谢谢您的观赏45客户使用规则,控制对象生命周期COM实现优化各种辅助手段构件类别componentcategory类别标识符CATIDMTS和COM+COM:COM对象管理2019-8-31谢谢您的观赏45客户COM:COM体系2019-8-31谢谢您的观赏46基本的功能扩展功能连接点结构化存储名字服务自动化其他COM+COM:COM体系2019-8-31谢谢您的观赏46基本的功COM:COM+2019-8-31谢谢您的观赏47建立在COM的基础上,COM的自然延伸Services事件服务队列服务事务服务负载平衡其他COM:COM+2019-8-31谢谢您的观赏47建立在COCOM:应用2019-8-31谢谢您的观赏48OLEActiveXcontrol脚本功能扩展OLEDBADSI(ActiveDirectoryServiceInterfaces)ASP其他COM:应用2019-8-31谢谢您的观赏48OLECOM:分布式应用2019-8-31谢谢您的观赏49COM/COM+为基于Windows的分布式应用提供了基础设施TransactionSecurityOLEDBWeb集成ActiveDirectory管理功能COM:分布式应用2019-8-31谢谢您的观赏49COM/CORBA2019-8-31谢谢您的观赏50OMG,800多家厂商联合制定的标准91年1.0,主要是C语言映射95年2.0,加入IIOP最新版本3.0CORBA规范制订了互操作规范,上层标准协议一系列映射到多种语言的规范各种服务相关的规范CORBA实现:ORBCORBA2019-8-31谢谢您的观赏50OMG,800多CORBA体系结构2019-8-31谢谢您的观赏51CORBA体系结构2019-8-31谢谢您的观赏51CORBA:跨平台、跨语言2019-8-31谢谢您的观赏52典型的语言:C++语言、Java语言、Smalltalk多种平台关键:IOR(InteroperableObjectreference)ORB实现CORBA:跨平台、跨语言2019-8-31谢谢您的观赏52部分ORB实现商业ORBOrbix,IONA公司Visibroker,Inprise公司,4.0版完全支持2.3规范

Netscapecommunicator浏览器嵌入Visibroker自由ORBORBit,遵循CORBA2.2规范,支持C语言,性能较高mico,GNU,OpenSourceTAO,美国华盛顿大学分布式对象计算研究小组omniORB,AT&T剑桥实验室国产ORB国防科大的嵌入式CORBA(eBus)东南大学的ORBUS2019-8-31谢谢您的观赏53部分ORB实现商业ORB2019-8-31谢谢您的观赏53CORBA:客户2019-8-31谢谢您的观赏54客户通过stub或者CORBA库与对象或者ORB进行通信CORBA:客户2019-8-31谢谢您的观赏54客户通过sCORBA:对象2019-8-31谢谢您的观赏55对象与OA进行通信CORBA:对象2019-8-31谢谢您的观赏55对象与OACORBA:C++映射开发过程2019-8-31谢谢您的观赏56编写IDLIDLC++利用生成的stub类编写客户利用生成的impl类编写服务器对象{以字符串形式传递OR}CORBA:C++映射开发过程2019-8-31谢谢您的观赏CORBA:核心2019-8-31谢谢您的观赏57CORBAIDL支持多继承支持结构化数据类型字符串形式的ORPOA(PortableObjectAdapter)CORBA对象的环境context策略设置CORBA:核心2019-8-31谢谢您的观赏57CORBACORBA:核心(续)2019-8-31谢谢您的观赏58GIOP(GeneralInter-ORBProtocol)互操作协议框架IIOP(InternetInter-ORBProtocol)IORCORBA对象的标识实现仓库、接口仓库未标准化CORBA:核心(续)2019-8-31谢谢您的观赏58GICORBA:服务2019-8-31谢谢您的观赏59命名服务层次命名绑定TradingService功能更强、使用更灵活的对象查询服务事件服务事件发送方和接受方之间的decoupleCORBA:服务2019-8-31谢谢您的观赏59命名服务CCM:CorbaComponentModel2019-8-31谢谢您的观赏60CCM:CorbaComponentModel2019EJBJ2EEEJB在J2EE中的位置2019-8-31谢谢您的观赏61EJBJ2EE2019-8-31谢谢您的观赏61EJB2019-8-31谢谢您的观赏62EJB2019-8-31谢谢您的观赏62EJBSessionBeansEntityBeansMessage-drivenbeans2019-8-31谢谢您的观赏63EJBSessionBeans2019-8-31谢谢您的观摘要引言构件构件对象模型构件的组合2019-8-31谢谢您的观赏64摘要引言2019-8-31谢谢您的观赏64构件的组合ComponentsareforcompositionConnection-orientedcompositionContextualcompositionData-drivencompositionFederationandpeer-to-peer2019-8-31谢谢您的观赏65构件的组合ComponentsareforcomposConnection-orientedcompositionWiringoutgoingandincominginterfaces..对于一个接口来说非对称Caller---callee当对于component来说可以同时充当caller和callee(组合时刻)类型检查2019-8-31谢谢您的观赏66Connection-orientedcompositioComponentInterfacesBehaviorconstraints:对于一个提供数据库访问接口的构件loginqueryadddellogoutlogin(query|add|del)*logoutNon-functionalrequirementsVersions2019-8-31谢谢您的观赏67ComponentInterfacesBehaviorcComponentinterfacesCall-backsCall-backprocedureObjectreference2019-8-31谢谢您的观赏68ComponentinterfacesCall-backsContextualcomposition设想诸如Transaction、Security等非功能特性如何在分布构件组装中得以实现?几乎每个实际分布构件系统都用到由开发者在功能代码中实现?太复杂可否另加?(separationofconcerns)!Howto?自动化?2019-8-31谢谢您的观赏69Contextualcomposition设想诸如TranContextualcomposition:

Domainsandcontexts2019-8-31谢谢您的观赏70c1c3uvwxc2Load-balancingdomain(RsrcID=7)Transactiondomain(TxID=42)跨越语境边界的调用被拦截,然后根据语境属性或者被预处理,或者被置后处理,或者被拒绝如果两个构件共享一组兼容的语境属性集,则它们可以被看做是处在同一域中Contextualcomposition:

DomainContextualcomposition使用“Containers”EJBcontainersCCMcontainersCLRcontextsandchannels以前的container只支持预定义的context,但新技术.NET:ThelistofcontextpropertiesisextensibleEJB3.0:使用@AroundInvoke注释,你可以将任意bean方法作为拦截器方法在任意bean方法之前和之后运行(但这个修改源程序的方式不够SoC)2019-8-31谢谢您的观赏71Contextualcomposition使用“ContaContextualcomposition实现原理为每个context维护一个逻辑上共享的信息空间TransactionID;用户认证信息,等等实现上在Domain中的各个构件间进行交互时携带这些信息;在调用前后插入Interceptors处理这些信息麻烦的问题是这些aspects并不都是“正交”的(意味着Interceptor之间的顺序有关系!)2019-8-31谢谢您的观赏72Contextualcomposition实现原理20192019-8-31谢谢您的观赏732023/1/5InstituteofComputerSoftwareNanjingUniversity2019-8-31谢谢您的观赏732022/12/28InsDate-drivencompositionEJBmessage-drivenbeansJavaMessageService(JMS)Microsoftmessagequeue(MSMQ)异步,松耦合适合工作流系统,较不适合交互系统;2019-8-31谢谢您的观赏742023/1/5InstituteofComputerSoftwareNanjingUniversityDate-drivencompositionEJBmesFederationandpeer-to-peerJini即插即用设备之间无需驱动程序,就可以互相辨认并交换信息资源基于Java分布计算技术的解决方案2019-8-31谢谢您的观赏752023/1/5InstituteofComputerSoftwareNanjingUniversityFederationandpeer-to-peerJinPeer-to-Peer第一代 集中的文件列表服务器,Napster第二代分散的文件列表服务器,Gnutella,FastTrack第三代提供更高的效率、可靠性和匿名性匿名网:Freenet,I2P,GNUnet,Entropy2019-8-31谢谢您的观赏76Peer-to-Peer第一代 2019-8-31谢谢您的观作业请列举构件和对象的相似点和不同点构件的组合有几种方式?2019-8-31谢谢您的观赏77作业请列举构件和对象的相似点和不同点2019-8-31谢谢您构件化软件ComponentSoftware2019-8-31谢谢您的观赏78ComponentSoftware2019-8-31谢谢您RoadmapPart1:OO基础OO基本原理DesignbyContract异常处理;并发对象;持久对象Part2:OO设计原则和设计模式敏捷软件开发方法OO设计原则OO设计模式应用框架技术AOP2019-8-31谢谢您的观赏79RoadmapPart1:OO基础2019-8-31谢谢RoadmapPart3:构件技术构件化软件分布对象服务计算2019-8-31谢谢您的观赏80RoadmapPart3:构件技术2019-8-31谢谢摘要引言构件构件技术构件的组合2019-8-31谢谢您的观赏81摘要引言2019-8-31谢谢您的观赏4摘要引言构件构件技术构件的组合2019-8-31谢谢您的观赏82摘要引言2019-8-31谢谢您的观赏5引言2019-8-31谢谢您的观赏83Softwareshouldbecomponentizedbuiltfromprefabricatedcomponents

DouglasMcIlroy'saddressattheNATOconferenceonsoftwareengineeringinGarmisch,Germany,1968titledMassProducedSoftwareComponents.引言2019-8-31谢谢您的观赏6Softwaresho引言软件问题的核心质量不高生产率低常常是一对矛盾能不能向其它成熟产业学习?复用分工市场竞争但软件有其自身特点2019-8-31谢谢您的观赏84引言软件问题的核心2019-8-31谢谢您的观赏7引言2019-8-31谢谢您的观赏85复用--不完全一致的使用场景分工--难以完全解除的部件耦合市场竞争--不能沿用物质产品的盈利模式引言2019-8-31谢谢您的观赏8复用--不完全一引言基于构件的软件开发一直未曾完全实现的老想法重用“工业化”影响因素不仅限于技术层面2019-8-31谢谢您的观赏86引言基于构件的软件开发2019-8-31谢谢您的观赏9回顾:软件领域的发展程序设计方法的发展软件需求的变化软件环境的变化软件开发模式的变化2019-8-31谢谢您的观赏87回顾:软件领域的发展程序设计方法的发展2019-8-31谢谢程序设计方法的发展功能分解法——计算任务结构化程序设计——以数据为中心面向对象程序设计——以对象为中心构件(组件)程序设计——以构件为中心2019-8-31谢谢您的观赏88综合使用程序设计方法的发展功能分解法——计算任务2019-8-3软件需求的变化计算2019-8-31谢谢您的观赏89实用管理(MIS)分布式系统软件需求的变化计算2019-8-31谢谢您的观赏12实用管理软件环境的变化单任务2019-8-31谢谢您的观赏90多任务文字界面图形界面单线程多线程平台相关跨平台单机(本地)网络(分布式)单一语言多种语言软件环境的变化单任务2019-8-31谢谢您的观赏13多任务软件开发模式机器码2019-8-31谢谢您的观赏91高级语言和脚本代码OS+Compiler+EditorOS+Compilers+IDEs+Libraries+Wizards+Components+otherinfrastructures+经验软件开发模式机器码2019-8-31谢谢您的观赏14高级语言发展变化的结果软件学科的形成不变因素:计算机的基本运作模式探求新的计算模型量子计算?生物信息学?2019-8-31谢谢您的观赏92发展变化的结果软件学科的形成2019-8-31谢谢您的观赏1回顾软件学科多年来的变化2019-8-31谢谢您的观赏93软件的产生过程:原始代码编译

Link终代码、脚本混合软件的分发过程:文档、说明书、自动安装工具、培训、升级软件工程:需求分析设计

codetest使用对象技术和构件技术的不断普及,与大环境发展相结合回顾软件学科多年来的变化2019-8-31谢谢您的观赏16软对象技术2019-8-31谢谢您的观赏94用一种新的思路来看待问题多年的发展证明了OO符合软件的规律对象技术的发展需要开发工具和开发语言的支持三大特性:封装性、继承性、多态性两种思想Object-BasedObject-Oriented对象技术2019-8-31谢谢您的观赏17用一种新的思路来看构件技术2019-8-31谢谢您的观赏95构件技术适合于现代的软件环境软件更新快、规模大、强调协作等构件的概念、软件IC构件的可独立发布性要求“接口与实现分离”构件infrastructure,构件体系COM、CORBA(和Java)、.NET中间件(middleware)市场构件技术2019-8-31谢谢您的观赏18构件技术适合于现代摘要引言构件构件技术构件的组合2019-8-31谢谢您的观赏96摘要引言2019-8-31谢谢您的观赏19构件参考文献ClemensSzyperski,DominikGruntz,StephanMurer.ComponentSoftware:BeyondObject-OrientedProgramming,SecondEdition.2019-8-31谢谢您的观赏97构件参考文献2019-8-31谢谢您的观赏20构件的特性独立部署单元必须能跟它所在的环境及其它构件完全分离,因此必须封装自己的全部内部特征(原子性)作为第三方的组装单元必须封装它的实现,并且只通过良好定义的接口与外部环境进行交互(足够好的内聚性)没有(外部的)可见状态构件不能与自己的拷贝有所区别,但某些特殊属性可以没有此种限制2019-8-31谢谢您的观赏98构件的特性独立部署单元必须能跟它所在的环境及其它构件完比较构件vs.对象构件的行为可以通过对象来实现但是构件并非一定要包含类元素,它甚至可以不包含类难以判断一个构件内部是否是“完全面向对象”的构件vs.模块模块化是构件技术产生的前提但对于构件,传统的模块化概念和标准是远远不够的2019-8-31谢谢您的观赏99一个实例单元,具有唯一的标志;可能具有外部可见状态;封装状态和行为包多个类比较构件vs.对象2019-8-31谢谢您的观赏22一个构件分类:白盒,灰盒,黑盒白盒:提供构件的同时也提供实现构件的全部代码,应用构件时需要对源代码进行某些修改,然后才能把它集成到系统中实现一定的目的灰盒:只提供有关界面部分的源代码,对构件的内核不清楚,只能在接口界面上做一些用户化的工作黑盒:完全不提供代码,只提供构件的二进制可执行形式2019-8-31谢谢您的观赏100构件分类:白盒,灰盒,黑盒白盒:提供构件的同时也提供实现构件COTSCommercialOffTheShelf现成买来的,即强调构件的预制性不提供源码,强调构件的封装性和透明性强调可互换性不是为某一个客户定制的,而是某一领域中通用的2019-8-31谢谢您的观赏101COTSCommercialOffTheShelf20软件构件定义ClemensSzyperski,1996:

Asoftwarecomponentisaunitofcompositionwithcontractuallyspecifiedinterfacesandexplicitcontextdependenciesonly.Asoftwarecomponentcanbedeployedindependentlyandissubjecttocompositionbythirdparties.

2019-8-31谢谢您的观赏102软件构件定义ClemensSzyperski,1996:

软件构件定义软件构件是一种组装单元,它具有规范的接口契约和显式的语境依赖,软件构件可以被独立地部署并由第三方任意地组装技术因素:独立性、合约接口,组装市场因素:第三方,部署2019-8-31谢谢您的观赏103软件构件定义软件构件是一种组装单元,它具有规范的接口契约和显软件构件接口:用户与构件发生交互的连接渠道,第3方只能通过构件接口的规格说明理解和复用构件接口规格说明是一种契约,它足够精确地描述构件实现的功能,同时不把构件限定于唯一的实现方法e.g.IDL,WSDL2019-8-31谢谢您的观赏104软件构件接口:用户与构件发生交互的连接渠道,第3方只能通过构软件构件显式语境依赖构件的需求:为了使构件正常工作,必须说明其对部署环境的具体要求。这些要求被称为语境依赖,指的是构件组装和部署的语境。包括了定义组装规则的构件模型和定义构件部署、安装和激活规则的构件平台。RequiredInterfaces2019-8-31谢谢您的观赏105软件构件显式语境依赖2019-8-31谢谢您的观赏28构件的规模“最大化重用”策略:只实现核心功能,然后重用其他所有的一切。缺点:语境依赖的爆炸性增长2019-8-31谢谢您的观赏106最大化重用降低了可用性健壮性简洁性0100%重用率增加语境依赖会使构件因重用而简洁,但却降低其可用性增加自给性可以减少语境依赖,增加可用性,并且使构件更加健壮,但却使构件规模过大构件的规模“最大化重用”策略:只实现核心功能,然后重用其他所构件基础设施构件基础设施(infrastructure)是异构构件互操作的标准和通信平台构件框架(framework)是构件实例即插即用的支撑结构,通过一定的环境条件和交互规则,构件框架允许一组构件形成一个孤岛,独立地与外部构件或其它框架交互和协作,构件框架及其内含的构件也可以视为一个构件。OMGCORBA,MicrosoftCOM/DCOM(或.NET),SUNJavaBean/EJB2019-8-31谢谢您的观赏107构件基础设施构件基础设施(infrastructure)是异软件体系结构软件体系结构(SoftwareArchitecture)是对系统宏观结构的描述,是由一组构件(components),连接件(connectors)以及配置(configuration)组成。在较高级别上抽象出不同系统的共性有助于软件工程师在设计早期正确选择软件构架便于对软件系统的性质进行描述和分析构架本身是可复用的资产,软件构架设计的复用会促进软件代码复用,软件构架为构件的组装提供了框架和语境2019-8-31谢谢您的观赏108软件体系结构软件体系结构(SoftwareArchitec摘要引言构件构件技术构件的组合2019-8-31谢谢您的观赏109摘要引言2019-8-31谢谢您的观赏32构件技术MS:COM(ComponentObjectModel),COM+,.NetOMG:CORBA(CommonObjectRequestBrokerArchitecture),CCM,OMA,MDASUN:JavaBean,EJB(EnterpriseJavaBean)2019-8-31谢谢您的观赏110构件技术MS:COM(ComponentObjectMCOMCOM是MS平台上所有构件的基石93年发布,脱胎于MS的OLE(ObjectLinkingandEmbedding)规范+实现96年,DCOM2019-8-31谢谢您的观赏111COMCOM是MS平台上所有构件的基石2019-8-31谢谢COM:构件对象模型2019-8-31谢谢您的观赏112建立在二进制层次上的标准许多概念与C++的特征相似,如vtable程序与程序之间的通信建立在此基础上COM规范平台无关定义了大量的标准接口用于各种用途COM实现平台相关Windows实现了规范要求以及许多辅助功能COM:构件对象模型2019-8-31谢谢您的观赏35建立在COM特性2019-8-31谢谢您的观赏113语言无关规范和实现都是语言无关的进程透明位置透明inprocserver、out-of-procserver可重用性多线程特性可扩展性COM特性2019-8-31谢谢您的观赏36语言无关COM:接口2019-8-31谢谢您的观赏114COM接口IID:128位的全局唯一标识符接口定义语言COMIDL对应于C++中由纯虚函数组成的类基接口:IUnknownCOM接口特性:接口不变性继承性多态性——运行时刻的多态性COM:接口2019-8-31谢谢您的观赏37COM接口COM:对象2019-8-31谢谢您的观赏115COM对象CLSID实现多个接口COM对象特性:身份确定封装可重用COM:对象2019-8-31谢谢您的观赏38COM对象COCOM:构件2019-8-31谢谢您的观赏116COM对象的载体包含多个COM对象进程内构件DLLExportEntrys进程外构件IPC:RPC/LPCCOM:构件2019-8-31谢谢您的观赏39COM对象的载COM:进程内构件2019-8-31谢谢您的观赏117InprocserverExportEntrysCOM:进程内构件2019-8-31谢谢您的观赏40InprCOM:进程外构件2019-8-31谢谢您的观赏118Out-of-procserverCOM:进程外构件2019-8-31谢谢您的观赏41Out-COM:远程构件2019-8-31谢谢您的观赏119remoteserverCOM:远程构件2019-8-31谢谢您的观赏42remotCOM:构件信息发布2019-8-31谢谢您的观赏120注册表发布构件的信息、对象的信息、接口的信息等注册工具和配置工具Regsvr32.exe.reg自注册-RegServerDCOMCNFG.EXEMTSExplorer、活动目录COM:构件信息发布2019-8-31谢谢您的观赏43注册表COM:创建COM对象2019-8-31谢谢您的观赏121对象的创建过程COM:创建COM对象2019-8-31谢谢您的观赏44对象COM:COM对象管理2019-8-31谢谢您的观赏122客户使用规则,控制对象生命周期COM实现优化各种辅助手段构件类别componentcategory类别标识符CATIDMTS和COM+COM:COM对象管理2019-8-31谢谢您的观赏45客户COM:COM体系2019-8-31谢谢您的观赏123基本的功能扩展功能连接点结构化存储名字服务自动化其他COM+COM:COM体系2019-8-31谢谢您的观赏46基本的功COM:COM+2019-8-31谢谢您的观赏124建立在COM的基础上,COM的自然延伸Services事件服务队列服务事务服务负载平衡其他COM:COM+2019-8-31谢谢您的观赏47建立在COCOM:应用2019-8-31谢谢您的观赏125OLEActiveXcontrol脚本功能扩展OLEDBADSI(ActiveDirectoryServiceInterfaces)ASP其他COM:应用2019-8-31谢谢您的观赏48OLECOM:分布式应用2019-8-31谢谢您的观赏126COM/COM+为基于Windows的分布式应用提供了基础设施TransactionSecurityOLEDBWeb集成ActiveDirectory管理功能COM:分布式应用2019-8-31谢谢您的观赏49COM/CORBA2019-8-31谢谢您的观赏127OMG,800多家厂商联合制定的标准91年1.0,主要是C语言映射95年2.0,加入IIOP最新版本3.0CORBA规范制订了互操作规范,上层标准协议一系列映射到多种语言的规范各种服务相关的规范CORBA实现:ORBCORBA2019-8-31谢谢您的观赏50OMG,800多CORBA体系结构2019-8-31谢谢您的观赏128CORBA体系结构2019-8-31谢谢您的观赏51CORBA:跨平台、跨语言2019-8-31谢谢您的观赏129典型的语言:C++语言、Java语言、Smalltalk多种平台关键:IOR(InteroperableObjectreference)ORB实现CORBA:跨平台、跨语言2019-8-31谢谢您的观赏52部分ORB实现商业ORBOrbix,IONA公司Visibroker,Inprise公司,4.0版完全支持2.3规范

Netscapecommunicator浏览器嵌入Visibroker自由ORBORBit,遵循CORBA2.2规范,支持C语言,性能较高mico,GNU,OpenSourceTAO,美国华盛顿大学分布式对象计算研究小组omniORB,AT&T剑桥实验室国产ORB国防科大的嵌入式CORBA(eBus)东南大学的ORBUS2019-8-31谢谢您的观赏130部分ORB实现商业ORB2019-8-31谢谢您的观赏53CORBA:客户2019-8-31谢谢您的观赏131客户通过stub或者CORBA库与对象或者ORB进行通信CORBA:客户2019-8-31谢谢您的观赏54客户通过sCORBA:对象2019-8-31谢谢您的观赏132对象与OA进行通信CORBA:对象2019-8-31谢谢您的观赏55对象与OACORBA:C++映射开发过程2019-8-31谢谢您的观赏133编写IDLIDLC++利用生成的stub类编写客户利用生成的impl类编写服务器对象{以字符串形式传递OR}CORBA:C++映射开发过程2019-8-31谢谢您的观赏CORBA:核心2019-8-31谢谢您的观赏134CORBAIDL支持多继承支持结构化数据类型字符串形式的ORPOA(PortableObjectAdapter)CORBA对象的环境context策略设置CORBA:核心2019-8-31谢谢您的观赏57CORBACORBA:核心(续)2019-8-31谢谢您的观赏135GIOP(GeneralInter-ORBProtocol)互操作协议框架IIOP(InternetInter-ORBProtocol)IORCORBA对象的标识实现仓库、接口仓库未标准化CORBA:核心(续)2019-8-31谢谢您的观赏58GICORBA:服务2019-8-31谢谢您的观赏136命名服务层次命名绑定TradingService功能更强、使用更灵活的对象查询服务事件服务事件发送方和接受方之间的decoupleCORBA:服务2019-8-31谢谢您的观赏59命名服务CCM:CorbaComponentModel2019-8-31谢谢您的观赏137CCM:CorbaComponentModel2019EJBJ2EEEJB在J2EE中的位置2019-8-31谢谢您的观赏138EJBJ2EE2019-8-31谢谢您的观赏61EJB2019-8-31谢谢您的观赏139EJB2019-8-31谢谢您的观赏62EJBSessionBeansEntityBeansMessage-drivenbeans2019-8-31谢谢您的观赏140EJBSessionBeans2019-8-31谢谢您的观摘要引言构件构件对象模型构件的组合2019-8-31谢谢您的观赏141摘要引言2019-8-31谢谢您的观赏64构件的组合ComponentsareforcompositionConnection-orientedcompositionContextualcompositionData-drivencompositionFederationandpeer-to-peer2019-8-31谢谢您的观赏142构件的组合ComponentsareforcomposConnection-orientedcompositionWiringoutgoingandincominginterfaces..对于一个接口来说

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论