高级软件工程

上传人:pu****.1 文档编号:578741280 上传时间:2024-08-25 格式:PPT 页数:85 大小:2.67MB
返回 下载 相关 举报
高级软件工程_第1页
第1页 / 共85页
高级软件工程_第2页
第2页 / 共85页
高级软件工程_第3页
第3页 / 共85页
高级软件工程_第4页
第4页 / 共85页
高级软件工程_第5页
第5页 / 共85页
点击查看更多>>
资源描述

《高级软件工程》由会员分享,可在线阅读,更多相关《高级软件工程(85页珍藏版)》请在金锄头文库上搜索。

1、高级软件工程云计算与平台即服务北京大学软件研究所魏豪主要内容第一部分 :云计算第二部分:SASE云时代的软件工程第三部分:SASEPSASE的一个具体实现第一部分 云计算Just A Joke一个大学生勤工兼学,办了个路边摊卖东西,因为数学基础好,不带计算器,习惯动作抬头望天,用心算计算钱数。顾客纷纷掏出计算器验证,发现这个大学生从来没出过错,顾客们都大为惊讶,于是他们也抬头望天,惊恐地问到:“莫非这是传说中的云计算?”什么是云计算云计算是一个崭新的互联网概念云计算是一次互联网应用的革新云计算代表了互联网发展的趋势云计算综合使用了大量的现有技术云计算体现了IT服务化的思想云计算是一个崭新的概念

2、云计算目前还没有得到公认的明确的定义Berkeley的观点:Cloud Computing refers to both the applications delivered as services over the Internet and the hardware and systems software in the datacenters that provide those services.不同组织对云计算的定义Wiki云计算是一种基于互联网的计算方式,通过互联网上异构、自治的服务为个人和企业用户提供按需即取的计算。云计算的资源是动态易扩展而且虚拟化的,终端用户不需要了解云中基础设

3、施的细节,只关注自己需要什么样的资源以及如何得到相应的服务。不同组织对云计算的定义IBM云计算是一种计算形式,其基础是用公有或私有网络实现服务、软件及处理能力的交付。云计算本身也是一种实现基础设施共享的方式,云服务使用者看到的只有服务的本身,而不用关心相关基础设施的具体实现。不同组织对云计算的定义NIST(美国国家标准及技术研究所,信息技术实验室 )云计算是一个模型,这个模型可以方便地按需访问一个可配置的计算资源(例如,网络、服务器、存储设备、应用程序以及服务)的公共集。这些资源可以被迅速提供并发布,同时最小化管理成本或服务提供商的干涉。云模型由五个特征、三个服务模型和四个发布模型组成,如此使

4、以上成为可能。 NIST:云计算的基本特征按需自助服务。随时随地的网络访问。资源共享。快速的可伸缩性。可度量的服务。NIST:服务模型和发布模型服务模型: 软件即服务 (SaaS) 平台即服务 (PaaS) 架构即服务 (IaaS发布模型: 私有云社区云公有云混合云云计算的关键特征基于互联网面向服务按需配置和共享资源动态可扩展实现细节透明化云计算的主要特点资源高度集中大量的硬件、大量的软件、大量的数据以在线形式向用户提供服务资源利用率高用户使用方便接入简单(本地用最小化的设施,浏览器)数目处于不断变化之中要求服务质量高云计算是互联网应用的革新信息技术的四次革新计算机商用化(IBM360系列)个

5、人计算机移动通信和互联网云计算的兴起云计算代表了互联网发展的趋势云计算的优势更加低廉的用户设备开销更高的性能更少的维护性能更低的软件成本实时的软件更新强大的运算能力无限的存储空间增强的数据安全方便的共享与协作不依赖于特定的设备制约云计算发展的因素需要持久的因特网连接低速连接会降低用户体验功能有可能受限获取用户的信任需要长时间的努力云计算能得到想象中的发展吗互联网接入方式的多样性提高了云计算网络连接的持久性问题吉比特以太网逐渐成为主流光纤接入的范围不断扩大继3G移动网络之后,基于LTE的4G网络登上了历史舞台街头巷尾开始出现大量的wifi热点智能移动设备的出货量超过了个人计算机客户端服务器合作模

6、式的发展逐步减少了基于云的服务的功能局限性RIA(Rich Internet Application)大幅度提高了WEB应用的用户体验Flash(Flex)SlivaLightiOS App Store、Goole App StoreHTML5互联网接入速度的提高保证了云计算的用户体验吉比特以太网:100MB/s3G、3.5G移动网络:1-2MB/s4G LTE移动网络:50MB/sWifi:60MB/s(802.11n)云计算一定能够获得用户的信任p我的数据安全吗?安全,存储在云供应商服务器上的数据,就像存在银行里的钱一样安全。p云计算能节省我的成本吗?能,IT设施的使用有规模效益。p我能够

7、随时随地享受云计算的服务吗?只要你能够随时随地地访问互联网,在这个移动通信高速发展的时代,这似乎并不困难。云计算综合使用了大量的现有技术分布式存储和计算规模更大,密度更高,能力更强硬件虚拟化层次更丰富,效率更高资源隔离粒度更细,扩展性更强服务驱动以面向服务的思想为基础,扩展了SaaS,在其基础上发展出了XaaS云计算体现了IT服务化的思想云计算的三种基本服务模式IaaS:Infrastructure as a Service,基础设施即服务。服务的提供者将计算机基础设施作为计量服务提供给用户。PaaS:Platform as a Service,平台即服务。服务的提供者将软件应用的开发环境、运

8、行环境等作为计量服务提供给用户。SaaS:Software as a Service,软件即服务。服务的提供者将应用软件部署在服务器上,用户根据需求通过互联网访问应用并获得服务。基础设施即服务服务的提供者将IT设基础设施资源的利用作为服务提供给用户,这些资源通常包括处理器资源、存储资源、网络带宽等。用户可以在这些基础设施上部署和运行软件,包括操作系统和应用软件。Amazon的EC2是一个典型的IaaS,通过互联网访问,向用户提供按需计费的计算能力和存储空间。Amazon的AWS是一个新的IaaS,可以直接向用户提供基于VMware的虚拟机,支持windows和Linux等操作系统。平台即服务服

9、务的提供者把应用程序的开发和运行环境作为一种服务提供给用户,用户在平台的基础上开发或者部署自己的应用程序,并借助平台的服务器通过互联网交付给应用程序的最终用户。PaaS可以给企业或个人提供研发的中间件平台如数据库、应用服务器等资源。典型的PaaS平台有GAE、F等。Google App EngineGoogle App Engine提供了一个集成的应用开发环境,提供对Java和Python的支持。利用Google提供的开发工具,可以构建易于构建、易于维护、易于扩展的应用。Google App Engine的环境具有以下特征:动态的Web服务。具有查询、分类和实物存储的持久存储能力。自动扩展和自

10、动负载平衡基于Google API的单点登录机制Force.ComSalesForce为Force.Com平台提供了一套完整的API和开发工具集,以登录次数为单位进行计费。Force.Com提供了AppExchange机制,AppExchange是一个以Web为基础的应用的目录,提供应用软件的分享、授权和销售接口。软件即服务软件即服务是最普遍的一类服务模式。服务的提供者将软件应用部署在服务器上,通过互联网分发给最终用户。用户往往不再为“拥有”软件支付费用,而是为“使用”软件支付费用。服务的提供者所服务的每一个个人或者组织被称之为“租户”,这种配置模式被称为多租户架构。服务的提供者的资源被虚拟地

11、划分为多个部分,使得每个租户都可以利用定制的实例进行工作。对于最终用户来说,使用SaaS无需前期的服务器或者软件许可投资。对于应用的开发者来说,只需要为多个客户端维护一个应用。典型的SaaS无处不在第二部分 SASE 云时代的软件工程软件工程能否从云计算中获益?本地开发的软件需要部署到云中部署的困难能否直接在云中开发开发工具也是软件将开发工具部署到云里会怎么样代码直接在云里服务支持的软件开发方法 面向构件的 软件开发方法 服务化的软件服务化的软件 面向行业领域的软件 支持软件开发的工具软件支持软件开发的工具软件软件开发方法软件开发方法 发展 面向对象的 软件开发方法 面向过程的 软件开发方法

12、面向服务的软件开发面向服务的软件开发 面向服务的软件开发方法面向服务的软件开发方法服务支持的软件开发方法服务支持的软件开发方法服务提供者角色的分化平台的提供者 工具服务收集与管理通过使用各种类型的优化技术,为大量的、数目不断变化的用户提供高质量的服务,并提高平台中硬件、数据、能源等各类资源的利用率服务的监测与分析、决策与控制是核心研究内容与进程的调度是传统操作系统的核心相类似审核与部署、挖掘及推荐是软件服务管理平台特有的研究内容与传统操作系统不同,服务运营平台不仅需要掌握资源的动态信息,还要记录服务的访问历史信息(例如,什么时候、被什么用户访问过,效果如何,对系统资源的消耗如何,等等),并掌握

13、关于用户总体甚至特定用户的大量信息,以提供优质的、个性化的服务服务的开发者 软件开发与演化过程 开发符合云平台规范的工具支持用户直接使用支持程序调用挖掘用户使用习惯完善工具新工具参与云平台的高层管理服务的消费者组合、构造适合自己的WEB IDEIDE不再“千人一面”集成不同功能的工具支持完整的软件生命周期管理集成多个类似功能的工具提高服务的质量集成服务化的工具与本地工具合理地利用服务SASE的优势服务化带来的一般性优势不用本地安装维护、升级简单编程协同: Bepsin制导:大量习惯用法、利用其它人的编程技巧编译云中收集大量的程序库工具的配置开发人员比较方便地配置自己的开发环境工具的测试使用过程

14、是最好的测试永远处于测试中!工具的演化服务运行平台可以很方便地为服务化的软件收集到运行相关的信息对于后续维护、升级等演化活动非常有价值SASE发展面临的挑战技术挑战:不是简单的工具 web 化!SASE特有的: 新的协作方式更高起点:开发环境与运行环境的接近协同编程:项目成员间更密切的显式合作深度复用:项目之间更丰富的隐式合作远程调试:资源不在本地受限测试: 有喜有忧细致部署:侧重点的转移SaaS共有的:集中的管理与挖掘静态分析:老技术、新需求动态监测:日趋重要优化控制:好说难做挖掘推荐:潜力无限浏览器图形图像处理能力的局限性FlexHTML5更高起点:开发平台与运行平台接近创建项目时得到更多

15、的支持面向领域(数据模型、领域模型)更明确的引导更丰富的代码框架因为IDE掌握运行平台细节传统分发的模式IDE 开发者难以详细地假定应用开发者、系统实际运行的环境协同编程:项目成员间更密切的合作项目级并发SVN:同时编辑同一项目中的不同文件任务分配、进展监控文件级并发协同编辑:同时编辑同一文件中的不同方法极限编程:异地结对进行?项目组内更多的实时协作组内成员的活动深度复用:项目之间的隐式合作复用编码习惯推荐使用公共类中某些方法推荐联合使用公共类库复用缺陷模式避免常见的不当用法基于编程动作挖掘传统方法收集困难云环境中收集方便远程调试:设施不在本地大量的交互够快吗?陌生的平台能多深入?底层改动不了

16、?涉及硬件信息?潜在的风险是否会有残留信息到上线?协同的调试如何共享项目组其他成员的信息?受限测试:有喜有忧永远处于测试用户体验错误发送开发者不能过分影响其它服务的运行不能对服务系统进行压力测试避免影响上线后的系统开发环境与部署环境的接近消费者有时需要支付服务费用,有时不能做全程测试?可以通过服务的方式获取待测对象的历史运行数据,以判断待测对象是否与自己的需求相匹配提供提供 更完备的代码框架更完备的代码框架作为作为 更高的编程起点更高的编程起点促进促进 文件级并发编程文件级并发编程超越超越 SVNSVN开发环境与运行环境的接近项目组成员之间逻辑距离更近项目之间更多的复用在线测试信息收集方便挖掘

17、、推荐挖掘、推荐 编程风格编程风格收集、整理收集、整理 领域知识领域知识挖掘挖掘 缺陷模式缺陷模式提示提示 演化方向演化方向工具软件 服务化框架生成编程调试静态分析测试维护细致部署:侧重点的转移RightScale: 拓扑结构、调优、规划部署环境与开发环境非常接近比传统本地开发然后部署到服务器上的方法快相近的应用服务可以共享公共库节省存储在哪里运行?物理节点、虚拟机多少个实例?提高服务质量如何动态调整?热升级热迁移静态分析:老技术、新需求Safety:避免不必要的资源占用内存泄漏死循环Security安全漏洞保护用户私密数据资源占用:支持合理部署、调度服务预计CPU占用预计内存占用预计磁盘占用

18、预计网络带宽占用动态监测:日趋重要资源使用信息服务信息是否存活?运行正常?响应时间?资源占用?访问安全?图形化显示Qianxiang Wang, Jin Shao, Fang Deng, Yonggang Liu, Min Li, Jun Han, and Qianxiang Wang, Jin Shao, Fang Deng, Yonggang Liu, Min Li, Jun Han, and Hong Mei, Hong Mei, An Online Monitoring Approach for Web Service Requirements, An Online Monitorin

19、g Approach for Web Service Requirements, IEEE Transactions on Services Computing, No.3(Oct-Dec), 2009. IEEE Transactions on Services Computing, No.3(Oct-Dec), 2009. 优化控制:好说难做修改配置停止启动升级迁移Jefferey Kephart, David Chess, The Vision of Autonomic Computing, IEEE Computer, Jan. 2003Jefferey Kephart, David

20、Chess, The Vision of Autonomic Computing, IEEE Computer, Jan. 2003挖掘推荐:潜力无限服务、用户、资源自动获取某段时间内最受欢迎的服务访问次数最多成功提供服务的次数最多自动获得用户的使用偏好信息地区、时间编码习惯 自动获得大量的出错信息 为维护、演化提供支持Guangtai Liang, Ling Wu, Qian Wu, Qianxiang Wang, Tao Xie, Hong Mei, Guangtai Liang, Ling Wu, Qian Wu, Qianxiang Wang, Tao Xie, Hong Mei, A

21、utomatic Construction of an Effective Training Set for Prioritizing Static Analysis Automatic Construction of an Effective Training Set for Prioritizing Static Analysis Warnings, Warnings, to appear in International Conference on Automated Software Engineering (ASE) 2010 to appear in International C

22、onference on Automated Software Engineering (ASE) 2010 面向服务特征的运行管理进程调度、内存管理等l资源状况CPU内存IO提高资源利用率方便用户使用服务部署、配置、迁移等提高 资源利用率 提高 用户满意度l资源状况可用程度忙闲程度带宽可靠性静态分析动态监测l服务特征服务间关系运行时间健壮性用户量其它问题工具服务的形式用户通过 web 页面 使用程序通过 服务接口 调用用户的习惯云与端结合?与本地代码的同步?应用挑战软件开发者对于代码放在云里放心吗?如何让用户平滑过渡过来?云安全:谁为可能出现的问题负责?更多的角色层次:云平台管理者、工具管理

23、者、项目管理者、编程人员找谁处理?实践现状你已经在使用大量的云了网络搜索:google search电子邮件:gmail查病毒:自动更新病毒库 云输入:自动更新常用输入你甚至可能已经有过“云开发”的经历了CVS、SVNIssue Tracker谁在探索Microsoft IBMOnline IDEMozila BespinZoho CreatorECCO Delft University: AdindaVMWare+Salefore: VMforce中国移动:我们的实践Web IDE:Web IDE软件工程服务平台:SASEP第三部分:SASEPSASE的一个具体实现SASEPBy MASS.

24、PKUSASEP概述软件的开发、维护离不开工具软件的支持,例如建模工具、编辑工具、静态分析工具、测试工具等。传统上,这些工具都安装在使用者的本地。随着SaaS逐步为人们所接受,许多开发人员正努力让自己的工具支持基于 web 的使用方式。SASEP将大量的服务化软件工具汇聚到一个平台上,为最终的开发人员提供服务化的工具支持。SASEP将软件工程活动作为支持领域,是一个“服务支持的软件工程”(Service Aided Software Engineering)的平台。SASEP的总体架构SASEP中对服务的分类SASEP按照服务之间的调用关系将服务分为原子服务与组合服务。原子服务是指不需要调用其

25、他服务就可以独立运行的服务。目前SASEP运行了很多的原子服务,比如代码静态分析类服务中的PMD,Findbugs等。组合服务不能独立运行,需要通过对一种或多种其他服务进行调用,并结合自身的业务逻辑来实现某种功能的服务。例如,目前 SASEP 上部署的CODAS是SASEP上的一个典型的组合服务实例,它以PMD、Findbugs、JLint等静态分析工具的分析结果为基础,对报出的警告信息进行排序。管理服务的相关信息开发者信息,部署信息,版本信息,组合信息,分类信息等等实现服务部署的半自动化部署前检查、审核,制定部署策略,部署后的升级监测服务的运行状态实时的发现问题并报警动态为服务分配资源利用云

26、的优势将资源利用最大化收集服务的使用情况发现使用者的使用习惯,为开发者提供反馈意见SASEP的管理功能SASEP中的角色SASEP中的角色、模块和实体SASEP中服务的管理对服务的生命周期与活动进行分析原始静态服务调整后的静态服务服务实例建立一个服务管理的框架协助用户部署服务自动寻找符合要求的节点支持用户对服务的管理行为在SASEP中实现框架SASEP服务管理的行为分析用户主导的服务管理框架服务管理系统的体系结构DSAgentDSAgentASAgentASAgentWSAgentWebServerDatabseServerApplicationServerManagerFront end对对

27、Server的管理通的管理通过过Agent来实施来实施Manager统一调度,统一调度,指导指导Agent进行操作进行操作系统的前端系统的前端UI层层服务的部署部署策略服务对于资源的占用情况服务对于资源包与服务的依赖情况服务的部署与升级分发服务依赖的相关文件控制请求的转发配置服务的相关配置分析冲突配置替换配置文件服务包代码:war文件 = Application Server数据:sql文件 = Database Server执行sql文件,导入数据规范:数据访问部署前数据库信息(如ip等)是未知的强制要求使用Hibernate或JPA框架由部署程序修改hibernate.cfg.xml和pe

28、rsistent.xml等如果直接使用JDBC,必须从database.xml读取数据库信息Sql文件只允许进行表结构的CRUD以及数据记录的CRUD文件访问:通过定制的sdk进行,不允许直接访问(防止危害系统安全)禁止通过代码调用本地命令禁止通过代码开放端口步骤上传服务包(war+sql):保存在一个统一的仓库中检查服务包(静态分析)规范检查:是否满足规范(数据库、文件、端口等)安全性检查:是否具有恶意代码(死循环、压力测试等)代码依赖完整性检查:是否将使用到的全部第三方lib上传服务特征分析:I/O密集还是计算密集分配Database Server根据负载均衡等策略,选择一个Databas

29、e server,通知Agent配置数据库(创建用户、创建数据库、导入sql文件)扩展点:数据库集群分配Application Server根据数据库的分配结果,修改数据库配置文件根据负载均衡等策略,选择一个或多个(组成集群)Application Server,通知Agent部署服务代码修改Web Server配置,开放访问服务的URL服务的部署过程DSAgentDSAgentASAgentASAgentWSAgentManagerUploaderwarsqlsqlwar服务包服务包Service storage服务的升级基于Web的应用更新频繁一直是Beta版升级中断服务不中断服务(如Go

30、ogle):良好的用户体验理想情况:新版本的服务部署好后,立即停止老版本的服务,所有请求都使用新版本服务制约:部署新版本服务需要一定时间;新版本服务部署好后,老版本服务上保存着之前的请求信息(Session等),需要将这些信息复制到新服务上。实现机制比较复杂用户体验不够平滑次优方案“延迟”升级包含一个过渡期新、老版本服务同时运行老请求使用老服务;新请求使用新服务所有老请求完成后,终止老服务,完成升级技术Application Server的FilterApplication Server的Session监控目前只涉及服务代码的升级扩展点:数据库升级服务的升级过程Application Serv

31、erApplication ServerWeb Serverrule:forwad to oldOld version serviceUpgrade FilterS2SessionS1AgentAgentManagerrequest1request2New version serviceUpgradeBroweserEnablerequest3S3RemoveConfigWeb Serverrule:forwad to newrequest4Agent服务的控制运行控制提供服务的运行控制界面以监测为基础的服务运行状态控制访问控制提供文件访问接口通过静态分析发现非法代码通过在线监测捕获非法操作服

32、务的智能调整Agent对服务的运行情况进行监测根据监测结果进行调整服务不可用:重新部署服务空闲:减少资源服务烦忙:增加资源服务异常:删除服务主要工作服务的监测:参数(CPU/内存/IO等)、策略(频度/统计策略等)服务的调整规则和策略:阈值的设定挑战平台上的服务来自不同的提供者,大量服务共享同一个运行环境解决方案部署前的静态分析发现潜在的代码缺陷定义安全策略:比如,不允许使用某些类的某些方法运行时的动态监测监视可疑行为和操作平台的安全性保障服务的静态分析对服务的源代码进行全面的静态分析,并给出详细的分析报告,防止有缺陷的代码被部署到平台上,保护服务的公共运行环境代码违禁调用分析安全类缺陷分析代

33、码低效调用分析资源泄漏分析将在后面的课程中由梁广泰学长展开来讲服务的在线监测提供多角度的监测视图,掌握系统状态系统管理员视图服务提供者视图用户视图通过监测提高系统的可用性和可靠性监测记录帮助调整部署策略监测系统及时发现系统故障对监测信息的挖掘形成推荐信息帮助用户找到感兴趣的服务帮助服务的提供者改进和演化服务将在后面的课程中由邵津学姐展开来讲目前平台概况30多个服务用户自由使用服务注册用户使用服务程序调用服务覆盖软件的各个生命周期阶段分析设计编码测试目前服务的主要贡献者北京大学信息学院软件工程研究所王千祥老师、张路老师、张伟老师、赵俊峰老师、课程高级软件工程编译实习Java语言软件学院郁莲老师目前服务的主要贡献者北京大学北京大学信息学院信息学院软件工程研究所软件工程研究所王千祥老师、张路老师、张伟老师、赵俊峰老师、王千祥老师、张路老师、张伟老师、赵俊峰老师、课程课程高级软件工程高级软件工程编译实习编译实习Java语言语言软件学院软件学院郁莲老师郁莲老师Q & A

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号