前言
软件项目管理相关内容
第一章:概述
项目管理的生命周期
项目管理的生命周期——“启动、计划、执行、控制、结束”演进顺序
项目的概念
项目是为完成某个独特的产品或服务所做的一次性任务:
-
目标性,其结果只可能是一种期望的产品或服务。
-
独特性,每一个项目都是唯一的。
-
一次性,有确定的起点和终点。
-
约束性,每一个项目的资源、成本和时间都是有限的。
-
关联性,所开展的活动是密切相互关联的。
-
多方面性,一个项目涉及多个相关利益者
-
不可逆转性。不论结果如何,项目结束了,结果也就确定了。
项目-项目集-项目组合三者关系
项目管理的构成和约束因素
项目管理的对象-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进行处理,非常感谢!