高级软件工程ppt.ppt
《高级软件工程ppt.ppt》由会员分享,可在线阅读,更多相关《高级软件工程ppt.ppt(124页珍藏版)》请在课桌文档上搜索。
1、高级软件工程,第12讲 软件工程新技术及体系,12.1 软件开发新技术概述12.2 能力成熟度集成模型12.3 微软软件工程体系12.4 敏捷软件工程体系12.5 形式化方法12.6 净室软件工程体系12.7 面向服务架构(SOA)技术,第12讲 软件工程新技术及体系,教学目标:掌握软件开发新技术的概念、特点及应用 了解能力成熟度集成模型CMMI及评估方法 理解微软等现代软件工程体系 了解形式化方法及净室软件工程体系 掌握面向服务架构(SOA)技术,12.1 软件开发新技术概述,12.1.1 软件构件技术概述 1、构件技术概念构件技术是基于OO技术更高级的抽象。将底层的对象集合打包,组成功能“
2、插件”。基于构件技术的软件开发就是将已存在的构件组装(集成)到当前软件系统的框架结构中,从而开发出新的软件产品,构件技术是软件产业化革命的必然发展趋势。,OO技术在“数据+算法”基础上,提升了对事物的认识方法。构件技术则在“对象+算法”的基础上,将认识事物的角度从对象个体本身提升到个体在群体中的作用,在认识上具有本质差异同。从抽象程度看,OO技术已达到类级重用(代码重用),以类为封装的单位。而构件则是对一组类的组合进行封装,可将底层的多个逻辑组合成高层次上的粒度更大的新构件,甚至直接封装到一个系统。,2、构件的属性及应用构件是可独立配置的单元,因此必须自包容。构件可以在适当的环境中被复合使用,
3、因此构件需要提供清楚的接口规范,可以与环境交互。构件沿袭了对象的封装特性,但同时并不局限于一个对象,其内部可以封装一个或多个类、原型对象甚至过程,结构是灵活的。,对于构件的应用。构件通过其接口特征进行标识,其所提供的服务与访问方式是接口特征的一部分内容,每个构件都需先注册才能使用。考虑的因素包括:应用编程接口(API);构件所需的开发和集成;运行需求,如资源的使用(内存和硬盘),时间或速度以及网络协议;服务需求,如操作系统的接口,或需要其他构件的支持等;安全特征,例如访问控制和身份验证协议等;嵌入式设计假定,有特定的数值/非数值算法使用;异常处理。,3、实现构件技术必备条件(1)以标准软件体系
4、结构,保证构件间通信协议统一,实现同步和异步操作控制,突破本地空间限制,充分利用网络环境。(2)构件有标准接口,保证系统可分解成多个功能独立的单元,用构件组装而成。(3)构件独立于编程语言。(4)构件提供版本兼容,来实现应用系统的扩展和更新。,4、软件构件设计由于软件构件依赖于开发平台环境,设计时有以下特殊要求:(1)以接口为核心,使用开放标准。(2)构件语义的描述要形式化。(3)提炼封装构件过程应严格记录。(4)设计模式也可重用。(5)利用开发工具。,5、J2EE技术概述 Sun公司提出了三个Java平台:(1)J2ME(Java 2 Platform,Micro Edition)(2)J2
5、SE(Java 2 Platform,Standard Edition)(3)J2EE(Java 2 Platform,Enterprise Edition)1)J2EE的核心技术 J2EE的核心技术如下图所示。其中:RMI-IIOP用于实现Java和CORBA应用之间互操作。,J2EE的核心技术,2)EJB技术 EJB(Enterprise Java Beans)是为开发和使用基于事务和分布对象应用的服务器端构件而定义的一种技术规约。其体系结构相对于CORBA,最大的特点是简单性,可帮助软件开发人员快速地构建分布式应用系统。EJB的特点包括:(1)清晰的体系结构。(2)简化的编程模型。(3)
6、通用的编程模型。(4)易移植性。(5)支持事务处理。(6)可扩展性。(7)安全性。,12.1.2 软件复用技术概述,1、软件复用概念及分类软件复用(Software Reuse)是指在软件研发中重复利用相关软件元素的过程。软件复用是提高软件研发效率和质量的一种重要技术。软件复用的主要思想是:将软件作为由不同功能部分的“组件”所组成的有机体,每个组件(元素)在设计编写时可被设计成完成同类工作的通用工具。,按照不同方式,可将软件复用分为:1)按复用的对象分。可以分为产品复用、过程复用。2)按对可复用信息进行复用的方式分。可以将软件复用区分为黑盒复用和白盒复用。3)按复用的组织方式分。将复用区分为系
7、统化的(或有计划的)复用和个别的复用。4)按所应用的领域范围分。可以划分为横向复用和纵向复用。,2、软件复用关键技术及级别 软件复用是将已有的软件成分(元素)用于构造新的软件系统。可被复用的软件成分常称为可复用构件,无论对可复用构件原样使用或作适当修改后再使用,只要是用于构造新软件,则都可称作复用。软件复用不仅是对程序的复用,还包括对软件生产过程中任何活动所产生的制成品的复用,如:项目计划、可行性报告、需求定义、分析模型、设计模型、详细说明、源程序、测试用例等等。,实现软件复用的关键技术主要包括:软件组件技术、领域工程、软件构架技术、软件再工程技术、开放系统技术、软件过程、CASE技术等。可划
8、分的复用级别为:代码复用、设计复用、分析的复用、软件测试信息的复用、应用程序生成器的使用、软件体系结构的复用等。影响着软件复用的主要因素包括:技术因素、人为因素、管理因素、教育培训因素、法律因素等。,3、通过复用设计类1)选择开发软件库的目的是从既存构件中选取符合需要的构件,也是设计类最简单的方法。在OO开发环境应提供常用的构件库,大多数语言环境都带有一个原始构件库。下表为建立在各层上的特定域的库。,表 一个面向对象构件库的层次,2)分解最初标识的“类”常为几个概念的组合。设计时可能发现所标识的操作属于分散的几个概念中,或发现数据属性被分开放到模型中拆散概念形成的几个组内。因此,需要将一个类分
9、成几个类,使新标识的类已存在或易于实现。,3)配置在设计类时,可能需要由既存类的实例提供类的某些特性。通过将相应类的实例声明为新类的属性配置新类。如,一种仿真服务器可能要求用一个计时器跟踪服务时间。设计者不必开发在此行为中所需的数据和操作,而应找到计时器类,并在服务器类的定义中进行声明。,4)演变准备开发的新类可能与一个既存类非常类似,但不完全相同。此时,不适宜采用“选择”操作,但可从一个既存类演变成一个新类,可利用继承机制来表示一般化特殊化的关系。特殊化处理可以选择以下3种方式。(1)由既存类建立子类。,轿车类,汽车类,建立子类,拖拉机类,汽车类,调整继承结构,(2)由既存类建立新类。,边形
10、类,三角形类,(3)建立既存类的父类。,建立一般类,12.1.3 虚拟化与云计算技术概述,云计算将网络上分布的计算、存储、服务构件和网络软件等资源集中起来,基于资源虚拟化的方式,为用户提供方便快捷的服务,它可以实现计算与存储的分布式与并行处理。如果把“云”视为一个虚拟化的存储与计算资源池,那么云计算则是这个资源池基于网络平台为用户提供的数据存储和网络计算服务。,云计算是并行计算(Parallel Computing)、分布式计算(Distributed Computing)和网格计算(Grid Computing)的发展,或者说是这些计算科学概念的商业实现。云计算是虚拟化(Virtualiza
11、tion)、效用计算(Utility Computing)、将基础设施作为服务IaaS(Infrastructure as a Service)、将平台作为服务PaaS(Platform as a Service)和将软件作为服务SaaS(Software as a Service)等概念混合演进并跃升的结果。,1、虚拟化技术概述虚拟化是将物理资源转变为逻辑上可以管理的资源,以打破物理结构间壁垒。可使虚拟世界运行在各种物理平台上,资源的管理都将按逻辑方式进行,完全实现资源的自动化分配,而虚拟化技术就是其实现的理想工具。,虚拟化环境需要多种技术的协调配合:服务器和操作系统的虚拟化、存储虚拟化、以
12、及系统管理、资源管理和软件提交,与非虚拟化环境一致的应用环境。由于虚拟化技术,企业不再需要建立耗资巨大的数据中心便可实现异地备份。虚拟技术主要包括:虚拟现实、虚拟显示、虚拟机、CPU虚拟化技术、文件虚拟化、桌面虚拟化技术等。,2、云计算的概念及架构云计算主要通过互联网以创新的计算模式,使用户随时获得所需的计算能力和丰富的信息服务,其创新的商业模式可使用户对计算和服务,如同使用水电一样取用自由、按量付费;目标是通过互联网将各种IT资源以服务的方式提供给用户,包括计算资源、存储资源、软件开发、系统测试、系统维护和各种丰富的应用服务。,现在,云计算融合了以虚拟化、服务管理自动化和标准化为代表的众多创
13、新技术。云计算借助虚拟化技术的抽象表达性、伸缩性和灵活性,提高了网络资源利用率,简化了资源和服务的管理和维护;利用信息服务自动化技术,将资源封装为服务交付给用户,减少了数据中心的运营成本;利用标准化,方便了服务的开发和交付,缩短了客户服务上线时间。,云计算实现复杂的企业环境的各种技术和方法正在不断深入,主要是研发软件系统的云计算架构。云计算架构的4个层次为:显示层、中间层、基础设施层、管理层管理层主要为横向的三层服务,并提供多种管理和维护技术等,包括6个方面:(1)帐号管理。(2)SLA监控。(3)安全管理。(4)计费管理。(5)负载均衡。(6)运维管理。,3、云计算的分类,云计算按照服务类型
14、大致可以分为三类,如下图所示:,(1)IaaS将硬件设备等基础资源封装成服务供用户使用,如亚马逊云计算AWS(Amazon Web Services)的弹性计算云EC2和简单存储服务S3。(2)PaaS对资源的抽象层次更进一步,它提供用户应用程序的运行环境,典型的如GoogleApp Engine。(3)SaaS的针对性更强,它将某些特定应用软件功能封装成服务,如Salesforce公司提供的在线客户关系管理CRM(Client Relationship Management)服务。,课堂讨论:(1)什么是软件构件技术?其特点如何?(2)什么是复用技术?这样应用复用技术?(3)怎样理解虚拟化和
15、云计算技术?,12.2 能力成熟度集成模型,12.2.1 CMMI概述 1、CMMI的由来CMMI(Capacity Maturity Model Integrated)是美国国防部规定的一种衡量软件企业或组织开发能力的度量标准。规定只有达到CMMI一定等级的公司才有参加美国国防软件项目竞标的资格。我国也鼓励企业进行CMMI等级评估,许多软件工程项目招标也看重承包商的CMMI等级。目前,CMMI已被应用到:评估机构评估一个软件企业或组织的软件开发能力成熟度等级;软件采购方用于考察软件承包方软件项目承包能力;软件企业或组织用于持续改进自身软件开发能力。,2、CMMI表示方法及要求CMMI有两种表
16、示方法:(1)连续模型。(2)阶段模型。CMMI中的各项要求,都来自于成功企业的最佳实践。尽管CMMI提供的实践不能针对所有情况,但CMMI能系统性地提供大量的实践(22个过程域),对于项目或组织的选择或参考很重要。CMMI提供能力成熟度评估,可帮助企业或组织找出自身的弱点进行改进。,12.2.2 CMMI能力成熟度级别,CMMI以5个级别分别代表软件团队能力成熟度的等级,级别较大的机构表明其成熟度较高,软件综合开发能力较强。主要包括:(1)CMMI 一级(执行级)。(2)CMMI 二级(管理级)。(3)CMMI 三级(明确级)。(4)CMMI 四级(量化级)。(5)CMMI 五级(优化级)。
17、,12.2.3 CMMI的评估及应用,1、CMMI的评估 软件企业或组织对CMMI级别的评估,可按照CMMI的具体要求进行。采取自行评估或外请评估,评估结果应得到外界认可,应由SEI认证的主任评估师和评估师进行评估,并依评估结果颁发相应证书。对于企业或组织的CMMI级别的评估,CMMI二级及其以上的每一级别都包含了一些PA(Process Area,过程域),若要达到CMMI某个级别的要求,就要达到该级别及其以下所有PA的要求。PA是要做好软件开发的某一个方面,如项目策划、技术方案、配置管理等。CMMI 共有22个PA,其中CMMI 二级有7个PA,三级有11个PA,四级有2个PA,五级有2个
18、PA,详见下表。,表 CMMI的过程域分布,“项目策划”是CMMI二级七个过程域之一,其特定目标(SG)有3项,特定实践(SP)有14项,通用目标(GG)有5项,通用实践(GP)有17项,详见下表。,项目策划的特定目标和特定实践,表 项目策划的通用目标和通用实践,2、CMMI的应用CMMI是一个庞大的过程元模型,自发布以来在国际软件界已产生了巨大影响,已成为业界公认的评估标准,获取其证书成为一个企业或组织能力和形象标志,否则难以获得国外项目,甚至也难以在国内一些项目的竞标中获胜。CMMI适合企业操作,避免了某些管理体系只重理论而忽视实践的缺陷。在我国随着媒体的宣传和政府的支持,许多企业引入了C
19、MMI咨询和认证,对于整个软件行业的管理提升及研发效率提高起到了很大促进作用。,课堂讨论:(l)CMMI有什么用途?(2)CMMI连续模型和阶段模型各自适应哪一种过程改进要求?(3)CMMI的五个级别分别是什么?,12.3 微软软件工程体系,12.3.1 MSF过程模型 MSF 过程模型将瀑布模型中基于里程碑的规划优势与螺旋模型中增量迭代的长处结合在一起,形成构思、计划、开发、稳定和发布5个阶段迭代改进、螺旋上升的流程,如下图所示。,MSF过程模型,下面分别简述各阶段的主要工作:(1)构思阶段:明确项目的任务、目标和范围。(2)计划阶段:编写功能说明书、完成概要设计、编写工作计划、制定费用预算
20、和制定进度表等。(3)开发阶段:实现整个解决方案代码和文档编写,结果可提供给用户试用。(4)测试阶段:完成所有代码的优化和测试,做好了产品发布准备。(5)部署阶段:进行产品发布,侧重解决发布出现的问题,发布过程完成后再将项目移交到运营和支持人员手中。,12.3.2 MSF团队模型,微软的软件开发团队实行矩阵式交叉管理。纵向垂直管理与汇报关系为:产品总经理部门经理小组长组员;横向管理为产品特性项目组,每个产品特性项目组负责开发一个组件,大的产品特性项目组通常要拆分成小的子项目组。产品特性项目组成员职能划分为六种角色,如下图所示。团队6种角色的职责如下表所述。,9.4.2 MSF团队模型,MSF团
21、队模型,表 MSF团队模型中各角色的职能与职责,MSF团队模型的特点是项目组小型化、多元化,各角色地位对等,在同一地点办公,熟练掌握相关的技术,相辅相成,以产品发布为中心,共同参与设计、管理、决策和分享产品前景,但各自又有足够的不同授权和责任。项目组可按职能或产品特性灵活划分,人员也可按照一定的原则兼任多个或不同的角色,如下表所示:,表 角色兼任匹配表,12.3.3 MSF开发基本原则,Microsoft 将开发经验总结为下述8条基本原则:(1)推动信息共享与沟通。(2)为共同目标工作。(3)充分授权和信任。(4)各司其职,对项目共同负责。(5)重视商业价值。(6)及时更新与时俱进。(7)注重
22、质量及效益。(8)交流总结经验。,12.3.4 团队协同开发平台与工具,微软的团队协同开发平台称为VSTS(Visual Studio Team System)。主要帮助开发团队各角色提高工作效率和更有效地合作与沟通,并通过开发过程中的每个步骤提高软件质量。微软已将VSTS打造成为一款商品化产品,从产品角度,包含一个服务器软件和一组客户端软件。其中:服务器软件TFS(Team oundation Server)是系统的中心,具有项目管理、工作项跟踪、版本控制、报告与业务智能、构建管理和流程指南等团队服务功能。,课堂讨论:(l)什么是MSF过程模型?(2)什么是MSF团队模型?(3)什么是MSF
23、开发的基本原则?,12.4 敏捷软件工程体系,敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在软件开发过程中,经常面对快速变化带来的新问题,并被不断增加、繁杂的步骤、规则和文档所困扰。,12.4.1 敏捷宣言及原则,敏捷软件工程体系的核心思想,可概括为以下敏捷宣言。个体和交互 胜过 过程和工具 可以工作的软件 胜过 面面俱到的文档 客户合作 胜过 合同谈判 响应变化 胜过 遵循计划敏捷联盟认为,右项虽然也有价值,但是左项具有更大的实际意义和价值。,敏捷联盟定义的敏捷原则,包括以下12条:,(1)最优先要做的是通过尽早的、持续的交付有价值的软件使客户满意。(2)即使到了开发后期,也欢迎改变
24、需求。敏捷过程利用变化为客户创造竞争优势。(3)经常地交付可运行的软件,交付间隔从几周到几个月,交付时间间隔越短越好。(4)在整个项目开发期间,业务人员和开发人员尽量天天在一起工作与交流。(5)围绕被激励的个体构建项目,提供所需的环境和支持,并信任他们能够完成工作。,(6)在团队内部,最有效果和效率的传递信息方法就是面对面的交谈。(7)首要的进度度量标准是研发的软件。(8)敏捷过程提倡可持续的开发速度。团队和用户应保持一个长期恒定的开发速度。(9)不断地关注优秀的技能和好的设计以增强敏捷能力。(10)尽量简单只做必须的,这是艺术。(11)最好的构架、需求和设计出于自组织团队。(12)团队会不定
25、期地进行反省和调整,以求更有效地工作。,12.4.2 敏捷过程模型,是一渐进型开发过程,将开发阶段的4个活动:分析、设计、编码和测试结合在一起,消除了软件过程中不必要的步骤和提交物,在全过程中采用迭代增量开发、反馈修正和反复测试的策略。敏捷软件开发生存周期划分为用户故事、体系结构、发布计划、交互、接受测试和小型发布6个阶段,其中“用户故事”代替了传统模型中的需求分析,由用户用自己领域中的词汇准确地表达其需求而无须考虑任何软件开发技术细节。软件过程如下图所示。,9.5.2 敏捷过程模型,敏捷软件过程模型,敏捷过程遵循以下简便易行规则:,(1)有计划地开发(Planning Game)。(2)小版
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 软件工程 ppt
链接地址:https://www.desk33.com/p-235908.html