版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1
厦门大学软件学院
高星ADVANCEDSoftwareEngineering软件工程基础主要内容软件工程的基本理念软件过程软件生命周期软件开发模型2解决软件危机之路提高软件产品的质量!
降低软件开发的成本!3过程管理与目标管理理念:通过保证过程保证结果以小孩教育为例4软件工程原则B.W.Boehm(1983):用分阶段的生存周期计划严格管理软件开发进行阶段评审实行产品版本控制采用现代程序设计技术结果应能清楚的审查开发小组成员应少而精承认不断改进软件工程实践的必要性5二八定律对软件项目进度和工作量的估计:认为完成80%的工作量,实际上只完成了20%。对程序中存在问题的估计:80%的问题存在于20%的程序中。对模块功能的估计:20%的模块实现了80%的功能。对人力资源的估计:20%的人解决了软件中80%的问题。对投入资金的估计:企业信息系统中,80%的问题可以用20%的资金耒解决。6软件工程视角与剖面企业角度计算角度信息角度工程角度政策、操作......7软件开发模型-软件生命周期模型瀑布模型(WaterfallModel1970W.Royce)8渐增模型(IncrementalModel)910快速原型模型(RapidPrototypingModel)11螺旋模型(SpiralModel)12V模型13图1-7V模型14图1-8V模型改进-W模型喷泉模型15构件集成模型16图1-10构建集成模型智能模型17图1-11智能模型转换模型18图1-11智能模型软件过程基础
任何工程方法(包括软件工程)必须以有组织的质量保证为基础.全面的质量管理和类似的理念刺激了不断的过程改进,正是这种改进导致了更加成熟的软件工程方法的不断出现.支持软件工程的根基就在于对质量的关注.建造计算机软件是一个迭代学习的过程。软件工程与软件过程的关系软件过程是为开发高质量软件所需要完成的任务的框架.软件工程是有创造力,有知识的人在定义好的,成熟的软件过程框架中进行的.该过程适合于他们建造的产品和他们的市场需要。一个软件过程定义了软件开发中采用的方法,而软件工程还包含该过程中应用的技术----技术方法和自动工具。软件的一般视图
工程是对技术(或社会)实体的分析、设计、建造、验证和管理。抛开要工程化的实体,下列问题是必须首先回答的:要解决的问题是什么?要用于解决该问题的实体具有什么特点?如何实现该实体(解决方案)?如何建造该实体?采用什么方法去发现该实体设计和建造过程中产生的错误?当该实体的用户要求修改、适应和增强时,如何支持这些活动?软件的一般视图
与软件工程相关的工作可分为三个一般的阶段:(1)定义阶段:集中于“做什么”;三个主要任务:系统工程、项目计划、需求分析(2)开发阶段:集中于“如何做”;三个特定任务:设计、编码、测试(3)支持阶段:关注于“变化”四类可能遇到的变化:纠错、适应、增强、预防软件过程一个软件过程包含以下内容:一个公共过程框架:通过定义若干框架活动来建立的,这些活动可应用于所有软件项目,不考虑其规模和复杂性。若干任务集合:每个集合都由软件工程工作任务、项目里程碑、软件工程产品和质量保证点组成。最后是庇护性活动:软件质量保证、软件配置管理和测度。软件过程可分为三大类基本过程类:是构成软件生存周期主要部分的那些过程,包括获取,供应,开发,操作,维护等过程.支持过程类:可穿插到基本过程中提供支持的一系列过程,包括文档开发,配置管理,质量保证,验证,确认,联合评审,审计,问题解决等过程.组织过程类:一个组织用来建立,实施一种基础结构,并不断改进该基础结构的过程,包括管理,基础,改进,培训等过程.软件工程过程
软件工程过程(SoftwareEngineeringProcess)是为获得软件产品,在软件工具支持下由软件工程师完成的一系列软件工程活动。软件工程的过程则是将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的。过程定义了方法使用的顺序、要求交付的文档资料、为保证质量和协调变化所需要的管理、及软件开发各个阶段完成的里程碑。软件工程过程通常包含四种基本的过程活动
P(Plan)软件规格说明:
规定软件的功能及其运行的限制;
D(Do)软件开发:
产生满足规格说明的软件
C(Check)软件确认:
确认软件能够完成客户提出的要求
A(Action)软件演进:
为满足客户的变更要求,软件必须在使用的过程中演进软件过程模型所有软件开发都可被刻画为一个问题解决环,其中包括四个不同的阶段:状态描述、问题定义、技术开发和解决集成。软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生存期。软件生存期的六个步骤,即制定计划、需求分析、设计、程序编码、测试及运行维护。软件生存期模型(也称软件开发模型、软件过程模型、软件工程范型)是跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。简单地说,是软件产品或软件系统从设计、投入使用到被淘汰的全过程。所谓模型就是一种开发策略,这种策略针对软件工程的各个阶段提供了一套范型,使工程的进展达到预期的目的。软件生存周期模型编码修复模型编码修复模型是所有模型中最古老也是最简单的模型。编码测试交付编码修复模型的特点它几乎不执行任何预先的计划,该模型的使用者很快就进入了所开发产品的编码阶段。典型的情况是,完成大量的编码,然后测试产品并且纠正所发现的错误。编码和测试工作一直持续到产品开发工作全部完成并将产品交付给客户。缺点:缺乏预先的计划和不正规的开发;软件产品的质量低于用其他模型实现的产品质量;产品的设计没有认真计划及文档化,代码很难维护。优点:简单快捷,适合于很小且很简单的项目。软件过程技术过程技术工具可以帮助软件组织分析它们当前的过程,组织工作任务,控制和监管进度,以及管理技术质量。一旦创建了一个可接受的过程,就可以使用其他过程技术工具来分配、监管、甚至控制过程模型中定义的所有软件工程任务。产品和过程如果过程很弱,最终产品不可避免会出问题。但过分依赖过程也是很危险的。企业的目的
根本目的:合法地赚取尽可能多的利润,使企业利益最大化。为了使企业利益最大化,软件产品(项目)应当“做得好、做得快并且少花钱”
企业的迫切愿望寻求“提高产品质量、提高生产率并且降低成本”的解决方案,包括方法论和工具。CMM能力成熟度模型
(CapabilityMaturityModel)
人员方法与规程技术与工具过程产品软件过程改进概述过程的基本概念
过程就是人们使用相应的方法、规程、技术、工具等将原始材料(输入)转化成用户需要的产品。过程的3个基本要素是:人、方法与规程、技术与工具。过程被文档化后才能成为规范。过程与产品存在因果关系。即好的过程才能得到好的产品,而差的过程只会得到差的产品。
企业领导关心过程吗?为什么要监控过程?何为过程可视性?什么是软件过程改进从20世纪90年代至今,软件过程改进成为软件工程学科的一个主流研究方向,其中CMM和CMMI是该领域举世瞩目的重大成果。提高软件过程能力的实践通称为软件过程改进(SoftwareProcessImprovement)。软件过程改进的根本目的是:提高质量、提高生产率并且降低开发成本。
主要的软件过程域工程类的主要过程域:需求开发、系统设计、软件实现、软件测试、软件维护等等;管理类的主要过程域:项目规划、项目监控、需求管理、质量管理、配置管理等等。上述过程域中的任何活动都会影响产品的质量、生产率和成本。CMM发展简史CMM是什么CMM(CapabilityMaturityModel)是用于衡量软件过程能力的事实上的标准,同时也是目前软件过程改进最好的参考标准。美国卡内基-梅隆大学软件工程研究所(SEI)研制.发展简史CMM1.0于1991年制定。
CMM1.1于1993发布,该版本应用最广泛。
CMM2.0草案于1997年制定(未广泛应用)。
到2000年,CMM演化成为CMMI(CapabilityMaturityModelIntegration),CMM2.0成为CMMI1.0的主要组成部分。
CMMI-SE/SW1.1(CMMIforSystemEngineeringandSoftwareEngineering)于2002年1月正式推出。
软件工程研究所(SEI)提出了—个综合模型,定义了当一个组织达到不同的过程成熟度时应该具有的软件工程能力。为了确定一个组织目前的过程成熟度,SEI使用了一个五级的评估方案,即能力成熟度模型CMM.该模型定义了在不同的过程成熟度级别上所需要的关键活动.CMM重要概念5个成熟度等级:Initial,Repeatable,Defined,Managed,Optimizing18个关键过程域。关键过程域指出为了达到某个成熟度等级必须要解决的一族问题。第一级:初始级—软件过程的特征是无序的,有时甚至是混乱的。几乎没有过程定义,成功完全取决于个人的能力。第二级:可重复级建立了基本的项目管理过程,能够追踪费用、进度和功能。有适当的必要的过程规范,使得可以重现以前类似项目的成功.第三级:定义级用于管理和工程活动的软件过程已经文档化、标准化,并与整个组织的软件过程相集成。所有项目都使用文档化的、组织认可的过程来开发和维护软件。本级包含了第二级的所有特征。第四级:管理级软件过程和产品质量的详细度量数据被收集,通过这些度量数据,软件过程和产品能够被定量地理解和控制。本级包含了第三级的所有特征。第五级:优化级通过定量的反馈,进行不断的过程改进,这些反馈来自于过程或通过测试新的想法和技术而得到。本级包含了第四级的所有特征。CMM的结构是层次化的结构,包括级、关键过程域(18个)、公共特征(5类)和关键实施(316个),划分了5个级别。关键过程域是指一系列相互关联操作活动,这些活动反映了一个软件组织改进软件过程时必须集中力量改进的方面。公共特征有效指出了一个KPA的实现范围、结构要求和实施内容,包括:执行约定、执行能力、实施活动、度量和分析、验证实施。关键实践是一些主要的实践活动,它是组成KPA的单元。比如:遵循已文档化的规程制订项目的软件开发计划是软件项目计划的一个关键实践。CMM的结构过程成熟度第二级软件配置管理软件质量保证软件子合同管理软件项目追踪和查错软件项目计划需求管理过程成熟度第三级同级复审组内协调软件产品工程集成的软件管理培训计划组织的过程定义组织的过程焦点过程成熟度第四级软件质量管理定量的过程管理过程成熟度第五级过程变化管理技术变化管理缺陷预防CMM等级评估过程复杂每一个CMM等级评估周期(从准备到完成)约需12-30个月。每一级别的评估由SEI授权的主任评估师领导一个评审小组进行,其成员大部分来自企业内部。评估过程包括员工培训(企业的高层领导也要参加)、问卷填写和统计、文档审查、数据分析、与企业的高层领导讨论和撰写评估报告等。评估结束由主任评估师签字生效(没有盖上公章的证书)取得主任评估师的资格比较困难
10年以上的软件开发经验
在SEI接受培训,培训费用每人约需数万美元,非美国人加倍。
经过两次以上CMM评估的全过程实习
主任评估师的资格并非终身制
评估费用昂贵:大约是ISO认证的十倍价格视客户需求的多少而定,可以与咨询公司协商。2002年参考价:CMM2级50万元RMB,CMM3级80万元RMB。CMM在中国国内IT企业采用CMM的目的
提高企业的软件过程能力,但并不关心CMM评估。
既要提高企业的软件过程能力,又想通过CMM评估来提升企业的威望与知名度。只是为了拿到CMM证书
共性问题:费用高、难度大、见效慢企业做一次比较完整的CMM2-3级咨询和评估大约要花费60~100万元。企业内部组建SEPG的成本并不比咨询费低。软件工程与项目管理工具比较昂贵(如Rational的产品)。目前国内通过CMM2-3级评估的企业屈指可数,而这些企业的实际能力也没有宣传的那么好。因为参加CMM评估的项目都是精心准备的,个别项目或者事业部通过了CMM评估并不意味着整个企业达到了那个水平,这里面的水分相当大。国内通过CMM等级评估的企业(2002年统计数据)
公司名称 CMM级别 通过时间摩托罗拉 L5 2000-09华为印度所 L4 2001-12东大阿尔派 L3 2001-06托普软件 L3 2001-11联想软件事业部L3 2002-01鼎新公司 L2 1999-07博通公司 L2 2001-04用友软件 L2 2001-06浪潮通软 L2 2001-11东方通科技 L2 2001-12新太科技 L2 2001-12神州数码 L2 2002-01
MSF
(Microsoftsolutionframework)MSF是一套大型系统开发指南,它描述了如何用组队模型、过程模型和应用模型来开发Client/Server结构的应用程序,是在微软的工具和技术的基础上建立并开发分布式企业系统应用的参考。将大项目分成若干里程碑式(Milestone)的重要阶段,各阶段之间有缓冲时间,但不进行单独的产品维护。运用想象描述和对特性的概要说明(Program
Specification)指导项目。根据用户行为(User
Behavior)和有关用户的资料确定产品特性及其优先顺序。建立模块化的和水平式的设计结构,并使项目结构反映产品结构的特点。靠个人负责和固定项目资源实施控制。微软的产品定义与开发过程中遵循五个原则MSF的最大特性是商业化,并自始至终地体现在项目的实施过程中。所谓商业化意味着客户的商业利益。客户投入多少,得到多少回报,客户要用到哪些最新的技术,最后如何把项目计划(Project)变成产品(Product)直至产生效益,等等,这些都是MSF要考虑的问题。
项目组内部的工作关系IE产品部门内的行政管理关系举例MSF过程模型MSF过程模型是从瀑布模型和螺旋模型发展而来的,它把瀑布模型中基于里程碑的规划的优势与螺旋模型中增量迭代的长处结合了起来。MSF过程模型的基本元素是阶段和里程碑。所谓“阶段”,就是在这一段时间里团队集中精力做某一类事情,每个阶段的结束都代表了项目的进展和团队工作重心的变化。比如在“开发阶段”结束后,团队就不再允许设计/实现新的功能,除非有充分理由的“变更请求”。MSF过程模型图示
MSF里程碑驱动的螺旋模型瀑布模型螺旋模型产品开发过程的划分和里程碑设置MSF特点各个阶段是风险驱动的、渐进的“螺旋”式的生命周期模型。计划阶段的产品是想象性描述与说明文件,用来解释项目将做什么和怎么做。在开发和稳定化阶段的所有时间中,一个项目通常会将2/3的时间用于开发,1/3的时间用于稳定化。稳定化阶段着重于对产品的测试与调试。项目在此阶段尽量不再增加新的功能,除非是竞争产品或者市场发生了变化。在整个产品生产周期中,微软都使用了缓冲时间的概念。MSF的版本化发布项目团队中的角色划分MSF将一个项目中不同阶段的工作人员分为六个角色,通过这六个角色,项目可以得以迅速、完善地实施。这也体现了项目开发的六个重要质量指标,它们在全球是一致的。这六个角色分别是:
产品经理。他了解用户特征,尤其是商业特征,明确用户的需求以及需求的期望值。之所以强调用户需求的期望值,是因为用户的商业化特征比较强,需求无尽,无法界定到底如何才算需求得到了满足。而确定了需求期望值后,用户的商业目的就非常明确,实施起来也比较顺畅。程序管理员他负责制定计划,每天找出完成该计划的风险所在,排除风险,每天交付应该完成的内容,确保计划按质、按量实施。用户教育设计友好的用户界面,对用户进行培训,确保用户能够并且愿意和喜欢使用开发出的产品。开发开发者在开发前期就参与用户需求分析和项目计划制定,他最清楚具体的开发过程。
在开发期开始后,他负责进行代码开发,在每一个阶段,交付每一项内容的代码。
测试负责开发出的代码的测试。测试者并不是要找到每一个开发者的每一段代码的每一个错误(bug),而是要找到代码错误之间的关系,解决最根本的错误,掌握错误的状态,从而迅速排除错误。后勤后勤人员负责将实验室的产品商品化,变成实际可以运行的产品,达到最初制定的商业目的,取得商业效益。这项工作在以往的项目中可能比较简单,因为实验室的环境可能和实际环境几乎一致或差别不大。而现在却不同了,实验室环境可能十分简单,而实际环境可能非常复杂,比如分布式环境、Internet/Intranet环境等,尤其是大企业,实际环境比实验室环境复杂得多,因而将实验室产品运用到实际环境中是一项非常重要的工作。这项工作没有完成好,往往使整个项目前功尽弃,功亏一篑。产品规划流程规划阶段的均衡三角形跨阶段的过程关系代码生成的工作流程RationalUnifiedProcess(简称RUP)是一套软件工程过程,主要由TheObjectoryApproch和TheRationalApproch发展而来。同时,它又是文档化的软件工程产品,所有RUP的实施细节及方法导引均以Web文档的方式集成在一张光盘上,由Rational公司开发、维护并销售,当前版本是RUP2000。
RUP又是一套软件工程方法的框架,各个组织可根据自身的实际情况,以及项目规模对RUP进行裁剪和修改,以制定出合乎需要的软件工程过程。RUP简介
RUP吸收了多种开发模型的优点,具有很好的可操作性和实用性、从它一推出市场,凭借Rational在业界的领导地位、以及与统一建模语言(UnifiedModelLanguage,以下简称UML)的良好集成、多种CASE工具的支持、不断的升级与维护,迅速得到业界广泛的认同,越来越多的组织(如IBM、Microsoft、Sun)以它作为软件开发模型框架。RUP简述
RUP二维开发模型RUP可以用二维坐标来描述。横轴通过时间组织,是过程展开的生命周期特征,体现开发过程的动态结构,用来描述它的术语主要包括周期、阶段、迭代和里程碑;纵轴以内容来组织为自然的逻辑活动,体现开发过程的静态结构,用来描述它的术语主要包括活动、产物)、工作者和工作流。
RUP开发过程中的各个阶段和里程碑RUP中的软件生命周期在时间上被分解为四个顺序的阶段,分别是:初始阶段、细化阶段、构造阶段和交付阶段。每个阶段结束于一个主要的里程碑;每个阶段本质上是两个里程碑之间的时间跨度。在每个阶段的结尾执行一次评估以确定这个阶段的目标是否已经满足。如果评估结果令人满意的话,可以允许项目进入下一个阶段。RUP的迭代开发模式图RUP中的每个阶段可以进一步分解为迭代。一个迭代是一个完整的开发循环,产生一个可执行的产品版本,是最终产品的一个子集,它增量式地发展,从一个迭代过程到另一个迭代过程到成为最终的系统。RUP的特点开发复用。减少开发人员的工作量,并保证软件质量;项目初期可降低风险;对需求进行有效管理;可视化建模;使用组件体系结构,使软件体系架构更具弹性;贯穿整个开发周期的质量核查;对软件开发的变更控制。敏捷软件开发宣言
我们正在通过亲身实践以及帮助他人实践,揭示更好的软件开发方法。通过这项工作,我们认为:个体和交互胜过过程和工具可以工作的软件胜过面面俱到的文档客户合作胜过合同谈判响应变化胜过遵循计划虽然右项也具有价值,但我们认为左项具有更大的价值。敏捷宣言遵循的原则我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。围绕被激励起来的个体来构建项目。给他们提供所需的环境和支持,并且信任他们能够完成工作。在团队内部,最具有效果并且富有效率的传递信息的方法,就是面对面的交谈。工作的软件是首要的进度度量标准。敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。不断地关注优秀的技能和好的设计会增强敏捷能力。简单---使未完成的工作最大化的艺术--是根本的。最好的构架、需求和设计出自于自组织的团队。每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。极限编程实践
XP完整团队
XP项目的所有参与者(开发人员、业务分析师、测试人员等等)一起工作在一个开放的场所中,他们是同一个团队的成员。这个场所的墙壁上随意悬挂着大幅的、显著的图表以及其他一些显示他们进度的东西。计划游戏计划是持续的、循序渐进的。每2周,开发人员就为下2周估算候选特性的成本,而客户则根据成本和商务价值来选择要实现的特性。客户测试作为选择每个所期望的特性的一部分,客户定义出自动验收测试来表明该特性可以工作。简单设计团队保持设计恰好和当前的系统功能相匹配。它通过了所有的测试,不包含任何重复,表达出了编写者想表达的所有东西,并且包含尽可能少的代码。结对编程所有的产品软件都是由两个程序员、并排坐在一起在同一台机器上构建的。测试驱动开发程序员以非常短的循环周期工作,他们先增加一个失败的测试,然后使之通过。改进设计随时改进糟糕的代码。保持代码尽可能的干净、具有表达力。持续集成团队总是使系统完整地被集成。集体代码所有权任何结对的程序员都可以在任何时候改进任何代码。编码标准系统中所有的代码看起来就好像是被单独一个——非常值得胜任的——人编写的。隐喻团队提出一个程序工作原理的公共景像。可持续的速度团队只有持久才有获胜的希望。他们以能够长期维持的速度努力工作。他们保存精力,他们把项目看作是马拉松长跑,而不是全速短跑。极限编程的核心思想从长远看,早期发现错误以及降低复杂度可以节约成本。极限编程强调我们将任务/系统细分为可以在较短周期解决的一个个子任务/模块,并且强调测试、代码质量和及早发现问题。通常,通过一个个短小的迭代周期,我们就可以获得一个个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度饮用纯净水公共卫生安全监测合同
- 界桩采购合同范本
- 二零二四年度农业种植与销售承包合同
- 二零二四年度旅游服务合同标的及行程安排
- 2024版采砂项目工程设计与施工合同
- 2024版虚拟现实技术开发合同
- 二零二四年度互联网信息服务承包合同
- 二零二四年度城市供水特许经营权协议
- 2024至2030年摩托车冲压件项目投资价值分析报告
- 收购业务合同范本
- (格式已排好)国家开放大学电大《计算机应用基础(专)》终结性考试大作业答案任务一
- 监护仪培训-PPT课件
- 沟通技巧游戏
- 教室的卫生调查及测量方法林蓉
- 心律失常 ppt
- 《税收基础》课程标准
- 初中音乐《器乐和欣赏课》课件
- CSD-819C校准说明
- 微处理器系统结构与嵌入式系统设计(第二版)答案全
- 特种工程塑料聚芳醚酮
- 双梁桥式起重机变频改造方案
评论
0/150
提交评论