谈论软件研发项目需求管理

时间:2022-04-18 11:17:00

谈论软件研发项目需求管理

1概述

目前根据国内软件开发组织的成熟度,大概可以分如下几类:

(1)处在接单求生存的阶段的小作坊,管理者还根本没有项目管理的意识,以满足客户需求、定制开发和回款为第一要务;

(2)开始尝试按照项目管理的思路与方法管理软件开发项目,但发现推行困难,不得要领,目前很多中小型的软件开发组织都处于这个阶段;

(3)大型的软件企业已经通过CMM|ISO认证、有足够的资源做保障,实行规范的项目管理制度,如一些软件外包工厂。所谈的软件项目管理主要是针对第二种类型,是基于实际工作的实施需要制定,摈弃单纯满足管理的要求,站在项目的实际参与者(即开发人员)的角度去制定的,而不是单纯满足项目管理层的控股欲,以避免管理活动与软件开发的具体活动相脱节,客观上导致了管理费的增加,而看不到项目管理对于项目的真实价值。

2流程

在软件项目管理过程中,不仅要努力实现项目的范围、时间、成本和质量等目标,还必须协调整个项目过程,以满足项目参与者及其他利益相关者的需要和期望;随着软件规模和所涉及领域的不断扩大,软件项目的管理越来越困难。严谨的软件过程控制与管理不仅可以在每个阶段回顾和纠正项目的偏差,识别软件项目的风险甚至果断中止项目,而且可以将人才流动所带来的不利影响减少到最小。要进行有效的过程控制,必须明确软件项目管理流程。

2.1启动一个软件项目软件人员和用户在系统工程阶段确定项目的目标和范围。目标标明软件项目的目的,但不涉及如何去达到这些目的。范围标明软件要实现的基本功能,并尽量以定量的方式界定这些功能。

2.2度量度量的作用是为了有效地定量地进行管理。

2.3估算在软件项目管理的过程中一个关键的活动是制定项目计划。在做计划时,必须对需要的人力、项目的持续时间、成本作出估算,这种估算大多参考以前类似的项目而作出的。

2.4风险分析风险分析是贯穿软件工程过程中的一系列风险管理的步骤,其中包括风险识别、风险估计、风险管理策略、风险解决和风险监督,它能让人们主动攻击风险。

2.5进度安排对于进度安排,需要考虑的是预先对进度如何计划,工作怎么就位,如何识别定义好的任务,管理人员对结束时间如何掌握,如何识别和监控关键路径以确保结束,对进展如何度量,以及如何建立分割任务的里程碑。首先识别一组项目任务,建立任务之间的相互关联,然后估算各个任务的工作量,分配人力资源制定进度计划。

2.6追踪和控制由项目管理人员负责追踪在进度安排中标明的每一个任务,并根据实际完成情况对资源重新定向、对任务重新安排,填写更改单申请客户提出;开发团队提出;提交给项目经理过滤处理不是问题,忽略需要发起小组会议小问题,项目经理可自做决定项目经理发起小组会议开会决策如何处理修改Scope修改计划不接受接受,并本次开发考虑接受,以后版本中再考虑修改Sconematrix修改有关合同信息修改Scopematrix将更改内容安排到开发计划图1从而较好地控制软件开发。实践证明,确定每个阶段的主要流程内容和里程碑,并采用评价指标体系和一系列的模板及表格进行软件项目开发过程的控制和管理,会使软件项目的成功率显著提高。

3需求管理

软件项目管理要求转变技术为先的观点,站在用户的角度,了解用户的需求,看看用户需要的是什么,并积极应对需求变更。

3.1对客户自身情况的了解在项目前期,项目组应熟悉客户的行业背景,包括相关政策、法规、客户信息化的现状、与上级、下级以及同级单位或者其他相关单位之间的业务关系等,为项目做一个明确的定位。

3.2找到真正的客户有时一个项目进行了很长时间,项目组都未必知道项目的真正客户是谁,最常犯的错误是仅将项目成果的使用者作为客户。试想,连自己的客户都没搞清楚,又怎能理解客户需求。例如,电子政务系统的真正用户是该机关的决策层,而不是具体负责这个电子政务项目的某个部门。如果需求仅仅来自负责这个项目的某个部门,那么即使这个系统建好了,也极有可能没有真正达到目的。但是由于各种原因,决策层人员往往没有足够的精力来关心这件事,这时如果项目组不去想方设法解决这个问题的话,那么,这个项目从一开始就陷入泥潭。

3.3与客户进行沟通在需求调研阶段,要学习以行业语言而不是计算机语言和客户对话。在对用户的业务背景、业务流程等知识有一些初步认识的基础上,项目组要以客户所能接受的方式和“语言”与其进行沟通,了解方方面面的细节。对于一些特别复杂的业务,软件开发人员应以实习的身份具体参与到客户的实际工作中,充分、准确地把握客户的所思所想。演员为了演好一个角色可以去体验生活,软件人员的“实习”就是另一种体验,它可以帮助开发人员切身体会客户的想法,并且在这一过程中双方可充分沟通达到共识,以减少今后需求变更的几率。

3.4客户的积极参与不仅是在策划过程中,在整个软件项目的开发过程中都必须强调客户的参与。由于软件项目的成果将改变人们的生活或工作方式。因此,客户必须在项目策划阶段就了解项目成果对其生活或工作方式的影响,他们必须开发相应的政策、流程等以准备接受项目成果。