技术开发 频道

怎样进行软件过程改进

【IT168 技术文章】

    有人认为,如果一个软件机构在五个开发人员以下,以及开发周期短于六个月,进行基于SW-CMM的软件过程改进是不划算的。写这篇文章的一个目的,就是帮助人力财力不那么雄厚的中小型企业进行软件过程改进,让他们能少花钱,少花时间,并且显著得益。无论人数多少,开发周期多短,改进必得益!

    笔者在“SW-CMM与中国”一文中己提出了对在中国软件产业中应用CMM的一些建议。

    只要一个软件企业在开发产品,它就一定有一个软件过程(可能只是没有写下来)。如果这个过程不能很好地适应开发工作的要求,就需要进行软件过程改进。

    软件过程改进并不是一件很困难的事。并没有写一个操作系统,或设计一个微处理器那样的纯技术上的难度。但它面对的是一种含有大量管理成分的工程技术。这也就是为什么不容易把它做好的原因。

    什么是“改进”?改进所涉及的几个步骤是:

    1.把要想达到的状态与目前的状态作比较,找出所有差距;

    2.决定要改变哪一些(注意,不一定是全部)差距,要改变到什么程度(可分阶段改);

    3.制定具体的行动计划;

    4.执行计划,同时在执行过程中对行动计划按情况进行调整(以非常好的效果为目标);

    5.总结这一轮改进的经验,开始下一轮改进。 下面讨论,在进行软件过程改进时,上述五个步骤中的关键内容。

    “要想达到的状态”(目标状态):具体是指软件过程的状态。如果一个机构决定采用SW-CMM来作参考篮本的话,就可以基于它的各个关键过程域(KPA ),制定出符合自己机构及产品特点的目标状态。(在这里,笔者强调“基于”及“符合自己特点”,意思就是不能照抄。)

    “目前的状态”:要找出什么是目前的状态,就要进行对目前软件过程的评估。评估的方法很多,最简单的就是一组熟悉本机构的日常开发运作的人员在一起讨论,把它列出来。在这里,可借助SW-CMM的评估问卷办法。实质上,评估问卷中的问题,就是把各关键过程域的各细则内容,加上“有没有做到”、“有没有建立”、“有没有执行”等语句而构成的,并没有什么神秘之处。

    “决定要改变哪一些差距”:要从多个方面进行考虑决定。例如:“最薄弱的环节”、“最需要改进的环节”,“最易做到而又有显著收效的改进”,“有人力,财力和时间,即有条件进行”。各机构要按自己的情况作决定。

    “要改变到什么程度”:由于条件的限制,我们不可能做一切希望要做的事,或者不可能百分之百地一步实现目标。许多时候,欲速则不达,反而误了事。目标与能力,要有个平衡。

    “具体的行动计划”:“具体的”就是:

    a. 要有明确的,可以检验的目标;

    b. 要定出检验成功与否的标准;

    c. 要有具体的实施行动办法;

    d. 要指定具体执行计划的人,每人的具体责任与任务;

    e. 要指明计划的主要领导或协调者,以负责解决一切在执行中出现的问题;

    f. 要列出所采用的新技术与新工具,怎样获得它们;

    g. 要定出对新技术和新工具进行对本机构适用性改造的目标;

    h. 要有对新技术和新工具的使用进行培训的计划;

    i. 要列出每一改进对过程的其他部分的关系、影响、和协调的办法;

    j. 要建立与项目相关联的时间表;

    k. 要指出相关的人力、资金与时间的来源;

    l. 要定出在整个执行过程中,必须在什么时候提供什么数据;

    m. 要有对执行情况进行监察考核的具体办法及计划;

    n. 要准备很可能发生的,在执行过程中对行动计划按情况进行调整的行动。

    o. 要有对行动计划执行中可能出现的意外情况有所准备,保证项目仍然能够顺利进行。

    p. 必须要有高层领导、管理人员作为推动整个行动计划的动力。

    “在执行过程中对行动计划按情况进行调整”:一旦发现需要对行动计划进行调整,以期达到非常好的的效果,而实际情况也允许在中途进行调整的话,可以进行经过计划的、严加控制的调整。所有的改变必须预先取得所有有关人员的同意。

    “总结这一轮改进的经验”:过程改进是一个永不停止的工作。总结经验使我们能越做越好,越做越有信心。光有未经实践的知识,还不能有信心。信心是经过运用知识解决了问题之后建立起来的。

0
相关文章