对软件过程改进的思考(原创)

前言

        本文的观点或许有些偏颇,其实我也承认很多西方的管理模式是非常优秀的,而且也确实取得了一些大的成就,可是为什么移植到我国后,就会发生许多质的变化呢。我们为什么老喜欢做一些面子上的工程,而不是实实际际的去做一些基本的工作,真正有意义的工作呢?
        在写这篇文章时,很多同学和网友都给了我很大的帮助,而且为了更好的阐述观点,本文在论述过程也引用了一些专家的观点和阐述,在这里先行谢过。同时也衷心希望我国的软件业能有一个更美好的明天!
                                        
                                                                       正文


       当学习了软件过程改进这门课后,我时常在考虑一个问题,那就是大家一提软件过程改进,言必是CMM云云,给人的感觉好象软件过程改进就是CMM是的。其实作为一门学科来讲,软件过程改进所包括的内容是多方面的,CMM只是其中的一分子。就我个人认为:软件过程改进对我国的软件质量的提高和开发进度控制还是非常有好处的。为什么要这么说呢,我可以举一个我们现实生活中的例子来说明一下。不知大家吃过西餐没有,如果你吃过的话,你有没有发现不管你来吃多少次,味道似乎都一样呢。再让我们来比较一下中餐,你敢说你每次吃的都是一个味道吗?特别是当这个餐厅的大厨换人的时候。为什么中餐厅会因为某个大厨的离开而影响其生意甚至倒闭,而西餐厅却不会呢。仔细分析其实并不难理解,这是因为西餐厅把自己的每道菜用多少菜,放多少油,盐,酱,醋都形成了规范,形成了标准的文挡,形成了操作的习惯,它不会因为某个人的离开而无法继续进行。而我们的中餐厅却不是这样的,他呢只会依靠几个水平很高的大厨来支持他的运作。我们很容易想象当这些人离开后所产生的影响是多么大,轻则影响生意,重则甚至关门,这种事我们见得还少吗?再来看我国软件行业,和中餐厅的运营方式是多像啊,我们难道只有到了关门大吉的时候才会哀叹自己既知今日,何不当初就。。。,那就晚了。

        有人可能会问我,那我们也可以像西餐厅的那样,采用CMM(很多人长挂在嘴上的话题,显的自己很智慧,其实对CMM的主旨也只是一知半解而已)来管理我们的公司,是不是就解决问题了呢?这多像一个病人充满希望地问医生:“你看我的病什么时候能好?”。在这里我不想打击很多准备实施CMM的企业的积极性,我只想说的是“你要看CMM到底适合你的公司吗?你的公司有实施CMM的能力吗?”。说到这在让我们来看看我国中小企业的实际情况吧:管理基础薄弱,资源不足,生存压力大,缺乏统一而有力的文化,人员素质良莠不齐。在这种情况下去实施CMM真的能妙手回春,解救你的公司于水火之中吗?我真的很表示怀疑。

        有人会说,你不要那么悲观吗?你看我国ISO9000不就实施的很好吗?不要再岂人忧天了。听到这话我不禁要反问一句“我们的ISO9000真的就实施的很好吗?”。请允许我再举一个我们张老师给我们讲的故事“东门外一个卖油茶的人,很激动的对来往的人说我卖的油茶通过了ISO9000,你们快来吃吧。”,我想可能大家都会被他吓跑,谁还敢去吃他的油茶啊。首先我要申明,在这里我没有一点侮辱ISO9000的意思,我只是想说ISO9000在我国是否泛滥了呢,我记得我曾经工作过的一个单位,为了通过ISO9000所做的一切事情,除了自欺欺人,还能剩下些什么,我不想再多说什么,或许这种事情太多都见怪不怪了,麻木了吧。说真心话我可不希望CMM也和ISO9000一样。

        其实我们都明白,实施CMM和ISO9000的作用是为了什么呢?还不是希望提高我们的软件质量吗?很多时候我们都是为了什么而什么,而忘却了真正的目的是什么。我认为一个企业最大的目的是赢利,因为不赢利他就无法生存,都无法生存了,还有必要去考虑一些面子工程吗?“马斯洛需求层次理论“我想大家都知道,他阐明了生存是最大的需求,它是其他需求的基础,离开了生存的一切都是空的。我想这是很好理解的,当你的生存都有问题的时候,你还会去考虑其他什么问题吗?我想肯定是不会的。

       让我们把话题在转回到软件过程改进上来吧。只要一个软件企业在开发产品,它就一定有一个软件过程。当这个过程不能很好地适应开发工作的要求时,就必须要进行软件过程改进,这就像生产力和生产关系,当生产关系不能适应生产力的发展是就必须要进行改革一样。其实对软件行业而言,软件过程改进并不是一件很困难的事。因为它既没有要求我们写一个操作系统,也没有像设计一个微处理器那样的纯技术上的难度。因此通过我们自身的努力还是有可能很快实现的。

        那么我们应该如何去进行改进呢?
        首先我们把我们要想达到的状态与目前的状态作比较,找出其中的差距到底在那里。其次我们应该决定到底要改变哪一些差距,是全部还是部分,到底要改变到什么程度。下来我们就必须制定具体的行动计划,包括如何实施,是分阶段还是一次性等等。最后就是执行计划,同时在执行过程中对行动计划按实际情况进行调整。因为只要存在发展就始终存在着改进,因而我们还必须总结这一轮改进的经验,开始下一轮新的改进。
         同时一个软件开发单位还必须了解自己处于哪一个层次,然后才能够对症下药地针对该层次的特殊要求解决相关问题,这样才能收到事半功倍的软件过程改善效果。任何软件开发单位在致力于软件过程改善时,只能由所处的层次向紧邻的上一层次进化,即软件过程的进化是渐进的,而不能是跳跃的。而且在由某一成熟层次向上一更成熟层次进化时,在原有层次中的那些已经具备的能力还应该得到保持与发扬。
        说了这么多,我必须要表明一点:软件过程的改进决不是一蹴而就的,它是一个长期的艰苦的过程,它的实现需要从加强企业的自身管理开始,没有一个好的母体,在优秀的东西也就不再优秀。让我们好好的理解这句话吧“一个企业软件工程过程的建立不会一开始就十全十美, 而且企业的内外部环境也是在不断地变化.所以软件的管理过程需要不断地改进。缺少了过程改进,再好的体系也会渐渐的变得过时和不适用,更没有可能使我们开发软件的能力逐步地成熟起来。”
        总之,一个企业不论采用ISO9000也好,CMM也罢,还是其他的PSP,TSP等等,我认为如何能有效地规划和管理所面临的项目开发任务,并且能是开发队伍始终以最佳状态来完成工作这才是最重要的。

      “软件危机”这把生死之剑依然悬在我们头上,我们不能有一丝丝的放松,而且也容不得我们放松。我坚信只要我们坚持改善软件工程的管理,并在实践中总结适合自身的经验,我们就一定能取得很好的效果。

 

你可能感兴趣的:(软件工程)