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