技术开发 频道

怎样进行软件过程改进

    SEI 建议的做法:

    运用SW-CMM进行软件过程改进,按照SEI 的建议是使用他们制定的IDEAL 模式的做法。

    IDEAL 是个组合字,实际代表:

    I Initiating(创始)为成功地进行过程改进而打好基础。

    D Diagnosing(诊断)找出相对于你要达到的位置,你现在在何处。

    E Establishing(建立)计划你如何达到你的目的地。

    A Acting(行动)按计划进行工作。

    L Learning (学习)从经验中学习和改进你在将来采用新技术的能力。

    读者可详细学习SEI 的出版物:(编号 SEI-96-HB-001,共263 页,可从SEI 网页上找到) “软件过程改进用户指南”(IDEAL:A User`s Guide for Software Process Improvement )

    笔者认为,正规地使用IDEAL 模式,可能比较适合于大型企业。

    下面,就一些问题提出笔者的看法:

    是否一定需要外来的咨询?

    企业进行软件过程改进,是否一定需要外来的咨询呢?笔者认为,好的咨询确实能带来帮助,如果财力上付得起,同时又了解对方是有商业道德和有能力的顾问,则不妨进行一点初步的接触,然后逐步判断他的观点和建议是否符合你们机构的需要,千万不要被对方说服去投入一个你们的机构现在不需要的,或在人力、财力、时间上条件不具备的努力。(咨询服务也是一种商品。不道德的商人会向你推销你并不需要的商品。)你们要进一步判断,究竟在哪一些方面,在多大的程度上需要多少外来的帮助,因为过程改进的一个目的是培养本机构的人才,过份地依赖外来咨询,会削弱这个努力。

    俗语说得好“三个臭皮匠,顶个诸葛亮”。在机构内部组织一个小组,多讨论,通过各种渠道多学习别人的经验,破除教条迷信,灵活运用自己的专业判断力,就有能力领导整个过程改进,并且在实践中成长起来。(至于运用专业判断力,实际上更多时候是运用常识。一种讲法,无论来自什么权威,如果你觉得不合常理的话,就要弄清究竟。)

    知道了要做什么,如何知道怎样做?

    SW-CMM只提出了要做些什么(关键过程域中的关键实践),但并没有介绍要怎样做。解决这个问题的方法很多,比如到软件工程的书中去找、向有经验的人请教、或者就自己讨论出一个可行的办法,从来都不要小看自己经过认真思考而想出来的办法。凡是从书中或别人处学得的办法,都要经过适当的改变,以适应自己的机构的条件及目前项目的特点。世界上没有适合一切人穿的鞋。

    怎样知道过程改进带来了什么效果呢?

    一般来说,你知道了目前的缺点是什么,就应当知道怎样去判断过程改进的效果。当然,效果可以分别从质和量的角度去量度。对于不同的改进,效果的检验方法就不同,比如对于项目的计划中的软件规模大小的估算,就可以从最终产品的大小中得知估算的准确度;比如进行早期缺陷预防,就可以看看在开发的各个阶段所发现的缺陷数目的分布(记得在行动计划中要有记录统计的一项);又比如进行软件配置的版本控制改进,就可以看看是否对不同的版本有了完全及方便的控制。因此,可以看出,这些都是按常理进行的事。 找差距时,应对照哪些关键过程域?

    SW-CMM的能力成熟度分等级,是人为的。它是基于SEI 对成熟度的由底到高的理解来划分的。有人就觉得划分得不大合理,然而,使用者是活着的人,可以按自己需要作改变。 笔者认为,对于初开始软件过程改进的机构,不妨对照全部或部分的SW-CMM第二级的各个关键过程域,外加第三级的“交换审核”,及第五级的“缺陷预防”。(有点象从菜单上点菜)

    为什么要把“交换审核”及“缺陷预防”从高的成熟度等级中“往下拉”呢?原因是,按笔者的实际经验,“交换审核”是一个简单易行而且非常有效的找出缺陷的方法,也是一种促进开发人员注重预防缺陷的好方法。至于“缺陷预防”,这是整个软件过程的核心与灵魂,从一开始就必须全力以赴。

    在每个对照的关键过程域中,原原本本地对照每一项关键实践吗? 绝对不是。这里就牵涉到对SW-CMM进行裁剪及解释的间题。“裁剪”是指对范围及程度的改变;“解释”是指把实际软件项目中的实践工作,解释理解为(等同为)某个关键实践。基本上,不要去裁剪那些属于目标(Goals )的关键实践。裁剪及解释,是中小企业能否成功地应用SW-CMM的一个关键。在不影响效果的前提下,剪裁到越简单越好。要慢慢地把自己培养成裁剪高手。

    (SEI 有专门讨论裁剪(Tailoring )的技术报告,文件编号是94-TR-024 。)

    把机构目前的一切推倒,按SW-CMM重建,是否会更好?

    千万不要这样做。基于目前的过程进行改进,证明是最有成效的方法。

    是否起码要满足SW-CMM第二级的所有关键过程域呢?

    笔者认为不必。任何方面,任何程度的改进都是有益的。要按照你机构的担负能力及要求来决定进行软件过程改进的广度与深度。

    软件过程改进中,应注意些什么呢?

    应该注意的事情很多,但笔者认为最重要的一点是要注重执行、做实事,千万不要定出了行动计划之后就丢进抽屉中,束之高阁。另外一个要注意的问题是,要有对行动计划执行中可能出现的意外情况有所准备,保证项目仍然能够顺利进行。

0
相关文章