如何实施软件项目的过程管理质量管理CMM过程管理体系描绘出了一个美好的软件过程蓝图,这个蓝图就像一座壮观的高楼大厦,但高楼大厦是一层层建造起来的,软件开发过程也需要一步一步建立。软件需求的快速增长推动了软件产业的发展,也推动了软件过程的思想。今天,软件过程已经越来越被软件人员所认识和追捧,国内很多的软件企业甚至将SW-CMM当成了成功的宝典。殊不知,尽管软件过程的先驱SW-CMM提出了作为软件企业应该具有的过程域,但SW-CMM只提供了一个软件企业进行过程改进、增加企业软件成熟度的改进建议框架,而没有告诉一个软件企业该如何进行过程实施。换而言之,它描述了软件过程的期望,而没有指导企业如何实现。因此,在软件过程上我们应该谋求一些更具体、更可操作的方法和步骤。过程管理在软件项目中的作用人们很早就注意到,在软件开发过程中,如果将关注点只放在最终的产品上,不关注开发过程,那么不同的开发队伍或者开发个人可能就会采用不同的开发方式,从而导致结果无法预期,因为这时软件产品质量的高低完全依赖于个人的素质和能力。反过来,在软件开发过程中,如果将关注点放在项目的开发过程中,那么,不管谁来做,也不管是谁提出的需求,经过同一过程开发的软件,产品的质量是一样的。为了保证软件的质量,人们很自然地开始重视软件过程。简而言之,软件过程的目的是保证软件产品具有相对稳定的质量。对于软件企业来说,软件过程的质量是企业能力的体现,它不应依赖于个人。也就是说,产品的质量依赖于企业的过程能力,而不依赖于个人能力。如果企业的过程不是很完善,其软件质量可能也不是很高,但可以通过不断完善过程,来不断提高产品的质量。在软件开发中的过程经验有很多,如需求管理、设计方法以至于编码的风格、技巧等,还有很多的项目管理过程中的技巧方法等。最初,这些成功的过程只在成功者的头脑中的,没有被企业内部共享和重复利用,从而使得这些本应从属于企业的巨大财富被人们所忽视,这无形中给企业带来了巨大的损失,特别是当人员流动时,企业的这种财富也随之流失。如果企业将成功的过程进行有效的积累,形成可重复的过程,让过程能够被共享、复用,并得到持续的改进,这岂不是很好的方式!软件过程管理可以达到这个目的。在项目管理的时候,可以通过参照过程管理来提高项目管理的质量,同时,通过实际项目管理过程中的经验和教训来提高过程质量,以便为将来的项目管理提供更多的经验。软件过程在软件项目中的作用就相当于硬件生产的工艺一样。在生产硬件的时候,工艺是判断产品质量的标准。但是,目前软件没有这样的惟一判断标准,什么时候软件过程完善到可以作为判断软件惟一标准的时候,那可能就是软件发展到了一个成熟的阶段了。过程管理的主要内容包括过程定义与过程改进。过程定义是对最佳实践加以总结,以形成一套稳定的可重复的软件过程。过程改进是根据过程的使用情况,对过程中有偏差或不够切合实际的地方进行优化的活动。在软件项目管理过程中,如果能很好地定义和控制软件过程,就能很好地控制项目,从而保证软件产品的质量。适用的软件过程来自积累。好的软件过程能支持软件项目的管理,而不正确的过程定义会起反作用,成为软件开发的束缚。有的软件企业照搬照抄某些过程标准或者照搬其他企业的过程定义,而在实施过程中这些过程定义由于不适合企业的具体项目,结果导致大量的会议和提交大量无用的文档等无用功,而且增加了管理难度,增加了成本,最后却没有带来产品质量的提高。所以,正确的软件过程应该是适合自己企业,适合自己项目的软件过程。目前很多的软件企业通过了CMM的二级、三级以至于四级、五级的评估,但是其中的一些企业,它们只是给外人看的,不是给自己用的,而且无形中给自己的企业增加了很大的包袱,这些企业好像本来是穿30号鞋,现在却给自己穿上40号鞋子的感觉一样。CMM过程管理体系的确描绘出了一个美好的软件过程蓝图,这个蓝图就像一座壮观的高楼大厦,但是罗马不是一天建成的,冰冻三尺,非一日之寒。高楼大厦是一层层建造起来的,软件开发过程也需要一步一步建立,而不应该将别人的高楼大厦搬过来使用。过程的建立需要坚实的基础,否则企业会劳民伤财,有付出没有回报。笔者在实施软件过程体系中,也遇到企业内软件人员的层层障碍,原因之一就是过程制定得不合适。过程实施不当会限制开发人员的创造力,制约开发人员的灵活性。这样希望提高软件质量的过程变成束缚软件开发的负担。现在,有些机构或者企业也希望开发一些可以多次使用或者可以作为标准的统一过程(例如RUP)。作为一个软件企业,开始的时候没有足够的过程管理积累,可以采取摸索、实践、提炼、改进的步骤进行。第一阶段,可以针对具体项目制定具体的过程,而且一定要简单实用,然后逐步调整过程。也就是说第一步应该是针对具体项目制定过程,等积累了一定的项目管理经验后,第二阶段就可以针对企业制定相应的过程策略。最后,我们可以期望软件行业的过程标准。所以,软件项目过程的制定应该是循序渐进的。不一定仿照某些标准,简单实用是最重要的。一个可以被更多人认可并行之有效的软件过程是实践出来的,而且软件过程也不是枯燥的、抽象的条款,而是具体的、生动的、有实际意义的、可操作的工具。在具体进行过程定义的时候,应该是从项目级过程逐步积累到企业级过程,再由企业级过程裁剪为项目过程。如果所有的软件企业内部都能够做到企业级的过程管理,那么实现软件界的过程统一就不远了。如果软件行业有了可以通用的统一过程标准,证明软件发展到了一个成熟的阶段了。这里还要强调一点,谈到软件过程的重要性时,常常说软件过程可以消除依赖个人英雄主义的状况。我们也应该看到,软件过程不推崇个人英雄,但是并不是说软件项目不需要具有优秀技术的个人,好的软件过程可以加速优秀个人的成长;同理,好的软件过程也可以加速软件企业的成长。美国NASA的经验在探索软件过程管理的过程中,首先是不能盲从。比如,对等评审(PeerReview)是CMM中非常重要的一个关键过程域,CMM、PMBOK等项目管理体系都对走查(Walkthroughs)、审核(Inspection)等对等评审有相应的说明,但它们都没有对如何实施这个过程明确定义操作流程。如果软件企业没有很好的实践而照搬其他企业的审核或者走查等对等评审过程,那么在实施过程中可能会遇到层层的障碍,导致得不偿失。只有经过实践之后总结出来的过程,才会带来很好的结果。又如,我们曾经在开发一个软件项目过程中发现,有些人开发的软件质量很高,而且效率也很高,测试中发现的缺陷很少。原来这些人在编译前后都进行代码走查,后来我们就要求项目组的所有开发人员都要进行自我代码走查,编译前进行一次,编译之后进行一次,保证测试之前执行两次代码走查。结果取得了非常好的效果,软件的质量得到了很大的提高。为此,将这个方法推荐给其他项目,其他项目在试用过程中发现如果进行交叉代码走查,即开发人员互相进行代码走查,效果会更好。这样逐渐总结开发代码的过程,经过多个项目的过程提炼可以编制企业的开发过程。在企业的代码开发过程中,明确说明什么时间进行代码走查,如何进行代码走查。这样通过有效的过程来提高软件产品的质量。美国NASASpaceShuttleOnboard软件项目,在实施软件过程管理中得到了实实在在的好处。为了满足NASA约翰空间中心关于项目高安全和高性能标准的要求,ShuttleOnboard项目必须开发出高质量的软件。为此,项目团队精心制作并实践了可以提高产品质量的软件过程,经过十几年的努力和实验,摸索和开发了可以精确控制的过程,最终使软件达到零缺陷。在此期间它们参照、实验了很多的软件过程,包括需求管理、配置管理、对等评审、审查、测试、项目管理等。为了消除缺陷的根源,项目组成立“问题疏漏分析”组,分析诸如审核、测试、验证等检错方法中疏漏缺陷的原因,也就是研究这些质量过程中存在的问题,这个提高质量过程的过程包括如下四个步骤:1.从技术上分析缺陷的原因,并且提出纠正的措施。2.标识纠错过程中的问题,并更正过程,以消除将来采用此过程可能疏漏错误的可能性。3.改进纠错过程中的具体方法程序,这些方法程序曾经让缺陷逃过了,没有及时捕获缺陷。4.检查ShuttleOnboard项目中采用此过程方法的其他部分,这些部分可能同样遗漏了一些类似的缺陷,需要重新检查,以便确认没有缺陷。通过详细的情景式分析确定缺陷的根本原因,然后将这些情景式的经验反馈给开发过程,它们对改进纠错过程起到了非常好的作用。项目组将它应用到了其他过程的分析中,诸如需求分析等,也取得了很好的效果。同样的,ShuttleOnboard项目通过不断地度量过程、完善过程,最后达到提高项目质量的目的。过程的质量来源于实际的度量结果。同样项目的质量也可以通过高质量的过程来得到保证。软件实施工程师的工作是软件产品服务主线的一个决定性环节,软件的成功离不开实施。那什么才是成功的实施呢?要让用户真正使用起来,让用户满意,用户的成功也就是软件的成功。软件的实施,其实并不是一件看起来很容易的事,也许可算是一项挑战,有时还需要工程师们一种“明知山有虎,偏向虎山行”的信心和勇气。工作内容:负责工程实施:包括常用操作系统、应用软件及公司所开发的软件安装、调试、定制开发及维护,还有少部分硬件、网络的工作;负责现场培训:现场软件应用培训;协助项目验收;负责需求的初步确认;负责项目维护。工作经验:熟悉相关产品和软件的安装过程,能够独立解决软件安装过程中出现的各种问题;能吃苦耐劳,适应经常出差客户处服务;具有良好的沟通能力,具有团队合作精神。职业发展路径:软件实施工程师是软件开发项目成功的最后保障关键,成为一名胜任的软件实施工程师要求有一定的软件开发经验,从事该职业一段时间之后,积累了客户沟通的经验和更进一步了解了市场需求之后,可以向项目经理发展。在软件维护的实施过程中,为了正确、有效地修改,需要经历以下三个步骤:分析和理解程序、修改程序和重新验证程序。()是决定维护成败和质量好坏的关键。A)分析和理解程序B)重新验证程序C)修改程序D)验收程序质量管理体系的定义任何组织都需要管理。当管理与质量有关时,则为质量管理。质量管理是在质量方面指挥和控制组织的协调活动,通常包括制定质量方针、目标以及质量策划、质量控制、质量保证和质量改进等活动。实现质量管理的方针目标,有效地开展各项质量管理活动,必须建立相应的管理体系,这个体系就叫质量管理体系。指企业内部建立的、为保证产品质量或质量目标所必需的、系统的质量活动。它根据企业特点选用若干体系要素加以组合,加强从设计研制、生产、检验、销售、使用全过程的质量管理活动,并予制度化、标准化,成为企业内部质量工作的要求和活动程序。在现代企业管理中,ISO9001:2000质量管理体系是企业普遍采用的质量管理体系。ISO9001:2000标准是有ISO(国际标准化组织)TC176制定的质量管理系列标准之一。质量管理体系的内涵质量管理体系应具有符合性欲有效开展质量管理,必须设计、建立、实施和保持质量管理体系。组织的最高管理者对依据ISO9001国际标准设计、建立、实施和保持质量管理体系的决策负责,对建立合理的组织结构和提供适宜的资源负责;管理者代表和质量职能部门对形成文件的促序的制定和实施、过程的建立和运行负直接责任。质量管理体系应具有惟一性质量管理体系的设计和建立,应结合组织的质量目标、产品类别、过程特点和实践经验。因此,不同组织的质量管理体系有不同的特点。质量管理体系应具有系统性质量管理体系是相互关联和作用的组合体,包括:①组织结构——合理的组织机构和明确的职责、权限及其协调的关系;②程序——规定到位的形成文件的程序和作业指导书,是过程运行和进行活动的依据;③过程——质量管理体系的有效实施,是通过其所需请过程的有效运行来实现的;④资源——必需、充分且适宜的资源包括人员、资金、设施。设备、料件、能源、技术和方法。质量管理体系应具有全面有效性质量管理体系的运行应是全面有效的,既能满足组织内部质量管理的要求,又能满足组织与顾客的合同要求,还能满足第二方认定、第三方认证和注册的要求。质量管理体系应具有预防性质量管理