软件开发管理新模式

软件开发管理新模式
传统的软件开发模式是以技术为主、以管理为辅,项目经理多数来自于技术开发人员,既要负责整个项目的推进,又要负责技术研发工作。尽管他是项目组中的技术权威,但他的管理能力不一定行,这样往往会使项目在管理方面陷入泥潭。
在实践了多个软件开发项目后,我们采用了一种新的软件项目开发管理模式—在项目组同时设立了项目经理和技术经理。
项目经理负责总控,管理项目日常事务,包括客户需求调研、项目组内部(公司部门之间)的组织与协调、人员管理、项目计划、风险管理、文档管理及评审等。
技术经理(也有的称之为构架设计师)则专职负责技术研发的管理和指导,包括需求分析、设计、编码和测试等工作。
采用这种模式,软件项目组按照既定的规范进行开发,不仅确保了产品的技术质量,还保证了项目组文档的完整性。
本篇文章将展示一个软件开发的部分流程,并通过这一流程,说明项目经理和技术经理如何在项目开发过程中相互配合。该流程是一个比较通用和规范的开发流程。
一个基本的软件开发流程,通常包括项目立项、计划、需求获取与分系、概要设计、详细设计、编码、测试、软件发布和软件维护阶段,如图所示。
这里写图片描述
在实际开发过程中,许多活动是并行或迭代的,在某一个时间段可能同时进行多项活动,或者是某一活动可能会要求返回到上一个阶段再次进行(精化)。
基于以上流程,项目经理和技术经理在各个开发阶段的具体活动(本过程覆盖大多数而非全部的软件生命周期,且不包括维护阶段)的职责各有不同,需要相互协调和相互补充。
1、 项目立项
此阶段工作以项目经理为主,技术经理为辅。
项目经理:全面规划项目工作的内容,确定目标市场、技术指标和应用要求,划定项目工作范围和交付成果,明确项目实现的总体设想和实施方案;明确项目需要用到的各种资源,与技术经理共同预估项目的工作量和成本;提交《项目任务书》,报公司上级领导审批,进行立项评审。
技术经理:负责确定项目中的新技术的可行性;协助项目经理明确项目需要用到的各种资源,协助预估项目的工作量和成本。
2、 项目计划
立项通过的项目才能进入正式的开发工作,此阶段工作同样以项目经理为主,技术经理为辅。
项目经理:召集关键技术人员(可以是其他项目组的成员),详细估算项目的工作量和成本;明确各阶段的活动内容,以及各阶段需要完成的软件工作产品,制定《工作拆分表(WBS)》,作为项目开展工作和详细计划的基础;对项目进行一系列的风险评估,进行详细进度计划安排,落实时间进度、资源(人员、设备)、技术、资金等,完成《软件开发计划》及进度表;组织项目组成员和高层对此阶段完成的文档进行评审。
技术经理:参与详细估算项目的工作量和成本;协助项目经理完成《软件开发计划》及《进度表》;参与评审本阶段提交的文档。
3、 需求获取与分析
从这一阶段开始,项目开发管理的重心开始转移,一直到测试任务完成以前,项目开发的工作都是以技术经理为主导,项目经理只是辅助监督技术经理按照流程的标准和要求完成任务。
需求的获取是一个不断反复、不断深化的过程,可能需要多次,并一直到软件开发活动结束为止。为使需求调研更有效果、针对性更强,此阶段开始前,建议由项目经理和技术经理共同准备一份《需求调研问卷》,将需要调研的问题详细罗列在问卷中,并根据问卷展开调研。问卷中的问题最初以客户的高层需求为主,随着设计与开发的深入,问题逐渐细化为系统实现的技术细节。
技术经理:与项目经理共同准备《需求调研问卷》,审核问卷中的问题;参与需求调研;调研结束后,根据项目需求报告界定的工作范围和应用方案的设计思路,进一步深入细化应用方案,描述将要开发的系统中包含的业务流程、约定、数据源、报表格式等,整理成《软件需求规格说明书》或《软件用例说明书》;指导测试组完成《系统测试用例》;参与评审本阶段提交的需求文档。
项目经理:参与准备《需求调研问卷》,审核问卷中的问题;参与需求调研;协助技术经理整理《软件需求规格说明书》;指导测试组完成《软件测试计划》;组织项目组成员对完成的需求文档进行评审。
4、 系统概要设计
此阶段主要是根据项目需求分析,对将要建立的满足用户需求的计算机系统进行分析。
技术经理:在系统分析过程中,指导设计人员(共同参与)划分需求的功能模块或包(Package),对每一个模块进行分析和抽象,找出描述模块及系统责任所需的类及对象,最终产生一个符合用户需求,能够直接反映模块和系统职责的分析模型;完成提交《系统概要设计说明书》;指导测试组完成《软件集成测试用例》;参与评审本阶段提交的概要设计文档。
项目经理:组织项目组成员或其他项目组的设计人员对完成的设计文档进行评审。
5、 系统详细设计
技术经理:根据项目需求分析和概要设计,针对具体实现中的人机界面、数据存储、任务管理等内容,指导设计人员(共同参与)进一步分析和细化,详细定义各个模块或包(Package)中的类和对象的属性与方法,以及它们之间的联系,完成包括UI设计、对象设计和数据库表设计;提交《系统详细设计说明书》、《数据库设计说明书》;参与评审本阶段提交的设计文档及模型。
项目经理:组织项目组成员对本阶段完成的详细设计文档及模型进行评审。
6、 编码实现
这一阶段的任务基本上由技术经理指导完成,只有在非常关键的代码模块或必要时(如外购软件等),才由项目经理组织代码的评审。
技术经理:根据系统详细设计的结果,通过具体的程序语言、数据库或者硬件设备指导程序员(共同参与)实现设计中的数据结构和算法;核查程序员完成的代码模块;指导开发人员(共同参与)集成各模块或子系统。
项目经理:组织项目组成员对本阶段提交的工作产品进行评审(可选)。
7、 测试
测试阶段的任务虽然主要由测试组完成,但测试工作的开展离不开技术经理的指导,而且更需要项目经理协调软件开发小组与测试组之间的关系。目前,对于测试的管理和跟踪多数采用回归测试的方式。
技术经理:当软件的各个子系统或整个系统完成后,指导测试组完成集成测试和系统测试任务;评审和核实测试组提交的《集成测试报告》和《系统测试报告》;根据测试结果分派任务给开发人员,指导(或共同参与)对软件产品进行修改。
项目经理:协调软件开发组与测试组之间的关系,指派测试任务给测试组;组织项目组成员对本阶段提交的工作产品进行评审。
8、 产品发布
本阶段的任务主要是完成产品的包装,这是软件开发的收尾工作,项目组的管理重任移交到项目经理。
项目经理:组织人员整理项目组内部的开发文档,如需求、设计、编码、测试以及各种开发管理文档资料;分派完成用户文档的任务,包括安装指南,使用手册,技术手册,培训教材等;指派撰写产品宣传资料的工作,例如产品介绍资料,演示光盘等;组织用户对完工的项目(提交的软件产品)按照验收步骤进行验收,完成《用户验收报告》。
技术经理:协助整理项目组内部的开发文档,如需求、设计、编码、测试以及各种开发管理文档资料;开发软件产品的安装程序;参与评审本阶段提交的工作产品。
9、 周期性活动
在项目开发过程中,有一些活动是贯穿整个软件开发过程的,我们将这些活动称之为周期性活动,包括项目计划调整、项目活动的跟踪与监控、风险再评估、配置管理、质量保证等,活动的结果主要由项目经理或指定人员定期或在事件驱动下更新(评审或审阅)《软件开发计划》、《项目问题日志》、《项目报告》、《项目风险日志》、《会议纪要》、《工作任务单》、《项目度量数据收集》等文档。
在项目中同时设立项目经理和技术经理,可以有效实现项目技术和管理上的分工合作。项目经理擅长管理,与客户交流时可以加强说服力,可以更直接地了解客户的要求,对客户提出变更请求管理更加合理,也更有助于文档的管理与评审活动的开展。
技术经理是技术权威,可以专注于技术研发工作,有助于提高软件开发的效率和产品质量。
当然,这种模式下的项目经理不仅要有丰富的软件开发和管理经验,不只是做计划、总结汇报、安排工作,同样也需要具备软件开发的技术背景。只有这样,才可以在开发过程中发现技术问题,并有助于更深入地了解项目技术架构和细节,保持项目中有关概念的一致性。
技术经理也不能只顾埋头苦干,也要兼顾项目的管理,要激发技术人员的创造性和积极性。项目经理与技术经理之间也要经常沟通,项目经理和技术经理在完成各自工作的同时,都要及时通知对方,避免形成项目组内部的帮派。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值