软件开发的基本策略Word文档下载推荐.docx
《软件开发的基本策略Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《软件开发的基本策略Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
软件折衷的重要原则是不能使某一方损失关键的职能,更不可以象"
舍鱼而取熊掌"
那样抛弃一方。
例如3D动画软件的瓶颈通常是速度,但如果为了提高速度而在程序中取消光照明计算,那么场景就会丧失真实感,3D动画也就不再有意义了。
折衷是有原则的,如果滥用折衷的话,那么一旦碰到困难,人们就会用拆东墙补西墙的方式去折衷,不再下苦功去做有意义的优化。
所以,我们应当坚持这样的折衷立场:
在保证其它因素不差的前提下,使某些因素变得更好。
人们对软件存在着许多错误的观点,这些观点表面上看起来很有道理,符合人们的直觉,但实际上给管理者和开发人员带来了严重的问题。
许多人认识到下述观点是错误的,但遗憾的是旧的观念和方法培植了拙劣的管理和技术习惯。
观点之一
我们拥有一套讲述如何开发软件的书籍,书中充满了标准与示例,可以帮助我们解决软件开发中遇到的任何问题。
客观事实
好的参考书无疑能指导我们的工作,充分利用书籍中的方法、技术和技巧,可以有效地解决软件开发中大量常见的问题。
但实践者并不能依赖于书籍,因为在现实工作中,由于条件千差万别,即使是相当成熟的软件工程规范,常常也无法套用。
另外,软件技术日新月异,没有哪一种软件标准能长盛不衰。
观点之二
如果我们已经落后于计划,可以增加更多的程序员来赶上进度。
客观事实
软件开发不同于传统的机械制造,人多不见得力量大。
如果给落后于计划的项目增添新人,可能会更加延误项目。
因为新人会产生很多新的错误,使项目混乱,并且原有的开发人员向新人解释工作和交流思想都要花费时间,使实际的开发时间更少,所以制定恰如其分的项目计划是很重要的。
【讲解】假设一个项目估计需要12人月工作量,指定由3个人在4个月内完成,如果第一个月的任务花了两个月才完成,那么增加人力的结果如何?
假设增加2个人参加项目,不论新增加的人适应能力有多强,总需要有人去帮助了解熟悉情况,如果这些工作占用了一个月的时间,这样又有3个人月工作量在新计划之外。
由于人员增加,工作任务需要重新划分,到第3个月结束时虽然有5个人在工作,实际上余留下7个人的工作量。
观点之三
项目需求总是在不断变化,但这些变化能够很容易地满足,因为软件是灵活的。
软件需求确实是经常变化的,但这些变化产生的影响会随着其引入时间的不同而不同。
对需求把握得越准确,软件的修修补补就越少。
有些需求在一开始时很难确定,在开发过程中要不断地加以改正。
软件修改越早代价越少,修改越晚代价越大,就跟治病一样道理。
观点之四
有了对目标的一般描述就足以开始写程序了,我们以后可以再补充细节。
不完善的系统定义是软件项目失败的主要原因。
关于待开发软件的应用领域、功能、性能、接口、设计约束和标准等需要详细的描述,而这些只有通过用户和开发人员之间的通信交流才能确定。
越早开始写程序,就要花越长时间才能完成它。
一旦我们写出了程序并使其正常运行,我们的工作就结束了。
人们有时认为,只有差的软件产品才需要维护。
从如图1.12所示的统计数据来看,软件投入的50%~70%是花费在交付给用户之后。
品质差的产品被丢弃,只有好的产品才需要维护和改进。
观点之六
一个成功的项目唯一应该提交的就是运行程序。
软件包括程序、数据和文档,其中文档是成功开发的基础,为软件维护提供了指导。
早期的CMMI(CMMI-SE/SW/IPPD)1.02版本是应用于软件业项目的管理方法,SEI在部分国家和地区开始推广和试用。
随着应用的推广与模型本身的发展,演绎成为一种被广泛应用的综合性模型。
简介
评估
1.预备工作
2.评估方法
3.cmm是项目管理
等级
1.1.初始级
2.2.可重复级
3.3.已定义级
4.4.量化管理级
5.5.优化管理级
评估方式
CMMI的基本思想
研发背景
源模型
原则
目标
方法
内容
与CMM差别
标准名词术语
实施
人员素质
实施流程
简介
评估方式
CMMI的基本思想
研发背景
源模型
原则
∙目标
∙方法
∙内容
∙与CMM差别
∙标准名词术语
∙实施
∙人员素质
∙实施流程
展开
编辑本段简介
CMMI的全称为:
CapabilityMaturityModelIntegration,即能力成熟度模型集成。
CMMI家族包括CMMIforDevelopment,CMMIforService和CMMIforAcquisition三个套装产品。
自从1994年SEI正式发布软件CMM以来,相继又开发出了系统工程、软件采购、人力资源管理以及集成产品和过程开发方面的多个能力成熟度模型。
虽然这些模型在许多组织都得到了良好的应用,但对于一些大型软件企业来说,可能会出现需要同时采用多种模型来改进自己多方面过程能力的情况。
这时他们就会发现存在一些问题,其中主要问题体现在:
n不能集中其不同过程改进的能力以取得更大成绩;
n要进行一些重复的培训、评估和改进活动,因而增加了许多成本;
n遇到不同模型中有一些对相同事物说法不一致,或活动不协调,甚至相抵触。
于是,希望整合不同CMM模型的需求产生了。
1997年,美国联邦航空管理局(FAA)开发了FAA-iCMMSM(联邦航空管理局的集成CMM),该模型集成了适用于系统工程的SE-CMM、软件获取的SA-CMM和软件的SW-CMM三个模型中的所有原则、概念和实践。
该模型被认为是第一个集成化的模型。
编辑本段评估
预备工作
评估实践证明:
在进行CMMI评估之前,制定一个正确的评估计划并将其文档化,确保有一个富有经验的、受过培训且具有适当资格的小组能被用来评估,为执行评估过程做准备,是十分必要的。
我们所说的文档化CMMI评估计划的结果,包括:
要求,协定,估价,风险,剪裁方法,以及与评估相关的实际考虑(例如:
日程安排,后勤,组织的背景信息)。
此外,还应当获取并记录发起方对于CMMI评估计划的正式批准。
在制定评估计划之前,应对CMMI评估输入中反映出来的协议文档化,该协议将有助于CMMI评估目标和关键评估计划参数的共同理解。
在对驱动计划过程的关键参数达成共同理解的基础上,CMMI评估发起方和SCAMPI主任评估师应就评估计划达成一致;
发起者和评估小组领导应就已计划的评估中技术和非技术细节达成一致。
这个计划在执行其他的计划和准备阶段活动中需要进一步细化。
而通过CMMI评估小组的准备工作,将产生一支富有经验的、受过培训的且定位准确的小组准备执行CMMI评估任务。
该小组的成员都应当获得了完成他们各自的任务所必备的知识,或者他们之前所拥有的知识被证实足以完成相关任务。
评估小组领导者已经给每一个人提供了为完成他们各自的任务所需的对技能进行实践的机会,或者证实这些技能在过去已经得到了示范。
小组成员相互了解,同时开始计划他们如何协调一致的工作。
还应该做到:
准备好的小组是为评估目标而服务的,小组的成员已提供培训且培训结果被记录,在必要的时候,对他们所做的因知识或技能不足的补救工作已经完成。
我们认为,无论CMMI评估小组领导者是从头培训一支全新的评估小组,还是通过从富有经验的小组成员中选择来组建一个小组,确保他们与CMMI评估小组领导者能组成一个成功的集体是其责任。
此外,在对CMMI评估进行的预备工作的过程中,我们还应当对模型剪裁的原则有所了解:
1.在某些应用中,计划模板和例行的程序能够根据评估的需要进行调整,这和当地的过程所有权一样,有助于交流;
2.一个结构化的计划工艺组有利于只有有限的评估经验的组织,这样一个工艺就像缓和策略样,对于发现风险是一个很有价值的机会;
3.案例研究材料提供了各种各样的选择来扩充小组培训内容以增强那些更需要培训的重点;
4.富有经验的评估小组领导者在没有案例分析的情况下,同样可以管理和模拟评估行为;
5.在小组所有已获得培训成员的集合中,对小组的建立工作进行管理以确保其团队凝聚力是十分重要的,因此,很多的小组建立练习是可以利用的,小组的规模、技能、组成部分都是本方法的裁剪内容;
6.所采用工具可以包括评估计划模板,样例,和计划模板中嵌入式的程序上的帮助,此外,为了估计评估约束的影响,估算工作表和方法也是很有用处的。
总之,CMMI评估是一个十分复杂的过程,更由于其具有的不确定性,在评估的实践中,一定要做到有备无患。
真理来自于实践,我们相信,随着越来越多的软件组织着手CMMI评估,越来越多的成功经验将为我们所利用和借鉴。
评估方法
自1991年起,CMM出现了很多模型,覆盖了各种各样的专业领域。
其中著名的模型有系统工程·
软件工程·
软件采购·
集成产品和流程开发等。
然而当企业想要在组织内不同专业领域的流程改进,这些针对不同专业领域的模型在架构·
内容和方法上的不同限制了组织成功实施改进的能力。
此外,将这样模型在组织内部集成也提高了培训·
认证和改进的费用。
一套包括多个专业领域的模型加上整合的培训和认证支持将解决这些问题。
CMMI(Capabilitymaturitymodelintegration)是为了合并三个模型到一个框架中
CapabilityMaturityModelforSoftware(SW-CMM)v2.0draftC,
ElectronicIndustriesAllianceInterimStandard(EIA/IS)731
IntegratedProductDevelopmentCapabilityMaturityModel(IPD-CMM)v0.98
正如其他CMM模型,CMMI提供了流程改进的指导,而不是流程或流程的描述。
组织使用的实际流程取决于很多因素,包括应用领域·
组织框架和规模。
CMMI将许多经过验证的方法加入架构中,来帮组组织评价成熟度·
某个软件流程的能力度,并且建立改进的优先顺序和实施改进。
从CMMI框架可以产生不同的CMMI模型,因此必须首先确定那种模型最适合企业流程改进的需要。
阶段式描述or连续式描述
系统工程or软件工程or两者皆有
使用连续式描述可以根据企业需要选择流程改进顺序,降低企业风险,这给通过ISO做流程改进提供了一个方便的比较。
使用能力度(Capability)来衡量。
阶段式描述提供了已经过验证的流程改进顺序,方便从CMM移植过来。
使用成熟度(Maturity)来衡量流程改进。
系统工程包括整个系统的开发,可能包括软件也可能不包括。
软件工程用于软件系统的开发,主要集中在使用系统的·
科学的·
量化的方法来开发·
运行·
维护软件。
cmm是项目管理
由美国卡内基梅隆大学的软件工程研究所(SEI)创立的CMM(CapabilityMaturityModel软件能力成熟度模型)认证评估,在过去的十几年中,对全球的软件产业产生了非常深远的影响。
CMM共有五个等级,分别标志着软件企业能力成熟度的五个层次。
从低到高,软件开发生产计划精度逐级升高,单位工程生产周期逐级缩短,单位工程成本逐级降低。
据SEI统计,通过评估的软件公司对项目的估计与控制能力约提升40%到50%;
生产率提高10%到20%,软件产品出错率下降超过1/3。
对一个软件企业来说,达到CMM2就基本上进入了规模开发,基本具备了一个现代化软件企业的基本架构和方法,具备了承接外包项目的能力。
CMM3评估则需要对大软件集成的把握,包括整体架构的整合。
一般来说,通过CMM认证的级别越高,其越容易获得用户的信任,在国内、国际市场上的竞争力也就越强。
因此,是否能够通过CMM认证也成为国际上衡量软件企业工程开发能力的一个重要标志。
CMM是目前世界公认的软件产品进入国际市场的通行证,它不仅仅是对产品质量的认证,更是一种软件过程改善的途径。
参与CMM评估的博科负责人表示,通过CMM的评估认证不是目标,它只是推动软件企业在产品的研发、生产、服务和管理上不断成熟和进步的手段,是一种持续提升和完善企业自身能力的过程。
如果一家公司最终通过CMMI的评估认证,标志着该公司在质量管理的能力已经上升到一个新的高度。
编辑本段等级
1.初始级
软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。
管理是反应式的。
2.可重复级
建立了基本的项目管理过程来跟踪费用、进度和功能特性。
制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
3.已定义级
已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。
所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。
4.量化管理级
分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。
管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。
5.优化管理级
过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。
每个等级都被分解为过程域,特殊目标和特殊实践,通用目标、通用实践和共同特性:
每个等级都有几个过程区域组成,这几个过程域共同形成一种软件过程能力。
每个过程域,都有一些特殊目标和通用目标,通过相应的特殊实践和通用实践来实现这些目标。
当一个过程域的所有特殊实践和通用实践都按要求得到实施,就能实现该过程域的目标。
能力度等级:
属于连续式表述,共有六个能力度等级(0~5),每个能力度等级对应到一个一般目标,以及一组一般执行方法和特定方法。
0 不完整级
1 执行级
2 管理级
3 定义级
4 量化管理级
5 最佳化级
编辑本段评估方式
自我评估:
用于本企业领导层评价公司自身的软件能力。
主任评估:
使本企业领导层评价公司自身的软件能力,向外宣布自己企业的软件能力
CMMI的评估类型:
软件组织的关于具体的软件过程能力的评估。
软件组织整体软件能力的评估(软件能力成熟度等级评估)。
编辑本段CMMI的基本思想
1、解决软件项目过程改进难度增大问题
2、实现软件工程的并行与多学科组合
3、实现过程改进的最佳效益
编辑本段研发背景
CMM的成功促使其他学科也相继开发类似的过程改进模型,例如系统工程、需求工程、
人力资源、集成产品开发、软件采购等等,从CMM衍生出了一些改善模型,比如:
(1)SW-CMM(SoftwareCMM)软件CMM
(2)SE-CMM(SystemEngineeringCMM)系统工程CMM
(3)SA-CMM(SoftwareAcquisitionCMM)软件采购CMM
(4)IPT-CMM(IntegratedProductTeamCMM)集成产品群组CMM
(5)P-CMM(PeopleCMM)人力资源能力成熟度模型
为了以示区别,国内外很多资料把CMM叫做SW-CMM。
按照SEI原来的计划,CMM的改进版本2.0应该在1997年11月完成,然后在取得版本2.0得实践反馈意见之后,在1999年完成准CMM2.0版本。
但是,美国国防部办公室要求SEI推迟发布CMM2.0版本,而要先完成一个更为紧迫的项目CMMI,原因是在同一个组织中多个过程改进模型的存在可能会引起冲突和混淆,CMMI就是为了解决怎么保持这些模式之间的协调。
CMMI(CapabilityMaturityModelIntegration)即能力成熟度集成模型,这是美国国防部的一个设想,他们想把现在所有的以及将被发展出来的各种能力成熟度模型,集成到一个框架中去。
这个框架有两个功能,第一,软件采购方法的改革;
第二,建立一种从集成产品与过程发展的角度出发、包含健全的系统开发原则的过程改进。
就软件而言,CMMI是SW-CMM的修订本。
它兼收了SW-CMM2.0版C稿草案和SPA中更合理、更科学和更周密的优点。
SEI在发表CMMI-SE/SW1.0版时,宣布大约用两年的时间完成从CMM到CMMI的过渡。
CMMI项目更为工业界和政府部门提供了一个集成的产品集,其主要目的是消除不同模型之间的不一致和重复,降低基于模型改善的成本。
CMMI将以更加系统和一致的框架来指导组织改善软件过程,提高产品和服务的开发、获取和维护能力。
由业界、美国政府和卡内基•梅隆大学软件工程研究所率先倡导的能力成熟度模型集成(CMMI)项目致力于帮助企业缓解这种困境。
CMMI为改进一个组织的各种过程提供了一个单一的集成化框架,新的集成模型框架消除了各个模型的不一致性,减少了模型间的重复,增加透明度和理解,建立了一个自动的、可扩展的框架。
因而能够重总体上改进组织的质量和效率。
CMMI主要关注点就是成本效益、明确重点、过程集中和灵活性四个方面。
与原有的能力成熟度模型类似,CMMI也包括了在不同领域建立有效过程的必要元素,反映了业界普遍认可的"
最佳"
实践;
专业领域覆盖软件工程、系统工程、集成产品开发和系统采购。
在此前提下,CMMI为企业的过程构建和改进提供了指导和框架作用;
同时为企业评审自己的过程提供了可参照的行业基准。
编辑本段源模型
软件能力成熟度模型2.0版,C稿;
电子行业协会临时标准(EIA/IS)731;
集成产品开发能力成熟度模型(IPD-CMM)v0.98。
编辑本段原则
(1)、强调高层管理者的支持。
过程改进往往也是由高层管理者认识和提出的,大力度的、一致的支持是过程改进的关键。
(2)、仔细确定改进目标,首先应该对给定时间内的所能完成的改进目标进行正确的估计和定义并制定计划。
选择能够达到的目标和能够看到对组织的效益。
(3)、选择最佳实践,应该基于组织现有的软件活动和过程财富,参考其他标准模型,取其精华去其糟粕,得到新的实践活动模型。
(4)、过程改进要与组织的商务目标一致,与发展战略紧密结合。
编辑本段目标
(1)、为提高组织过程和管理产品开发、发布和维护能力提供保障。
(2)、帮助组织客观评价自身能力成熟度和过程域能力,为过程改进建立优先级以及执行过程改进。
编辑本段方法
(1)、决定哪个CMMI模型等级最适合组织过程改进需要。
(2)、选择模型的表示法是连续式还是阶段式。
(3)、决定组织需要用到的模型中的知识领域。
(4)、类似CMM提出的过程改进6步,集成化过程改进分成:
开始集成过程改进,建造集成改善平台,集成传统过程,启动新过程,进行改进评估。
编辑本段内容
CMMI内容分为“Required”(必需的)、“Expected”(期望的)、“Informative”(提供信息的)三个级别,来衡量模型包括的质量重要性和作用。
最重要的是"
要求"
级别,是模型和过程改进的基础。
第二级别"
期望"
在过程改进中起到主要作用,但是某些情况不是必须的可能不会出现在成功的组织模型中。
"
提供的信息"
构成了模型的主要部分,为过程改进提供了有用的指导,在许多情况下他们对"
必需"
的构件做了进一步说明。
"
的模型构件是目标,代表了过程改进想要达到的最终状态,它的实现表示了项目和过程控制已经达到了某种水平。
当一个目标对应一个关键过程域,就称为"
特定目标"
;
对应整个关键过程域就称为"
公用目标"
整个CMMI模型包括了54个特定目标,每个关键过程域都对应了一到四个特定目标。
每个目标的描述都是非常简捷的,为了充分理解要求的目标就是扩展"
的构件。
的构件是方法,代表了达到目标的实践手段和补充认识。
每个方法都能映射到一个目标上,当一个方法对一个目标是唯一就是"
特定方法"
而能适用于所有目标时就是"
公用方法"
CMMI模型包括了186个特定方法,每个目标有两到七个方法对应。
CMMI包括了10种"
:
目的,概括和总结了关键过程域的特定目标;
介绍说明,介绍关键过程域的范围、性质和实际方法和影响等特征;
引用,关键过程域之间的指向是通过引用;
名字,表示了关键过程域的构件;
方法和目标关系,关键过程域中方法映射到目标的关系表;
注释,注释关键过程域的其他模型构件的信息来源;
典型工作产品集,定义关键过程域中执行方法时候产生的工作产品;
子方法,通过方法活动的分解和详细描述;
学科扩充,CMMI对应学科是独立的,这里提供了对应特定学科的扩展;
公用方法的详细描述,关键过程域中公用方法应用实践的详细描述。
CMMI提供了阶段式和连续式两种表示方法,但是这两种表示法在逻辑上是等价的。
我们熟悉的SW-CMM软件能力成熟模型就是是阶段式的模型,SE-CMM系统工程模型是连续式模型,而IPD-CMM集成产