沐鸣娱乐


        做好项目管理,才是软件开发的关键(做好项目管理,才是软件开发的关键环节)

        分享职场生活 、职场攻略 、领导同事相处技巧和创业资源

        文|洪生鹏

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

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

        建立项目计划

        (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多分钟的站立会议 ,让组员汇报昨天已完成的开发任务,当天将要做的任务,以及开发过程中所遇到的问题。

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

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

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

        关于代码规范 ,感兴趣 ,请浏览《》

        代码审查,顾名思义 ,是一个检查代码并确保其能正常工作的过程 ,并且尽可能的优化代码。

        有人会对代码审查的流程反感,我写的代码还要别人审查,难道怀疑我们的编码能力。

        其实不然,有人检查我们的代码其实是件好事,能减少因为粗心的犯错带来的风险 。 即使再好的开发人员也会有大意的时候 。

        做好项目管理,才是软件开发的关键(做好项目管理,才是软件开发的关键环节)

        在团队中的每个人都有自己的强项,通过代码审查 。有些人可能会提出一个更聪明的解决方案 ,用一个更适合的设计模式来降低复杂度并提高性能。

        通过别人的审查,他们可以察觉到可能的问题和发现能改善的地方 ,对代码提交者的编码水平提高有很大的帮助 。

        审查者则可以通过读别人的代码学习到很多新知识和技巧 ,并找出适合他们自己工作的解决方案。

        (4)系统测试

        对每个已完成的工作包进行适时的测试,保证系统质量与性能。对测试结果进行文本的记录 ,并把测试结果与绩效工资收入挂钩 ,并以真实数据计算组员的绩效收入 。

        测试人员应该以文本方式记录bug,并与开发人员共同工作的,把突出的缺陷演示给开发人员,以提高修改的效率 。

        这里的绩效考核就要慎重了 ,搞不好会导致团队人员的流失

        (5)解决开发中的问题

        对开发人员进行前期培训 ,可适当按工作能力分配任务,指导组员的开发。当遇到问题时应该在当天的站立会议时即时提出,避免影响开发进度。

        (6)流程化管理

        流程化管理(process management) ,是一种以规范化的点对点的卓越业务流程为中心,以持续的提高组织业务绩效为目的的系统化方法 。它是一个操作性的定位描述,指的是流程分析、流程定义与重定义、资源分配 、时间安排 、流程质量与效率测评 、流程优化等 。因为流程化管理是根据团队的具体情况而设计的,因而这种流程会随着内外环境的变化而需要被优化 。

        针对一个IT软件管理来说,应该抓好以下四大流程管理 :

        • 编码规范的制定与执行;
        • 开发任务流程化的制定与执行;
        • 开发进度流程化的制定与执行;
        • 测试成果的制定与执行。

        流程化的管理减少了团队成员盲目与重复的去工作,提高了团队的工作效率。同时也提高了团队管理者的效率,为管理提高了一个便捷的管理工具,所以一个高效团队的打造,离不开流程化的管理。

        做好项目管理,才是软件开发的关键(做好项目管理,才是软件开发的关键环节)

        (7)需求变更,修改项目计划

        在开发过程中,遇到需求变更 ,要做好详细的文本记录,让客户了解需求变更的实际情况和开发方为之所付出的成本代价 。与客户探讨,让客户了解计划修改对项目进度所造成的影响。同时为开发人员争取工作量。

        笔者曾遇见过,项目开发过程中,需求变更了,可给予相应的开发人的工作量却没有任何变动,这对开发人员很不公平,开发人员只好通过加班加点来完成任务。这样很容易导致人才流失 ,做完了这个项目,组员都陆陆续续辞职了。

        软件开发管理 ,必须得提高软件团队管理能力,管理者就要利用一切机会让团队成员感受到团队的力量 ,让他们不孤单,不委屈,并通过每一次的开发任务让他们不断成长。

        做好项目管理,在软件开发中不容忽视,只有做好了,才不会影响项目进度 ,才能推动项目向前发展,最后达到项目通过验收,顺利完成项目的开发任务。

        【END】

        相关新闻

        联系我们
        联系我们
        分享本页
        返回顶部

          XML地图