软件项目管理
munix
摘要
软件项目管理有很多种方法来进行,但很多标准如(CMM 或是ISO9000) 等都没有真正可操作的方法,也没有对实际项目的管理进行操作上的指导,而且各个公司在真正项目实施中由于受到各合作方或是自己各项资源因素等的约束,都未能很好的进行软件项目的管理,基本上很多中小公司的软件项目管理还是停留在没有目标,计划, 流程的基础上,下面简单谈谈适用中小企业对软件项目管理的一种看法。
关键字 软件项目、流程
软件项目管理主要涉及到一个软件项目从前期需求到项目终结的整个过程,同时涉及到软件项目过程中参与部门、人员、以及各里程碑需要提交的成果。软件项目管理包括几个基本的部分:
1、项目准备阶段:包括项目成立相关工作;
2、需求整理阶段: 主要完成项目需求的收集和描述;
3、项目计划阶段:根据项目的需求提出详细的项目计划,包括人力、物力、时间等方面的计划,同时也包括项目的考核标准和考核计划;
4、项目实施阶段:包括项目的分析、设计、实现以及测试标准和计划;
5、项目测试阶段:完成项目的测试工作;
6、项目结束阶段:包括项目的验收终结以及最后的考核。
软件项目管理的核心思想在于:
1、尽可能地精确估计项目的进度和成本预算,尽可能的确保软件项目的质量;
2、尽可能地对项目成果进行公司层面的积累;
3、保证项目的可持续性;
4、保证项目的可扩展性;
5、为项目向产品方向转变提供基础信息;
将软件项目管理的流程分成十个基本环节:项目认证、项目成立、项目初期工作、项目计划、Story Board 和技术储备、市场资料编写、体系结构设计、系统设计和开发、项目测试、项目结案。接下来详细描述每个环节的目标以及要求参与的部门或人员,并阐述在每个环节都会需要提交的成果。
一、项目认证
公司会有不同的渠道提出软件项目开发的要求,这些要求需要得到公司各个层面的认证才会真正进入开发的流程。这么做的原因是为了避免由于项目要求不合理而导致的无谓的开销。
项目的认证包括几个基本部分:
1、公司决策层战略部署认证:这部分由公司决策层完成,从公司发展角度考虑是否实施该项目;
2、市场可行性认证;这部分由市场方面进行,主要从市场角度对项目进行评估;
3、技术可行性认证:技术部门进行,主要看公司技术已经所能动员到的自己公司技术以及周边公司技术是否可以承接该项目;
这一阶段需要提交两份文档:《XXX 项目市场可行性报告》由公司的市场部门负责签字认可、《XXX 项目技术可行性认证报告》由技术研发部负责签字认可。两份文档都顺利提交后,进入下一个环节。
二、项目成立
项目成立主要包括以下几个内容:
1、项目立案并命名及取相关代号;
2、任命项目负责人;
3、选派项目初期需求规格和功能列表分析人员;
4、制定项目初期计划和绩效计划。
值得提醒的是,这个阶段项目组还不会需要大量技术人员的介入,主要是完成需求和功能分析工作。初期计划主要是对需求分析和功能分析的工作提出进度和质量要求,当然,绩效也是针对这两个方面进行。这一阶段需要提交《XXX 项目立案和负责人任命书》以及两份文档:《XXX 项目初期进度计划》、《XXX 项目初期绩效计划》都由项目负责人提出,并进行监督实施与考核。
三、项目初期工作
项目初期主要是完成三个方面的工作:
1、项目章程的制定。项目章程主要讲述项目的目标、并明确各项目干系人的责任与义务,该章程可由项目主管与需求提出方一起协商制定,以规范各项目干系人的责任与义务,明确项目进行过程中各相关人员需遵守的规则。此时需提交《XXX 项目章程》,需客户方与项目主管一并签字认可。完成该项工作后,可以进入下一环节的工作。
2、完成SRS(系统需求规格)报告。这份报告是从客户和市场的角度出发,以非技术的方式平白地阐述对项目的要求,报告需要对各个细节也做详细地描述,以便指导《XXX Feature List 》的编写,一般这份SRS 报告可以直接由市场人员组织编写或是需求提出方进行提交。这份报告要得到市场方面或客户方面的认可,才能提交,并开始编写Feature List 报告。
3、完成Feature List(功能列表)报告。这份报告是从技术和项目产品的角度出发, 描述系统将通过那些功能、性能上的设计来回答《XXX SRS 》中提出的需求,文档对功能和性能的描述也必须非常详细,以便指导后期的设计开发。
这一阶段需要提交三份文档:《XXX 项目章程》需客户方与项目主管一并签字认可; 《XXX SRS》( 系统需求规格)由市场负责人和编写人员共同签字认可;《XXX Feature List 》(功能列表)由项目技术负责人和编写人员签字认可。
四、项目计划
拿到《XXX Feature List 》之后,项目主管通过项目工作内容分解就可以开始制定详细的项目计划,主要包括以下几个部分的工作:
1、预算项目所需的人力(Man Power )。
2、预算项目所需的资源(设备、资金等)。
3、提出接下来所有流程详细的Schedule (可以分阶段完成)。
4、提出项目绩效计划。
这一阶段需要提交四份报告:《XXX Man Power 》、《XXX ResourceRequirement 》(资源需求)、《XXX Schedule 》、《XXX 绩效计划》由项目负责人编写,并要项目技术负责人、项目负责人以及编写者签字认可。
五、Story Board 和技术储备
一旦详细的项目计划提交,就可以按照man power 的要求安排相关人员进入项目组。这一阶段的重点是编写Story Board,就是对将要开发的项目从产品或项目设计的角度进行描述, 对于以人机交互为主的系统,主要是通过绘制的方法,描述软件的Interaction(互动),同时完成UI 的设计;对于非人机交互为主的系统,主要以说明系统运作机理为方法,对系统进行阐述(尽量以图的方式,以便制作相关资料)。对于这份文档中Interaction 的描述要非常详细,以便直接指导开发人员进行GUI 部分的代码编写。
与此同时,技术人员开始技术储备。所谓技术储备,就是让项目组工程师对项目中可能用到的技术和思想进行学习和熟悉,包括对可能碰到的技术问题进行攻关。
这个阶段需要出具提交两份报告:《XXX Story Baord 》由Producer 编写,客户和项目负责人签字认可;《XXX 技术储备报告》(描述技术储备的情况)由相关人员编写, 项目负责人签字认可。
六、市场资料编写
StoryBoard 编写结束后,已经可以为这个项目进行商业资料的编写,这样就可以提前开始产品或项目的销售准备工作。与传统的项目管理方法相比较,StoryBoard 的出现为公司项目管理和销售提供一个非常有价值的方法,在这种模式下,项目/产品的销售可以在未开发完成就提前展开。另外,对于项目前期的工作人员,实际上已经可以在项目的StoryBoard 完成后,返回去考虑下一个版本的需求分析和产品设计,因此可以相比竞争对手提前很长时间开始商业的运作。
七、体系结构设计
体系结构设计主要是完成以下的工作: 1、定位系统运行平台; 2、定位系统开发平台;
3、定位系统开发模式和开发工具;
4、系统各个子系统/模块/物理代码之间的关系和通讯标准;
5、系统物理分布设计(例如集群设计/网格计算等)。
体系结构设计是指导项目开发的核心技术设计文档,他宏观上对项目开发采用的技术、开发方法、设计思想都要做详细的描述,以便约束和指导设计开发人员进行详细的设计和开发。这个阶段需要出具一份《XXX 体系结构设计》, 由项目组设计人员完成,并要项目主管/技术负责人签字认可。
八、系统设计和开发
这是软件项目开发的主要阶段,包括多个部分的内容: 1、系统各个部分的设计; 2、开发接口的定义; 3、通讯协议的定义; 4、数据库设计:这部分包括数据库表设计和数据库系统管理等设计; 5 、相关技术主题的文档总结和解说:针对项目中比较有价值的技术和思想,或者比较难理解的部分进行描述;
6、系统各个部分的实现:就是最后的开发层面,主要是代码和相关工作文档;7、测试计划编写;
这个阶段需要提交以下文档:《XXX 系统设计之***篇》、《XXX 接口之***篇》、《XXX 通讯协议之*** 篇》、《XXX 数据库设计*** 篇》、《XXX 主题解答之***篇》、《XXX 测试计划》、《XXX 功能设计与实现文档》,这些文档要求项目主管和技术负责人签字认可。
九、项目测试
项目测试分成三个阶段:
1、项目团队内部测试:主要是开发人员内部对系统的结构和代码进行基于文档和代码层面的检查和测试。这部分测试主要检查开发人员是否存在系统设计或代码编写层面的错误, 可以分次进行。
2、公司内部或小范围内测试:根据《测试计划》对软件进行alpha 测试,这部分测试主要检查软件是否存在逻辑层面的错误,可以分次进行。这个部分需要测试部门或其他部门介入协助完成;
3、大范围测试:根据《用户使用手册》等使用帮助文档, 对软件进行实际环境使用和测试。这部分测试除了完成上述测试目标外,重点实现用户使用性好坏的测试,同时为新的版本收集用户的建议和新的需求,可以分次进行。这个部分需要技术支持和客户服务部门以及客户介入协助完成。
这一阶段需要出具:《内部测试报告》由参与者提供,项目主管签字认可、《alpha 测试报告》由测试部门提供, 项目主管签字认可、《beta 测试报告》由支持和服务部门收集用户反馈而总结,项目主管签字认可。
十、项目结案
项目结案阶段主要完成以下工作: 1、所有资料提交到公司层面统一管理; 2、资源回归; 3、项目绩效考核;
4、人员回归原有岗位。 这一阶段需要出具《XXX 项目结案报告》由项目主管编写。
总结:通过有效的软件项目管理流程,可以使软件项目具有非常强的可操作性,同时,也改变了公司原有软件项目常常限入困境的局面,并且各项目干系人也明确各自拥有的权利与责任及需要提交的成果,可以使项目在比较顺利的过程中实现,并符合项目提出方的要求。同时,软件项目的管理还需要进一步在实践中完善与提高。
|