??xml version="1.0" encoding="utf-8" standalone="yes"?>色偷偷尼玛图亚洲综合,亚洲欧洲精品一区二区三区,亚洲成人黄色在线http://www.tkk7.com/debut/category/21523.html我的兴趣Q我作主zh-cnThu, 19 Apr 2007 18:46:13 GMTThu, 19 Apr 2007 18:46:13 GMT60个体软gq程(Personal Software ProcessQPSP)http://www.tkk7.com/debut/articles/110940.htmldebutdebutMon, 16 Apr 2007 06:27:00 GMThttp://www.tkk7.com/debut/articles/110940.htmlhttp://www.tkk7.com/debut/comments/110940.htmlhttp://www.tkk7.com/debut/articles/110940.html#Feedback0http://www.tkk7.com/debut/comments/commentRss/110940.htmlhttp://www.tkk7.com/debut/services/trackbacks/110940.html      个体软gq程(Personal Software ProcessQPSP)是一U可用于控制、管理和改进个h工作方式的自我持l改q过E,是一个包括Y件开发表根{指南和规程的结构化框架。PSP与具体的技术(E序设计语言、工h者设计方法)相对独立Q其原则能够应用到几乎Q何的软g工程d之中。PSP能够说明个体软gq程的原则; 帮助软g工程师作出准的计划Q确定Y件工E师为改善品质量要采取的步骤;建立度量个体软gq程改善的基准;定q程的改变对软g工程师能力的影响?/p>

  随着软g工程知识的普及,软g工程师都知道Q要开发高质量的YӞ必须改进软g生的过E。目前,业界公认由CMU/SEI开发的软g能力成熟度模型SW-CMM是当前最好的软gq程Qƈ且CMM已经成ؓ事实上的软gq程工业标准。但是,CMM虽然提供了一个有力的软gq程改进框架Q却只告诉我?应该做什?Q而没有告诉我?应该怎样?Qƈ未提供有兛_现关键过E域所需要的具体知识和技能。ؓ了I补这个欠~,Humphrey又主持开发了个体软gq程(Personal Software ProcessQPSP)?/p>

  在CMM1.1版本?8个关键过E域中有12个与PSP有关Q据l计QY仉目开发成本的70%取决于Y件开发h员个人的技能、经验和工作习惯。因此,一个单位的软g开发h员如能接受PSP培训Q对该单位Y件能力成熟度的升U是一个有力的保证。CMM侧重于Y件企业中有关软gq程的宏观管理,面向软g开发单位,PSP则侧重于企业中有兌Y件过E的微观优化Q面向Y件开发h员。二者互相支持,互相补充Q缺一不可?/p>

  按照PSP规程Q改qY件过E的步骤首先需要明质量目标,也就是Y件将要在功能和性能上满的要求和用h在的需求。接着是度量产品质量Q有了目标还不行Q目标只是一个原则性的东西Q还不便于实际操作和判断Q因此,必须对目标进行分解和度量Q软g质量能够"量"。然后就是理解当前过E,查找问题Qƈ对过E进行调整。最后应用调整后的过E,度量实践l果Q将l果与目标做比较Q找出差距,分析原因Q对软gq程q行持箋改进?nbsp;

  pCMMY件企业的能力提供一个阶梯式的进化框架一PPSPZ体的能力也提供了一个阶梯式的进化框Ӟ以@序渐q的Ҏ介绍q程的概念,每一U别都包含了更低一U别中的所有元素,q增加了新的元素。这个进化框架是学习PSPq程基本概念的好ҎQ它赋予软g人员度量和分析工P使其清楚地认识到自己的表现和潜力Q从而可以提高自q技能和水^?/p>

一、个体度量过EPSP0和PSP0.1

  PSP0的目的是建立个体q程基线Q通过q一步,学会使用PSP的各U表格采集过E的有关数据Q此时执行的是该软g开发单位的当前q程Q通常包括计划、开发(包括设计、编码、编译和试Q以及后|处理三个阶D,q要作一些必要的试题Q如定软g开发时_按照选定的缺L型标准、度量引入的~陷个数和排除的~陷个数{,用作为测量在PSP的过E中q步的基准?/p>

  PSP0.1增加了编码标准、程序规模度量和q程改善{三个关键过E域Q其中过E改善徏议表格用于随时记录过E中存在的问题、解决问题的措施以及改进q程的方法,以提高Y件开发h员的质量意识和过E意识?/p>

  应该指出Q在PSP0阶段必须理解和学会用不合格q行规划和度量的技术。设计一个好的表格ƈ不容易,需要在实践中积累经验,以准地满期望的需求,其中最重要的是要保持数据的一致性、有用性和z性?/p>

二、个体规划过EPSP1和PSP1.1

  PSP1的重Ҏ个体计划Q引入了Z估计的计划方法PROBEQPROxy Based EstimatingQ,用自q历史数据来预新E序的大和需要的开发时_q用线性回归方法计估计参敎ͼ定|信区间以评价预的可信E度。PSP1.1增加了对d和进度的规划?/p>

  在PSP1阶段应该学会~制目开发计划,q不仅对承担大型软g的开发十分重要,即是开发小型Y件也必不可少。因为,只有对自q能力有客观的评hQ才能作出更加准的计划Q才能实事求是地接受和完成客P֮Q委托的d?/p>

三、个体质量管理过EPSP2和PSP2.1

  PSP2的重Ҏ个体质量理Q根据程序的~陷善徏立检表Q按照检表q行设计复查和代码复查(有时也称"代码走查"Q,以便及早发现~陷Q修复~陷的代h。随着个hl验和技术的U篏Q还应学会怎样改进表以适应自己的要求。PSP2.1则论q设计过E和设计模板Q介l设计方法,q提供了设计模板、但PSPq不选用什么设计方法,而强调设计完备性准则和设计验证技术?/p>

  实施PSP的一个重要目标就是学会在开发Y件的早期实际地、客观地处理׃Z的疏忽所造成的程序缺陷问题。h们都期盼获得高质量的软gQ但是只有高素质的Y件开发h员ƈ遵@合适的软gq程Q才能开发出高质量的软gQ因此,PSP2引入q着重强调设计复查和代码复查技术,一个合格的软g开发h员必L握这两项基本技术?/p>

四、个体@环过EPSP3

  PSP3的目标是把个体开发小E序所能达到的生效率和生产质量,延到大型程序;其方法是采用螺旋式上升过E,卌P代增量式开发方法,首先把大型程序分解成的模块Q然后对每个模块按照PSP2.1所描述的过E进行开发,最后把q些模块逐步集成为完整的软g产品?/p>

  应用PSP3开发大型Y件系l,必须采用增量式开发方法,q要求每一个增量都h很高的质量。在q样的前提下Q在C轮开发@环中Q可以采用回归测试的ҎQ集中力量考察新增加的q个Q这些)增量是否W合要求。因此,要求在PSP2中进行严格的设计复查和代码复查,q在PSP2.1中努力遵循设计结束准则?/p>

  从对个体软gq程框架的概要描qCQ可以清楚地看到Q如何作好项目规划和如何保证产品质量Q是M软g开发过E中最基本的问题?/p>

  PSP可以帮助软g工程师在个h的基上运用过E的原则Q借助于PSP提供的一些度量和分析工具Q了解自q技能水qI控制和管理自q工作方式Q自己日常工作的评估、计划和预测更加准确、更加有效,q而改q个人的工作表现Q提高个人的工作质量和量,U极而有效地参与高񔽎理人员和过Eh员推动的l织范围的Y件工E过E改q?/p>

  PSP软g工程规程Y件工E师提供了发展个人技能的l构化框架和必须掌握的方法。在软g行业Q开发h员如果不l过PSP培训Q就只能靠在开发中通过实践逐步掌握q些技能和ҎQ这不仅周期很长Q要付出很大的代P而且有越来越大的风险?培训的方式有很多Q既可以C门的学校q修Q也可以q行自学和参加培训班Q例如:CMM|校中就有个体Y件过E的评?
 
五、个体Y件过EPSP之过E改q?/p>


      PSP是一个需要逐步改进的过E?/p>

      Watts S. Humphrey服兵役的时候,必须学会机枪击。开始训l时用猎枪打泥鸽子,Watts的成l非常差Qƈ且努力训l还是没有提高。教官对Wattsq行了一D观察后Q徏议他用左手射凅R作Z个习惯右手的人,开始Watts很不习惯Q但l了几次后,Watts的成l几乎L接近优秀?/p>

     q个事例说明了几个问题。首先,要通过量来诊断一个问题,通过了解WattsM了几只鸽子和脱靶的情况,很容易看出必dWatts做些调整。然后,必须客观的分析测量的数据Q通过观察Watts的射击,教官可以分析Watts击的过E—上膛、就位、跟t目标、瞄准,最后射凅R教官的目的是发现Watts哪些步骤存在问题Q找到问题所在,于是目的是发现用左手射凅R?/p>

     最后,也是最重要的,是自n的变化。过E改q是非常困难的,因ؓZ很多时候不愿意试C物。他们传l的习惯看v来很自然Q以至于不相信改变会有什么帮助。WattsL使用xQ从来没有想q左手射M是什么样子。但是自Watts采纳了教官的Q他的成l就提高了?/p>

     定义量Ҏ不是件容易的事情Q但它L可能的。首先定义测量方法。规定了量Ҏ后,必L集和分析数据。如果需要作些改q,接下来就要分析工作过E,看看什么地斚w要改q。最后要想真正的改进Q必d实做出改q?/p>

     如果Watts不改q他的射击过E,它的成W几年后都不会有什么变化,也不会成Z个优U的枪手。仅仅进行测量ƈ不会产生什么提高,仅仅靠努力也不会有什么提高。在很大E度上工作方式决定了所得到的结果。如果还是按照老办法工作,得到的结果还会是老样子?/p>

     改进工作方式与Watts学习击的步骤一栗它们ƈ不复杂,如图1所C:

六、个体Y件过EPSP之时间管?/p>

1、时间管理的逻辑原理

     Z很可能像上星期那样安排这星期的时间。当Ӟ随着工作的不同,也有很多例外的情c?/p>

     Z制定切实可行的计划,必须Ҏ用的旉q行跟踪。如果问上周的时间是怎么利用的,一般h都认为很Ҏ所出每工作花了多时_但是当看到实际的数据Ӟ很可能感到十分惊Ӟ花在~程上的旉比估计的得多,花在消遣的时间比预期的多得多Q乐意做的事情做的特别快Q用的时间也g特别,令h头疼的事情占用的旉g比实际花费的旉多得多。要搞清楚时间都用在什么地方,必须Ҏ间进行跟t,保留一份准的记录?/p>

     Z查时间估计和计划的准性,必须把它们写成文ƈ在今后与实际情况q行比较。做计划是一U技能,学习制定好的计划Q第一步就是要先做计划Q然后把该计划写下来Q以便今后与实际数据相比较?/p>

     Z制定出更准确的计划,需要知道以前的计划中存在哪些错误,哪些地方可以q行改进。当按照计划q行工作Ӟ记录下所p的时间。通过比较文化的计划和实际的l果Q就可以发现计划中存在哪些错误以及如何改q做计划的过E。制定准计划的关键是要坚持制定计划,q把每个计划与实际结果相比较Q然后就会知道如何才能制定出更好的计划?/p>

     Z理好时_首先制定旉分配计划Q然后按照计划去做。制作计划容易,但真正实施计划是困难的。特别开始的时候,按照计划q行工作可能比较困难Q你可能会有很多借口Q最常见的就是这份计划制作的不好。但只有按照计划dQ你才能知道它的优劣?/p>

     按照计划q行工作有三点好处:W一Q了解计划存在哪些问题,有助于更好的计划下一个项目。第二,按照好的计划完成工作。这看v来不重要Q但是事实上软g工程中的许多错误都是׃考虑不周、粗心大意或是不注意的小l节而造成的,按照好的计划工作是避免这些错误的最好途径。另一个更加微妙的好处是它实际上在改变你的工作方式,有了计划׃用浪Ҏ间去考虑下一步要q什么,它会帮助你把_֊集中在所中的事情上,很少分心Q从而提高了工作效率?/p>

2.了解旉的用情?br>       主要活动分cR在开始分配时间时Q你会发现大部分旉都用在相对很的几个zd上?/p>

       记录每项主要zd所p的时间。坚持记录时间需要很强的自我U束能力Q要惌行精的记录Q必记录下每g主要工作开始和l束的时间。除非你知道自己实际上用了多时_否则׃可能理好用时间的方式?/p>

       用标准的Ҏ记录旉。必M用标准的旉日志。因为需要采集的旉数据的数量增加得很快Q如果不认真记录和存储这些数据,它们很可能丢失或变得混ؕQ这样很不利于查找或对它们进行解释。如果不打算对这些数据进行适当的整理、归UI根本不必要L集数据?/p>

 

       以分钟ؓ量单位。工E是在完成Q务中不间断工作的旉一般都于1时Q因此以时为单位对工作旉q行量不能提供用以计划和管理工作所需要的详细数据Q而用分钟跟踪旉Ҏ得多。一旦决定进行时间跟t,用分钟作为测量单位将比用时更恰当?/p>

       处理中断旉。采用表2.1跟踪旉Ӟ一个常见的问题是中断。电话、聊天、偶的烦恼以及必要的休息打断的ơ数多得令h吃惊。中断的旉不是有效的工作时_q且变化q度很大Q如果不对它q行量Q实际上在旉记录中加入了一个随机数Q也很难用时间数据来计划和管理时间了。事件日志中的数据能帮助你了解工作被打断的频率。多C断不仅浪Ҏ_q会打断你的思\Q导致效率降低和错误的生,因此了解被打断的频率有助于提高工作的质量和效率?/p>

       时间数据保存在合适的地方。记录时间花Ҏ况值得推荐的方法就是用工程C本来记录旉以及其他的事情。对一个Y件专业h员,工程C本用途很多,可以记录旉日志、程序设计方案以及运结果,可以作ؓ你所遵@正确的工E实施方案的凭证Q可以记录下脑子里面一闪而过的想法。推荐的Ҏ是从工程C本的W一开始向后记录主要活动及其所p的时_最后一开始向前记录时间日志。记录主要活动及其所p的时_最后一开始向前记录时间日志?/p>

       周活动ȝ表。通过采用旉日志攉旉数据后,你就能渐渐明白自己是如何支配旉的。但是时间日志中的数据过于详l,需要用一U更有用的表格来ȝq些数据Q周zdȝ表能够很好的完成q个d。当然我们关心的旉不会只有一周这么短Q还需要一D|间内在各cMQ务上p的^均时间、最大时间和最时间。因此采用表2.2所C格式。周zdȝ表中的数据可以帮助你了解旉都用在那些地方,q可以用这些书对以后的几周q行计划。例如,有了q些数据p判断Z个大的Q务所需要的旉可能接近ȝ表中的最长时_而一个简单的d需要的旉可能接近最短时间?/p>

       记录旉的提C。随时准备好工程C本;当偶忘了记录开始时间、结束事件或中断旉Q凭记忆早作出估计Q及时ȝ记录的时间数据?/p>

七、个体Y件过EPSP之制订计?/p>

1、如何制定阶D计?/p>

       q里介绍两种计划Q阶D计划和产品计划。阶D计划是关于q段旉内对旉的安排,产品计划是关于制作品活动期间的旉安排。以M本书Z来说明阶D计划和产品计划的区别。ؓ了计划这工作,首先估计出整个Q务应p多少旉。例如,你可能希望用20时阅读全书20章的内容。对于这个Q务来_产品计划是?0时d全部书ؓ目标Q阶D计划就是每周安?时Mq种方式。下图表CZ业务领域中品计划和阶段计划的关pR?/p>

   Z制定阶段计划Q必L楚时间的使用情况。根据上一章介l的周活动ȝ表,我们可以跟t记录自己是如何支配旉的。在制订下一周的计划Ӟ可以参考最q的周活动ȝ表。根据以前各个Q务花费的旉Q就能判断出下一周将在这些Q务上p多少旉。制定这U计划最单的Ҏ是假设要使用的时间与q去q_使用的时间相同。一U较为精的Ҏ是首先考虑下周要做的工作内容Q然后根据以前的最长和最短时间来估计Z个合适的旉?/p>

2、如何制定品计?/p>

       当工E师在项目小l中工作Ӟ需要计划个人的工作。计划是按期完成承诺的Q务的可靠基础Q可以在工程师合作开发品过E中协调他们的工作,可以帮助工程师了解项目的状态。做计划是Y件工E师工作的一个重要部分,要成Z个有才干的工E师Q就必须知道如何制订准确的计划,也需要知道如何将q些计划与实际结果相比较Q从而学会制定更好的计划?/p>

制定产品计划是可以通过事g加以提高的一U技能。从现在开始对每个产品制订计划Q品可以是一个可制定的程序、一个程序设计方案或是一个测试计划,q在以后的项目中l箋q样做下厅R?/p>

攉历史目数据。对于工Eh员,一个品计划包含品规模、工作时间和q度三方面的估计。最基本的品计划只包括对Q务或作业所需旉的估计。通过攉以前不同d所用时间的数据Q就能够估计来cM的Q务大概所需要的旉。表3.1是ؓ了记录每个项目估计时间和实际旉而设计的作业~号日志Q参考这些历史项目数据,我们可以方便、准地作出估计。准的估计是做好计划的关键?/p>

 

     估算E序规模。品计划的W一步是要估计品的规模。对于程序来_可以使用代码行测量方法估计新E序的规模。ؓ了准的估计Q需要用C前的规模数据Q因此把以前的规模数据按照功能分cL有帮助的。首先查看新E序的需求,估计各类代码有多行Q然后与以前l计的数字进行比较,可以得出开发新E序需要多时间完成。随着所U篏的数据越来越多,作出的估计就会越来越准确。作业编h志作录大量的历史的规模和效率数据提供了一U简便的ҎQ还可以使用?.2记录不功能类型的E序历史数据Qƈ按照规模排列?

     规模量的方法很多,应该Ҏ不同的对象用不同的估计ҎQ即使对E序来说Q代码行量Ҏ也不能覆盖所有的情况。没有Q何方法可以保证估计的l果一定准,作出好的规模估计的关键是要有大量的历史数据,要进行多ơ规模估计,q且要定期的实际结果与估计D行比较?/p>


3、管理好旉
       可以按照如下步骤理旉Q?/p>

1.        分析自己使用旉的历史记录;

2.        制定旉安排表,军_如何使用旉Q?/p>

3.        对照制定的安排表跟踪使用旉的方式;

4.        军_应该改变什么意思自q行动辑ֈ所作安排的要求?/p>

复查旉的分cLc周zdȝ表给Z每周用在各个zd上的q_旉、最大时间和最时间。检查一下这些活动的分类Q是否有些类别包含的范围q大了,而另一些有分得q细。时间管理的重点攑֜那些站用大部分时间的数几项zd上?/p>

作出旉安排。时间安排表是如何用时间的计划Q根据以前如何用时间的数据Q就可以作出计划Q分配以后活动所需要的旉Q如?.3所C?/p>

       

      扑և更多的时间。管理好旉的关键是逐步对用时间的方式q行反复qQ因为时间每?4时是固定的。如果希望以后在某些d多用一些时_除非能够在另外一些Q务中用一些时_否则Q这常常只是一个愿望而已?/p>

       制定基本规则。我们在做许多事情是都是按照一定的规则d的。ؓ了对旉q行有效理Q也需要有规则可@。不同的是前些规则是别h制作的,而时间管理必自己制定这些规则。实际上Q时间管理的安排是为管理自q旉而制定的规则。时间管理的基本规则Q已l决定如何用时_必d实的按照预定的方式去做;Z切实按照预定的安排去做,必L非常具体的计划。表3.4是位置到每天活动制定的每天旉安排表?/p>

 

       讑֮旉分配的优先。有些时间是固定不点的,如每周例会,可以把这些时间称为固定时间。进行其他活动的旉是可变动的旉Q只要有旉可以去做这些活动。可变时间又分成需要完成的d和自行斟酌的d。需要的zd如编E、读书,虽然是需要的zdQ但它们的时间是可变动的Q因为无论如何找出时间都可做q些事情Qƈ且每周在q些zd上所用的旉是不同的。自行斟酌的zd是要做的所有其他的事情Q吃饭、睡觉、社交、观看电视及其其他的׃zd?/p>

       当作出全面的旉安排Ӟ固定旉的安排是没有什么问题,最常见的问题是分配可变动的旉。列出需要尽快做的事情,首先努力完成最重要的Q务。重要的d推此Ӟ你会不自觉的些Q务担心,立刻处理q些事情常常是更有效的,q且也将lh们带来一U完成Q务的成就感。此外,C一旦开始了一o人生畏的dQ就很少会感到象你想象中的那么困难?/p>

可以考虑从自行斟酌的zd中抽出那些额外的旉Q但是这需要合理的安排Q对个h是否真愿意按照这旉安排来执行。没有休息的旉会导致h们将理好时间的x推翻。做旉安排以及跟踪旉是重要的Q但是时间安排一定要是自己实际愿意接受的?/p>

       执行旉安排表。按照时间安排表工作的能力很大程度上取决于个人的自觉性,但是它还取决于要做的工作的数量和它们的优先次序。预料不到的旉是生zM很自然ƈ且是很正常的一部分Q特别是在Y件工E中。危机常怼打破Z的计划,因此不得不作整?/p>

在第一ơ用时间安排表Ӟ可能会感到它不是很有用,q是正常的,不要因ؓW一ơ没有v作用放弃对旉安排的过E,而是要考虑所发生的事情,看看是否存在一些不可能再发生的反常旉、或者存在对有正怺件引起h而意外花费了很多旉Q如果是紧急的情况Q不必对旉安排做大的调_下一周再试着用它Q然后复查结果。如果一些经常发生的事情Cؕ了安排,应考虑对安排进行改动,Z后类g情提前做好准备?/p>

       最后,按照旉安排表跟t实施的性能Q要l箋攉旉数据。根据经验复查时间安排表Q在Ҏ需要和l验修改安排Q要逐步的作出改变。在改变旉安排表时Q要保存以前的版本?/p>

       旉理的目标。收集时间是Z帮助自己理旉。如果收集的数据被证明是没有用的Q就需要重新考虑自己攉旉数据的方法。但是,只有在已l实践了安排的时间之后再q样做。记事作了时间安排表Q如果由于一些原因对旉安排变化很大Q那么也应该攉更多的数据,知道自己明白当前是如何用时间ؓ止?/p>

八、个体Y件过EPSP之缺L?/p>

1、什么是~陷

      ~陷是指E序中存在的错误Q例如语法错误、标点符号错误或者是一个不正确的程序语句,是Q何媄响程序完整而有效的满用户要求的东西,是可以表C、描q和l计的客观事物?/p>

       有h把缺L为BugQ这是不正确的。当成ؓBugӞ令h惛_的是那些令h讨厌的小虫子Q应该把它们拍死或者不予理睬。这会一些重要的问题被视为琐小事,会养成一U错误的态度。缺陷ƈ不像无轻重的BugQ更像是定时炸弹。大家可能会觉得有些夸大其词Q绝大部分细的~陷没有引v严重后果。然而不q的是,很小一部分看v来无关紧要的~陷却能引v严重问题。虽然现在缺陷对你来说还不是一个严重问题,但很快就会成Z个重要的问题?/p>

       设计错误的复杂性和所D的缺L影响没有之间关系Q一些微的~码错误却可能引起严重的pȝ问题。事实上Q绝大多数Y件缺陷都源于E序员的疏忽大意?/p>

Z减小~陷Q就必须q行~陷理Q研I已l引入的~陷Q确定引赯些缺L原因Qƈ学会在将来如何避免重复同L错误?/p>

       ~陷分类。在分析~陷Ӟ缺陯行分cL有帮助的。通过~陷分类Q可以迅速找出哪一cȝL问题最大,然后集中_֊预防和排除这一cȝPq就是缺L理的关键。把_֊集中到最Ҏ引v问题的几cȝ陷上Q一旦这几类~陷得到控制Q在q一步找到新的容易引起问题的几类~陷上。表4.1是Chillarege和他的IBM研究院的工作成果?/p>

       不要急于?0U类型的每一cȝ分出若干子类Q直C已经搜集到大量程序的~陷数据。那Ӟ才能够看出哪里需要更详细以及补充什么样的信息才是最有用的?/p>

       l计~陷个数。采用缺陯录日志,记录那些当你完成初始设计或编码后仍然留在产品中的~陷。h们很Ҏ对缺陯解,但是要管理好~陷Q就必须攉有关~陷的准数据。如果原谅缺P那只会自ƺ欺人。如果你q样做的话,别指望有所提高?/p>

2、缺h找技?/p>

      Z么要早发现~陷。不要期望一个简单拼凑出来的满是~陷的程序,l过修改可以成ؓ一个合格的产品。一旦生产出一个有~陷的程序,它将永远是有~陷的。虽然你可以修复所有已知的问题Qƈ且让它通过所有的试Q但它还是一个有许多不定的有~陷的程序。如果工E师能宽Ҏ~陷的工作,他将生Z质量的品?#8220;我们忙,以后在修补吧”Q这L态度不可能出产出优质产品?/p>

      发现和修复缺L费用。在典型目中,产品被分成很多小的模块,׃通的工程师负责开发。在模块设计、实现、编译后Q工E师作初始的单元试Q单元测试后Q多个模块组成一些大lgq行集成试Q经q各U别的lg试后,q些lg集成Z品进行品设计;最后,品集成到pȝ中进行系l测试。随着pȝ的规模和复杂E度不同Q单元测试、集成测试、组件测试、品测试、系l测试的cd、持l时间、复杂程度有所不同Q但几乎所有规模的软g产品Q都需要这个过E?/p>

      研究证明Q开发过E每前进一步,发现和修复缺Lq_代h要增?0倍。尽缺L修复旉变化很大Q但q_旉L遵@q样的规律,而与~陷的类型无兟?/p>

      发现和修复缺LҎ。尽没有办法不引入~陷Q但是在开发过E中早发现和修复缺陯是可能的。有多种发现E序中的~陷的方法,基本上都包括以下步骤Q表C缺陷征兆;从征兆中推断出缺L位置Q确定程序中的错误;军_如何修复~陷Q修复缺P验证q个修复是否已经解决了这个问题?/p>

      有多U工具和辅助手段来帮助完成这些步骤,工程师最常用的工h~译器,它能够表C出大部分语法缺陗但是编译器最基本的Q务是生成目标代码Qƈ且可能会在源E序有缺L情况下生成代码。因此,不能查出所有的拼写、标点符h其他不符合语法的~陷。一般编译器仅提供了~陷的征兆,你必自己对问题定位Qƈ定是什么问题,通常很快能够做到q一点,但偶也需要较长的旉

      另外一U常用方法就是上面讲q的试。测试的质量是由试用例覆盖所有程序功能的E度军_的。测试可以用来验证程序几乎所有的功能Q但有自q~点Q同~译器一样只能满缺h出的W一个步骤,你仍必须从缺陷征兆找出问题的ҎQ然后才能修复;随着目规模的扩大,全面的测试会p大量的时_要进行完全测试几乎不可能的?/p>

      最有效的发现和修复~陷的方法是个h复查源程序清单。这U方法是负很隑ֽ底清除程序中的缺P但事实证明,q是最快而且最有效的方法?/p>


3、代码复?/p>

      代码复查是研究源代码,q从中发现错误。代码复查更有效的原因是Q在复查时看到的是问题本w而不是征兆。从头到֤查代码时Q考虑的是E序应该做什么。因此,当看到某些地方不正确Ӟ可以看到可能的问题是什么,q立卛_验证代码。复查的~点是:非常耗时Q而且很难恰当的进行;复查时一U技能,当然可以通过学习和实跉|提高?/p>

      代码复查的第一步是了解自己引入的缺LU类Q这是收集缺h据的主要原因。因为在下一个程序中引入的缺LcM般会与前面的基本cMQ只要采用同L软g开发方法,情况会一直如此。另一斚w来说Q当你有了技能和l验或改变了q程Q缺Lcd和数目会随之变化。但是到了一定程度后Q改q就变得非常困难了。这是,必ȝI缺Pq可以帮助你扑ֈ更好的发现和修复~陷的方法?/p>

      如何q行代码复查。代码复查的目标是在软gq程中尽可能早和可能多的发现缺P~陷发现旉少好。采用表4.3描述的一个有序的查方法,在编译之前进行代码复查,是完成目标最好的Ҏ?/p>




      ~译之前q行复查。有几个原因说明应在~译之前q行代码复查Q不论编译前或编译后Q进行完整的代码复查的时间大U相同;不论~译前或~译后,Ҏ查语法有效性的效果是一LQ先做复查将节省大量~译旉Q若不做代码复查Q一般要?2Q~15Q的开发时间进行编译,一旦用代码复查后Q编译时间可以羃短至3Q或更少Q编译程序后Q代码一般复查很隑ֽ底的q行Q?l验证明Q在~译阶段有大量的~陷Ӟ一般在试阶段也有许多~陷?/p>

      建立个h代码复查查表。如果想发现和改正程序中的每一个缺P必遵照一个精的规程。检查表可以保遵@q个规程Q它包括一pdE式的步骤。按照检查表MӞq道如何进行代码复查?/p>

      如果能够正确使用查表Q还能知道每个步骤发C多少~陷。这样就能测量出复查q程的效率,q进一步改q检查表。检查表包括了个人的l验。通过不断的用和改进个h查表Q就可以帮助你用较少的时间发现这些缺陗表4.4是一个C++E序代码复查表的范例?/p>


 


       定期更新查表。随着旉的推U,查表自然的要变大。但是,查表的主要作用是帮助你把注意力集中在关键的方面。太大以后,你将失去重点。所以要定期复查~陷数据Q删除那些不能找到问题的表项?/p>

       从个人检查表的方法可以认识到Q每个工E师都有各自的特点,某个工程师的实践l验对别Z一定适用。因而要设计出适合自己的检查表Qƈ定期的对它进行检查以保证查表更有效。只要你在代码复查中q遗漏缺Pp不断L改进查表的方法?/p>

       q展是很~慢的。最初,你发现缺L能力随着每次复查都有所提高。此后,提高变得很困难。要坚持攉和分析缺h据,q坚持思考如何才能预防缺L产生或怎样更好的找到缺陗只要坚持不断的做下去,p在代码复查中不断q步Q不断提高自q写程序的质量?/p>

      ~码标准。编码标准是被广泛接受的、能够作为工作样板的~码实践集。良好的~码标准有效地帮助您避免开发有潜在危险的代码,有助于预防缺陗例如,可以在编码标准中列出那些应该避免使用的方法,规定号@环入口或在说明是初始化变量,避免不良的变量命名等。编码标准还能有效地l一和规范整体开发活动。当其他开发h员加入到目中来Ӟ他们能够很好地适应q一切。代码也变得更规范更易l护?/p>


 


      其他U类的代码复查。在软gl织中,一U常用的Ҏ是同行评审,是几个工程师彼此复查程序。组l良好的同行评审一般会发现E序?0Q~70Q的~陷。互查虽焉要很多时_但是可以有效发现~陷Q因为工E师往往难于发现自己的设计错误。他们创作这个设计,直到E序应该完整什么,即概念有瑕c作了错误的设计或实现假定,他们往往很难发现。检查这可以帮助他们克服q些问题。对一个大的项目,最x查策略是Q先做个Z码复查再q行~译Q然后在M试前进时行同行查?/p>

      l心工作是有回报的。当工程师觉得对自己开发的E序附有质量责QӞ他就不会依赖于编译器或其他工h发现~陷。全面的代码复查要花Ҏ_但是他们节省出来的时间比p的时间多得多Qƈ能够生出更好的产品?/p>

4、缺陷预?/p>

      引入~陷是hcȝ正常现象Q所有的工程师都会引入缺陗因此所有的工程师都应该了解自己引入~陷的类型和数据?/p>

      在开发过E中QL可再q行一轮测试或代码复查Q决定是否这样做的唯一Ҏ是分析~陷数据。通过分析历史数据Q可以估计出E序中缺L个数。通过把当前项目的数据和估计数据相比较Q就能大概知道正在开发的E序的质量情c这样就能决定是否需要增加一些缺h除步骤?/p>

      ~陷率的预测。当开发一个新的程序时Q可能会觉得很难估计你将引入多少~陷Q理由是~陷的个数因E序的不同而不同。缺陷个CE_是有以下几个原因造成的。首先ɾl验问题Q个人的技能是在不断提高的。开始编E序Ӟ要面临着很多以前没有到q的问题。往往不能定有些q程和函数是如何执行的,可能是语a的结构不清楚或者可能会遇到新的~译器或~程环境的问题。这些问题都会引起开发时间和~陷路的波动。有了经验后Q你逐渐克服q些问题Q犯的错误就减少了。这既减缺LL又减缺h目的波动。缺L减少起初是由于经验的增加和对语言熟练E度的提高。经q这最初的提高后,需要收集和分析~陷数据来进一步改q了?/p>

      ~陷路L动的W二个原因是个体q程不稳定。当开始学习写E序时你也同时开始学习用新的过E和Ҏ。你的过E将随着实际的经验不断的发展Q这׃引v完成不同E序d的时间和引入~陷的数据的波动?/p>

      最后,~陷本n也是q种变化的原因,引入的缺陯多,修复q些~陷所花时间就长。修复缺hq旉长Q引入新的缺L几率也就会增加。因此缺L修改旉变动q度很大。所以,很难对一个引入很多缺Lq程q行预测?/p>

      随着开发过E的改进Q过E会逐步E_下来。这U稳定将提高~陷预测的准性。试验证明,如果在代码复查方面花了够的旉Q你的过E会q速稳定下来。一旦你的过E相当稳定,~陷也将Ҏ预测?/p>

      ҎҎq的E序跟踪每千行引入和排除的缺hQ就可估计出在将来的E序中可能引入和排除的缺h?/p>

debut 2007-04-16 14:27 发表评论
]]>
从PSP到TSP再到CMMQ{Q?/title><link>http://www.tkk7.com/debut/articles/110381.html</link><dc:creator>debut</dc:creator><author>debut</author><pubDate>Fri, 13 Apr 2007 02:56:00 GMT</pubDate><guid>http://www.tkk7.com/debut/articles/110381.html</guid><wfw:comment>http://www.tkk7.com/debut/comments/110381.html</wfw:comment><comments>http://www.tkk7.com/debut/articles/110381.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/debut/comments/commentRss/110381.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/debut/services/trackbacks/110381.html</trackback:ping><description><![CDATA[  <strong>前言</strong><br><br>  本文围l过E管理的各个环节Q以循序渐进的方式,更具体更深入地讲q和分析软g开发的q程改进问题。它从如何控制、管理和改进个h工作方式的问题开始,到如何创建高效且h自我理能力的工E小l,工程人员如何才能成ؓ合格的项目组成员Q以及管理h员如何对组提供指导和支持,一直讲到如何在全公司范围内定义和推行合适的W合CMM标准的过E规范,q达C断改q的良性@环状态,{等?br><br>  如果按照本文所提到的这U思\和体p进行过E改q的话,那么公司的过E工作将是踏实而有效的。ƈ且于个hQ于公司都将受益非浅Q?br><br>  1?提升个h的能力。PSP向你展示如何制订计划q跟t你的工作,提供工作有效性的数据q识别出自己的优势和劣势Q从而你能够不断了解和改善自己的技能和才智Qƈ在工作中充分利用自己独特的才能。而TSP向你展示如何成ؓ合格的项目组成员Q如何创建高效且h自我理能力的工E小l,从而达到高效的协同开发?br><br>  2?完善公司的过E。结合TSP和PSPQ在全公司范围内建立规范的开发过E就轻而易举。再加上本文提供的具体实践和有效思\Q能够很好地帮助企业提升理能力Q包括Y件过E管理、项目管理和持箋改进q程?br><br>  个h开发能?br><br>  PSP (Personal Software Process) 是一U可用于控制、管理和改进个h工作方式的自我持l改q过E,是一个包括Y件开发表根{指南和规程的结构化框架。PSP与具体的技术(E序设计语言、工h者设计方法)相对独立Q其原则能够应用到几乎Q何的软g工程d之中。PSP能够说明个体软gq程的原则; 帮助软g工程师作出准的计划Q确定Y件工E师为改善品质量要采取的步骤;建立度量个体软gq程改善的基准;定q程的改变对软g工程师能力的影响?br><br>  团队开发能?br><br>  TSPQPersonal Software ProcessQ对组软gq程的定义、度量和攚w提出了一整套原则、策略和ҎQ把CMM要求实施的管理与PSP要求开发h员具有的技巧结合v来,以按时交付高质量的YӞq把成本控制在预的范围之内。在TSP中,讲述了如何创建高效且h自我理能力的工E小l,工程人员如何才能成ؓ合格的项目组成员Q管理h员如何对组提供指导和支持,如何保持良好的工E环境ə目l能充分发挥自己的水q等软g工程理问题?br><br>  软g开发过E?br><br>  软g开发过E(Software Development ProcessQSDPQ是l织U在全公司范围内q行的过E定义、度量和改进Q包括三部分Q开发生命周期、项目管理实践和软g工程q程。它是在CMM的基上徏立v来的Q综合在实践中行之有效的具体ҎQ注重实用性和效果Q以实现目交付的可预期性和质量保证为最l目标?br><br>  开发生命周期?br><br>   一个专业的软g开发公司应该有Ҏ自己的开发模式徏立一个非常详l的软g开发周期模型,包括开发阶D,每阶D内的Q务,d的具体工作和交付物,使用的开发工具和技术,以及人员的分工,甚至可以l到通用的审怼议。将开发中所有的内容用网l图或流E图的Ş式明地规范下来Q得高层能够对目的整体过E一目了Ӟ使得目的管理者很Ҏ地跟tQ务的情况Q得每位开发h员都非常明确自己的Q务和在整体开发中的作用。只有这L生命周期模型对具体的开发才有意义,它是公司所有开发的“圣经”Q所有的技术开发和q程开发均需在此基础上进行开展,q以此ؓ依据?br><br>  目理实践?br><br>  以公司的软g生命周期为基Q依据CMM标准Qؓ公司建立一pd合适的q程实践。几个关键的q程实践包括Q质量保证,需求管理,配置理Q计划和跟踪Q风险控制。然后再建立一套项目度量工h更加_地管理项目。如果你们企业不做CMM认证的话Q我认ؓ其他的实践可以先不做。将q些基本的工作做CQ然后再参考三U四U五U的实践来改q和补充q些实践Q也完全可以很好地控制开发的软gq程。即所谓:学习CMM是吸收其_֍和精?br><br>  持箋改进q程?br><br>  有了规范的开发生命周期模型和目理实践Q可以想办法Z业设计一个徏立在数据基础之上、不断度量和改进、不断提高企业开发能力的一个良性@环的机制。模型图如下Q?br><br> <img height=150 src="http://www.uml.org.cn/SoftWareProcess/images/4272335.gif" width=421> <br><br>  <strong>三者的有机l合</strong><br><br>  PSP?TSP 和CMMY件业提供了一个集成化的、三l的软gq程攚w框架。三者互盔R合,各有侧重QŞ成了不可分割的整体,犹如一张具有三条腿的凳子,~Z不可。在软g能力成熟度模型CMM?8个关键过E域中,?2个与个体软gq程PSP紧密相关Q有16个与组软gq程TSP紧密相关。因此,如果能够熟悉个体软gq程和群lY件过E,不仅有助于工E师改善工作效率Q而且也非常有利于l织的过E改善?br>Z更有效地改进公司的过E,在这里我一U@序渐q的Ҏ。如下图所C:<br><br>  <img height=176 src="http://www.uml.org.cn/SoftWareProcess/images/4272418.gif" width=356> <br><br>  PSP注重于个人的技能,能够指导软g工程师如何保证自q工作质量Q估计和规划自n的工作,度量和追t个人的表现Q管理自w的软gq程和品质量。经qPSP学习和实늚正规训练QY件工E师们能够在他们参与的项目工作之中充分利用PSPQ从而保证了目整体的进度和质量?br><br>  TSP注重团队的高效工作和产品交付能力Q结合PSP的工E技能,通过告诉软g工程师如何将个体q程l合q小lY件过E,通过告诉理层如何支持和授权目组Q坚持高质量的工作,q且依据数据q行目的管理,展示了如何去生高质量的产品?br><br>  CMM注重于组l能力和高质量的产品Q它提供了评Ll的能力、识别优先改善需求和q踪改善q展的管理方式。再拓展到本文提到的软g开发过ESDP的话Q那是h更高层次更高l织性的意义?br><br>  <strong>ȝ</strong><br><br>  如果一个组l正在按照CMM改进q程Q则PSP和TSP是和CMM完全相容的。如果一个组l还没有按照CMM改进q程Q则有关PSP和TSP的训l,可以为未来的CMM实践奠定坚实的基。MQ单U实施CMMq不能完全做到能力成熟度的升U,我国企业q应当将实施CMM与实施PSP和TSP有机地结合v来,才能CMM发挥最大的效力? <img src ="http://www.tkk7.com/debut/aggbug/110381.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/debut/" target="_blank">debut</a> 2007-04-13 10:56 <a href="http://www.tkk7.com/debut/articles/110381.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PSP/TSP/CMMI构徏高W效团?/title><link>http://www.tkk7.com/debut/articles/110380.html</link><dc:creator>debut</dc:creator><author>debut</author><pubDate>Fri, 13 Apr 2007 02:55:00 GMT</pubDate><guid>http://www.tkk7.com/debut/articles/110380.html</guid><wfw:comment>http://www.tkk7.com/debut/comments/110380.html</wfw:comment><comments>http://www.tkk7.com/debut/articles/110380.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/debut/comments/commentRss/110380.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/debut/services/trackbacks/110380.html</trackback:ping><description><![CDATA[当今C会对Y件的需求在不断变化Q企业必d备快速开发的能力来面对这L需求。许多企业同时还面预算、h员的削减或者是Z提高利润Q必L刉目时间与费用。Y件质量在q种快速的市场环境压力下往往得不C障。美国卡内基梅隆大学软g工程学院(SEI)20多年来一直致力于创徏q推q一pdҎ来帮助企业有效地开发高质量软g。其中CMMI模型已经被中国诸多Y件开发组l所认可QCMMI能够评估q改q过E,从而稳定、协调ƈ提高q些l织l效的根本能力。尽这一模型提供了强大的改进框架Q但它关注的是企业应该做什么而不是如何来做。一个企业是由多个团队及个hl成的,l织U的q程改进必然需要团队及个h行ؓ的改变,要开发高质量的Y件就要求开发Y件的每个工程师都能高质量地完成工作。个Y件过E?PSP)和团队Y件过E?TSP)是专门设计来个h和团队的工作优化及规范化的,通过让个人和团队使用些预定义的标准流E来建立可测量的目标Q跟t目标的完成情况Q从而提高质量,与CMMI相结合,从而构建高l效的团队,优化整个l织的流E? <p>  最q国际上Q如微Y和Intuit{著名跨国企业,通过重心扩展到个h软gq程 (PSP)和团队Y件过E?TSP)从而促q了q程改进所能带来的利益?/p> <p><strong>  那么PSP和TSP到底是什?</strong></p> <p>  人员成本占了软g开发成本的70%QY件工E师的技能与工作习惯很大E度上决定了软g开发的q程。而用PSP的工E师有一个规范的和结构化的方法来开发Y件。这些经受训的工E师的习惯是真正能被用到新的不断变化的技术上的。PSP指导工程师如何在工作一开始就理好质量,分析每项工作的结果,如何q用来改善下一个项目的程。当工程师知道如何运用跨领域和方法论的方式来度量q管理他们自q工作Ӟ他们p够成功地沟通、学习新技能、获取新技术以及参与到高W效的团队中。PSP 是要引进TSP的组l的先决条g?/p> <p>  团队软gq程(TSP)加上PSP帮助高W效的工程师在一个团队中工作Q来开发有质量保证的Y件品,生安全的Y件品,改进l织中的q程理。通过TSPQ一个组l能够徏立v自我理的团队来计划q踪他们的工作、徏立目标,q拥有自qq程和计划。这些团队可以是Ua的Y件开发团队,也可以是集成产品的团队,规模可以??0个工E师不等。TSP 团队在广泛领域里可能q用XP, RUP或其它方法。TSP使具备PSP的工Eh员组成的团队能够学习q取得成功。如果你的组l运用TSPQ它会帮助您的组l徏立一套成熟规范的工程实践Q确保安全可靠的软g?/p> <p><strong>  PSP、TSP在行业中的应用及效果</strong></p> <p>  CMMI是领先的pȝ集成和Y件组l用来评价和改进他们理q程与能力的一U标准。在中国已经有许多组l通过或正在进行CMMI的咨询与评估。PSP/TSP的实施能促进q程改进所能带来的收益Q同时也能加速企业通过CMMI的各U评伎ͼ更重要的是,PSP/TSPq能改q的l果持箋保持下去?/p> <p>  PSP不仅是SEI{国际知名大学或软g学院中学生的必修评Q同时在各行业中也有q泛的应用。全世界有越来越多的企业实施了PSP/TSP来增Z业的竞争力,其中软g企业有MicrosoftQQuarksoftQ?BAANQIntuitQAdvanced Information ServicesQTeradyne{,q有诸如集成电\Q系l集成等行业的公司,?ABB, Honeywell QMotorolaQAllied SignalQBoeingQXEROX{?/p> <p>  PSP、TSP的实施,些组l在软g质量Q成本控制等斚w带来的显著的成效。微软,作ؓ全球最大的软g供应商,最q有一个项目试q行了SEI个h软gq程(PSP)和团队Y件过E?TSP)Q一个Y件开发团队改变行为、改q过E、从而交付更好的软g?/p> <p>  TSP塑造团队。在使用TSP之前Q该团队?0个开发h员,他们寚w目、工作、甚臛_此之间都没有信心。该团队成员的工作只是彼此独立的q行Q而不是作Z个团队来q行的,没有协作。在TSP目实施?天后Q这lh成ؓ了一个真正的团队?/p> <p>  TSP 降低~陷Q改q质量,节省成本。在TSP培训中,微Y开发h员的单体试~陷从超q?5个缺?千行代码显著降低?个缺?千行代码。微软的团队Q如其他的Y件开发团队一P耗费40-60%的整体开发时间在试上,因ؓ他们用这些时间来发现q解决品的~陷。但是,׃微Y的TSP试运行团队花旉在早期的~陷U除zd上,如个审和团队查,他们的测试只用了整个目工作量的11.5%。最l,该试q行目l按时将产品交付l了试Qƈ且是高质量的。这使得目节省?5% 的成本?/p> <p><strong>  PSP、TSP与CMMI模型的紧密结合将成ؓ必然势</strong></p> <p>  正如CMM/CMMI的创始hWatts humphrey所说的Q未来对于Y件工E团队交付品的质量、及时性和成本控制的要求越来越高,无法辑ֈq些要求的企业及个h都将被淘汰。鉴于PSP、TSP目前为止在各大企业的实施效果QPSP、TSP与CMMI模型的紧密结合将成ؓ必然势?/p> <p>  作ؓ开发h员,通过PSP的培训课E,能够学到软gq程理和项目管理方面最先进的技能和最佛_늮理,从而提高他们的目质量Q改q预估和计划能力Q同时减品缺陗通过PSP培训的个能够获得SEI授权的PSP培训证书Q这无疑也是提升工程师个业发展空间和价值的极好Z?/p> <p>  作ؓ开发团队,TSP的实施能够在较短旉内徏立高l效的团队,能够保团队开发品的质量、安全性,更好地计划ƈ控制目旉与成本,从而改q组l的q程理?/p> <p>  从整个企业角度来看,所有经验证明PSP、TSP能加速CMMI在企业范围内的实施,同时也是l持改进的需要。在众多世界知名企业开始实施PSP、TSP的情况下Q中国的软gl织要提高自w的国际竞争力,PSPQTSP是必l之路,不仅帮助提升了企业的对外形象和国际认知度Qؓ能ؓ企业带来更大的竞争优ѝ?/p> <p><strong>  循序咨询帮助企业构徏高W效团?/strong></p> <p>  循序咨询在运用CMM、CMMI模型帮助客户通过q程改进最l实现其商业目标斚w已经拥有了多q的成功l验Qƈ已拥有众多长期客P包括上v宝信软g、博UY件、西安交大博通、中q资讯、SONY 电子、联合汽车电子、安满能、PFU、铂金中国、新致Y件、南京日恒、浙大网C研等一批知名国际和国内软g开发及集成企业。在多年成功l验的基上,发现SEI的PSP、TSP理念引入中国Qƈl合CMMI可全方位q快速的帮助企业建立高W效的团队。从而ɾl织自管理层到基层员工步调一_加快企业实现其商业战略目标?/p> <p>  循序除了拥有SEI授权的CMMIMQ评估师以外,q有唯一帔R中国的SEI授权PSP/TSP讲师及咨询顾问。如果您的企业已l通过了CMMCMMI评估Q将帮您的改q结果维持得更长?如果您的企业正在q行q程改进如CMM/CMMI目QPSP/TSP无疑促q您在改q过E中获得的收?如果你正打算开始进行过E改q,那从PSPTSP开始,大大提高您改进的速度和效率?/p> <img src ="http://www.tkk7.com/debut/aggbug/110380.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/debut/" target="_blank">debut</a> 2007-04-13 10:55 <a href="http://www.tkk7.com/debut/articles/110380.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Benifits of Implementing Level 2 Capability Maturity Model Processes with the Personal Software Processhttp://www.tkk7.com/debut/articles/110376.htmldebutdebutFri, 13 Apr 2007 02:53:00 GMThttp://www.tkk7.com/debut/articles/110376.htmlhttp://www.tkk7.com/debut/comments/110376.htmlhttp://www.tkk7.com/debut/articles/110376.html#Feedback0http://www.tkk7.com/debut/comments/commentRss/110376.htmlhttp://www.tkk7.com/debut/services/trackbacks/110376.html

 

 Benifits of Implementing Level 2 Capability Maturity Model Processes with the Personal Software Process

Author: John Frankovich

 Advanced Information Services

1605 Candletree Drive Suite 114

Peoria, Il 61614


 

Abstract

This paper describes the practical application of the Personal Software Process (PSP) in supporting the implementation of the Capability Maturity Model (CMM). The CMM is a process maturity framework designed to improve an organization’s process capability [Paulk 1993]. The PSP is a proven technique to improve the individual engineer’s performance and productivity [Humphrey 1995]. The benefits of using the bottom-up PSP methodologies to supplement CMM Level 2 Key Process Areas (KPAs) are described.


Content

1.0 Overview of the Capability Maturity Model(CMM)

2.0 Overview of the Personal Software Process(PSP)

3.0 Supplementing the CMM with the PSP

4.0 A PSP based Software Project Planning Process

5.0 A PSP based Software Project Tracking and Oversight Process

6.0 Benefits of the PSP-CMM approach

7.0 Conclusions

Appendix A: References


1.0 Overview of the Capability Maturity Model(CMM)

After two decades of unfulfilled promises about productivity and quality gains from applying new software methodologies and technologies, industry and government organizations are realizing that their fundamental problem is the inability to manage the software process [DoD 1987]. In 1987, the Software Engineering Institute (SEI) designed an organization assessment model that later developed into the Capability Maturity Model (CMM) [Paulk 1993].


The CMM is a framework that characterizes an evolutionary process improvement path toward a more mature organization. An organization can use the CMM to determine their current state of software process maturity and then to establish priorities for improvement. An organization's current state of maturity can be categorized as Initial, Repeatable, Defined, Managed, or Optimizing.

      Initial: The software process is characterized as ad hoc and occasionally even chaotic. Few process are defined and success depends on individual effort

      Repeatable: Basic project management processes are established to track cost, schedule, and functionality. The necessary process discipline is in place to repeat earlier success on projects with similar applications.

      Defined: The software process for both management and engineering activities is documented, standardized, and integrated into a standard software process for the organizations. All projects use an approved, tailored version of the organization's standard process for developing and maintaining software.

      Managed: Detailed measures of software process and product quality are collected. Both software process and products are quantitatively understood and controlled.

      Optimizing: Continuous process improvement is enabled by quantitative feedback from the process and from piloting innovative ideas and technologies [Humphrey 1995].


The following chart graphically displays the relationships between each of the CMM maturity levels and also shows the Key Process Areas (KPA) associated with each level:


The CMM defines five maturity levels and each level is composed of several key process areas. Each key process area identifies a cluster of related activities that, when performed collectively, achieve a set of goals considered important for enhancing process capabilities [Humphrey 1995]. The following are descriptions of each KPA’s purpose as defined in the CMM [Paulk 1993]:

      The purpose of Requirements Management is to establish a common understanding between the customer and the software project of the customer’s requirements to be addressed.

      The purpose of Software Project Planing is to establish reasonable plans for performing the software engineering and for managing the software product.

      The purpose of Software Tracking and Oversight is to provide adequate visibility into actual progress so that the managers can take effective actions when the software project’s performance deviates significantly from the software plan.

      The purpose of Software Subcontract Management is to select qualified software subcontractors and manage them effectively.

      The purpose of Software Quality Assurance is to provide management with appropriate visibility into the process being used by the software project and the products being built.

      The purpose of Software Configuration Management is to establish and maintain the integrity of the products of the software project through out the project’s software life cycle.

      The purpose of Organization Process Focus is to establish the organizational responsibilities for software process activities that improve the organization’s overall software process capability.

      The purpose of Organization Process Definition is to develop and maintain a usable set of software process assets that improve process performance across the projects and provide the basis for cumulative, long-term benefits to the organization.

      The purpose of Training Program is to develop the skills and knowledge of individuals so they can perform their roles effectively and efficiently.

      The purpose of Integrated Software Management is to integrate the software engineering and management activities into a coherent, defined software process that is tailored from the organization’s standard software process and related process assets, which are described in the Organization Process Definition.

      The purpose of Software Product Engineering is to consistently perform a well defined engineering process that integrates all the software engineering activities to produce correct, consistent software products effectively and efficiently.

      The purpose of Intergroup Coordination is to establish a means for the software engineering group to participate activity with the other engineering groups so the project is better able to satisfy the customer’s needs effectively and efficiently.

      The purpose of Peer Reviews is to remove defects from the software work products early and efficiently.

      The purpose of Quantitative Process Management is to control the process performance of the software project quantitatively.

      The purpose of Software Quality Management is to develop a quantitative understanding of the quality of the project’s software products and achieve specific quality goals.

      The purpose of Defect Prevention is to identify the cause of defects and prevent them from recurring.

      The purpose of Technology Change Management is to identify beneficial new technologies (i.e., tools, methods, and processes) and transfer them to the organization in an orderly manner.

      The purpose of Process Change Management is to improve continually the software processes used in the organization with the intent of improving quality, increasing productivity, and decreasing the cycle time for product development.


The CMM represents a substantial gain in the understanding of software engineering processes and lays the ground work to help organizations develop their own processes that will continually improve over time. Its objectives, goals, and activities are designed to institutionalize organizational structure and policies. However, it does not address what tools, techniques, and methodologies an engineer should use in order to implement and ultimately satisfy the policies. The CMM does lay the ground work for personal methodologies by providing an organizational structure but it does not directly address the requirements of the individuals. This personal gap between the CMM and the individual software engineers will continue to exist until organizations can:

      • Identify Key Process Areas that can be performed by the individual
      • Define a subset of the CMM that will be useful to a small development team


2.0 Overview of the Personal Software Process(PSP)

The Software Engineering Institute has developed a Personal Software Process [Humphrey 1995] that addresses the gap that exists between the Capability Maturity Model and the individual.


The PSP has a process evolution framework similar to the CMM. The PSP partially addresses 12 of the 18 KPAs defined in the CMM. The following figure shows the CMM along with its key process areas and those areas that are partially addressed in the PSP have been noted with an asterisk.



In order to develop high quality software, each individual component that is integrated into the overall product must also be of high quality. The overall strategy of the PSP is to make sure all the individual components are of high quality. The PSP accomplishes this by providing a defined personal process framework that the software engineer can use to:

      • Develop a plan for every project / component
      • Record their development time
      • Track their defects
      • Retain their data in project summary reports
      • Use their data to plan future projects / components
      • Analyze their data to evolve their processes
      • To improve their performance



2.1 PSP0: The Baseline Process

This is the initial stage the personal software process. Its fundamental objective is to document the engineer’s personal process as it exist today. This baseline will provide a consistent basis for measuring progress. Additionally, it provides a defined structure on which to improve. The only modification that the engineer does to his own process at this level is to record measures of performance. The PSP guides this data gathering by providing standard forms and templates. This initial phase is very similar to the CMM initial level of maturity. This reemphasizes that fact that the PSP and CMM approach Software Process Improvement in a similar way, but from different perspectives (Top-Down or Bottom-Up).



2.2 PSP1: The Personal Planning Process

PSP1 supplements the Baseline Process by the addition of software planning activities. These activities are geared toward elucidating the relationship between the size of programs and the amount of time that is needed to develop them. This is accomplished by developing a plan and estimating the resources required. After the completion of the project, the plan’s estimated metrics are compared to actual metrics that were gathered over the project’s life span. The comparison of this statistical data allows the engineer to gain insight into his own software process. This knowledge allows them to produce more accurate estimates. Additionally, it allows them to begin to manage their personal software process and improve those areas that will result in the largest gains.



2.3 PSP2: The Personal Quality Management Process

An early PSP objective is to help engineers to deal realistically and objectively with the defects they inject. These defects are usually syntax or simple semantic errors that even the most seasoned software engineer will commit. The amount of time that is required to track down and fix these errors can become extreme in very large and complex projects. PSP2 ,the Personal Quality Management Process, addresses this critical issue through defect management. Defect data collection started in PSP0, The Baseline Process. With this information engineers construct and use checklists for design and code review. This allows the software engineer to focus on those personal areas that are causing problems. With the checklist they can effectively review design and code while modifying the checklist as their own Personal Software Process improves.



2.4 PSP3: The Cyclic Personal Process

The Cyclic Personal Process is the final level in the PSP. Its purpose is to scale up the PSP2, the Personal Quality Management Process, for use on large scale projects. One of the fundamental problem solving approaches in science is Divide and Conquer. This refers to taking a complex problem and subdividing it into smaller more manageable pieces. This is the fundamental concept that is behind PSP3. The following figure illustrates this:



The strength of this approach is that each sub-module is designed as a full PSP 2 project. Fundamentally, the PSP was designed to aid in the development of high quality software. If each module is designed to meet this requirement, then integration of each individual component into the overall product will also satisfy the requirement.



3.0 Supplementing the CMM with the PSP

The CMM is a framework that characterizes an evolutionary process improvement path toward a more mature organization. The CMM is comprised of five maturity levels, each containing several KPAs. All KPAs in the CMM have the following features:

KPA Structure Definitions [Paulk 1993]
Goals The goals summarizes the key practices of a key process area and can be used to determine whether an organization or project has effectively implemented the key process area.
Commitment to Perform Commitment to Perform describes the actions the organization must take to ensure that the process is established and will endure.
Ability to perform Ability to perform describes the preconditions that must exist in the project or organization to implement the software process competently.
Activities performed Activities performed describes the roles and procedures necessary to implement the key process area.
Measurement and Analysis Measurement and Analysis describes the need to measure the process and analyze the measurements.
Verifying Implementation Verifying Implementation describes the steps to ensure that the activities are performed in compliance with the process that has been established.


The CMM is intended to be a high-level description of very complex software processes and thus should be viewed as a guideline and its goals should be considered as key criteria. An organization is considered to have reached a certain maturity level if it can demonstrate that it satisfies all of the goals for all KPAs at that level. The SPI must be designed to institutionalize the organizational policies of the CMM and at the same time give the engineers the tools, techniques and methodologies needed to implement the policies.


It is a fact, that a Software team is made up of individuals, and they are the ones that actually get the work done. It is at this lower level of abstraction that the benefits of software engineering practices will be most productive. The day-to-day operation of an organization rest on the shoulders of the individuals who construct, build, and implement the company's future. The CMM lays the ground work for personal methodologies, but it does not directly address the requirements of the individuals. This Personal Gap can be mitigated if the SPI is supplemented with the PSP.


One of the fundamental difficulties in designing a SPI initiative using the CMM, is that the model describes what to build but not how to build it. For example, the CMM can be thought of as a blueprint for a house. It tells the construction worker where the load bearing walls, support beams, and trusses should be placed in order to construct a stable house. The problem is that the carpenter may not know how to build a truss or what constitutes a state of the art of truss.


The following demonstrates this difficulty in implementing the CMM KPA of Software Project Planning:

KPA: Software Project Planning Description [Paulk 1993]
Goal 1 Software estimates are documented for use in planning and tracking the software project.
Commitment 1 A project software manager is designated to be responsible for negotiating commitments and developing the project’s development plan.
Ability 1 A documented and approved statement of work exists for the software project.
Activity 1 The software engineering group participates on the project proposal team.
Measurement 1 Measurements are made and used to determine the status of the software planing activities.
Verification 1 The activities for software project planning are reviewed with senior management on a periodic basis.


The above describes many aspects of what makes up a good Software Project Planning process. With this description an organization would be hard pressed to implement an effective project planning process. There exists issues that are not covered in the CMM that could severely impact the overall effectiveness of the SPI initiative like the following:

      • What can we estimate besides schedule?
      • Is the size of the software produce related to the effort needed to build it?
      • How do we generate estimates from previous experience?
      • What should be included in a project’s development plan?
      • What constitutes a "good" project plan?
      • How do we measure the status of the software planing activities?
      • Why do we need to measure anything?


The Software Engineering Institute developed the PSP [Humphrey 1995] to addresses these and other important issues that exist in the Capability Maturity Model. The PSP is a bottom-up approach to Software Engineering which focus on the individual software engineer, their personal practices, and how they relate to an organization wide Software Process Improvement plan. In the context of the house building example, the PSP describes what issues are involved in building a truss and offers directional support in its construction.


The underlying philosophy is that the CMM is a top-down approach to improving an organization’s ability to engineer software. If an organization trains its software engineers and project managers in the PSP, using A Discipline for Software Engineering [Humphrey 1995] as the training textbook, then the organization as a whole will have a better understanding of the key issues in implementing many of the CMM related initiatives.


4.0 A PSP Based Software Project Planning Process

A Software Project Plan documents estimates for the work to be performed, the necessary commitments, and defines a plan to perform the work. One of the most important factors in satisfying the Key Process Area of Software Project Planning, is that the process of constructing, documenting, and maintaining the Software Project Plan must be in compliance with the Capability Maturity Model. The PSP can help form a subset of these software processes in a highly integrated manner. The following chart graphically displays the relationship between the PSP and the CMM based Software Project Planning processes:



The Preliminary Design Phase is undertaken after the Software Requirements Specification (SRS) is completed. In this phase the software development team constructs a high level design which can include Entity Relationship Diagrams (ERD), Data Flow Diagrams (DFD), and Data Dictionaries. After the high level design is completed, inspected, and baselined, the project manager divides the design into individual components that are suitable for an individual PSP trained engineers to work on. These components are then given to the PSP engineer who use their own defined personal process to estimate size, time, and effort required for implementation of the component. After all components have been estimated in this faction, the information is passed back to the project manager. The Software Project Plan is developed by integrating the individual estimates for all of the components of the high level design.


5.0 A PSP Based Software Project Tracking and Oversight Process

The Key Process Area of Software Project Tracking and Oversight focus on management’s ability to determine project status. In order to provide adequate visibility into the process of developing software, actual results and performances must be tracked against the Software Project Plan. When the actual results and the plan significantly differ, correction action should be taken. One way to perform this type of detailed tracking is with earned value project scheduling.


Earned value (EV) tracking is a mechanism to evaluate the progress of a project [Boehm 1981]. EV works by establishing a value for each task in the software project plan. This value represents the percent of effort required to complete the task relative to the overall project effort. The EV tracking mechanism provides a common value scale for each task regardless of the type of work involved. As each task is completed, the project will be awarded that task’s earned value and when the project reached 100% earned value, then all of the planned tasks are completed.


The following chart graphically displays the relationship between the PSP and the CMM based Software Project Tracking and Oversight processes:


As mentioned earlier in this paper (section 3.0), The Software Project Plan is developed by integrating the individual estimated for all of the components of the high level design. In the Critical Design / Code / Test phase, each of these components is implemented by engineers performing full PSP 2.1 cycles on the components. Each engineer tracks to completion each of the implementation tasks with earned value. This low level earned value is then passed back to the project level via weekly or monthly project status update meetings.


Project level earned value can be constructed in one of two ways depending on the granularity of tracking that is required by the project: Component Level earned value or Engineer Level earned value.

      Component Level earned value

      The project can track component level earned value by defining an earned value task to be the completion of a PSP 2.1 Cycle. Once the engineer has completed the implementing of a component (When the engineers earned value is 100%) then the project is awarded the earned value associated with the component.

      Engineer Level earned value

      The project can track the engineering level earned value by defining an earned value task to be the completion one of the PSP phases of the PSP 2.1 cycle (Planning, Design, Implementation, Testing, Postmortem). Once the engineer has completed a PSP phase, the project is awarded the earned value associated with the phase.


This type of low level earned value tracking can greatly increase the visibility into the process of developing software. This type of an approach allows the project to track earned value not only at the project level but also at the individual engineer level. The complexity of defining a software process to calculate earned value is masked by the PSP since the process is already defined for the engineering level.


6.0 Benefits of the PSP-CMM approach

The focus of this paper is on the organizational benefits of using the PSP to supplement the CMM Level 2 Key Process Areas. This support can be divided into to sections: Engineer Level Support and Project Level Support. Even though an examination of Engineer Level Support is beyond the scope of this paper, the following is a brief summary of results from an excellent technical report on the PSP’s impact on individual engineers [Hayes 1997]:

      • Effort estimates improved by a factor of 1.75
      • Size estimates improved by a factor of 2.5
      • Product quality, the percent of defects found before compile, increased by 50%


6.1 Project Level Support: Case Study

In 1992, Advanced Information Services Inc. (AIS) realized the need for a paradigm shift in the way that they developed software. AIS is an independent software contracting organization with offices in Peoria and Northbrook, Illinois and a subsidiary in Madras, India. AIS has successfully adopted and institutionalized the CMM and PSP into their defined software process, which has been internationally acknowledged by their selection as a finalist for the 1997 IEEE Computer Society Award for Software Process Improvement.


The effect of an organizational CMM - PSP software process improvement effort is visible in the following chart. The implementation of the CMM provided measurable improvements in AIS’s ability to provide "Faster, Better, Cheaper" software. The inclusion of the PSP further refined the fidelity of the AIS Defined Process and has been successful in sustaining continual improvement.



This chart show the Schedule predictability, as measured by the number of months late, of developmental projects at AIS. The x-axis represents the start data of each of the projects that are plotted. The chart is divided into 3 sections:

      • 1988-1992. This represents the time period when AIS did not have a defined software process.
      • 1992-1995. This represents the time period when AIS utilized CMM based software process.
      • 1995-1997. The represents the time current time period as AIS follows CMM based software process that include the PSP.


There is obviously a dramatic improvement in schedule predictability that is associated with the introduction of the CMM based software process. The inclusion of the PSP does not have a large impact of the schedule predictability. The major benefit gained from the introduction of the PSP is evident in the following effort predictability chart:


This chart show the Effort predictability, as measured by the percent of effort deviation of developmental projects at AIS. The x-axis represents the start data of each of the projects that are plotted. The chart is divided into the same 3 sections as the Schedule Predictability chart. The benefits of supplementing CMM based software process with the PSP are clearly evident in the "PSP-CMM Process" section of the effort predictability chart.


The CMM based process had an impact of the Schedule Predictability but did not have the same impact of the Effort Predictability. The reason for this is that the CMM gave the organization the ability to determine the status of the projects and determine if the schedule was slipping. Thus, if a problem was detected then more hours were "donated" to the project in an attempt to maintain the schedule.


It was not until the PSP was introduced that the Effort Deviation experienced a marked reduction. The PSP equipped the individual engineers with the tools and techniques to needed meet their effort estimates. The combination of the CMM and the PSP seems to be an effective way to manage the software process.


7.0 Conclusions

The PSP and CMM are mutually supportive. The CMM provides the orderly support environment engineers need to do superior work, and the PSP equips engineers to do high quality work and participate in organization process improvement [Iyer 1996].


The underlying philosophy is that the CMM is a top-down approach to improving an organization’s ability to engineer software. The PSP is the bottom-up approach that enables the engineers to improve the quality of their software. The combination of these macro and micro methodologies can empowered organization to improve profitability of development projects by meeting cost estimate and schedule commitments with reasonable consistency.


 

Appendix A: References

[AIS]

Advanced Information Services. 1605 Candletree Dr. Suit 114. Peroria IL USA 61614

[Boehm 1981]

Boehm, B. (1981). Software Engineering Economics. Englewood Cliffs, NJ: Prentice-Hall, Inc.

[DoD 1987]

Report of the Defense Science Board Task Force on Military Software, Office of the Under Secretary of Defense for Acquisition, Washington, D.C., September 1997

[Hayes 1997]

Hayes, W (1997), The Personal Software Process (PSP): An empirical study of the impact of PSP on Individual Engineers. Technical Report, CMU/SEI-1997-97-TR-001, Software Engineering Institute, Carnage Melon University, Pittsburgh, PA.

[Humphrey 1995]

Humphrey, W.S (1997), A Discipline for Software Engineering. Addison Wesley, Reading, M.A

[Iyer 1996]

Iyer, S. (1996), PSP and The Capability Maturity Model. Technical Report, Software Engineering Institute, Carnage Melon University, Pittsburgh, PA.

[Paulk 1993]

Paulk, M.C., Bill Curtis, M. B. Chrisis (1993), "Capability Maturity Model for Software Version 1.1," Technical Report, CMU/SEI-93-TR-24, Software Engineering Institute, Carnage Melon University, Pittsburgh, PA.



debut 2007-04-13 10:53 发表评论
]]>
CMM与CMMI的比?/title><link>http://www.tkk7.com/debut/articles/109924.html</link><dc:creator>debut</dc:creator><author>debut</author><pubDate>Wed, 11 Apr 2007 07:53:00 GMT</pubDate><guid>http://www.tkk7.com/debut/articles/109924.html</guid><wfw:comment>http://www.tkk7.com/debut/comments/109924.html</wfw:comment><comments>http://www.tkk7.com/debut/articles/109924.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/debut/comments/commentRss/109924.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/debut/services/trackbacks/109924.html</trackback:ping><description><![CDATA[<p>  本文ȝ了从传统软g理技术过渡到C软g理技术的一些思想。我特别要认可Y件工E学院SEI在其新方法CMMIQ能力成熟度模型集成Q中的改q,q促q开发公司正地应用q个Ҏ。虽然我一直支持原来的能力成熟度模型(CMMQ的_Q但实际它经常被错误地理解和应用。从?5q来和许多进行过E改q的世界领先的Y件开发组l的合作l验看,我相信大多数应用CMM的组l还局限于默认的瀑布模式思想上。我不认为错在模式本w,因ؓ我知道CMM语境里的一些过E改q是Z一U现代的、叠代的开发方法。不q,我这U启C性的理解q规范?<br>CMMlD </p> <p>  Zl织对关键过E域的支持,CMM定义了Y件过E成熟度的五个别。?Q初始Q描qC不成熟,或者说是未定义的过E的l织。?Q可重复U)Q?Q已定义U)Q?Q已理U)和?Q优化Q分别描qC软gq程成熟度别递增的组l。和q些U别相关的KPA是: </p> <p>  U别2Q需求管理,软g目计划QY仉目跟t和监控QY件子合同理QY件质量保证,软g配置理?</p> <p>  U别3Q组lq程焦点Q组lq程定义Q培训大UԌ集成软g理QY件品工E,l间协调Q同行评审?</p> <p>  U别4Q定量过E管理,软g质量理 </p> <p>   U别5Q缺陷预Ԍ技术更新管理,q程更改理 </p> <p>   多数l织的基本目标是辑ֈ成熟?U。评估组l当前的成熟度别的手段之一是Y件能力评伎ͼSCEQ。SCE通过评估软gq程Q一般以斚w陈述的Ş式)和项目实跉|定该组l是否言行一致。组l的q程体现?如实记录所做的工作"Q项目实施(对该q程的特定剪裁和解释Q应该证?说到做到"?</p> <p>CMMI lD </p> <p>   软g成熟度模型(CMM v1.0Q最早是软g工程学院开发的Qƈ特别提出软gq程成熟度?990q_该模型首ơ发布,在许多领域被成功地采U_使用。其他学U的CMM也相l开发,例如pȝ工程、h员、集成品开发、Y仉购等{?</p> <p>  CMMI被看做是把各UCMM集成Z个系列的模型中。CMMI的基源模型包括:软gCMM 2.0版(草稿CQ? EIA-731pȝ工程Q以及IPD CMM (IPD) 0.98a版。CMMI也描qC5个不同的成熟度别?</p> <p>   1. U别1Q初始Q代表了以不可预结果ؓ特征的过E成熟度。过E包括了一些特别的Ҏ、符受工作和反应理Q成功主要取决于团队的技能?</p> <p>   2. U别2Q已理U)代表了以可重复项目执行ؓ特征的过E成熟度。组l用基本纪律进行需求管理、项目计划、项目监督和控制、供应商协议理、品和q程质量保证、配|管理、以及度量和分析。对于?而言Q主要的q程焦点在于目U的zd和实c?</p> <p>   3. U别3Q严格定义Q代表了以组l内改进目执行为特征的q程成熟度?</p> <p><br>  U别2的关键过E域的前后一致的、项目的纪律,以徏立组l的活动和实践。附加的l织U过E域包括Q?<br>   需求开发:多利益相兌的需求发展?<br>   技术方案:展开的设计和质量工程?<br>   产品集成Q持l集成、接口控制、变更控制?<br>   验证Q保证品正徏立的评估技术?<br>   认Q保证徏立正的产品的评估技术?<br>   风险理Q检、优先Q相关问题和意外的解x案?<br>   l织U培训:建立机制Q培L多熟lh员?<br>   l织U过E焦点:为项目过E定义徏立组l框架?<br>   决策分析和方案:pȝ的可选的评估?<br>   l织U过E定义:把过E看做组l的持久的发展的资?<br>   集成目理Q在目内统一各个l和利益相关者?</p> <p><br>  4. U别4Q定量管理Q代表了以改q组l性能为特征的q程成熟度?U项目的历史l果可用来交替用,在业务表现的竞争度Q成本、质量、时_斚w的结果是可预的。?附加的过E域包括Q?</p> <p><br>  l织U过E执行:E执行设定规范和基准?<br>   定量的项目管理:以统计质量控制方法ؓ基础实施目?</p> <p><br>  5. U别5Q优化Q代表了以可快速进行重新配|的l织性能Q和定量的、持l的q程改进为特征的q程成熟度。附加的U别5q程域包括: </p> <p><br>  因果分析和解x案:d避免错误和强化最佛_c?</p> <p><br>  l织U改革和实施Q徏立一个能够有机地适应和改q的学习l织?</p> <p><br>CMMq时了吗Q?</p> <p><br>  一些CMM实践的问题也是传l瀑布Ҏ和过度基于过E的理的症状。CMM的基于活动的度量Ҏ和瀑布q程的有ơ序的、基于活动的理规范有非常密切的联系Q即Q先是需求活动,然后是设计活动,~码zdQ单位测试活动,集成zdQ以及系l接收测试)。这大概可以解释Z么许多组l对CMM的认识停留在瀑布思想上?</p> <p><br>  另外Q叠代开发技术、Y件业最佛_c和l济动机推动l织采用Zl果的方法:开发业务案例、构惛_原型ҎQ细化后U_基线l构、可用发布,最后定为现场版本的发布。虽然CMMI保留了基于活动的ҎQ它的确集成了Y件业内很多C的最好的实践Q因此它很大E度上E化了和瀑布思想的联pR?</p> <p><br>  分析CMM ?CMMI分别和瀑布模型以及叠代开发之间有什么联p,Ҏ之一是看每个模型的KPA是否两种不同的开发方法激发了合理的Y件管理原理。首先,让我们来定义那些软g理原理。过?0q间Q我~译了两套原理:一套用于传l的瀑布ҎQ另一套用于现代的叠代Ҏ。得承认的是Q这"十大原理"没有U学基础Qƈ且只提供了符合它们各自的理Ҏ的成功模版的_略的描q。但是它们的ؓ我的观点提供了一个合适的框架QCMM和瀑布思想相联p,而CMMI和叠代思想联系得更紧密?</p> <p><br>  1. 设计之前ȝ需求。这是需求第一q程的本质:目l努力提供一个准的需求定义,然后严格按照需求实施。需求变更会严重破坏~码和测试阶D,因此Q项目组在其他设计和开发活动中投入主要力量之前Q必需完整地、明地指定需求?</p> <p><br>  2. 详细设计评审前避免编码。编码变更会严重破坏~码和测试阶D,在开始编码前Q如果还有很多变更阻力,目l必需保证整个设计是成熟和完整的?</p> <p><br>  3. 是用更高指令编E语a。更高指令编E语a避免了一pd主要的错误根源(通过先进的数据录入、接口分M及打包和~程l构Q,q允许Y件方案可以用更的人工合成码进行编E?</p> <p><br>  4. 集成前要l束单元试。虽然设计是自上向下的,试q程是自下向上的Q在交付q行集成试之前Q最的单元先进行全面测试。这Lơ序限制是ؓ了在集成前多发现一些单元别上的缺P否则它们造成更多的问题和q工?</p> <p><br>  5. l护所有品可跟踪性。ؓ了保证在每个阶段l护目的完整性和一致性,要跟t需求品以及设计和试产品。当提出变更或开发一Uh员识别变更时Q这提供了变更对评审的实际媄响和潜在影响的完整视图?</p> <p><br>  6. 文化ƈl护设计。没有文档化的设计就不是设计了。在以后的阶D,׃代码成ؓ主要的工E品,必须更新设计产品以保证一致性,qؓ变更决策提供基础?</p> <p><br>  7. ׃个独立小l评估质量。项目组应指定一个独立小l负责保证品和q程的全面质量一致性,以维护一个有别于分析人员、设计h员和h员的独立的报告渠道?</p> <p><br>  8. 全面查。通过查详l设计和代码来发现错误,比通过试发现错误要好得多。要保查覆盖所有需求、设计、代码和试产品?</p> <p><br>  9. 在项目早期进行全面的_的计划。对于识别关键\径、管理风险以及评估程序变更来_一个完整的、精的、细化的计划是必要的Q它应该安排整个q度的详l活动和产品?</p> <p><br>  10. 严格控制源代码基Uѝ一旦品进入编码阶D,必ȝ严格的配|管理维护测试过E的正式发布的基U控Ӟq把产品转换成适合发布的零~陷状态?</p> <p><br>CQ叠代)软g理的十大原?</p> <p><br>  1. 首先注重l构q程。这要求在组l承诺全面开发的充资源之前Q^衡操作需求、对l构而言很重要的设计决策、以及生命周期计划?</p> <p><br>  2. 用叠代生命周期在早期防M风险。需要一个叠代过E来更好地理解问题,形成有效的方案和有效的计划,以保证^衡对待所有利益相兌目标。应在早期提Z要的风险以提高可预测性,避免为随后的问题和返工付出大的代仗?</p> <p><br>  3. Z构g的开发。ؓ了减h工合成源代码和习惯开发的数量Q项目组必须在现存的l构框架内从代码行思想转移到基于构件的思想。构件是已经存在的代码行的附着部分Q有已定义的接口和行为,存在于源代码中或可执行格式中?</p> <p><br>  4. 建立变更理环境。叠代开发的动力学包括ƈ发的工作,因ؓ不同的工作组都ؓ׃n产品工作。这需要客观控制的基线供所有项目成员参阅?</p> <p><br>  5. 用@环工E工具变更更自由。@环工E提供了各种不同格式Q如Q需求说明书、设计模型、源代码和可执行代码Q的自动工程和同步工E信息所必需的环境支持。如果不使用实质的自动操作,把叠代周期简化ؓ可管理的Q允许ƈ鼓励变更的时间框架是很困隄。叠代过E中产品变更自由是必需的,因ؓ它清除了工程l摩擦的一个主要来源?</p> <p><br>  6. 使用严格的、基于模型的设计W号。基于模型的ҎQ例如:UMLQ支持语意丰富的囑Ş和文本的设计W号。相对于传统的h工评审和U张文的特定设计表现的查,带严格符号和正式的、机器处理语a的可视模型允许更客观的评估?</p> <p><br>  7. 提供q程的客观质量控制的手段。过E和所有中间品的生命周期评估必须紧密集成C品中去,把从展开的工E品中直接获得的、定义好的度量集成到所有活动和组中去?</p> <p><br>  8. 使用中间产品的基于演C的评估。把目前的品状态的产品Q不论是早期原型Q基U结构,q是β能力Q{换成相关的用案例的可执行演C,以促q集成{换更早发生,对设计权衡的更切实的理解Q以及更早消除品缺陗?</p> <p><br>  9. 发布l化的、展开的计划。在pȝ的操作语境中QY件管理过E的早期的持l的演示是至关重要的Q也是它的使用案例。每个项目的增加和演C都应该反应目前需求和l构的详l水q뀂用案例是l织需求、定义叠代内宏V评估实施和l织接收试的重要机制?</p> <p><br>  10. 建立一个可升的、可配置的过E。没有哪个过E是适合所有Y件开发项目的。现实的_一个过E框架必L可配|的Q适合大范围的应用软g。ؓ保证l济U别和投资回报,l织必须灌输一个通用q程"_"Q这h有项目都能集成一pd通用的最好实践,其是项目管理、独立于语境的工作流、检查点、度量和产品的最好实c还应允许各个项目进行剪裁和指定Q以侉K寚w目特定的语境优化q程实施?</p> <p><br>  CMM和两套管理原则的关系 ?识别出每套原则中各有哪些是直接由 CMM的KPAȀ发的。这些都是我的判断,l合了Rational公司许多同事的观点,但ƈ没有U学依据。另外,误住这些原则不仅基于CMMQ还Z寚w认实늚观察和组l的惯性?</p> <img src ="http://www.tkk7.com/debut/aggbug/109924.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/debut/" target="_blank">debut</a> 2007-04-11 15:53 <a href="http://www.tkk7.com/debut/articles/109924.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CMM介二http://www.tkk7.com/debut/articles/109818.htmldebutdebutWed, 11 Apr 2007 07:35:00 GMThttp://www.tkk7.com/debut/articles/109818.htmlhttp://www.tkk7.com/debut/comments/109818.htmlhttp://www.tkk7.com/debut/articles/109818.html#Feedback0http://www.tkk7.com/debut/comments/commentRss/109818.htmlhttp://www.tkk7.com/debut/services/trackbacks/109818.html            CMM是指“能力成熟度模?#8221;Q其英文全称为Capability Maturity Model for SoftwareQ英文羃写ؓSW-CMMQ简UCMM。它是对于Y件组l在定义、实施、度量、控制和改善其Y件过E的实践中各个发展阶D늚描述。CMM的核心是把Y件开发视Z个过E,q根据这一原则对Y件开发和l护q行q程监控和研IӞ以其更加科学化、标准化、企业能够更好地实现商业目标?nbsp;                   
            CMM是是一U用于评仯Y件承包能力ƈ帮助其改善Y件质量的ҎQ侧重于软g开发过E的理及工E能力的提高与评估。CMM分ؓ五个{Q一Uؓ初始U,二为可重复U,三为已定义U,四为已理U,五Z化?nbsp;           ?
            CMM是由国卡内基梅隆大学Y件工E研I所1987q研制成功的Q是目前国际上最行最实用的Y件生产过E标准和软g企业成熟度等U认证标准。目前,我国已有软g企业通过了CMM标准认证??nbsp;
            SW-CMM(Capability Maturity Model For Software 软g生能力成熟度模?以下U?CMM"),?7q由国卡内基梅隆大学Y件工E研I所QCMU SEIQ研I出的一U一U用于评仯Y件承包商能力q帮助改善Y件质量的ҎQ其目的是帮助Y件企业对软g工程q程q行理和改q,增强开发与改进能力Q从而能按时地、不预地开发出高质量的软g?nbsp;                  
            其所依据的想法是Q只要集中精力持l努力去建立有效的Y件工E过E的基础l构Q不断进行管理的实践和过E的改进Q就可以克服软g生中的困难。CMM它是目前国际上最行、最实用的一UY件生产过E标准,已经得到了众多国家以及国际Y件业界的认可,成ؓ当今企业从事规模软g生不可~少的一内宏V?br>            CMM目前通用行的版本是1Q?QVersion1Q?Q。《按照Y件工E研I所QSEIQ的原来计划QCMM的改q版版本2Q?QV2Q?Q是要在1997q的11月完成的。但是,国国防部办公室要求软g工程研究所QSEIQgq发攑օ布CMM版本2Q?Q直至他们完成另一个更为紧q的目-CMMI?br>            CMMI(Capability Maturity Model Integration能力成熟度模型集?Q是国国防部的一个设惟뀂他们希望把所有现存的与将被发展出来的各种能力成熟度模型,集成C个框架中厅R这个框架用于解决两个问题:W一QY件获取办法的攚wQ第二,从集成品与q程发展的角度出?建立一U包含健全的pȝ开发原则的q程改进?

            CMMY件企业的q程能力提供了一个阶梯式的改q框Ӟ它基于过L有Y件工E过E改q的成果Q吸取了以往软g工程的经验教训,提供了一个基于过E改q的框架Q它指明了一个Y件组l在软g开发方面需要管理哪些主要工作、这些工作之间的关系、以及以怎样的先后次序,一步一步的做好q些工作而软gl织走向成熟?br>            一、CMM的诞?br>            信息时代QY件质量的重要性越来越Zh们所认识。Y件是产品、是装备、是工具Q其质量使得֮满意Q是产品市场开拓、事业得以发展的关键。而Y件工E领域在1992q至1997q取得了前所未有的进?其成果超qY件工E领域过?5q来的成d?br>            软g理工程引vq泛注意源于20世纪70q代中期。当时美国国防部曄题专门研IY仉目做不好的原因,发现70%的项目是因ؓ理不善而引P而ƈ不是因ؓ技术实力不够,q而得Z个结论,即管理是影响软g研发目全局的因素,而技术只影响局部。到?0世纪90q代中期QY件管理工E不善的问题仍然存在Q大U只?0%的项目能够在预定的费用和q度下交付。Y仉目失败的主要原因有:需求定义不明确Q缺乏一个好的Y件开发过E;没有一个统一领导的品研发小l;子合同管理不严格Q没有经常注意改善Y件过E;对Y件构架很不重视;软g界面定义不善且缺乏合适的控制QY件升U暴露了g的缺点;兛_创新而不兛_费用和风险;军用标准太少且不够完善等{。在关系到Y仉目成功与否的众多因素中,软g度量、工作量估计、项目规划、进展控制、需求变化和风险理{都是与工程理直接相关的因素。由此可见,软g理工程的意义至关重要?br>           软g理工程和其它工E管理相比有其特D性。首先,软g是知识品,q度和质量都难以度量Q生产效率也难以保证。其ơ,软gpȝ复杂E度也是乎惌的。因Y件复杂和难以度量QY件管理工E的发展q很不成熟?br>            软g理工程的发展,在经历了?0q代开始以l构化分析与设计、结构化评审、结构化E序设计以及l构化测试ؓ特征的结构化生时代Q到90q代中期Q以CMM模型的成熟模型和日益为市场接受ؓ标志Q已l进入以q程成熟模型CMM、个体Y件过EPSP和群lY件过ETSP为标志的以过Eؓ中心的时代,而Y件发展第三个时代Q及软g工业化生产时代,?0q代中期软gq程技术的成熟和面向对象技术、构件技术的发展为基Q已l渐露端倪,估计?005q_可以实现真正的Y件工业化生Q这个趋势应该引赯Y件企业界和有关部门的高度重视Q及早采取措施,跟上世界软g发展的脚步。Y件生产{向以改善软gq程Z心,是世界各国Y件业或q或早都要走的道路?br>            软gq程改善是当前Y件管理工E的核心问题?0多年来计事业的发展使h们认识到要高效率、高质量和低成本地开发YӞ必须改善软g生q程。Y件管理工E走q了一条从70q代开始以l构化分析与设计、结构化评审、结构化E序设计以及l构化测试到90q代中期以过E成熟模型CMM、个体Y件过EPSP和群lY件过ETSP为标志的以过Eؓ中心向着软gq程技术的成熟和面向对象技术、构件技术的发展为基的真正Y件工业化生的道路。Y件生产{向以改善软gq程Z心,是世界各国Y件业或q或早都要走的道路。Y件工业已l或正在l历着"软gq程的成熟化"Qƈ?软g的工业化"渐进q渡。规范的软gq程是Y件工业化的必要条件?br>            软gq程研究的是如何h员、技术和工具{组lv来,通过有效的管理手D,提高软g生的效率,保证软g产品的质量。由此诞生了软gq程的三个流z:CMU-SEI的CMM/PSP/TSPQISO 9000质量标准体系QISO/IEC 15504QSPICEQ?br>      CMM/PSP/TSP卌Y件能力成熟度模型/ 个体软gq程/组软gq程Q是1987q美?Carnegie Mellon 大学软g工程研究所(CMU/SEI)以W.S.Humphrey为首的研I组发表的研I成?承制方Y件工E能力的评估Ҏ"QISO  9000质量标准体系是在70q代由欧z首先采用的Q其后在国和世界其他地Zq速地发展h。目前,Ƨ洲联合会积极促qY件质量的制度化,提出了如下ISO9000软g标准pdQISO9001、ISO9000-3、ISO9004-2、ISO9004-4、ISO9002QISO/IEC 15504QSPICEQ是1991q国际标准化l织采纳了一动议,开展调查研IӞ按照CMU-SEI的基本思\Q生的技术报告ISO/IEC 15504--信息技术Y件过E评?br>            目前Q学术界和工业界公认国 Carnegie Mellon 大学软g工程研究所(CMU/SEI)以W.S.Humphrey为首L研究与开发的软g能力成熟度模型CMM是当前最好的软gq程Q已成ؓ业界事实上的软gq程的工业标准?br>            二、CMM的发?br>            1987q美?Carnegie Mellon  大学软g工程研究所(CMU/SEI)以W.S.Humphrey为首的研I组发表了CMM/PSP/TSP技术,Y件管理工E开辟了一条新的途经?br>            CMM框架?个不断进化的层次来评定Y件生产的历史与现Ӟ其中初始层是h的过E,可重复层是经q训l的软gq程Q定义层是标准一致的软gq程Q管理层是可预测的Y件过E,优化层是能持l改善的软gq程。Q何单位所实施的Y件过E,都可能在某一斚w比较成熟Q在另一斚w不够成熟Q但M上必然属于这5个层ơ中的某一个层ơ。而在某个层次内部Q也有成熟程度的区别。在CMM框架的不同层ơ中Q需要解军_有不同层ơ特征的软gq程问题。因此,一个Y件开发单位首先需要了解自己正处于哪一个层ơ,然后才能够对症下药地针对该层ơ的Ҏ要求解决相关问题Q这h能收C半功倍的软gq程改善效果。Q何Y件开发单位在致力于Y件过E改善时Q只能由所处的层次向紧ȝ上一层次q化。而且在由某一成熟层次向上一更成熟层ơ进化时Q在原有层次中的那些已经具备的能力还必须得到保持与发扬?br>            软g产品质量在很大程度上取决于构{Y件时所使用的Y件开发和l护q程的质量。Y件过E是人员密集和设计密集的作业q程Q若~Z有素训练Q就难以建立h持实现成功是软gq程的基Q改q工作亦难以取得成效。CMM描述的这个框架正是勾列出从无定规的؜沌过E向训练有素的成熟过E演q的途径?

           CMM包括两部?软g能力成熟度模??能力成熟度模型的关键惯例"?软g能力成熟度模?主要是描q此模型的结构,q且l出该模型的基本构g的定义?能力成熟度模型的关键惯例"详细描述了每?关键q程斚w"涉及?关键惯例"。这?关键q程斚w"是指一l相兌的活动;每个软g能力成熟度等U包含若q个对该成熟度等U至关重要的q程斚wQ它们的实施对达到该成熟度等U的目标起到保证作用。这些过E域q成熟度等U的关键q程域,反之有非关键q程域是指对辑ֈ相应软g成熟度等U的目标不v关键作用。归UؓQ互相关联的若干软g实践zd和有兛_设施的一个集合。?关键惯例"是指使关键过E方面得以有效实现和制度化的作用最大的基础设施和活?对关键过E的实践起关键作用的斚w、规E、措施、活动以及相兛_设施的徏立。关键实践一般只描述"做什?而不强制规定"如何?。各个关键惯例按每个关键q程斚w??公共Ҏ?Q对执行该过E的承诺Q执行该q程的能力,该过E中要执行的zdQ对该过E执行情늚度量和分析,及证实所执行的活动符合该q程Q归c,逐一详细描述。当作到了某个关键过E的的全部关键惯例就认ؓ实现了该关键q程Q实C某成熟度U及其以低所含的全部关键q程p到到了了该?nbsp;              
           上面提到了CMM把Y件开发组l的能力成熟度分?个的{。除了第1U外Q其他每一U由几个关键q程斚wl成。每一个关键过E方面都׃q?U公q性予以表征。CMMl每个关键过E了一些具体目标。按每个公共Ҏ归cȝ关键惯例是按该关键过E的具体目标选择和确定的。如果恰当地处理了某个关键过E涉及的全部关键惯例Q这个关键过E的各项目标pCQ也p明该关键q程实现了。这U成熟度分的优点在于,q些U别明确而清楚地反映了过E改q活动的轻重~急和先后序?/p>

能力{

特点

关键q程

W一U?基本U?/p>

软gq程是؜乱无序的,对过E几乎没有定?成功依靠的是个h的才能和l验,理方式属于反应?/p>

 

W二U?重复U?/p>

建立了基本的目理来跟t进?费用和功能特?制定了必要的目理,能够利用以前cM的项目应用取得成?/p>

需求管?/font>,目计划,目跟踪和监?软g子合同管?软g配置理,软g质量保障

W三U?定U?

已经Y件管理和q程文?标准?同时l合成该l织的标准Y件过E?所有的软g开发都使用该标准Y件过E?/p>

l织q程定义,l织q程焦点,培训大纲,软g集成理,软g产品工程,l织协调,专家审评

W四U?理U?/p>

攉软gq程和品质量的详细度量,对Y件过E和产品质量有定量的理解和控?/p>

定量的Y件过E管理和产品质量理

W五U?优化U?/p>

软gq程的量化反馈和新的思想和技术促q过E的不断改进

~陷预防,q程变更理和技术变更管?/p>


            对于CMM的作用归U两个主要方? U学地评仯Y件开发单位的软g能力成熟{; 帮助软g开发单位进行自Q了解自q强项和弱,从而不断完善和改进单位的Y件开发过E,保软g质量Q提高Y件开发效率?/p>

           ׃CMMq未提供有关实现CMM关键q程域所需的具体知识和技能,因此Q美?Carnegie Mellon 大学软g工程研究所(CMU/SEI) 以W.S.Humphrey为首L研究与开发了个体软gq程PSPQPersonal software processQ和组软gq程TSP(Team Software Process)QŞ成CMM/PSP/TSP体系?br>            PSP 个体软gq程QPersonal Software ProcessQ是q国Carnegie Mellon大学软g工程研究所(CMU/SEI)的Watts s.Humphrey领导开发的Q于1995q它的推出,在Y件工E界引v了极大的轰动Q可以说是由定向软g工程走向定量软g工程的一个标志。PSP是一U可用于控制、管理和改进个h工作方式的自我改善过E,是一个包括Y件开发表根{指南和规程的结构化框架?
            PSP为基于个体和型组软gq程的优化提供了具体而有效的途径Q例如如何制订计划,如何控制质量Q如何与其他人相互协作等{。在软g设计阶段QPSP的着眼点在于软g~陷的预Ԍ其具体办法是强化设计l束准则Q而不是设计方法的选择。PSP保障软g产品质量的一个重要途径是提高设计质量?br>            PSP能够说明个体软gq程的原则;帮助软g工程师作出准的计划Q确定Y件工E师为改善品质量要采取的步骤;建立度量个体软gq程改善的基准;定q程的改变对软g工程师能力的影响?br>           TSP 组软gq程TSP(Team Software Process)指导目l中的成员如何有效地规划和管理所面的项目开发Q务,q且告诉理人员如何指导软g开发队伍。始l以最佳状态来完成工作。TSP实施集体理与自q理自ql合的原则,最l目的在于指导开发h员如何在最的旉内,以预定的费用生出高质量的Y件品,所采用的方法是对群l开发过E的定义、度量和改进?br>            TSP致力于开发高质量的品,建立、管理和授权目组Qƈ且指g们如何在满计划费用的前提下Q在承诺的期限范围内Q不断生产ƈ交付高质量的产品?

            CMM是过E改善的W一步,它提供了评hl织的能力、识别优先改善需求和q踪改善q展的管理方式。企业只有开始CMM改善后,才能接受需要规划的事实Q认识到质量的重要性,才能注重对员工经常进行培?合理分配目人员,q且建立h效的目组。然而,它实现的成功与否与组l内部有关h员的U极参加和创造性活动密不可分?br>            PSP能够指导软g工程师如何保证自q工作质量Q估计和规划自n的工作,度量和追t个人的表现Q管理自w的软gq程和品质量。经qPSP学习和实늚正规训练QY件工E师们能够在他们参与的项目工作之中充分运用PSPQ从而有助于CMM目标的实现?br>            TSPl合了CMM的管理方法和PSP的工E技能,通过告诉软g工程师如何将个体q程l合q小lY件过E,q将后者与l织q而整个管理系l相联系Q通过告诉理层如何支持和授权目组Q坚持高质量的工作,q且依据数据q行目的管理,向组l展C如何应用CMM的原则和PSP的技能去生高质量的产品?br>            MQ单U实施CMMQ永q不能真正做到能力成熟度的升U,只有实施CMM与实施PSP和TSP有机地结合v来,才能发挥最大的效力。因此,软gq程框架应该是CMM/PSP/TSP的有机集成?br>            三、实施CMM的必要?br>            软g开发的风险之所以大Q是׃软gq程能力低,其中最关键的问题在于Y件开发组l不能很好地理其Y件过E,从而一些好的开发方法和技术v不到预期的作用。而且目的成功也是通过工作l的杰出努力Q所以仅仅徏立在可得到特定h员上的成功不能ؓ全组l的生和质量的长期提高打下基础Q必d建立有效的Y件如理工程实践和管理实늚基础设施斚wQ坚持不懈地努力Q才能不断改q,才能持箋地成功?br>            软g质量是一模糊的、捉怸定的概念。我们常常听_某某软g好用, 某某软g不好用;某某某Y件功能全、结构合? 某某某Y件功能单一、操作困?#8230;…q些模模p糊的语a不能作是Y件质量评P更不能算作是软g质量U学的定量的评h。Y件质量,乃至于Q何品质量,都是一个很复杂的事物性质和行为。品质量,包括软g质量Q是Z实践产物的属性和行ؓQ是可以认识Q可以科学地描述的。可以通过一些方法和人类zdQ来改进质量?br>            实施CMM是改qY件质量的有效Ҏ:控制软g生q程、提高Y件生产者组l性和软g生者个力的有效合理的方法Y件工E和很多研究领域及实际问题有养I主要相关领域和因素有Q需求工E?REQREQUIREMENTS ENGINEERING)。理ZQ需求工E是应用已被证明的原理、技术和工具Q帮助系l分析h员理解问题或描述产品的外在行为。Y件复?SRQSOFTWARE REUSE)。定义ؓ利用工程知识或方法,׃已存在的pȝQ来建造一新系l。这U技术,可改qY件品质量和生率。还有Y件检查、Y件计量、Y件可靠性、Y件可l修性、Y件工兯估和选择{?

            四、CMM在中国的现状
           中国生力促q协会、北航SEI、中U院研究SEI{科研机构已于近几年在北京、上广州和深圳{地先后丑֊q多ơ报告会和研讨会Q组l过评学习和应用实验,开展了软gq程斚w的研I与开发工作,q发表了多篇的研I成果和学术论文Q在软g质量保障q_支撑环境也取得了一定的成果?br>           q两q来QCMM在我国获得了各界来多xQ业界有q多ơ关于CMM的讨论,2000q?月国务院颁发的《鼓pY件业和集成电\产业发展的若q政{》对中国软g企业甌CMM认证l予了积极的支持和推动作?W?7条规?对Y件出口型企业CMM认证费用予以适当支持?2000q中国村电脑节上q有CMM专题论坛Q吸引了众多业内人士。鼎新、东大阿派、联惟뀁方正、金蝶、用友、浪潮、创智、华为、东大阿派{大型集团或企业{都?997---2000qv批企业都在进行研I、实验或实施预评估。其中鼎新公总1997q着手进行CMM认证工作?999q?月通过W三方认证机构的CMM2认证。东大阿派公司?000q?0月通过W三方认证机构的CMM2认证?001q?月,联想软gl过英国路透集团的严格评估Q顺利通过CMM2认证?001q??6日,沈阳东Y软g股䆾有限公司Q原沈阳东大阿尔zY件股份有限公司)正式通过了CMM3U认证,成ؓ中国首家通过CMM3U的软g企业?br>          M上讲Q国内对软gq程理论的讨Z实践正在展开Q目标是使Y件的质量理和控制达到国际先q水qI中国的Y件业获得可持箋发展的能力。专家分析,在未来两三年内,国内软g业势必将出现实施CMM的高潮。从q一势看,中国的Y件企业已l开始走上标准化、规范化、国际化的发展道路,中国软g业已l面临一个整体突破的时代?br>          但是我们应该看到目前国内对Y件管理工E存在的最大问题是认识不。管理实际上是一把手工程Q需要高层管理h员的_重视。而且软gq程的重大修改也必须由高层管理部门启动,q是软gq程改善能否q行到底的关键。此外,软gq程的改善还有待于全体有关h员的U极参与?br>          除了要认识到q程改善工作是一把手工程q个关键因素外,q应认识到Y件过E成熟度的升U本w就是一个过E,且有一个生命周期。过E改善工作需要@序渐q,不能一y而就Q需要持l改善,不能停滞不前Q需要联pd际,不能照本宣科Q需要适应变革Q不能凝Z变。一个有效的途径是自向下的评培训Q即从高层主依ơ普及到下面的工E师?br>            五、CMM体系l构                  
            一个企业Y件能力类g一个h在一个特定领域的能力Q是逐步获得和增长的。如果一个h在其领域的发展过E中能得C个很好的指南Q那么他或她׃不断辑ֈ一个个讑֮的目标,q变得成熟v来,否则可能会盲目发展,自q目标来远Q甚臛_辕北辙。一个企业的软g能力发展也同样需要一个良好的指南QSW-CMM正是q样一个指南,它以几十q品质量概念和软g工业的经验及教训为基Qؓ企业软g能力不断走向成熟提供了有效的步骤和框架?br>            框架                  
            SW-CMMY件企业的q程能力提供了一个阶梯式的进化框Ӟ阶梯共有五。第一U实际上是一个v点,M准备按CMM体系q化的企业都自然处于q个L上,q过q个L向第二q进。除W一U外Q每一U都讑֮了一l目标,如果辑ֈ了这l目标,则表明达Cq个成熟U别Q可以向下一个别迈q。CMM体系不主张跨别的q化Q因ZW二UvQ每一个低的别实现均是高的别实现的基础?br>            1.初始U?br>                 
            初始U的软gq程是未加定义的随意q程Q项目的执行是随意甚x混ؕ的。也许,有些企业制定了一些Y件工E规范,但若q些规范未能覆盖基本的关键过E要求,且执行没有政{、资源等斚w的保证时Q那么它仍然被视为初始?br>            2.可重复
                 
            Ҏ多年的经验和教训Qh们ȝY件开发的首要问题不是技术问题而是理问题。因此,W二U的焦点集中在Y件管理过E上。一个可理的过E则是一个可重复的过E,一个可重复的过E则能逐渐q化和成熟。第二的管理过E包括了需求管理、项目管理、质量管理、配|管理和子合同管理五个方面。其中项目管理分划过E和跟踪与监控过E两个过E。通过实施q些q程Q从理角度可以看到一个按计划执行的且阶段可控的Y件开发过E?br>            3.定义U?br>                 
            在第二仅定义了理的基本过E,而没有定义执行的步骤标准。在W三U则要求制定企业范围的工E化标准Q而且无论是管理还是工E开发都需要一套文档化的标准,q将q些标准集成C业Y件开发标准过E中厅R所有开发的目需Ҏq个标准q程Q剪裁出与项目适宜的过E,q执行这些过E。过E的剪裁不是随意的,在用前需l过企业有关人员的批准?br>            4.理U?br>                 
            W四U的理是量化的理。所有过E需建立相应的度量方式,所有品的质量(包括工作产品和提交给用户的?需有明的度量指标。这些度量应是详的Q且可用于理解和控制软gq程和品。量化控制将使Y件开发真正变成ؓ一U工业生产活动?br>            5.优化U?br>                 
            W五U的目标是达C个持l改善的境界。所谓持l改善是指可Ҏq程执行的反馈信息来改善下一步的执行q程Q即优化执行步骤。如果一个企业达Cq一U,那么表明该企业能够根据实际的目性质、技术等因素Q不断调整Y件生产过E以求达到最佟?br>
            l构
                 
            除第一U外QSW-CMM的每一U是按完全相同的l构构成的。每一U包含了实现q一U目标的若干关键q程?KPA)Q每个KPAq一步包含若q关键实施活?KP)Q无论哪个KPAQ它们的实施zd都统一按五个公共属性进行组l,x一个KPA都包含五cKP?br>            1.目标
                 
            每一个KPA都确定了一l目标。若q组目标在每一个项目都能实玎ͼ则说明企业满了该KPA的要求。若满了一个别的所有KPA要求Q则表明辑ֈ了这个别所要求的能力?br>            2.实施保证
                  实施保证是企业ؓ了徏立和实施相应KPA所必须采取的活动,q些zd主要包括制定企业范围的政{和高层理的责仅R?br>            3.实施能力
                 
            实施能力是企业实施KPA的前提条件。企业必采取措施,在满了q些条g后,才有可能执行KPA的执行活动。实施能力一般包括资源保证、h员培训等内容?br>            4.执行zd
                 
            执行q程描述了执行KPA所需求的必要角色和步骤。在五个公共属性中Q执行活动是唯一与项目执行相关的属性,其余四个属性则涉及企业CMM能力基础设施的徏立。执行活动一般包括计划、执行的d、Q务执行的跟踪{?br>            5.度量分析
                  度量分析描述了过E的度量和度量分析要求。典型的度量和度量分析的要求是确定执行活动的状态和执行zd的有效性?br>            6.实施验证
                  实施验证是验证执行活动是否与所建立的过E一致。实施验证涉及到理斚w的评审和审计以及质量保证zd?br>                 
            在实施CMMӞ可以Ҏ企业软gq程存在问题的不同程度确定实现KPA的次序,然后按所定ơ序逐步建立、实施相应过E。在执行某一个KPAӞ对其目标l也可采用逐步满的方式。过E进化和逐步走向成熟是CMM体系的宗旨?br>            六、CMM实施的思?br>              上面重点介绍了CMM,但是提醒注意的是Qƈ不是实施了CMMQY仉目的质量p有所保障。CMM是一U资质认证,它可以证明一个Y件企业对整个软g开发过E的控制能力。按照CMM的思想q行理与通过CMM认证q不能划{号。CMM认证q不仅仅是在评估软g企业的生产能力,整个评估q程同时q在帮助企业完善已经按照CMM建立的科学工作流E,发现企业在Y件质量、生产进度以及成本控制等斚w可能存在的问题,q且及时予以U正。认证的q程是纠正企业偏差的q程Q一定不能把CMM认证当作一U考试、一U文凭,而是要看成一Ҏ利于企业今后发展的投资,借此来改变中国Y件业长久以来形成的积弊?

              实施CMM对Y件企业的发展L臛_重要的作用,CMMq程本n是对Y件企业发展历E的一个完整而准的描述Q企业通过实施CMMQ可以更好地规范软g生和管理流E,使企业组l规范化。企业通过CMM不是Z满其他公司的要求,而是Z让企业更好地发展Qؓ企业q一步扩大规模打下坚实的基础。如果企业只是ؓ了获得一U证书而通过CMMQ那么就已经本末倒置了,对企业的长久发展反而有実뀂试惛_果企业的态度不够端正Q即佉K过CMM认证Q企业又怎么能够保证它在以后的操作过E当中l坚持CMM规范呢?CMM只是一个让企业更好发展的规范,不应该成Z业炒作自q工具Q企业需要的是优化自q理、提高品的质量Q而非一张CMM证书?

              CMM不是万能的,它的成功与否Q与一个组l内部有关h员的U极参与和创造性活动是密不可分的,而且CMMq未提供实现有关子过E域所需要的具体知识和技能。在国内要想取得q程改进成功Q必d好以下的几点:软gq程改进必须有高U主的支持与委托,q积极地理q程改进的进?中层理的积极支?责Q分明Q过E改q小l的威望?基层的支持与参与极端重要;利用定量的可观察数据Q尽快ɘq程改进成果可见Q从而激励参与者的兴趣;实施CMM与实施PSP和TSP有机地结合v?Z业的商业利益服务Qƈ要求同时相符的企业文化变革?br>              应该看到,q程改善工作必然h一切过E所h的固有特征,即需要@序渐q,不能一y而就需要持l改善,不能停滞不前Q需要联pd际,不能照本宣读需要适应变革Q不能凝Z变。将CMMQPSPQTSP引入软g企业最有效的途径首先要对单位ȝ和主要开发h员进行系l的培训。另外一个有效的途径是自向下的评培训Q即从高层主依ơ普及到下面的工E师。培训包括最基本的Y件工E和CMM培训知识Q专业领域知识等斚w的培训;软gq程斚w的培训。不q强调一点,我们必须Ҏ自n的实际制定可行的Ҏ。不深入研究q搬别的企业的模式是很难v到提高Y件品质量水q的真正目的的?br>              CMM模型划分?个别,p18个关键过E域Q?2个目标,300多个关键实践。每一个CMM{的评估周期(从准备到完成Q约需12-30个月。此期间应抽调企业中有管理能力、组l能力和软g开发能力的骨干人员,成立专门的CMM实施领导组或专门的机构。同时设立Y件工E过E组、Y件工E组、系l工E组、系l测试组、需求管理组、Y仉目计划组、Y仉目跟t与监督、Y仉|管理组、Y件质量保证组、培训组。各个小l完成自qd同时协调其他组的工作。然后制定和完善软gq程,
            按照CMM规范评估q个q程。CMM正式评估由CMU/SEI授权的主任评估师领导一个评审小l进行,评估q程包括员工培训、问卯查和l计、文审查、数据分析、与企业的高层领D论和撰写评估报告{,评估l束时由MQ评估师签字生效。此后最关键的就是根据评估结果改qY件过E?使CMM评估对于软gq程改进所应具有的作用得到最好的发挥?br>              现在国内软g产业的发展可以说已经h一定规模了Q但除了北大Ҏ、东大阿派、用友等大企业外Q做软g工程目更多的是一些规模在数十人左右的中小企业,
            目前处于CMM的初U阶D,没有基础和经验。也许有Z问,像这样一些h力物力资源匮乏的企业Q如何进行Y件开发项目的理呢?我徏议这些中企业可以以CMM为框Ӟ先从PSP做vQ然后在些基上逐渐q渡到TSPQ以保证CMM/PSP/TSP实在企业中生根开花。MQ我们必M软gq程、过E工E的角度来看待CMM的发展,从经学的观Ҏ分析q个q程的h倹{我怿在实施CMM/PSP/TSP的过E中Q只要坚持改善Y件工E的理Qƈ在实践中注意ȝ适合自n的经验,一定能取得很好的效果?



debut 2007-04-11 15:35 发表评论
]]>
CMM?/title><link>http://www.tkk7.com/debut/articles/109812.html</link><dc:creator>debut</dc:creator><author>debut</author><pubDate>Wed, 11 Apr 2007 01:35:00 GMT</pubDate><guid>http://www.tkk7.com/debut/articles/109812.html</guid><wfw:comment>http://www.tkk7.com/debut/comments/109812.html</wfw:comment><comments>http://www.tkk7.com/debut/articles/109812.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/debut/comments/commentRss/109812.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/debut/services/trackbacks/109812.html</trackback:ping><description><![CDATA[<p>            CMMQCapability Maturity ModelQ是卡耐基梅隆大学软g工程研究院(SELQSoftware Engineering InstituteQ受国国防部委托制定的软gq程改良、评估模型,也称为SEL SW-CMM,(SoftwareEngineering Institute SoftWare--Capability Maturity Model)。该模型?991q发布,目前修改?.1版,q发展ؓpd标准模型。全世界已经?万多家Y件企业经qCMM认证。SEL预计发布的下一个版本是CMMI?nbsp;              <br>            CMM的核心是把Y件开发视Z个过E,q根据这一原则对Y件开发和l护q行q程监控和研IӞ以其更U学化,标准化。是企业能够更好的实现商业目标。因此,CMM可以作ؓ企业软gq程改良的参照标准(ChecklistQ,协助软g开发机构徏立严根{标准的软g开发过E,最及时、高效的l织软g开发队伍进行Y件开发?nbsp;              <br>            ׃CMM是ؓ国国防部制订的Q所以这一标准比国际上质量认证的其他一些标准,如ISO9000pd要复杂许多。CMM把Y件开发机构按照不同开发水q_分ؓ5个别:InitialQ初始化Q、RepeatableQ可重复Q、DefinedQ已定义Q、ManagedQ已理Q和OptimizingQ优化中Q?/p> <p>            InitialU,软gq程没有M标准和规章,完全是手工作坊的方式QY件品的质量h不可预测性?nbsp;           <br>            RepeatableU,软g制作已基本Ş成固定过E,q引入了单的q程理。Y件企业可依据一定的标准重复利用cM的Y件品,以前的开发经验成为开发新产品能否成功的极为重要制U因素?nbsp;<br>            DefinedU,软g产品开发和l护的基本过E被记录下来成ؓ文QY件工E和q程理也紧密的l合hQŞ成了"标准软gq程"?nbsp;              <br>            ManagedU,针对软gq程的每一个阶D都q行了监控、取样和定量分析QŞ成了一个关于Y件制作和l护程的数据库q不断更斎ͼ以保证Y件过E保持较高的质量?nbsp;              <br>            OptimizingU,整个软g开发机构的重心转移C化Y件过E。基于ManagedU取得的关于软gq程的数据,软g开发机构进行成本收益综合分析,明确软g开发中出现的问题和错误Qƈ扑ֈҎ杜绝错误的再ơ发生?<br></p> <img src ="http://www.tkk7.com/debut/aggbug/109812.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/debut/" target="_blank">debut</a> 2007-04-11 09:35 <a href="http://www.tkk7.com/debut/articles/109812.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://lwjiheng.com" target="_blank">ƷѦvƵ</a>| <a href="http://zmtme.com" target="_blank">޹ᆱƷԲ߹ۿ</a>| <a href="http://wwwff113.com" target="_blank">Ӳֳִˬѿ</a>| <a href="http://pite2.com" target="_blank">㽶Ƶ߹ۿѹ</a>| <a href="http://zxzzzzx.com" target="_blank">һ</a>| <a href="http://plladay.com" target="_blank">ѳ¼Ƶ</a>| <a href="http://cuuka.com" target="_blank">һ234 </a>| <a href="http://tom-erc20.com" target="_blank">ѹۿվ</a>| <a href="http://sdzhly.com" target="_blank">ѿƵ</a>| <a href="http://ww99w.com" target="_blank">һպŷĻ</a>| <a href="http://ybcin.com" target="_blank">һƵ߹ۿİ </a>| <a href="http://wwkk3.com" target="_blank">һҹߴ</a>| <a href="http://6969aaa.com" target="_blank">һaëһa˽</a>| <a href="http://jaubus.com" target="_blank">ĻһԾ</a>| <a href="http://gdjiayou.com" target="_blank">ĻۺϾþ</a>| <a href="http://35419470.com" target="_blank">þùѾƷ</a>| <a href="http://dghxm168.com" target="_blank">mvƷmvձmv</a>| <a href="http://33uub.com" target="_blank">Ļ</a>| <a href="http://770144.com" target="_blank">ȫAëƬѿվ</a>| <a href="http://339258.com" target="_blank">ձ˳ww555</a>| <a href="http://xsdggzs.com" target="_blank">պɫƵһ</a>| <a href="http://044242.com" target="_blank">91Ӱ</a>| <a href="http://998wc.com" target="_blank">þþþavëƬ</a>| <a href="http://ding001.com" target="_blank">ʹA18Ƭ</a>| <a href="http://517qq.com" target="_blank">jlzzjlzzѲ</a>| <a href="http://bjycxy88.com" target="_blank">Ļĸ</a>| <a href="http://8k4c.com" target="_blank">޹Ʒ</a>| <a href="http://564ka.com" target="_blank">ѹۿ</a>| <a href="http://taobaohuopin.com" target="_blank">AV˵ù</a>| <a href="http://606059.com" target="_blank">þþAVҰ</a>| <a href="http://222mp3.com" target="_blank">պһ234</a>| <a href="http://dwj28.com" target="_blank">պҹƵ</a>| <a href="http://fdsyjy.com" target="_blank">þѹۿƵ</a>| <a href="http://jinmenonline.com" target="_blank">þþþavר</a>| <a href="http://ywgj50225.com" target="_blank">޾ƷۺϾþ</a>| <a href="http://dw168cn.com" target="_blank">ŮڵƵվ</a>| <a href="http://zhnetbar.com" target="_blank">xxxxձ</a>| <a href="http://bjdxpx.com" target="_blank">123Ʒ</a>| <a href="http://szqsnt.com" target="_blank">ۺAV</a>| <a href="http://selangcun.com" target="_blank">ɫ6</a>| <a href="http://jiujiujingpin.com" target="_blank">þþƷһ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>