项目管理在软件开发中的地位不容忽视

软件开发过程中,往往有很多细节和意外让我们的计划赶不上变化。譬如需求变更、人员流动等。为了保证项目进度可控,有效规避项目在开发过程中的风险,项目管理的作用在软件开发中的重要性可想而知。

项目管理大致有项目计划和开发团队管理两方面。

建立项目计划

(1)设计总体架构

针对项目的实施需要,采取适合项目且相对成熟的框架结构。

那时公司的产品总出现各种各样的问题,例如日常发布系统时或访问量稍微过大时,系统就会出现故障,一天下来收到了100多份bug邮件,影响了业务系部门的正常使用。

之所以出现这么多的bug,是因为无论业务系提什么需求,技术部都全盘接受了,按理这样也不会导致出现这么多bug,技术部服务于业务部,是正常的,毕竟公司的主要收入在业务部。可问题是,数据字典是每个开发人员自己设计的,导致大多数数据字典冗余、甚至设计不合理。各自只关心自己负责的模块。等到模块之间有关联时,问题就接踵而至了。

那时候公司用asp.net +mssql server技术,并没有采用相应的框架,代码冗余多,后来团队经过两个多月的整改,系统才勉强能正常使用。

(2)控制可扩展度

扩展度过大,将提高系统的复杂程度,延长开发时间;扩展度过低,会直接影响系统的二次开发与维护。控制系统的可扩展性,能提高开发效率,降低系统维护的难度。

不知你有没有觉得,项目前期没有做好,后面复制粘贴的现象就会到处可见,导致冗余的代码越来越多,维护越来越困难。

(3)建立基础设施

合理分配软、硬件等基础设施的部署所需要的时间与成本。

(4)划分开发任务

利用WBS(Work Breakdown Structure,工作分解结构)对可交付结果进行分类与划分。每个项目划分为多个不同阶段,每个阶段又可以分为多个工作包(Work Package),工作包是WBS里最小的可交付结果,最后从工作包中分解出多个开发任务列表,分配给各个开发人员。

(5)部署开发进度

从需求调研、进行概要设计、进行详细设计、执行开发任务、测试、联合调试、SIT部署、生产环境部署都常常延误,项目经理必须有谈判能力、预判风险能力、控制能力。项目经理就是在满足各方项目干系人的利益的情况下,推动项目向前发展,最后达到项目验收。

(6)测试项目成果

每个工作包都应该同步部署测试工作,提高项目的质量。对出错BUG的工作包应该由测试人员以文本方式记录,向开发人员展示错误所在,让开发人员及时进行修改。

管理开发团队

(1)组建团队

按照工作任务与项目时间的前提条件建立团队,按团队职责分配人员,一般小组控制在6~10人之间。当团队人数超过20人时,应该考虑把团队分解成2个独立团队,负责不同的开发任务。

(2)分配开发任务

在每个迭代周期内(一般是15~30个工作日),应该把每个工作包进一步细分为多个开发任务,开发任务的开发时间应该控制在15个工作小时以内,如果开发任务的开发时间超出15个工作小时,应该考虑把任务再度细化。而开发任务应该以自由选择的方式分配给每个组员。

(3)跟进开发进度

在迭代的前期举行一次会议,让组员了解开发的进展及流程,并以自主选择的方式分配开发任务。用工具记录开发流程的进展,在每个工作包完成开发后应该进行性功能的测试,并以文本方式记录测试结果。

每天举行一次10多分钟的站立会议,让组员汇报昨天已完成的开发任务,当天将要做的任务,以及开发过程中所遇到的问题。

并在每周末举行一次例行会议,交待总体进程。

在迭代末期举行一次冲刺会议,总结项目的进展,交行已完成的任务,回顾该迭代周期内所遇到的问题,为下一个迭代做好准备。

期间千万不要忽视开发规范和代码审查。

推荐阅读更多精彩内容