第15章软件工程新技术2020年2月26日第1页第15章软件工程新技术本章内容结构本章引言学习目标教学内容本章小结思考和练习第15章软件工程新技术本章引言软件工程领域研究使用的新技术:迭代开发,以时间换空间,消除市场风险。敏捷开发或轻量级过程,以不变应万变。永远的Beta,不断推陈出新,永无止境。持续集成、持续构建、全程测试。知识管理,将软件工程纳入知识管理的范畴。软件即服务(SaaS),面向服务架构(SOA)的开发思想。用例驱动开发,用户为本思想在软件中的体现。以顾客为中心的全面质量管理。2020年2月26日第2页第15章软件工程新技术2020年2月26日第3页学习目标掌握软件复用的概念、分类、关键技术及复用粒度理解基于构件的软件工程技术的相关概念及应用理解软件过程和标准化的作用及应用理解敏捷软件开发过程概念及模型理解Web软件工程的相关概念和特色理解软件产品线技术的概念及发展第15章软件工程新技术2020年2月26日第4页教学内容15.1软件复用技术15.2基于构件的软件工程技术15.3软件过程与标准化15.4敏捷软件开发过程15.5Web软件工程15.6软件产品线技术15.7本章小结和习题第15章软件工程新技术2020年2月26日第5页15.1.1软件复用概念及分类软件复用:重复使用“为了复用目的而设计的软件”的过程。实施软件复用的目的:要使软件开发工作进行得更快、更好、更省。软件复用与共享、软件移植的区别:共享:是在一个系统中多次使用一个相同的软件成分软件移值:对一个软件进行修改,使它运行于新的软硬件平台第15章软件工程新技术2020年2月26日第6页15.1.1软件复用概念及分类(1)依据复用的对象分类产品复用、过程复用(2)依据对可复用信息进行复用的方式分类黑盒复用、白盒复用(3)依据复用的组织方式分类个别的软件复用、系统化的软件复用(4)根据所应用的领域范围分类横向复用、纵向复用第15章软件工程新技术2020年2月26日第7页15.1.2软件复用的关键技术和复用粒度软件复用有3个基本问题:必须有可以复用的对象所复用的对象必须是有用的复用者需要知道如何去使用被复用的对象。软件复用包括两个相关过程:可复用软件(构件)的开发基于可复用软件(构件)应用系统的构造(集成和组装)第15章软件工程新技术2020年2月26日第8页15.1.2软件复用的关键技术和复用粒度实现软件复用的关键技术因素:软件构件技术、领域工程、软件构架技术、软件再工程技术、开放系统技术、软件过程、CASE技术等。软件复用的非技术因素:机构组织如何适应复用的需求;管理方法如何适应复用的需求;开发人员知识的更新;创造性和工程化的关系;开发人员的心理障碍;知识产权问题;保守商业秘密的问题;复用前期投入的经济考虑;标准化问题等。第15章软件工程新技术2020年2月26日第9页15.2.1中间件技术中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源;中间件位于客户机/服务器的操作系统之上,管理计算资源和网络通信。图15.1中间件概念第15章软件工程新技术2020年2月26日第10页15.2.1中间件技术图15.2中间件在应用系统中的位置中间件的作用:建立分布式软件模块之间互操作的机制,屏蔽底层分布式环境的复杂性和异构性,为处于自己上层的应用软件提供运行与开发环境,帮助用户灵活、高效地开发和集成复杂的应用软件。第15章软件工程新技术2020年2月26日第11页15.2.1中间件技术1.中间件要解决的问题(1)应用的互连和互操作问题(2)针对不同的应用领域,对中间件又有各种不同的要求中间件具有以下特点:满足大量应用的需要;运行于多种硬件和操作系统平台;支持分布式计算;提供跨网络、硬件和操作系统平台的透明性;支持标准的协议和接口。第15章软件工程新技术2020年2月26日第12页15.2.1中间件技术2.中间件的分类(1)根据中间件具有的功能和所提供的服务面向对象中间件、消息中间件、容错中间件、反射中间件(2)基于IDC分类方法终端仿真/屏幕转换、数据访问中间件远程过程调用中间件、消息中间件交易中间件、基于对象请求代理(ORB)中间件第15章软件工程新技术2020年2月26日第13页15.2.1中间件技术3.中间件的发展及认识度早期的中间件市场中事务中间件与消息中间件占的份额最大,近年来随着Web应用的逐渐普及,支持Web服务和应用的应用服务器中间件的占有量已经居于各类中间件的首位,消息中间件和事务中间件分别居第二、三名。表15.1操作系统、数据库管理系统和中间件的类比第15章软件工程新技术2020年2月26日第14页15.2.2构件与构件化构件:是一些可执行单元,可以通过独立的开发、购买和配置组合到一个功能系统中去,是软件系统内被标识、符合某种标准要求并可复用的软件组成成分,类似于传统工业中的零部件。从广义上来讲,构件可以是被封装的对象类、类簇、一些功能模块、构件框架或构架、文档、分析件、设计模式等;从狭义上来说,一般指对外提供的具有规约化接口、符合一定标准、可替换的软件系统的程序模块。第15章软件工程新技术2020年2月26日第15页15.2.2构件与构件化构件技术的基本思想:创建和利用可复用的软件构件来解决软件开发的问题。可复用构件:具有相对独立功能和可复用价值的构件。构件化的软件开发方法是一种将一个完整系统看作是若干个独立部分(构件)组装的软件开发方法,每一部分是一个可重用的单元,通过替换和重新配置来完成软件的升级。第15章软件工程新技术2020年2月26日第16页15.2.3构件模型及描述语言两个主要的构件描述模型:Tracz提出的3C模型:主要用于对构件的可重用信息进行描述,Component=(Concept,Content,Context)REBOOT项目中提出的REBOOT(ReuseBasedonObjectOrientedTechniques)模型:主要用于对可重用构件进行分类与检索,它与构件检索的关系更为密切。第15章软件工程新技术2020年2月26日第17页15.2.3构件模型及描述语言北京大学青鸟构件模型是一个具有面向对象风格的模型,从3个不同的、相互正交的视角来看待构件,每个具体的构件都是形态、层次和表示构成的三维空间中的一个点。构件形态:类、类树、框架、设计模式、体系结构;构件层次:分析件、设计件、编码件、测试件构件的表示与层次有关,不同层次的构件具有不同的表示媒介和手段,如图形、复合文档、正文、伪码、编程语言、目标码等。青鸟构件模型从9个方面来描述构件,即概念、操作规约、接口、类型、实现体、构件复合、构件性质、构件注释、构件语境。第15章软件工程新技术2020年2月26日第18页15.2.3构件模型及描述语言构件实现模型标准:CORBA、COM/DCOM/COM+、JavaBeans/EJB基本思想:第一,采用将构件的接口和实现相分离的原则;第二,采用黑盒重用的方式,外界仅可以通过构件的接口来访问构件的功能;第三,在实现方法上都使用接口描述语言(InterfaceDescriptionLanguage,IDL)进行构件接口定义,利用相应的中间件作为支持该构件模型的运行时环境,从而达到由不同的编程语言所实现、运行在不同的操作系统环境中及在不同主机上的构件都能相互交互的目的。第15章软件工程新技术2020年2月26日第19页15.2.3构件模型及描述语言主要不同在于技术的提出者及应用背景COM/DCOM是由微软公司提出的,由于Microsoft在PC软件领域的垄断地位,因此在基于Microsoft的环境中,使用COM/DCOM/COM+是一种当然的选择;CORBA是由OMG组织提出的,它的标准是开放的,并且OMG成员广泛,所以CORBA最具普遍性,是异构环境中的理想选择;在Internet和移动计算(如手机)中,Java是普遍采用的一种技术,因此JavaBeans/EJB在这类Internet和移动计算应用环境中比较适合。第15章软件工程新技术2020年2月26日第20页15.2.3构件模型及描述语言构件描述语言比较典型的有CORBA规范中的接口描述语言IDLUML规范中的对象约束语言OCL北大青鸟构件系统中的青鸟构件描述语言JBCDL加州理工大学提出的构件描述语言CDL等第15章软件工程新技术2020年2月26日第21页15.2.4构件的检索与组装1.构件的检索W.Frakes从构件表示出发,将现有方法分为人工智能方法、超文本方法和信息科学方法3类。H.Mili则按照复杂度和检索效果的递增,将其分为基于正文的、基于词法描述符的、基于规约的分类和检索3类。第15章软件工程新技术2020年2月26日第22页15.2.4构件的检索与组装W.Frakes重点讨论了信息科学方法,因为这是实际复用项目中,应用较为成功的途径。将信息科学方法分为基于受控词汇表和基于不受控词汇表分类两种形式。图15.3信息科学的编目方法分类图第15章软件工程新技术2020年2月26日第23页15.2.4构件的检索与组装常用分类方式枚举分类刻面分类属性值分类正文检索关键词分类第15章软件工程新技术2020年2月26日第24页15.2.4构件的检索与组装2.构件组装技术目的:利用现有的构件组装成新的系统。本质:是在构件之间建立关联,根据这种关联,协调它们的行为,把它们组织成为一个有机的整体。构件组装的研究内容包括两部分:–对复合构件形成过程的研究–面向体系结构(或者组装框架)的研究第15章软件工程新技术2020年2月26日第25页15.2.4构件的检索与组装3.构件组装技术及方法的分类(1)根据组装场景的不同分类不同的组装层次:源代码级的组装、运行级组装不同的组装模式静态组装:设计时的组装。动态组装:运行时的组装。(2)按照构件在组装之前需要对构件内部细节了解的程度及是否需要进行修改、封装黑盒组装方式、白盒组装方式和灰盒组装方式第15章软件工程新技术2020年2月26日第26页15.2.4构件的检索与组装4.构件组装的实现方法(1)以框架为基础的方法(2)以连接件为基础的方法(3)以胶合代码为基础的方法(4)基于总线的方法第15章软件工程新技术2020年2月26日第27页15.2.5基于构件的软件工程方法基于构件的软件工程(Component-BasedSoftwareEngineering,CBSE):以面向对象的方法为基础,强调软件重用的作用,在软件体系结构设计的基础上,使用可复用的软件“构件”来设计和构造基于计算机的系统过程。基于构件的开发(CBD,Component-BasedDevelopment):是一个与领域活动并行的CBSE活动。为了实现软件重用,基于构件的软件工程强调领域工程与软件工程同步进行。第15章软件工程新技术2020年2月26日第28页15.2.5基于构件的软件工程方法图15.4一个典型的可重用的过程模型图15.4给出了一个典型的可重用的过程模型,描述了领域工程与软件工程的关系。第15章软件工程新技术2020年2月26日第29页15.2.5基于构件的软件工程方法图15.5给出了一个基于构件的开发模型。该模型中,建模和构建活动开始于识别可选构件。这些构件有些设计成通用的软件模块,有些设计成面向对象的类或软件包。图15.5基于构件的开发模型第15章软件工程新技术2020年2月26日第30页15.2.5基于构件的软件工程方法基于构件的开发模型可以由以下步骤组成(采用演进方法):(1)对于该问题领域的基于构件的可用产品进行研究和评估(2)考虑构件集成的问题(3)设计软件架构以容纳这些构件(4)将构件集成到架构中(5)进行充分的测试以保证功能正常第15章软件工程新技术2020年2月26日第31页15.2.5基于