陈江平SoftwareEngineering,8thedition.Chapter31Slide1面向服务的软件工程陈江平SoftwareEngineering,8thedition.Chapter31Slide2目标Web服务的基本概念和Web服务标准,以及它们如何支持机构间的计算;旨在产生可复用的Web服务的服务工作过程;服务组成的概念,这是一种面向服务的应用开发手段;业务过程模型为什么可作为一个面向服务的系统的设计基础.陈江平SoftwareEngineering,8thedition.Chapter31Slide3内容服务作为可复用的组件服务工程使用服务的软件开发陈江平SoftwareEngineering,8thedition.Chapter31Slide4面向服务的体系结构面向服务的体系结构(SOA)是一种开发分布式系统的方法,分布式系统的系统组件是单机服务这些服务可以在不同地理位置的计算机上执行人们已经设计了标准协议以支持服务通信和信息交换陈江平SoftwareEngineering,8thedition.Chapter31Slide5面向服务的体系结构陈江平SoftwareEngineering,8thedition.Chapter31Slide6SOA的优点服务可以由本地供应商提供,也可以从外部供应商处获取服务可以使用任何编程语言实现通过将遗留系统包装成服务,可以保护对其有价值软件的投资公司的不同部门使用不同的平台和实现技术,而它们是可以进行互操作的陈江平SoftwareEngineering,8thedition.Chapter31Slide7Web服务标准Transport(HTTP,HTTPS,SMTP,...)Messaging(SOAP)Servicedefinition(UDDI,WSDL)Process(WS-BPEL)Support(WS-Security,WS-Addressing,...)XMLtechnologies(XML,XSD,XSLT,....)陈江平SoftwareEngineering,8thedition.Chapter31Slide8主要标准SOAP•支持服务间通信消息的交换标准WSDL(Web服务定义语言)•定义了一种接口定义的方式,服务提供者据此定义到这些服务的接口UDDI•定义了服务描述的组件,这种组件可用来发现服务是否存在WS-BPEL•工作流语言标准,定义包括多个不同服务的过程程序陈江平SoftwareEngineering,8thedition.Chapter31Slide9面向服务的软件工程现有的软件工程方法必须改变,以反映面向服务的软件开发方法•服务工程.关注可靠、可复用的服务的开发•可复用的软件开发•使用服务的软件开发.服务是可靠的软件开发的基本组成部分•可复用的软件开发陈江平SoftwareEngineering,8thedition.Chapter31Slide10服务作为可复用的组件服务可以定义为:•松散耦合的、封装了的离散功能的可复用软件组件,它可以是分布的,且可以通过编程来访问,web服务是这样一种服务,使用标准的因特网协议与基于XML的协议进行访问如在CBSE中所定义的,服务和软件组件之间的一个重要的区别就是,服务应该总是独立的•服务没有‘请求’接口•服务依赖于基于用XML表达信息的通信陈江平SoftwareEngineering,8thedition.Chapter31Slide11点菜中的同步交换陈江平SoftwareEngineering,8thedition.Chapter31Slide12表示为XML消息的餐厅订单starterdishname=“soup”type=“tomato”/dishname=“soup”type=“fish”/dishname=“pigeonsalad”//startermaincoursedishname=“steak”type=“sirloin”cooking=“medium”/dishname=“steak”type=“fillet”cooking=“rare”/dishname=“seabass”/mainaccompanimentdishname=“frenchfries”portions=“2”/dishname=“salad”portions=“1”//accompaniment陈江平SoftwareEngineering,8thedition.Chapter31Slide13Web服务描述语言服务接口在以WSDL表达的服务描述中定义,WSDL描述定义•指定服务所支持的操作,并且定义服务发送和接收的消息的格式•把抽象接口映射到一组具体的协议上,指定了如何与一个Web服务通信的技术细节•描述在哪里定位一个特定的Web服务实现,即URI(UniversalResourceIdentifier,统一资源标识符)陈江平SoftwareEngineering,8thedition.Chapter31Slide14WSDL描述的组织陈江平SoftwareEngineering,8thedition.Chapter31Slide15Web服务的部分WSDL声明Definesomeofthetypesused.Assumethatthenamespaceprefixes‘ws’referstothenamespaceURIforXMLschemasandthenamespaceprefixassociatedwiththisdefinitionisweathns.typesxs:schematargetNameSpace=“http://.../weathns”xmlns:weathns=“http://…/weathns”xs:elementname=“PlaceAndDate”type=“pdrec”/xs:elementname=“MaxMinTemp”type=“mmtrec”/xs:elementname=“InDataFault”type=“errmess”/xs:complexTypename=“pdrec”xs:sequencexs:elementname=“town”type=“xs:string”/xs:elementname=“country”type=“xs:string”/xs:elementname=“day”type=“xs:date”//xs:complexTypeDefinitionsofMaxMinTypeandInDataFaulthere/schema/types陈江平SoftwareEngineering,8thedition.Chapter31Slide16Web服务的部分WSDL声明2Nowdefinetheinterfaceanditsoperations.Inthiscase,thereisonlyasingleoperationtoreturnmaximumandminimumtemperaturesinterfacename=“weatherInfo”operationname=“getMaxMinTemps”pattern=“wsdlns:in-out”inputmessageLabel=“In”element=“weathns:PlaceAndDate”/outputmessageLabel=“Out”element=“weathns:MaxMinTemp”/outfaultmessageLabel=“Out”element=“weathns:InDataFault”//operation/interface陈江平SoftwareEngineering,8thedition.Chapter31Slide17服务工程是开发服务的过程,这种服务在面向服务的应用开发中是可复用的必须确保服务代表可复用的抽象,能用于不同系统的抽象包括•可选服务识别•服务设计•服务实现和部署陈江平SoftwareEngineering,8thedition.Chapter31Slide18服务工程过程陈江平SoftwareEngineering,8thedition.Chapter31Slide19可选服务识别三种基本的服务类型•实用服务这些服务实现某些一般性的功能,可被用于不同的业务过程•业务服务这些服务是与特殊业务功能相关的,如学生为一门课程注册登记等•协同或过程服务这些服务是用于支持更一般的业务过程的,这些业务过程包含不同的角色和活动陈江平SoftwareEngineering,8thedition.Chapter31Slide20服务分类实用服务业务服务协同服务任务货币转换员工定位器验证声明表格检查信用等级过程费用声明支付外部供给者实体文档风格检查器Web表格XML转换器费用表格学生申请表陈江平SoftwareEngineering,8thedition.Chapter31Slide21服务分类对于一个面向实体的服务,它是与单个用于不同业务过程的逻辑实体关联的吗?对于一个面向实体的服务,该任务是在机构中由不同的人执行的吗?服务时独立的吗?对于它的操作,服务必须维护状态吗?服务能被外面的客户使用吗?服务的不同用户可能有不同的非功能性需求吗?陈江平SoftwareEngineering,8thedition.Chapter31Slide22目录服务目录服务是支持业务操作的面向实体的服务的一个例子。目录服务的功能性需求:•目录的特定版本将提供给每家用户公司;•目录应该允许客户公司职员下载目录的一个版本以便脱机浏览;•目录应该允许用户比较多达6个目录项的描述和价格;•目录应该为用户提供浏览和搜索工具;•目录的用户应该能够根据某一特定目录项的代码发现可预期的交付日期;•目录的用户应该能够下达“虚拟单”,即所需的项可以为他们保留48小时。陈江平SoftwareEngineering,8thedition.Chapter31Slide23目录的非功能性需求有权访问目录服务的应限制为认可机构的职员;提供给某个客户的价格和配置信息应是保密的;从格林威治标准时间0700到格林威治标准时间1100,目录都应可用且不间断;目录服务应该在峰值负载能够每秒处理高达10个请求。陈江平SoftwareEngineering,8thedition.Chapter31Slide24目录服务的操作OperationDescriptionMakeCatalogueCreatesaversionofthecataloguetailoredforaspecificcustomer.IncludesanoptionalparametertocreateadownloadablePDFversionofthecatalogue.CompareProvidesacomparisonofupto6characteristics(e.g.price,dimensions,processorspeed,etc.)ofupto4catalogueitemsforcomparison.LookupDisplaysallofthedataassociatedwithaspecifiedcatalogueitem.SearchThisoperationtakesalogicalexpressionandsearchesthecatalogueaccordingtothatexpression.Itdisplaysalistofallitemsthatmatchthesearchexpression.CheckDeliveryReturnsthepredicteddeliverydateforanitemifi