1、软件开发项目管理之浅见在项目管理岗位工作已有大半年的时间,就项目管理来说主要从事软件开发项目的管理,经我验收的大小项目也有十几个,从中有较深的体会。不论从单纯的项目管理角度还是从软件开发角度看,我认为我所的软件项目管理存在一定问题。下面是我的一点体会。所软件开发管理办法早在 99 年就开始实施,但很多项目的进行过程中仍没有严格按照该办法进行,开发之前没有经过真正详细的设计过程,往往是几个人从头到尾负责一个项目,几个人碰一下头,讨论一下最基本的数据结构、接口便分头去做自己的工作了,没有一份较正式的文档来规范各自职责和项目细节。这种做法潜在的危险之一是有人可能会对所讨论的接口、结构理解有偏差,极可
2、能会造成以后的返工。另一个潜在的危险是由于讨论时忽略了某些情况,有可能等大家都按时完成分工任务后,才发现各个模块组合起来却无法形成一个完整的系统。第三个潜在的危险是一旦有人中途退出开发队伍,其他人加入时,难以理解以前别人做好的代码,又要从头做起。另外,没有文档的程序,日后维护和版本升级都比较困难。虽然有项目管理员,但大部分文档都是项目结束后一起上缴,只有极少数人在开发过程中按阶段递交文档。软件开发是一项艰苦的工作,一个团结、协作的团体是保质保量完成软件开发的关键。大家在充分信任的基础上团结协作,互相帮助,主动承担任务,不能互相推诿,更不能互相埋怨和指责,要善于利用集体的智慧获得成功。所以,合理
3、配备人员是成功完成软件开发项目的切实保证。合理配备人员应包括按不同阶段适时运用人员,软件项目的不同阶段、不同层次技术人员的参与情况应该是不一样的。针对以上问题,我认为在项目管理及开发过程中必须处理好四个关键问题:规范、人员、控制、测试。才能提高开发效率和保证软件的质量。一、严格执行软件开发规范软件开发需要严格按照软件规范实施。从项目的用户需求分析、系统分析、编码、调试、测试、发布都需要一步一步完成,不能轻视或忽略任何一步骤。前部分没有完成好,不要贸然进行下一步。越是项目起步阶段,越是要注意按照规范进行。一般认为开发软件项目规模较小,很容易忽视规范化,而随心所欲,没有计划,想到哪做到哪,其最终的
4、结果是失去控制。其实项目小正是实现软件规范化管理的好时机,管理实施起来比较容易,通过小项目来培养人员的规范意识,也就为大项目的规范打下了良好的基础。其中,特别需要重视软件开发中文档编写和管理。用文档去引导开发过程,抛弃随心所欲的开发模式是现阶段我们需解决的主要问题。大家应该充分认识到,没有文档的开发,就象工厂工人师傅没有图纸生产零件一样,很可能得到次品甚至是废品,给后来开发者留下一堆没有意义的“垃圾”产品。我认为文档应该是开发中各阶段结束的标志,每个阶段后,都需要提交相应的文档,而且要确保文档的质量。那种认为只要软件做出来可以运行,没必要花费许多精力去做文档的观点是错误的。我所多年的实践已经证
5、明没有文档带来的很多问题。及时编写文档并确保文档质量的最有效方法就是评审,开发人员按阶段提交文档后,项目管理员组织相关人员对该文档进行审核。在充分讨论的基础上,进行文档的重新修改和审核直到满足项目要求方可进行下一阶段的工作。文档应该是贯穿整个过程的主线,在不同的阶段,需要不停地对文档进行完善,使之真正成为软件开发的指南,体现项目组成员的智慧结晶。二、合理安排项目成员一个项目的人员安排至关重要,小项目的人员安排一般不成问题,大项目的人员安排应更谨慎。因为,项目负责人是一个团队的核心,其综合素质直接影响项目的成败。合格的项目负责人应具有一定的组织领导才能、强烈的责任心和较强的业务处理能力;善于协调
6、、计划,能够沟通信息、解决问题。善于协调:协调几个人的工作比自己完成一段编码更重要。协调不力,将影响开发进度和质量。所以项目负责人除完成自己的编程任务外,必须随时监控各开发人员的工作,包括内容是否与要求发生偏差,进度是否滞后等等。善于计划:在开发前,应将明确的开发任务通过文档传递给每个开发人员,让大家都熟悉设计模型,都清楚自己所做的工作在整个系统中处于什么地位,这样有时侯可能会发现设计模型中的漏洞,避免了各人的代码编写完毕之后又要修改的后果。沟通信息、解决问题:团队沟通不是技术问题,但却是一个最能影响工作效率的问题。沟通及时、集思广益、步调一致,才能取得胜利。三、做好项目计划,进行有效的进度控
7、制开发者最担心领导不断催促,可项目提交日期一拖再拖,所以项目开始就做好项目计划是项目按时交工的基础。项目计划首先是根据项目大小、人员配置等信息来估算开发所需时间,其次进行进度安排,最后是进展监视,任务控制。进度安排主要是考虑软件交付用户使用前的这一段开发时间的安排。在考虑进度安排时要把人员的工作量与花费的时间联系起来,同时要考虑的一个主要问题是任务的并行性问题。当参加项目的人数不止一人时,软件开发工作就会出现并行情况。所以进度计划表必须决定任务之间的从属关系,确定各个任务的先后次序和衔接,确定各个任务完成的持续时间,以使得软件开发的进度不至于被拖延。下面附录是本人对项目管理工作流程的初步设想,
8、实际上也是软件开发工作的流程图,只有严格按照类似的工作流程或规定严格执行,才能进行有效的时间控制,确保项目按时保质完成。四、重视测试测试是软件开发中容易忽视的问题,许多人认为开发的主要工作是编码,其实不然,在没有严格执行开发流程的开发活动中,测试是唯一能确保软件质量的方法和手段。要完成严格的测试,就必须建立规范的系统测试流程,而且开发人员要积极配合,不要认为测试人员是在给自己找麻烦,测试人员查找的错误可能是程序员无法发现的错误。测试是对软件产品质量的检验和评价。它一方面检查软件中存在的质量问题,同时对软件质量进行客观的评价。一个成功的项目是一个用户满意;领导满意;项目参与人员满意的项目。用户满
9、意:为用户服务、让用户满意是项目的开发过程中应自始至终遵循的理念,让用户认可、使用,并让用户说好是项目成功的关键。领导满意:项目开发要按时保质保量地完成,并总结开发经验、锻炼培养人才、进行知识储备。项目参与人员满意:让开发人员在项目中专注地完成任务,免受项目之外的因素干扰。因为,正常、优质地完成任务,对开发人员本身也是一种巨大的鼓励。一个成功的项目还需成功的应用推广,所以开发人员有责任让用户熟悉设备及软件的使用情况,将用户培训作为项目开发的主要部分之一,让自己辛勤的劳动结出漂亮实用的果实。鉴于上述,我认为我所的项目管理应从以下几方面加强。首先,建立可操作的项目管理规范,并严格执行。只有严格按照
10、规则行事,才能保证整体的规范,从而提高效率。第二,在文档的编写上应严格控制,文档应是每一阶段工作的结束,建立阶段性文档评审制度,不仅可以起到控制软件开发质量的作用,还使后续开发和升级有了保证,避免重复开发和项目失控现象。考核时应坚持任意阶段的文档欠缺,项目属没完成。彻底改变只注重编码开发,忽视文档开发的不良工作习惯。除按时书写提交各阶段文档外,最后软件开发验收完毕,对所有文档应进一步修改,按一定格式编辑成册提交项目管理员,由项目管理员组织有关人员审核、修订,然后与程序编码一起归档保存。第三,为严格控制项目进度,建立编写软件项目计划书制度。项目进行初步调研后,项目组负责人应首先估算工作量和时间编
11、写出软件项目计划书 ,在计划书中主要描述开发日程安排、项目工作分解、资源需求等各项情况的大体内容。计划书经审定通过后要向主管领导、项目管理员及各相关人员发放,使他们大体了解该软件项目的情况,项目管理人员以此为依据进行阶段性检查评审,便于项目跟踪。第四,项目管理人员应从参加项目调研,对项目的工作量,项目的难易程度做到心中有数,参加软件项目计划书 、 项目可行性报告 、 需求分析报告 、 详细设计报告 、 用户使用报告等报告的评审,根据软件项目计划书组织好各阶段的检查和软件测试和验收工作,切实控制好项目的质量和进度。第五,为进一步提高软件开发队伍的水平,避免重复劳动,建议实施项目总结制度。项目完成
12、后及时写出项目总结,总结可包含该项目中所用到的新技术、新方法及解决的难题,在编程中的一些新思路、新技巧,以及对该项目的认识、体会及后续开发建议。并由项目管理人员组织评审。第六,软件管理要程序化,建立健全各项项目管理规定,最好能开发一套项目管理软件进行规范化管理。2002-11-18附录:软件项目管理工作流程通过提交技术科修改提交技术科所领导确认下达给开发部长根据所领导下达任务初步调研立项并制定项目计划书成立项目组进行需求调查评审需求调查报告评审详细设计报告确认开发计划表提交技术科编写、修改需求调查报告编写详细设计报告编写开发计划表通过没通过通过没通过编程阶段逢月底做阶段小结阶段验收项目完成编写用户说明、项目总结项目交工验收用户说明书评审 没通过交付用户安装、试运行技术科技术科开发部开发部所领导技术科开发部开发部所领导技术科开发部开发部技术科开发部开发部技术科开发部所领导技术科开发部所领导开发部