软件项目管理

一. 软件项目管理的案例

  • 软件项目管理的挑战
    • 在预定的范围、质量、时间和成本等约束条件下交付项目
    • 通过优化资源(资金、人、原料、能源、空间等)的分配与集成来满足预先定义的目标
  • 软件项目的特征
    • 软件产品的不可见性 软件项目复杂和抽象
    • 项目高度不确定性 预定计划和实际情况存在较大偏差
    • 软件过程的多变化性 不确定、不稳定
    • 软件人员的高技能及其高流动性 风险

软件项目管理的“4P”

image-20211221101701218
image-20211221101724398

二. 人员 People

  • 软件项目的参与人员
    • 高级管理者:负责定义业务问题(产品经理
    • 项目(技术)管理者:计划、激励、组织和控制软件开发人员(项目经理
    • 开发人员:拥有开发软件所需技能的人员
      • 系统分析员、系统架构师、设计师、程序员、测试人员、质量保证人员、…
    • 客户:甲方
    • 最终用户:直接使用软件的人
  • 软件开发团队的组织模式
    • 一窝蜂模式:没有明确分工
    • 主治医师模式:首席程序员处理主要模块的设计和编码,其他成员从各种角度支持Ta的工作 明星模式
      • image-20211221110149609
    • 社区模式:志愿者参与,参与自己感兴趣的项目;众人拾柴火焰高,不拾柴火熄灭;社区不意味着随意,代码复审和签入的质量管理 开源项目
    • 交响乐团模式:门类齐全,各司其职;演奏协调,遵循曲谱 类似工厂,严格遵循预定生产流程
    • 爵士乐模式:主乐手吹主题,其余人员即兴发挥,主乐手最后再加入,回应主题 类似于一群天才构成的敏捷团队
    • 功能团队模式:不同能力,平等协作(没有管理与被管理的关系),项目完成重新组织
    • 官僚模式:除了技术上的合作和领导,还混进了组织上的领导和被领导关系

大型项目的技术管理组织结构

image-20211221155923728

三. 产品 Product

image-20211221155949463

  • 首先确定软件范围
    • 功能和非功能(性能、可用性、安全、法律等)
    • 软件范围应确定:包括管理层和技术层都必须无歧义
  • 确定范围后,对其进行分解——分而治之
  • 产品结构分解(Product Breakdown Structure, PBS)产品分解工具
    • PBS:通过分层的树型结构来定义和组织项目范围内的所有产出物(产品)自顶向下逐级细分
    • 产出物:项目结束时需要提交的最终产品,在项目之初就可以准确预计

四. 过程 Process

  • Step1:选择合适的软件过程模型
  • Step2:根据选择的过程模型,对其进行适应性修改
  • Step3:确定过程中应包含的工作任务列表

工作结构分解(Work Breakdown Structure, WBS),过程分解工具

五. 项目 Project

  • 项目关注的四个方面:范围、时间、成本、质量
  • 项目管理的主要任务:项目可行性分析与估算项目进度安排项目风险管理项目质量管理项目跟踪与控制
  • 原则:Why(为什么开发这个系统)、What(将要做什么)、When(什么时候做)、Who(某功能谁来做)、Where(他们的组织机构位于何处)、How(如何完成技术和管理工作)、How much(各种资源分别需要多少)

六. 可行性分析与估算

可行性分析与估算

  • 项目开始之前预先估计三件事:需要多少工作量、需要多少时间、需要多少人员
  • 此外,预测所需要的资源(硬件和软件)以及蕴含的风险
  • 由上述得出项目是否可行的结论

确定范围

  • 范围:描述将要交付给最终用户的功能和特性、输入输出数据、用户界面、系统性能、约束条件、接口和可靠性等,以及期望的时间、成本目标(主要是业务范围,时间和成本只需要简述且从业务范围得出
  • 两种方法:项目成员交流之后,写出软件范围的叙述性描述(开发人员给出);由最终用户给出一组用例
  • 注意:并不是客户所有的需求都来者不拒,需要分别对待;用户签字确认

image-20211221190444925

可行性分析:技术、经济、时间、资源

软件项目估算(时间、成本、资源)

变化多 估算不精确

估算越精确 项目成功可能性越高

估算方法:代码行、功能点、过程时间、其他(不同方法 考虑因素不同 复杂程度不同)都是实际经验总结

COCOMO (COnstructive COst MOdel, 软件构造性成本模型):回归分析,从项目历史和现状某些特性作参数进行计算,用于工作量估算与成本估算,广泛使用和全面估算。

七. 项目进度计划与监控

项目管理里通常采用甘特图(Gantt Chart)来描述任务的进度安排

  • 资源分配给任务:资金、人员、设备、环境
  • 明确产出结果:每一项产出结果是什么,对应PBS哪一部分
  • 明确里程碑:项目关键产出物,标志某一阶段完成

项目进度表只是提供了一张进度路线图,在实际执行过程中,需要定期对其进行跟踪和控制,以决定是否需要对进度计划进行调整

敏捷开发的项目管理工具:VersionOne,敏捷领域最流行的商业化项目管理工具之一

八. 项目风险管理

九. 项目质量管理