软件项目管理-敏捷先锋朱少民

前言

软件项目管理相关内容

第一章:概述

项目管理的生命周期

项目管理的生命周期——“启动、计划、执行、控制、结束”演进顺序

项目的概念

项目是为完成某个独特的产品或服务所做的一次性任务

  • 目标性,其结果只可能是一种期望的产品或服务。

  • 独特性,每一个项目都是唯一的。

  • 一次性,有确定的起点和终点。

  • 约束性,每一个项目的资源、成本和时间都是有限的。

  • 关联性,所开展的活动是密切相互关联的。

  • 多方面性,一个项目涉及多个相关利益者

  • 不可逆转性。不论结果如何,项目结束了,结果也就确定了。

项目-项目集-项目组合三者关系

项目管理的构成和约束因素

项目管理的对象-3P

软件项目的分类

  • 规模划分比较简单,可分为大型项目、中小型项目等。
  • 按软件开发模式划分,可分为组织内部项目、直接为用户开发的外部项目和软件外包项目。
  • 按产品不同的交付类型可分为产品型项目、一次型项目。
  • 按软件商业模式划分,可分为软件产品销售、在线服务两种模式,或者分为随需(ondemand/SaaS)服务模式和内部部署(on-premise/on-Site)模式。
  • 按软件发布方式可分为新项目、重复项目(旧项目),也可分为完整版本、次要版本或服
    务包(service pack)、修正补丁包 (patch)等。
  • 项目待开发的产品进行分类,如COCOMO模型中,可分为组织型、嵌入型和半独立型。
  • 系统架构分,可分B/S、C/S多层结构,也可分集中式系统和分布式系统,或者分为面向
    对象、面向服务、面向组件等类型。
  • 技术划分,可分为Web应用、客户端应用、系统平台软件等,也可分为J2EE、.Net 等
    不同平台之上的项目。

第二章:项目准备和启动

项目建议书

项目建议书 (project proposal ),顾名思义,就 是项目立项申请 告。它可 以比较简要,也可以比较详 尽,而重点是如何向有关的 投资方或上级阐述立项的必 要性。

项目建议书的内容

  • 项目的背景
  • 项目的意义和必要性
  • 项目产品或服务的市场预测
  • 项目规模和期限
  • 项目建设必需的条件、已具备和尚不具备的条件分析
  • 投资估算和资金筹措的设想
  • 市场前景及经济效益初步分析
  • 其它需要说明的情况

可行性分析因素

  • 快速原型实现模型

  • 极限编程

    是一种软件工程方法图,是敏捷软件开发中最有成效的集中方法学之一。基本思想是“沟通、简单、反馈、勇气”,他与传统方法学的不同在于:他更强调可适应性,而不是可预测性,XP项目一开始就是手机用户故事,用户故事由用户编写,是一段与技术无关的文本,其目的在于提供一些特殊场景的详细描述,而不是用于估计系统的复杂性,用户故事的所有细节,必须在她实现之前得到客户的确认,紧接着就是制定发布计划,发布计划确定在系统的哪个发布版本中有哪些用户故事需要实现,每个发布版本都需要经过好几次迭代,每次迭代实现一些用户故事,一次迭代包括如下阶段:

    • 计划

      选择要实现的用户故事及其要明确的细则

    • 编码

      实现用户故事

    • 测试

      至少每个类都要有相应的单元测试

    • 验收测试

      如果测试成功,新功能开发完成,如果失败,则进入下一次迭代

  • 行为驱动开发

    BDD,是一种敏捷开发的技术,他鼓励软件项目中的开发者QA和非技术人员或商业参与者直接的协作,做法包括:P42

  • 功能驱动开发

    PDD,针对中小型软件项目的开发模式,是一个模型驱动的快速开发过程,他强调的是简化、实用,易于被开发团队接受,适用于需求经常变动的项目。开发分为四个阶段:

    • 开发一个全局模型
    • 建立功能列表
    • 依据工农能指定计划
    • 依据功能进行设计和实现
  • 敏捷开发模型Scrum

    通过不断迭代开发和增量发布,最终交付符合用户价值的产品。

  • 软件开发模型的特点

    项目决策层,管理层和执行层之间的关系

    基本估算方法

    • 分解方法:采用“分而治之”的策略,对软件项目进行分 解,再采用逐步求精的方式进行估算,最后通过累加获得 整体的估算结果
    • 算术模型,通过估算模型来产生估算
    • 专家判断或经验法,如德尔菲法(Delphi technique)
    • 比例法是基于类比的估算技术,根据过去类似的项目,直 接进行类比获得当前项目的估算结果。

    WBS估算法

    • 自顶向下估算模式,首先估算出项目一级的工作量,然后层层往下分 摊,把上一层工作量分摊到下一层的阶段、活动或任务。通常使用 FPA方法或 COCOMO II 来估算项目一级的工作量
    • 自底向上估算模式,要求先估算出底层任务/活动一级的工作量,然后 层层向上汇总到阶段和项目级。通常使用 QIF 估算方法或专家判断来 估算项目低层 WBS 元素的工作量

    软件规模估算

    • 德尔菲法

    • 标准构件法

    软件由若干不同的“标准构件”组成,这些构件对于一个特定的应用领域而言是通用的。项目计划者估算每一个标准构件的出现次数,然后使用历史项目数据来确定每个标准构件交付时的大小。

    • 综合讨论
      • 一般在项目层次上,缺少可比性,但在模块或组件层次 上、阶段性任务上具有可比性,可以基于历史数据来进 行比较来获得数据
      • 在实际估算工作中,一般先采用分解的方法,将项目分 解到某个层次上,然后再采用对比分析方法和经验方法
      • 任何估算方法都要结合实际来考虑

    工作量估算

    • COCOMO方法

      构造性成本模型(COCOMO:constructive cost model)是一种精确、易 于使用的基于模型的成本估算方法:

      • 基本COCOMO模型,静态单变量模型,用已估算出来的源代码行数 (LOC)为自变量的函数来计算软件开发工作量。
      • 中间COCOMO模型,在用LOC为自变量的函数计算软件开发工作量的 基础上,再用涉及产品、硬件、人员、项目等方面属性的影响因素 来调整工作量的估算。
      • 详细COCOMO模型,包括中间COCOMO模型的所有特性,但用上述各种 影响因素调整工作量估算时,还要考虑对软件工程过程中分析、设 计等各步骤的影响。

      COCOMO基本变量

      • DSI(源指令条数),定义为代码行数,包括除注释行 以外的全部代码。若一行有两个语句,则算做一条 指令。KDSI即为千代码行数。
      • MM(估算单位为人月)表示开发工作量。
      • TDEV(估算单位为月)表示开发进度,由工作量决定。

      COCOMO模型影响因素

      • 产品因素:软件可靠性、数据库规模、产品复杂性。
      • 硬件因素:执行时间限制、存储限制、虚拟机易变性、环境周 转时间。
      • 人的因素:分析员能力、应用领域实际经验、程序员能力、虚 拟机使用经验、程序语言使用经验。
      • 项目因素:现代程序设计技术、软件工具的使用、开发进度限 制
    • 多变量模型

      通过用例来描述系统的需求更清楚,可以在功能点和用例之间 建立良好的映射关系,项目的估算会更准确些。

    • 基于用例的工作量估计

      用例的层次

      • 集成系统,由多个系统构成综合系统;
      • 独立的系统,由多个子系统组成;
      • 子系统,由多个模块或组件构成;
      • 模块/组件,由多个类组成,例如可假定平均8个类构成一个组件。
      • 类,无需用例来描述。

      用例估算方法

      • 基于用例的估算,最好还是和 WBS方法结合起来使用

      • 一般认为用例的数量在10-50 个范围比较合适,而每个用例可 以带有几十个相关场景

      • 假定每一层的每一个组件平均有 10 个用例
      • 考虑总的工作量规模时,需要对个别用例的小时数做进一步调整
    • IBM RMC估算方法

      RMC 的工作量估算采用的是 QIF(定量影响因子)估算方法和 自底向上估算模式,对项目的任务、活动、阶段、子项目、项目 等进行自底向上的层层估算

      • 可以定义多个估算模型
      • 每个估算模型可以定义任意数量的估算因子
      • 每个估算因子都会关联估算公式
      • 使用估算公式来计算该估算因子对应的工作量

      IBM RMC估算步骤

      • 创建估算模型,定义相关的估算因子;
      • 把估算模型的估算因子应用到 WBS 底层元素,计算出它 们的工作量;
      • 层层向上汇总,计算出项目 WBS 上层元素(包括项目本 身)的工作量。
    • 不同场景的估算法

      • 合同签订之前,了解的需求比较有限,只能了解到项目的总 体需求,主要采用“类比分析和经验判断”等方法

      • 基于WBS估算的多维验证,获得类似项目的历史数据、软件 生命周期的生产率数据和详细需求,从而可以从不同的路径 来估算工作量,获得多个结果,这些结果可以互相印证,以 发现估算过程中的不合理之处,使估算 更准确。

      • 需求变更的工作量估计,关键是需求变更的波及范围分析

    软件项目类型

    • 组织型:指项目需要有丰富的专业经验,同时需求具有灵活性。 这样的项目可以由小团队进行开发。如开发业务系统和数据处 理系统的项目都是组织型项目。
    • 嵌入型:指要求较少的专业知识,但对接口、可靠性等有严格 的要求,并有外部条件的限制。例如开发实时系统或大型操作 系统的项目就是嵌入型项目。
    • 半独立型:指需要适中的专业知识,与嵌入型项目相比外部限 制相对较为宽松的项目。如开发数据库管理系统和库存产品控 制系统的项目就是半独立型项目

    资源估算基本过程

    • 根据WBS进行估算
    • 由工作量和开发周期来估算
    • 资源特征描述
    • 资源分配给任务
    • 定义项目角色
    • 人员分配

    工期估算方法

    • 常用方法是专家(经验)估算法、基于历史数据的类比法

    • 当面临高度不确定性任务时,可以采用三点估算法来进行 工期估算

      计划时间 =(T乐观 + 4×T可能 + T悲观)/6

    • 工期估算中还要预留一定比例作为冗余时间以应付 项目风险。随着项目进展,冗余时间可以逐步减少。 在分析标识项目活动的时候,活动资源和历时的分 析其实是同时进行的。

    特殊场景

    工期估算(日) = 工作量估算(人日) / 人员数量(人)

    • 使用这个公式时,避免人月估算的错误。要对每个人的能力进 行分析,确定他们自己的等价关系,这样,“人员数量”不是 人员的自然数量,而是更客观反映人力的等价数量
    • 按照历史数据来估算开发周期,其准确度是可以接受的
    • 在实际使用历史数据估算法时,组织应建立一个历史项目数据 库是必要的

    成本估算方法

    同样可以使用专家评估办法、经验法、比例法和WBS方法等

    • 成本估算过程中,要紧密结合项目进度计划。
    • 避免过于乐观或者过于保守的估算。
    • 在费时较长的大型项目中,还应考虑到今后的职工工资结 构、设备费用以及管理费用是否发生较大变化等
    • 在有新员工的项目中,还应考虑其培训成本
    • 人力资源成本是随着团队开发效率的变化而变化的

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2019年5月10日
    下一篇 2019年5月10日

    相关推荐