软件项目管理(4p)

在经历了软件危机和大量的软件项目失败以后,人们对软件工程产业的现状进行了多次的分析,得出了普遍性的结论:软件项目成功率非常低的原因可能就是项目管理能力太弱。由于软件本身的特殊性及复杂性,将项目管理思想引入软件工程领域,就形成了软件项目管理。软件项目管理是指软件生存周期中软件管理者所进行的一系列活动,其目的是在一定的时间和预设范围内有效的利用人力、资源、技术和工具,使软件系统或软件产品按原定计划和质量要求如期完成。

软件项目管理涉及的4p:有效的软件项目管理集中在4个p上,即人员(Person)、产品(Product)、过程(Procedure)和项目(Project)。

1、人员(Person)

人员是软件工程项目的基本要素和关键因素,在对人员进行组织时,有必要考虑参与软件过程(及每一个软件项目)的人员类型。一般来说,可以分为以下5类。

1)项目管理人员

项目管理人员负责软件项目的管理工作,其负责人通常称为项目经理。项目经理除了要求掌握相应的软件开发技术外,更多的应具备管理人员应有的技能。项目经理的任务就是要对项目进行全面的管理,具体表现在对项目目标要有一个全局的观点,制订项目计划,监控项目进展,控制反馈,组建团队,在不确定环境下对不确定问题进行决策,在必要的时候进行谈判并解决冲突。

2)高级管理人员

高级管理人员可以是领域专家,负责提出项目的目标并对业务问题进行定义,这类业务问题经常会对项目产生较大影响。

3)开发人员

这类人员常常掌握了开发一个产品或应用所需的专门技术,可胜任需求分析、设计、编码、测试、发布等各种相关的开发岗位。

4)客户

客户是一组可说明待开发软件的需求的人,也包括与项目目标有关的其他风险承担者。

5)最终用户

产品或应用提交后,那些与产品或应用进行交互的人称为最终用户。

软件项目的组织称为软件项目组,每一个软件项目组都有上述人员参与,项目组的组员必须最大限度的发挥每个人的技术和能力。

2、产品(Product)

在进行项目计划之前,应该首先进行项目定义,也就是定义项目范围,其中包括建立产品的目的和范围、可选的解决方案、技术或管理的约束等。

软件开发者和客户必须一起定义产品的目的和范围。一般情况下,该活动作为系统工程或业务过程工程的一部分,持续到软件需求分析阶段的前期。其目的是从客户的角度定义该产品的总体目标,但不必考虑这些目标如何实现。软件范围定义了与软件产品相关的数据、功能和行为及相关的约束。

软件范围是通过回答下列问题来定义的。

1)项目环境

要开发的软件如何适应于大型的系统、产品或业务环境,该环境下要施加什么约束?

2)信息目标

软件要产生哪些客户可见的数据对象作为输出?需要什么数据对象作为输入?

3)功能和性能

软件要执行什么功能才能将输入数据变换成输出数据?软件需要满足什么特殊的性能要求?

软件项目范围必须是无二义的和可理解的,为控制其复杂性,必要时还需对问题进行分解。

3、过程(Procedure)

传统的项目管理有大项目、项目、活动、工作包、工作单元等多种分解层次,对于软件项目来说,强调的是对其进行过程控制,通常将项目分解为任务、子任务等,其分解准则是基于软件工程的过程。

软件过程提供了一个项目团队要选择一个适合于待开发软件的过程模型(如瀑布模型等)。项目团队必须决定哪种过程模型最适合于:需要该产品的客户和从事开发工作的人员;产品本身的特性;软件团队所处的项目工作环境。在选定过程模型后,项目团队可以基于这组过程框架活动来制订一个初步的项目计划。一旦确定了初步计划,过程分解就开始了,也就是说,必须制订一个完整的计划来反映框架活动中所需要完成的工作任务。

4、项目(Project)

进行有计划和可控制的软件项目是管理复杂性的一种方式。Reel提出了包含以下5个部分常识的软件项目方法。

1)明确目标及过程

充分理解待解决的问题,明确定义项目目标及软件范围,为项目小组及活动设置明确、现实的目标,并充分发挥相关小组的自主性。

2)保持动力

为了维持动力,项目管理者必须提供激励措施以保持人员变动为绝对最小量。小组应该强调所完成的每个任务的质量,而高层的管理应该尽量不干涉项目小组的工作方式。

3)跟踪进展

针对每个软件项目,当每个任务的工作制品(如规约、源代码、测试用例集合等)作为质量保证活动的一部分而被批准(通过正式的技术评审)时,对其进展进行跟踪,并对软件过程和项目进行测量。

4)做出明智的决策

在本质上,项目管理者和软件小组的决策应该“保持其简单”。只要有可能,就使用商用成品软件或现有的软件构件或模式,可以采用标准方法避免定制接口,识别并避免显而易见的风险,以及分配比你认为的时间更多的时间来完成复杂或有风险的任务。

5)进行事后分析

建立统一的机制,从每个项目中获取可学习的经验。评估计划的进度和实际的进度,收集和分析软件项目度量数据,从团队成员和客户处获取反馈,并记录所有的发现。

以上内容来自于中级软件设计师学习教程。

posted @ 2020-06-11 23:34  jason小蜗牛  阅读(2201)  评论(0编辑  收藏  举报