信息化 频道

国内项目管理中可以采用的软件工程手段

    【IT168 信息化

    前言

    为更好地开发软件,必须在项目组中引入一些软件工程手段和方法。本文试讨论了无论公司情况如何,一个项目经理都应该可以在项目组中实行的一些手段和方法;当然,公司情况良好则有更加可行的、更多的方法可以选择;这里只讨论了最差情况下可以采用的方法。

    本文按照最简单的瀑布模式的各个阶段分别列举了一些方法,在其他模式中应该也可以采用。

    需求阶段

    需求的管理应该是贯穿整个开发过程。在这个阶段,可以采用的方法有:

    1、CCB(变更控制委员会)

    建立CCB(change control board)是需求管理的前提,否则需求管理将成为一句空话。

    CCB必须包含客户方的决策人士,项目经理,项目经理的领导,关键设计人员,测试负责人,SQA.等,以5-7人左右为宜。

    需求确认,发生变更等活动必须由CCB以会议形式批准。

    CCB对整个项目有最高权力(不仅负责需求变更,还负责听取项目经理汇报、关键中间工作产品评审等重要决策)

    2、 需求评审,纳入基线

    原始需求必须形成文档,被CCB评审,然后纳入基线管理,所有变更都需要CCB评审。

    该评审一般步骤:

    (1). 项目经理提出被评审对象,指出受影响、被牵涉对象,评估影响(主要是带来的规模、工作量、成本),提出计划和计划执行人,举出可能风险;

    (2). CCB来决定是否同意或要求项目经理修改上述项;

    (3). 之后,项目经理提交执行情况汇报。

    (4). 最后,CCB指定代表或由SQA进行核实。

    如果变更过小,过多,可以进行周汇总评审。

    项目计划阶段

    项目计划是开发的指导或脚本,事实上,在每一个阶段开始时,都应该重新、小范围修订一下计划。

    1、 选择合适的软件开发生命周期

    关于生命周期的选择上,一直有而且会有很多争议。目前,国内运用最多的是纯瀑布生命周期;本人的看法是:一定有更好的选择,但这是一个最安全、最少在实际中有争议的选择。

    选择合适的生命周期的要点是:一定要有选择原因的陈述—本项目的特点,团队特点,开发特点和公司或部门的特点;该问题必须事先在项目组中、CCB内被讨论过并得到一定认可。

    2、 划分阶段--小里程碑

    根据选定的生命周期模型,考虑到可以投入的人员,各个开发阶段就呼之欲出了。每个阶段的结束一定是一个里程碑。如果里程碑超过一个月,那么应该在每经过一个月左右选择合适的点作为小里程碑。

    每达到一个里程碑时,项目经理应该提交本阶段工作报告,一般应该包括:

    (1). 本阶段活动统计和估计的数值和它们差异的原因
    (2). 工作产品完成情况
    (3). 需求变更情况统计
    (4). 问题及其解决情况的统计
    (5). 总结优点和缺点,指出对下一步工作的影响

    CCB听取该报告并评价该阶段工作。

    小里程碑可以防止项目失控,使项目经理、项目组和其上的管理层能够正确认识到项目进展情况,并能协助项目开展、出谋划策,项目可视化好;避免项目发生大问题。

    3、 决定工作产品和含中间工作产品

    在最混乱的项目中,工作产品和中间工作产品都没有被明确定义,或者可以朝令夕改,随意添加或去除产品。决定工作产品和中间工作产品,是为了确定各个产品的重要性,计算其上的工作量以合理地投入足够的、合适人员来开发它。

    4、 项目工作分解

    一般是将系统分解成模块甚至更细,要分多细由项目经理或分析员根据实际对项目产品的认识和人力、进度的压力而定;一个忠告:开始做的细、做的认真,以后的工作都会相应容易很多。

    一般人只分解产品。实际上,管理工作也应该分解的,而且也比较容易作。

    5、 估计

    估计常常被忽略掉,因为估计的结果往往会严重超出预算,让人大吃一惊。而到了最后,结果又往往接近当初估计的数字。

    估计应该每个阶段作为更新计划的一部分进行一次,每个新的估计都会更加准确。

    估计应该选取有经验的人士参与,应该选择合适的方法

    估计的结果应该用于指导编制下一阶段的计划,即使不被正式接受,项目组也不应该忘记这些数字,时刻作为参照。

    6、 明确职责—团队建设

    根据项目特点和人员特点,应该选择合适的模式来组建团队进行开发,每个人都应该有明确的责任和工作。

    最低限度,每个人都应该有明确的责任和工作。

    7、 约定沟通方式、渠道

    建立沟通渠道这一条可以不成文,但要成规矩。沟通渠道应该开放,畅通。为每个人指定汇报的领导、汇报的周期、汇报的方式和越级汇报的领导、条件和方式。

    建议在项目中开展项目日志,周报制度,具体的方式方法可以参考PSP,TSP。该制度的要点是:日志首先是对自己负责,不能作为评价员工的依据,它是属于成员“开放的隐私“。如果要求每天填满8小时工作,这样的日志没有任何意义;事实上,在本人的项目组中,根据日志,一般没有人每周投入工作的时间超过35小时,平均只有28小时左右—当然,你依然可以看到他们每天都很忙碌的样子,有时还有加班呢。

    周例会制度是本文推荐最有可行性的软件开发管理手段。每周用1-1.5小时左右,每个人简要汇报本周工作和下周计划的工作,工作中的问题和难点,这时,他会得到整个项目组的建议和帮助;项目经理可以印证了解到的项目进展情况;团队气氛由此加强。如果还有很多富余的时间,项目组可以讨论一下开发技术、技巧,进行一些技术交流。

    总之,沟通不足是软件开发中很大的问题,而且越是大项目就越严重。

    8、 约定开发纪律、规范

    没有规矩,不成方圆。项目组一定要有一些纪律,不能完全依靠自律。

    这方面,有公司文化、氛围积淀为基础是最好,否则就应该制订一些规矩了。

    这也是保持团队的重要组成部分。

    至于开发规范,根据项目不同而有所不同,要点是:必须有,哪怕不完美!

    而且,应该开诚布公,尽早公示。

    9、 风险估计和预备应对计划

    风险估计应该每个阶段都进行一次,一般是根据风险列表,大家一起来估计。

    其实也是让大家充分认识到项目的处境和潜在的困难。

    这件事,做了总比不做好。

    10、 CCB评审项目计划

    项目计划必须得到CCB会议形式的认可,否则一定会有问题!

    设计阶段

    1、 周期性内部评审和走查

    在这个阶段,周期性内部评审和走查的目的更多是为了交流,检查模块间是否能够协作、是否有矛盾和遗漏,作为平时非正式沟通的一个强有力的补充,大家取长补短,集思广益,几个人的脑袋总比一个脑袋强;第二个目的是质量控制。第三个目的才是控制进度。

    根据上述特点,评审自然应该采用会议方式,也许会有人觉得冗长、拖沓,浪费了一些人不必要的时间;但是该方式的效费比非常好,是值得的;至于组织会议的人,一般是项目经理,应该多动脑子,调动大家的积极性。有人会提出使用checklist的方式,本人的经验是:该方式削弱了沟通量,而且需要良好的制度的支持,否则容易走形式。

    2、 项目跟踪

    项目计划制订后,项目跟踪工作就要开始了。跟踪表应该每周填写,这样项目中的问题会被及时发现;而且最好不要用project跟踪,而是自己制作一张或寻找合适的软件。一般是根据项目计划制订,有下列内容:任务包,计划的规模、工作量、进度,实际的规模、工作量、进度,二者的误差以及原因分析。

    任务包完成的百分比应该如何填?本人的标准是:如果只是听成员汇报,没有100%完成的都是0%,是0-100原则;听了成员汇报,自己简单察看过工作产品的,是0-50-100原则;仔细检查过的,可以参照成员的汇报,按0-25-50-75-100原则填写。如果一个5工作日的工作包,上边写着完成43%,那是一点意义也没有的。

    项目跟踪的结果用于分析项目进展情况,里程碑报告,务必真实。

    3、 变更控制

    变更控制的具体手段请参照需求阶段的原则。在本阶段,一般只是开发人员发现需求不合理,或相互设计矛盾而要求变更。一些非基线变更的控制不需要那么严格,意思是不需要CCB评审,但项目经理要根据实际情况决定是否召集项目组内相关人员的评审。

    同时,应该在这个阶段让大家养成遵守变更规定的习惯。

    编码阶段

    1、 重新进行工作估计,有必要时修订计划

    进入到编码阶段,对项目的认识已经非常清晰了。根据设计,甚至可以计算出未来的代码行数。重新进行工作估计,可以更好地分配人员到合适各人技术特点和兴趣的方面,提高项目组的积极性;同时,可以使管理层清晰认识到项目进展的真实情况,做出正确的决定或避免他们做出错误的决定。

    2、 标准制订和培训

    编码的标准在现在已经逐渐趋向统一,但是仍然有必要在项目组中推行或制订编码标准。

    统一的编码标准,可以使项目组内可以容易地互相协助、交流,为走查、测试等工作奠定良好的基础。

    编码标准制订后,首先要进行项目组内培训。不过与其说是培训,不如说是讨论和统一认识,建立未来强制执行和检查的前提。(不教而诛谓为虐,教而后诛谓为化)

    3、 周期性走查

    根据经验和一些统计数字,走查的效果要优于测试。

    走查要以统一的编码标准为基础,反过来,统一的编码标准也是通过走查而在项目组中建立起来的。本人的经验是:开始时,安排每周2次走查,每次1小时,只检查一个人的一个功能,重点是编码标准,其次是BUG;大家可以通过走查学习他人的优良风格,改正自己的不足;两周后整个项目组基本上风格就统一了,这之后就应该把重点放在程序功能上,其次是BUG。

    4、 周创建或日创建

    5、 项目跟踪

    项目跟踪在本阶段较容易,因为量化的东西比较多,虚的东西比较少。基本方法与上个阶段相同。通过跟踪,已经可以看出那些模块在上个阶段没有设计好。

    跟踪要有分析,分析有了结果要有行动。

    6、 变更控制

    在这个阶段,一般是开发人员在实现时发现一些设计错误而要求变更;这时,就要求项目经理严格把关,与设计人员、开发人员一起研究是否真的需要变更,还是实现者没有领会设计者的意图。如果需要变更,则要谨慎地研究影响范围,评估损失。

    在这个阶段的中、后期,随着部分产品逐渐成形,客户会提出变更要求;此时要注意原则,同时要搞好关系,当然,首先是原则—CCB同意。

    7、 版本控制

    事实上,版本控制在项目一开始时就应该展开,但未必所有的项目组都能够做到,能做好的就更加寥寥无几了。但在编码阶段,则最好要进行版本控制了,良好的控制机制可以减少很多无用功,甚至避免一些灾难。

    良好的版本控制不是来自好的版本控制工具软件,而是版本变更控制的制度以及因此形成的良好习惯。建立一个成文的规定或规范并保证它的实行,才能使版本控制不流于形式。

    如果进行了版本控制,则建议推行MISRA Rule 10-- 不得残留被注释掉的废代码。

    常用的版本控制工具有VSS,CVS,rational套件中的clearcase也很好,只是会用会配置的人不多;UNIX下开发时,它自带的SCCS也是很好用的。

    测试阶段

    1、 制订返工标准和重申纪律

    一个糟糕的程序总是会不断地被要求修改,测试工作大部分是由少数几个程序或个别程序员完成的程序引起的。不断地修改的产品无论改多少次都不会变成好产品。

    因此,应该制订程序返工标准,一个可以参照的值是15BUG/1000Line。达到了这个标准,直接删除该程序,要求程序员重写;新程序再次达到这个标准时,就换人。而且,应该严格执行这条规定—前提是:该规定在编码阶段就通知了大家。

    2、 日创建

    测试阶段的日创建简直是被迫进行的,特别是在初期;否则测试简直进行不下去。

    但是注意不要丧失原则,为了赶进度破坏了版本控制。

    3、 变更控制

    测试阶段是客户提出变更最多的时候,注意不要丧失原则,要坚持CCB评审。必要的变更是必须进行的,但是要仔细评估其影响。匆匆进行的变更既破坏了规矩,也往往破坏了产品。记住一句名言:如果厨师做菜的时间长了,那是因为他想把菜做的更好。

    4、 版本控制

    如果在这个阶段没有一个良好的版本控制行动的话,测试工作一定会有一种混乱的感觉;而且,这是日创建的前提。

    5、 项目跟踪

    项目跟踪在这个阶段是最困难的。因为事情往往琐碎而且交织在一起。项目经理既当裁判,又作记分员,还要是教练、队长,必要时还要亲自上阵。一个好的产品,在测试阶段一定不会一团糟的。

    但是,需要坚持项目跟踪;积累这个阶段的数据,才能真正评价项目、项目组每个成员、项目采用的技术(包括管理技术)优点和缺点,为公司、个人积累起经验。所以,虽然这个时候项目经理很忙、很累、有很多重要的事情要处理,但还是应该坚持项目跟踪。

    项目收尾

    项目收尾时应该进行项目总结,主要是评价项目产品、采用的技术、管理方法、优势、缺点和项目组每个成员。

    通过项目跟踪获得的数据可以作为评价的基础,但是不能做量化的评定(分级或者打分),只能是定性的评价—一个尽量详尽的文字说明。总结的目的是面向未来的新项目,而不是惩戒某些人,定量的评价对于下一个全新的任务基本上没有任何帮助。

    如何能够正确地评价和使用人,依然是一个管理学难题。

 

0
相关文章