软件项目管理

从事软件开发的 IT 公司的工作模式可以分为两个部分:

  • 软件创建
  • 软件项目管理

项目是定义明确的任务,是为实现目标(例如软件开发和交付)而执行的多项操作的集合。项目可以具有以下特点:

  • 每个项目可能都有一个独特而明确的目标。
  • 项目不是例行活动或日常运营。
  • 项目有开始时间和结束时间。
  • 项目在实现目标时结束,因此它是组织生命周期中的一个临时阶段。
  • 项目需要时间、人力、财务、材料和知识库方面的充足资源。

软件项目

软件项目是从需求收集到测试和维护的整个软件开发过程,根据执行方法在指定的时间段内完成,以实现预期的软件产品。

软件项目管理的必要性

软件被认为是一种无形产品。软件开发是全球商业中一种全新的流派,在构建软件产品方面的经验非常少。大多数软件产品都是根据客户需求量身定制的。最重要的是,底层技术变化和进步如此频繁和迅速,以至于一种产品的经验可能无法应用于另一种产品。所有这些业务和环境约束都会给软件开发带来风险,因此有效管理软件项目至关重要。

Time_Cost_Quality

上图显示了软件项目的三重约束。交付优质产品、将成本保持在客户预算范围内并按计划交付项目是软件组织的重要组成部分。有几个因素,包括内部因素和外部因素,可能会影响这个三重约束三角。三个因素中的任何一个都会严重影响其他两个因素。

因此,软件项目管理对于整合用户需求以及预算和时间限制至关重要。

软件项目经理

软件项目经理是负责执行软件项目的人。软件项目经理彻底了解软件将经历的 SDLC 的所有阶段。项目经理可能永远不会直接参与生产最终产品,但他控制和管理生产中涉及的活动。

项目经理密切监控开发过程,准备和执行各种计划,安排必要和足够的资源,保持所有团队成员之间的沟通,以解决成本、预算、资源、时间、质量和客户满意度问题。

让我们看看项目经理肩负的一些责任 -

管理人员

  • 担任项目负责人
  • 与利益相关者联络
  • 管理人力资源
  • 设置报告层次结构等。

管理项目

  • 定义和设置项目范围
  • 管理项目管理活动
  • 监控进度和绩效
  • 每次进行风险分析阶段
  • 采取必要措施避免或解决问题
  • 充当项目发言人

软件管理活动

软件项目管理包括多项活动,包括项目规划、确定软件产品范围、估算各种成本、安排任务和事件以及管理资源。项目管理活动可能包括:

  • 项目规划
  • 范围管理
  • 项目估算

项目规划

软件项目规划是在软件生产实际开始之前执行的任务。它用于软件生产,但不涉及与软件生产有任何直接联系的具体活动;相反,它是一组促进软件生产的多个流程。项目规划可能包括以下内容:

范围管理

它定义了项目的范围;这包括制作可交付软件产品所需完成的所有活动和流程。范围管理至关重要,因为它通过明确定义项目中要做什么和不做什么来创建项目的边界。这使得项目包含有限且可量化的任务,这些任务可以轻松记录下来,从而避免成本和时间超支。

在项目范围管理期间,需要 -

  • 定义范围
  • 确定其验证和控制
  • 将项目划分为多个较小的部分,以便于管理。
  • 验证范围
  • 通过合并范围变更来控制范围

项目估算

为了有效管理,必须准确估算各种措施。通过正确的估算,管理人员可以更高效、更有效地管理和控制项目。

项目估算可能涉及以下内容:

  • 软件大小估算

    软件大小可以通过 KLOC(千行代码)或计算软件中的功能点数量来估算。代码行取决于编码实践,功能点根据用户或软件需求而变化。

  • 工作量估算

    管理人员根据人员需求和生产软件所需的工时来估算工作量。估算工作量时,应该知道软件的大小。这可以通过管理人员的经验、组织的历史数据得出,也可以使用一些标准公式将软件大小转换为工作量。

  • 时间估算

    一旦估算出规模和工作量,就可以估算出生产软件所需的时间。根据需求规范和软件各个组件的相互依赖性,所需工作量分为子类别。软件任务根据工作突破结构 (WBS) 分为较小的任务、活动或事件。这些任务按日或按月安排。

    以小时或天为单位完成所有任务所需的时间总和就是完成项目所投入的总时间。

  • 成本估算

    这可能被认为是最困难的,因为它取决于比之前任何一个都多的元素。要估算项目成本,需要考虑 -

    • 软件大小
    • 软件质量
    • 硬件
    • 附加软件或工具、许可证等。
    • 具有特定任务技能的熟练人员
    • 涉及的旅行
    • 沟通
    • 培训和支持

项目估算技术

我们讨论了涉及项目估算的各种参数,例如规模、工作量、时间和成本。

项目经理可以使用两种广泛认可的技术来估算列出的因素 -

分解技术

该技术假设软件是各种组合的产品。

有两种主要模型 -

  • 代码行 估算是根据软件产品中的代码行数进行的。
  • 功能点 估算是根据软件产品中的功能点数进行的。

经验估算技术

该技术使用经验得出的公式进行估算。这些公式基于 LOC 或 FP。

  • Putnam模型

    该模型由 Lawrence H. Putnam 提出,基于 Norden 频率分布(瑞利曲线)。Putnam 模型将所需的时间和工作量与软件规模进行映射。

  • COCOMO

    COCOMO 代表由 Barry W. Boehm 开发的 COnstructive COst MOdel。它将软件产品分为三类软件:有机、半独立和嵌入式。

项目进度安排

项目中的项目进度安排是指按指定顺序并在分配给每个活动的时间段内完成的所有活动的路线图。项目经理倾向于定义各种任务和项目里程碑,并根据各种因素进行安排。他们寻找进度表中处于关键路径上的任务,这些任务必须以特定方式(由于任务相互依赖)完成,并严格在分配的时间内完成。安排在关键路径之外的任务不太可能影响整个项目的进度。

要安排项目进度,必须 -

  • 将项目任务分解为更小、更易于管理的形式
  • 找出各种任务并将它们关联起来
  • 估计每个任务所需的时间范围
  • 将时间划分为工作单元
  • 为每个任务分配足够数量的工作单元
  • 计算项目从开始到结束所需的总时间

资源管理

用于开发软件产品的所有元素都可以被视为该项目的资源。这可能包括人力资源、生产工具和软件库。

资源数量有限,并作为资产池留在组织中。资源短缺会阻碍项目的发展,并可能落后于进度。分配额外资源最终会增加开发成本。因此,有必要为项目估算和分配足够的资源。

资源管理包括 -

  • 通过创建项目团队并为每个团队成员分配职责来定义适当的组织项目
  • 确定特定阶段所需的资源及其可用性
  • 通过在需要时生成资源请求并在不再需要时取消分配资源来管理资源。

项目风险管理

风险管理涉及识别、分析和预防项目中可预测和不可预测的风险的所有活动。风险可能包括以下内容:

  • 经验丰富的员工离开项目,新员工加入。
  • 组织管理发生变化。
  • 需求变更或误解需求。
  • 低估所需的时间和资源。
  • 技术变化、环境变化、商业竞争。

风险管理流程

风险管理流程涉及以下活动:

  • 识别 - 记录项目中可能发生的所有潜在风险。
  • 分类 - 根据已知风险对项目的可能影响,将其分为高、中、低风险强度。
  • 管理 - 分析各个阶段发生风险的概率。制定计划以避免或面对风险。尝试尽量减少副作用。
  • 监控 - 密切监控潜在风险及其早期症状。同时监控为减轻或避免风险而采取的措施的效果。

项目执行和监控

在此阶段,项目计划中描述的任务将按照其时间表执行。

执行需要监控,以检查一切是否按计划进行。监控是通过观察检查风险的可能性并采取措施解决风险或报告各种任务的状态。

这些措施包括 -

  • 活动监控 - 可以每天监控某个任务中安排的所有活动。当任务中的所有活动都完成后,即视为完成。
  • 状态报告 - 报告包含在给定时间范围内(通常为一周)完成的活动和任务的状态。状态可以标记为已完成、待处理或正在进行等。
  • 里程碑检查表 - 每个项目都分为多个阶段,主要任务(里程碑)基于 SDLC 的阶段执行。此里程碑检查表每隔几周准备一次,并报告里程碑的状态。

项目沟通管理

有效沟通对项目的成功至关重要。它弥合了客户和组织之间、团队成员以及项目中其他利益相关者(如硬件供应商)之间的差距。

沟通可以是口头的,也可以是书面的。沟通管理流程可能有以下步骤:

  • 规划 - 此步骤包括识别项目中所有利益相关者以及他们之间的沟通方式。它还考虑是否需要任何额外的通信设施。
  • 共享 - 在确定规划的各个方面后,经理专注于在正确的时间与正确的人分享正确的信息。这使每个参与项目的人都了解项目进度和状态。
  • 反馈 - 项目经理使用各种措施和反馈机制并创建状态和绩效报告。该机制确保来自各个利益相关者的输入作为反馈传达给项目经理。
  • 结束 - 在每个重大事件结束时、SDLC 阶段结束时或项目本身结束时,都会正式宣布行政结束,通过发送电子邮件、分发文件硬拷贝或其他有效沟通方式向每个利益相关者通报最新情况。

收尾工作后,团队将进入下一阶段或项目。

配置管理

配置管理是跟踪和控制软件在产品需求、设计、功能和开发方面的变更的过程。

IEEE 将其定义为"识别和定义系统中的项目、控制这些项目在其整个生命周期中的变更、记录和报告项目状态和变更请求以及验证项目的完整性和正确性的过程"。

通常,一旦 SRS 最终确定,用户要求变更的可能性就会降低。如果发生变更,则只有在获得高级管理层的事先批准后才能处理变更,因为可能会造成成本和时间超支。

基线

如果 SDLC 阶段已建立基线,则认为该阶段已结束,即基线是定义阶段完整性的测量值。当与该阶段相关的所有活动都已完成并有据可查时,该阶段即已建立基线。如果不是最后阶段,其输出将用于下一个直接阶段。

配置管理是组织管理的一项学科,负责处理阶段基线后发生的任何变更(流程、要求、技术、战略等)。CM 会检查软件中的任何更改。

变更控制

变更控制是配置管理的功能,可确保对软件系统所做的所有更改都是一致的,并符合组织规则和规定。

产品配置的更改要经过以下步骤 -

  • 识别 - 变更请求来自内部或外部来源。当变更请求被正式确定后,就会被妥善记录下来。

  • 验证 - 检查变更请求的有效性并确认其处理程序。

  • 分析 - 从进度、成本和所需工作量的角度分析变更请求的影响。分析未来变更对系统的整体影响。

  • 控制 - 如果未来变更影响系统中的太多实体或不可避免,则在将变更纳入系统之前必须获得高层批准。决定变更是否值得纳入。如果不是,则正式拒绝变更请求。

  • 执行 - 如果前一阶段决定执行变更请求,则此阶段采取适当措施执行变更,必要时进行彻底修订。

  • 关闭请求 - 验证变更是否正确实施并与系统的其余部分合并。软件中新纳入的变更已正确记录,请求正式关闭。

项目管理工具

即使项目是按照既定方法开发的,风险和不确定性也会随着项目规模的扩大而成倍增加。

有一些工具可以帮助进行有效的项目管理。下面介绍一些工具 -

甘特图

甘特图由 Henry Gantt (1917) 设计。它表示与时间段相关的项目进度。它是一个水平条形图,其中的条形表示活动和为项目活动安排的时间。

甘特图

PERT 图

PERT(项目评估与审查技术)图是一种将项目描绘为网络图的工具。它能够以并行和连续的方式图形化地表示项目的主要事件。事件相继发生,表明后一个事件与前一个事件之间存在依赖关系。

PERT Chart

事件显示为编号节点。它们通过标记箭头连接,描绘项目中的任务顺序。

资源直方图

这是一个图形工具,其中包含条形图或图表,表示项目事件(或阶段)随时间推移所需的资源(通常是熟练的员工)数量。资源直方图是进行人员规划和协调的有效工具。

直方图表 直方图图表

关键路径分析

此工具有助于识别项目中相互依赖的任务。它还有助于找出成功完成项目的最短路径或关键路径。与 PERT 图一样,每个事件都分配有特定的时间范围。此工具显示事件的依赖关系,假设只有前一个事件完成后,事件才能继续进行下一个事件。

事件按其最早可能的开始时间排列。起始节点和结束节点之间的路径是关键路径,无法进一步缩短,所有事件都需要按相同顺序执行。