构件化软件软件领域的发展课件.ppt

上传人:小飞机 文档编号:3842828 上传时间:2023-03-24 格式:PPT 页数:77 大小:1.44MB
返回 下载 相关 举报
构件化软件软件领域的发展课件.ppt_第1页
第1页 / 共77页
构件化软件软件领域的发展课件.ppt_第2页
第2页 / 共77页
构件化软件软件领域的发展课件.ppt_第3页
第3页 / 共77页
构件化软件软件领域的发展课件.ppt_第4页
第4页 / 共77页
构件化软件软件领域的发展课件.ppt_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《构件化软件软件领域的发展课件.ppt》由会员分享,可在线阅读,更多相关《构件化软件软件领域的发展课件.ppt(77页珍藏版)》请在三一办公上搜索。

1、构件化软件,Component Software,2019年8月25,感谢你的观看,1,Roadmap,Part 1:OO基础OO基本原理Design by Contract异常处理;并发对象;持久对象Part 2:OO设计原则和设计模式敏捷软件开发方法OO设计原则OO设计模式应用框架技术AOP,2019年8月25,感谢你的观看,2,Roadmap,Part 3:构件技术构件化软件分布对象服务计算,2019年8月25,感谢你的观看,3,摘要,引言构件构件技术构件的组合,2019年8月25,感谢你的观看,4,摘要,引言构件构件技术构件的组合,2019年8月25,感谢你的观看,5,引言,2019年

2、8月25,感谢你的观看,6,Software should be componentized built from prefabricated components Douglas McIlroys address at the NATO conference on software engineering in Garmisch,Germany,1968 titled Mass Produced Software Components.,引言,软件问题的核心质量不高 生产率低 常常是一对矛盾能不能向其它成熟产业学习?复用分工市场竞争但软件有其自身特点,2019年8月25,感谢你的观看,7,引

3、言,2019年8月25,感谢你的观看,8,复用 不完全一致的使用场景分工 难以完全解除的部件耦合市场竞争 不能沿用物质产品的盈利模式,引言,基于构件的软件开发一直未曾完全实现的老想法重用“工业化”影响因素不仅限于技术层面,2019年8月25,感谢你的观看,9,回顾:软件领域的发展,程序设计方法的发展软件需求的变化软件环境的变化软件开发模式的变化,2019年8月25,感谢你的观看,10,程序设计方法的发展,功能分解法 计算任务结构化程序设计 以数据为中心面向对象程序设计 以对象为中心构件(组件)程序设计 以构件为中心,2019年8月25,感谢你的观看,11,综合使用,软件需求的变化,计算,201

4、9年8月25,感谢你的观看,12,实用,管理(MIS),分布式系统,软件环境的变化,单任务,2019年8月25,感谢你的观看,13,多任务,文字界面,图形界面,单线程,多线程,平台相关,跨平台,单机(本地),网络(分布式),单一语言,多种语言,软件开发模式,机器码,2019年8月25,感谢你的观看,14,高级语言和脚本代码,OS+Compiler+Editor,OS+Compilers+IDEs+Libraries+Wizards+Components+other infrastructures+经验,发展变化的结果,软件学科的形成不变因素:计算机的基本运作模式探求新的计算模型量子计算?生物信

5、息学?,2019年8月25,感谢你的观看,15,回顾软件学科多年来的变化,2019年8月25,感谢你的观看,16,软件的产生过程:原始代码编译 Link 终代码、脚本混合软件的分发过程:文档、说明书、自动安装工具、培训、升级软件工程:需求分析设计 code test 使用对象技术和构件技术的不断普及,与大环境发展相结合,对象技术,2019年8月25,感谢你的观看,17,用一种新的思路来看待问题多年的发展证明了OO符合软件的规律对象技术的发展需要开发工具和开发语言的支持三大特性:封装性、继承性、多态性两种思想Object-BasedObject-Oriented,构件技术,2019年8月25,感

6、谢你的观看,18,构件技术适合于现代的软件环境软件更新快、规模大、强调协作等构件的概念、软件IC构件的可独立发布性要求“接口与实现分离”构件infrastructure,构件体系COM、CORBA(和Java)、.NET中间件(middleware)市场,摘要,引言构件构件技术构件的组合,2019年8月25,感谢你的观看,19,构件,参考文献Clemens Szyperski,Dominik Gruntz,Stephan Murer.Component Software:Beyond Object-Oriented Programming,Second Edition.,2019年8月25,感

7、谢你的观看,20,构件的特性,独立部署单元 必须能跟它所在的环境及其它构件完全分离,因此必须封装自己的全部内部特征(原子性)作为第三方的组装单元 必须封装它的实现,并且只通过良好定义的接口与外部环境进行交互(足够好的内聚性)没有(外部的)可见状态 构件不能与自己的拷贝有所区别,但某些特殊属性可以没有此种限制,2019年8月25,感谢你的观看,21,比较,构件 vs.对象构件的行为可以通过对象来实现但是构件并非一定要包含类元素,它甚至可以不包含类难以判断一个构件内部是否是“完全面向对象”的构件 vs.模块模块化是构件技术产生的前提但对于构件,传统的模块化概念和标准是远远不够的,2019年8月25

8、,感谢你的观看,22,一个实例单元,具有唯一的标志;可能具有外部可见状态;封装状态和行为,包多个类,构件分类:白盒,灰盒,黑盒,白盒:提供构件的同时也提供实现构件的全部代码,应用构件时需要对源代码进行某些修改,然后才能把它集成到系统中实现一定的目的灰盒:只提供有关界面部分的源代码,对构件的内核不清楚,只能在接口界面上做一些用户化的工作黑盒:完全不提供代码,只提供构件的二进制可执行形式,2019年8月25,感谢你的观看,23,COTS,Commercial Off The Shelf现成买来的,即强调构件的预制性不提供源码,强调构件的封装性和透明性强调可互换性不是为某一个客户定制的,而是某一领域

9、中通用的,2019年8月25,感谢你的观看,24,软件构件定义,Clemens Szyperski,1996:A software component is a unit of composition with contractually specified interfaces and explicit context dependencies only.A software component can be deployed independently and is subject to composition by third parties.,2019年8月25,感谢你的观看,25,软

10、件构件定义,软件构件是一种组装单元,它具有规范的接口契约和显式的语境依赖,软件构件可以被独立地部署并由第三方任意地组装技术因素:独立性、合约接口,组装市场因素:第三方,部署,2019年8月25,感谢你的观看,26,软件构件,接口:用户与构件发生交互的连接渠道,第3方只能通过构件接口的规格说明理解和复用构件接口规格说明是一种契约,它足够精确地描述构件实现的功能,同时不把构件限定于唯一的实现方法e.g.IDL,WSDL,2019年8月25,感谢你的观看,27,软件构件,显式语境依赖构件的需求:为了使构件正常工作,必须说明其对部署环境的具体要求。这些要求被称为语境依赖,指的是构件组装和部署的语境。包

11、括了定义组装规则的构件模型和定义构件部署、安装和激活规则的构件平台。Required Interfaces,2019年8月25,感谢你的观看,28,构件的规模,“最大化重用”策略:只实现核心功能,然后重用其他所有的一切。缺点:语境依赖的爆炸性增长,2019年8月25,感谢你的观看,29,最大化重用降低了可用性,增加语境依赖会使构件因重用而简洁,但却降低其可用性,增加自给性可以减少语境依赖,增加可用性,并且使构件更加健壮,但却使构件规模过大,构件基础设施,构件基础设施(infrastructure)是异构构件互操作的标准和通信平台构件框架(framework)是构件实例即插即用的支撑结构,通过一

12、定的环境条件和交互规则,构件框架允许一组构件形成一个孤岛,独立地与外部构件或其它框架交互和协作,构件框架及其内含的构件也可以视为一个构件。OMG CORBA,Microsoft COM/DCOM(或.NET),SUN JavaBean/EJB,2019年8月25,感谢你的观看,30,软件体系结构,软件体系结构(Software Architecture)是对系统宏观结构的描述,是由一组构件(components),连接件(connectors)以及配置(configuration)组成。在较高级别上抽象出不同系统的共性有助于软件工程师在设计早期正确选择软件构架便于对软件系统的性质进行描述和分析

13、构架本身是可复用的资产,软件构架设计的复用会促进软件代码复用,软件构架为构件的组装提供了框架和语境,2019年8月25,感谢你的观看,31,摘要,引言构件构件技术构件的组合,2019年8月25,感谢你的观看,32,构件技术,MS:COM(Component Object Model),COM+,.NetOMG:CORBA(Common Object Request Broker Architecture),CCM,OMA,MDASUN:JavaBean,EJB(Enterprise JavaBean),2019年8月25,感谢你的观看,33,COM,COM是MS平台上所有构件的基石93年发布,

14、脱胎于MS的OLE(Object Linking and Embedding)规范+实现96年,DCOM,2019年8月25,感谢你的观看,34,COM:构件对象模型,2019年8月25,感谢你的观看,35,建立在二进制层次上的标准许多概念与C+的特征相似,如vtable程序与程序之间的通信建立在此基础上COM规范平台无关定义了大量的标准接口用于各种用途COM实现平台相关Windows实现了规范要求以及许多辅助功能,COM特性,2019年8月25,感谢你的观看,36,语言无关规范和实现都是语言无关的进程透明 位置透明inproc server、out-of-proc server可重用性多线程

15、特性可扩展性,COM:接口,2019年8月25,感谢你的观看,37,COM接口IID:128位的全局唯一标识符接口定义语言COM IDL对应于C+中由纯虚函数组成的类基接口:IUnknownCOM接口特性:接口不变性继承性多态性运行时刻的多态性,COM:对象,2019年8月25,感谢你的观看,38,COM对象CLSID实现多个接口,COM对象特性:身份确定封装可重用,COM:构件,2019年8月25,感谢你的观看,39,COM对象的载体包含多个COM对象进程内构件DLLExport Entrys进程外构件IPC:RPC/LPC,COM:进程内构件,2019年8月25,感谢你的观看,40,Inp

16、roc serverExport Entrys,COM:进程外构件,2019年8月25,感谢你的观看,41,Out-of-proc server,COM:远程构件,2019年8月25,感谢你的观看,42,remote server,COM:构件信息发布,2019年8月25,感谢你的观看,43,注册表发布构件的信息、对象的信息、接口的信息等注册工具和配置工具Regsvr32.exe.reg自注册-RegServerDCOMCNFG.EXEMTS Explorer、活动目录,COM:创建COM对象,2019年8月25,感谢你的观看,44,对象的创建过程,COM:COM对象管理,2019年8月25,

17、感谢你的观看,45,客户使用规则,控制对象生命周期COM实现优化各种辅助手段构件类别 component category类别标识符CATIDMTS和COM+,COM:COM体系,2019年8月25,感谢你的观看,46,基本的功能扩展功能连接点结构化存储名字服务自动化其他COM+,COM:COM+,2019年8月25,感谢你的观看,47,建立在COM的基础上,COM的自然延伸Services事件服务队列服务事务服务负载平衡其他,COM:应用,2019年8月25,感谢你的观看,48,OLEActiveX control脚本功能扩展OLE DBADSI(Active Directory Servi

18、ce Interfaces)ASP其他,COM:分布式应用,2019年8月25,感谢你的观看,49,COM/COM+为基于Windows的分布式应用提供了基础设施TransactionSecurityOLE DBWeb集成Active Directory管理功能,CORBA,2019年8月25,感谢你的观看,50,OMG,800多家厂商联合制定的标准91年 1.0,主要是C语言映射95年 2.0,加入IIOP最新版本3.0CORBA规范制订了互操作规范,上层标准协议一系列映射到多种语言的规范各种服务相关的规范CORBA实现:ORB,CORBA体系结构,2019年8月25,感谢你的观看,51,C

19、ORBA:跨平台、跨语言,2019年8月25,感谢你的观看,52,典型的语言:C+语言、Java语言、Smalltalk多种平台关键:IOR(Interoperable Object reference)ORB实现,部分ORB实现,商业ORBOrbix,IONA公司Visibroker,Inprise公司,4.0版完全支持2.3规范Netscape communicator浏览器嵌入Visibroker自由ORBORBit,遵循CORBA 2.2规范,支持C语言,性能较高mico,GNU,OpenSourceTAO,美国华盛顿大学分布式对象计算研究小组omniORB,AT&T剑桥实验室国产OR

20、B国防科大的嵌入式CORBA(eBus)东南大学的ORBUS,2019年8月25,感谢你的观看,53,CORBA:客户,2019年8月25,感谢你的观看,54,客户通过stub或者CORBA库与对象或者ORB进行通信,CORBA:对象,2019年8月25,感谢你的观看,55,对象与OA进行通信,CORBA:C+映射开发过程,2019年8月25,感谢你的观看,56,编写IDLIDLC+利用生成的stub类编写客户利用生成的impl类编写服务器对象以字符串形式传递OR,CORBA:核心,2019年8月25,感谢你的观看,57,CORBA IDL支持多继承支持结构化数据类型字符串形式的ORPOA(P

21、ortable Object Adapter)CORBA对象的环境context策略设置,CORBA:核心(续),2019年8月25,感谢你的观看,58,GIOP(General Inter-ORB Protocol)互操作协议框架IIOP(Internet Inter-ORB Protocol)IORCORBA对象的标识实现仓库、接口仓库未标准化,CORBA:服务,2019年8月25,感谢你的观看,59,命名服务层次命名绑定Trading Service功能更强、使用更灵活的对象查询服务事件服务事件发送方和接受方之间的decouple,CCM:Corba Component Model,20

22、19年8月25,感谢你的观看,60,EJB,J2EEEJB 在 J2EE 中的位置,2019年8月25,感谢你的观看,61,EJB,2019年8月25,感谢你的观看,62,EJB,Session BeansEntity BeansMessage-driven beans,2019年8月25,感谢你的观看,63,摘要,引言构件构件对象模型构件的组合,2019年8月25,感谢你的观看,64,构件的组合,Components are for compositionConnection-oriented composition Contextual compositionData-driven com

23、positionFederation and peer-to-peer,2019年8月25,感谢你的观看,65,Connection-oriented composition,Wiring outgoing and incoming interfaces.对于一个接口来说 非对称Caller-callee当对于component来说 可以同时充当caller和callee(组合时刻)类型检查,2019年8月25,感谢你的观看,66,Component Interfaces,Behavior constraints:对于一个提供数据库访问接口的构件login query add del logo

24、utlogin(query|add|del)*logoutNon-functional requirementsVersions,2019年8月25,感谢你的观看,67,Component interfaces,Call-backsCall-back procedureObject reference,2019年8月25,感谢你的观看,68,Contextual composition,设想诸如Transaction、Security等非功能特性如何在分布构件组装中得以实现?几乎每个实际分布构件系统都用到由开发者在功能代码中实现?太复杂可否另加?(separation of concerns)

25、!How to?自动化?,2019年8月25,感谢你的观看,69,Contextual composition:Domains and contexts,2019年8月25,感谢你的观看,70,c1,c3,c2,Load-balancing domain(RsrcID=7),Transaction domain(TxID=42),跨越语境边界的调用被拦截,然后根据语境属性或者被预处理,或者被置后处理,或者被拒绝,如果两个构件共享一组兼容的语境属性集,则它们可以被看做是处在同一域中,Contextual composition,使用“Containers”EJB containersCCM co

26、ntainersCLR contexts and channels以前的container只支持预定义的context,但新技术.NET:The list of context properties is extensibleEJB 3.0:使用AroundInvoke注释,你可以将任意bean方法作为拦截器方法在任意bean方法之前和之后运行(但这个修改源程序的方式不够SoC),2019年8月25,感谢你的观看,71,Contextual composition,实现原理为每个context维护一个逻辑上共享的信息空间Transaction ID;用户认证信息,等等实现上在Domain中的各

27、个构件间进行交互时携带这些信息;在调用前后插入Interceptors处理这些信息麻烦的问题是这些aspects并不都是“正交”的(意味着Interceptor之间的顺序有关系!),2019年8月25,感谢你的观看,72,2019年8月25,感谢你的观看,73,2023/3/24,Institute of Computer SoftwareNanjing University,Date-driven composition,EJB message-driven beansJava Message Service(JMS)Microsoft message queue(MSMQ)异步,松耦合 适

28、合工作流系统,较不适合交互系统;,2019年8月25,感谢你的观看,74,2023/3/24,Institute of Computer SoftwareNanjing University,Federation and peer-to-peer,Jini即插即用设备之间无需驱动程序,就可以互相辨认并交换信息资源 基于Java分布计算技术的解决方案,2019年8月25,感谢你的观看,75,2023/3/24,Institute of Computer SoftwareNanjing University,Peer-to-Peer,第一代集中的文件列表服务器,Napster 第二代分散的文件列表服务器,Gnutella,FastTrack第三代提供更高的效率、可靠性和匿名性匿名网:Freenet,I2P,GNUnet,Entropy,2019年8月25,感谢你的观看,76,作业,请列举构件和对象的相似点和不同点构件的组合有几种方式?,2019年8月25,感谢你的观看,77,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号