软件项目管理课程
软件项目管理
(一)项目管理的定义
项目
a temporary endeavor undertaken to create a unique product, service, or result.
(一个临时性的工作,为了创造一个独特的产品、服务或结果)
项目属性
- 过程上,临时性的有时限性、不确定性、逐步精化
- 输入:特定目的 输出:推动变革创造价值
- 投入上,有发起人、需要资源、有经理人
项目目标
成功的项目意味着满足三个目标:Scope goal、Time goal、Cost goal 并让发起者满意
项目约束
- 六个约束:成本、风险、资源、质量、时间、范围(Cost, Risk, Resource, Quality, Time, Scope)
- 怎么平衡约束?
项目群管理
- 项目群:一组相互关联的项目,被协调和管理以获得更好的效益,这些效益单独管理项目无法获得
- 将项目合并为组,有助于管理、招聘员工、采购以及其他工作快捷化,而且要经济些。
项目组合管理
- 项目组合:一组项目、子项目、项目群、子项目群、以及运营工作,被协调和管理以实现一些特定的战略目标
项目Projects、项目群Programs、项目组合Portfolios归纳
定义上,
- 项目:一个临时性的工作,为了创造一个独特的产品、服务或结果
- 项目群:一组相互关联的项目,被协调和管理以获得更好的效益
- 项目组合:组织将项目以及项目群合并进行管理,使其作为一个投资组合,从而促成整个企业的成功。
管理上,
- 项目管理:项目经理管理项目团队以满足项目要求目标。
- 项目群管理:项目群经理通过协调项目群各个组成部分的活动,确保项目效益按预期达成。
- 项目组合管理:组合管理者可以管理或协调组合管理、项目群或项目工作人员,从战略视角帮助组织挑选并分析项目,帮助组织做出明智的投资决策。
监控上,
- 项目监控:项目经理监督和控制生产产品、服务或成果所需的工作。
- 项目群监控:项目群经理监督项目群各个组成部分的进度,以确保项目群的总体目标、进度、预算和效益得到满足。
- 项目组合监控:组合经理监控投资组合的战略变化和聚集资源分配、绩效结果和风险。
成功上,
- 项目:成功与否取决于项目的质量、及时性、预算合规性和客户满意度
- 项目群:项目向组织提供其预期利益的能力,以及项目提供这些利益的效率和有效性。
- 项目组合:投资组合的成功
工具集
- SPM工具集:综合工具、任务管理、缺陷跟踪、代码管理、团队协作、进度管理、文档管理、原型设计
(二)确定范围
范围管理概念
- 界定和控制项目中应包括什么和不包括什么所涉及的过程,该过程确保了项目团队和干系人对项目的可交付成果以及生成这些可交付成果所进行的工作达成共识。
组域映射
- 五大过程组:启动Initiating、规划Planning、执行Executing、监控与控制Monitoring and Controlling、收尾Closing
- 五大过程组和范围管理知识域的映射:
规划Planning上:
规划范围管理:计划如何在整个项目的生命周期内管理范围
输入:项目章程、项目管理计划(质量管理计划、项目生命周期描述、开发方法)、事业环境因素、组织过程资产
工具与技术:专家判断、数据分析(备选方案分析)、会议
输出:范围管理计划、需求管理计划
收集需求;定义并记录产品的特点和功能,以及开发过程
定义范围:审查范管计划等,指定和维护范管说明书
创建WBS: 将可交付成果分解为更细小和更易管理的部分
监控Monitoring and Controlling上:
- 确认范围:可交付成果的正式验收
- 控制范围: 对项目范围的变化进行控制
WBS工作分解结构 Work Breakdown Structure
- WBS是把项目细分为更小的、更易于管理的组成部分的一个层级结构。每向下一个层级,就是对项目工作更详细的定义。
- 优点:
- WBS的标志、编码、组件、工作包和要素
- 特殊组件:项目管理(第2层级),计划管理、风险管理…(第3层级)
- WBS的分解粒度(何时停止分解?)
- 基于目前的分解程度,可以把这个组件分配给一个人吗?
- 团队能够合理估算这个组件的成本和工期吗?
- 团队能够确认完成本组件所需的活动和里程碑吗?
- 我能够有效监控与本组件有关的工作吗?
- 常用编排方法:
- 按主要交付成果 : 调研总结、项目管理、软件评估、评估报表
- 按项目阶段 : 图景、路线、原型、产品、上线、项目管理
- 按子项目 : 桌面工具、Web网站、SaaS服务平台、项目管理
- 按地理位置 : 南京、西安、杭州、沈阳
- 按部门 : 软件开发1部、软件开发2部、基础软件事业部、项目管理中心
- 其他方法 :综合法、使用指南、类比法、自上而下法、自下而上法、思维导图法
- 样式:树形图、大纲式、表格式
- 词典:WBS词典是WBS的一个附录,包含了每个WBS组件的详细描述
- 工具:WBS Chart Pro、VP、思维导图、办公软件(WPS、Visio、Project、Excel)
- 建议:一个工作单元仅出现一次、工作内容是下一级工作内容的总和、一个负责人、与实际一致、成员参与一致认同、记录词典精确描述、灵活变通
- WBS是对项目工作的分解或划分,以便更好的界定、沟通和管理项目的工作范围,向干系人展示了即将开展的项目工作全景图
- 不是我们必须做什么也不是该怎样或何时交付,而是必须交付什么。不是活动清单、不是进度安排、而是范围工具
- 什么是范围? 范围是指项目的工作内容,包括项目的产品和服务,以及项目的过程
(三)故事地图
识别目标
- 故事地图目标
- Scrum Process Canvas入口
- 3个层次
- 用例:高级业务目标,了解整个系统的范围,基于所识别的用例发现Epics
- Epics:高级功能或广泛定义的要求,可以分解成更小的部分,称为用户故事
- 用户故事:简短陈述,记录了要求和所需的最终用功能。
- 绘制用例图、定义用例
用例图和故事地图目标的关系? - 管理Epics–Scrum Process Canvas入口、在故事地图中添加更新Epics
- 用户故事地图显示用例,Epics和用户故事之间的映射
管理Backlog -Scrum Process Canvas入口
backlog,在其中按照优先级列出所要实现的场景和具体功能,是一个项目的需求清单
每个用户故事地图代表是一个完整的用户故事,地图的核心是一条从左到右的时间线
时间线的上部放置最大粒度内容(可以理解为Epic)
时间线的下部的第一行放置二级粒度内容(可以理解为backlog item)
并在每一个粒度下按照从左到右的优先级进行放置
每个二级粒度内容的下面,自上而下放置三级粒度内容(可以理解为task)
- 定义:Backlog,待办事项,是Scrum团队定义用户故事来管理积压的工作,通过创建和详细说明项目的用户故事,来构建和维护产品待办事项
用户故事准备好了,才可以包含在sprint backlog中以供进一步开发sprint: 冲刺周期,通俗的地讲就是实现一个小目标的周期,一个sprint可以包含若干user story
task:由user story拆分成的具体开发任务 - 定义适用于所有用户故事的验收标准
- 添加用户故事
- 创造其他用户故事
- 将用户故事安排到特定版本中
- 描述用户故事
- 定义用户故事的验收标准
- 定义用户故事的故事点、优先级、风险和截止日期
- 批准用户故事
发布计划 -Scrum Process Canvas入口
- 定义可交付成果
- 定义发布计划
- 将用户故事安排到版本中
- 形成用户故事地图
用户地图和WBS的区别
用户地图主要用于理解和描绘用户的行为、需求和情境,帮助团队更好地设计产品和服务
WBS用于将项目的整体目标分解为更小的、可管理的部分,以便于项目的规划、执行和控制
用户地图是产品设计的工具,WBS是项目管理的工具
(四)立体建模
故事旅程地图
- 接触点、客户想法和主意间的可追溯性
- 它通过不同的接触点呈现客户的想法和感受,帮助企业加深对客户行为、想法和感受的理解,以做出有价值的决策
- 接触点是能够改变客户对产品、品牌、业务或服务的感受的交互点
- 客户旅程可以阐明产品策略,这些策略通常由许多相互关联的层面组成:例如行动、想法和感受等
- 要为这些项目建立可追溯性。可以将客户想法引用到接触点,或将客户想法引用到解决方法
- 数据的连接显示在旅程地图上,使我们能够更有效地识别用户问题
- 以客户为中心
- 创建新旅程
- 从旅程地图生成文档
UML推演
- 从传统模型到软件模型
- 4+1模型(uml为不同视图提供了标准化的表达方式) 可以视为一种组织和使用uml来全面描述软件系统架构的框架
- 逻辑视图(logical view):系统分析、设计人员 类与对象
- 进程视图(process view):系统集成人员 线程、进程、并发
- 实现视图(implementation view):程序员 物理代码文件和组件
- 部署视图(deployment view):系统和网络工程师 软件到硬件的映射
- 用例视图(use case view):最终用户 需求分析模型
- 用例图与用例文档的映射:用例文档详细描述用例的具体情境、前提条件、步骤和结果
- 用例文档与活动图的映射:图形化方式展示活动之间的顺序和条件,与用例文档中的详细步骤相对应
- 用例文档与类图的映射:开发者识别用例所需的类和属性,确保系统设计的完整性
- 基于时序图改进类图:时序图通过具体的消息传递关系,能够揭示类途中未明确的关系或行为
- 基于类图改进时序图:类图提供了系统的静态结构信息,时序图则展示动态交互。通过结合类图的信息,时序图额能够更准确地反映对象之间的交互关系和对象的状态
- 为何而生?
- 活动图–为理解而生 帮助开发者理解系统的工作流程
- 时序图–为实现而生 实现复杂对象之间的交互关系
- 统一建模 时序图–可以表达更复杂的对象交互关系
原型推演
- 静态界面设计:创建界面的基本布局和元素,通常不包含交互和动态内容
- Single Wireframe, Mutiple States:
单一线框图展示了某个界面的基本结构,多个状态则是指同一个界面的不同状态 - Storyboard 故事板:
故事板是一种线性展示界面和交互流程的工具。通过一系列图像或框架展示用户在使用系统时的步骤和情景 - Storyboard Player 故事板播放器:
一个工具或软件,能够动态展示故事板中的各个场景和过渡效果 - Wireframe-based flow chart 基于线框的流程图:
结合了线框设计和流程图的特点,展示了用户在系统中的交互流程 - Animate Path In action 动画路径:
通过动画演示对象的移动、变化和过渡
故事地图、uml、原型可否打通三界?
- 故事地图是一种可视化工具,用于展示用户故事的优先级和关系。它帮助团队识别和组织产品功能,从用户的角度理解需求,并确保每个功能与用户目标的紧密联系。
- UML提供了一系列标准化图形,帮助团队以结构化的方式描述系统的设计和行为。通过使用UML,开发团队可以清晰地表达系统的静态结构(如类图)和动态行为(如时序图、活动图),促进沟通和理解
- 原型设计通过视觉和交互的方式呈现产品的外观和功能,帮助利益相关者快速验证想法。原型可以是静态的线框图,也可以是动态的可交互模型。
复盘Scrum
- 画布与五大过程组
- 规划:识别业务目标、管理Epics、管理Backlog、发布计划
- 细化用户故事之定义验收标准:
明确每个用户故事的验收标准,以确保开发的功能满足用户需求 - 细化用户故事之定义故事点:
为每个用户故事分配故事点,反映其复杂度和工作量。有助于团队在迭代中进行更准确的估算和规划 - 细化用户故事之编写故事剧情:
编写用户故事的详细描述,包括场景、角色、目标和行动。有助于团队更好地理解用户需求,确保开发的功能符合用户期望 - 细化用户故事之绘制时序图:
利用时序图展示用户故事中的交互过程,帮助团队明确不同对象之间的关系和消息传递 - 细化用户故事之绘制活动图:
利用活动图展示用户故事中的工作流程,帮助团队理解系统的操作流程和交互逻辑
(五)功能点法
宏观过程
中观过程
度量标准
五类方法:IFPUG、MarkII、NESMA、COSMIC、FISMA
规模评估–功能点评估
- IFPUG微观过程
功能类型
- 功能类型ILF:内部逻辑文件,是一组可由用户识别确认的、在应用系统边界内维护的、逻辑上相关的数据或控制信息。
ILF的主要意图是通过被测应用程序的一个或多个基本处理来保存维护数据。 - 功能类型EIF:外部接口文件是一组可由用户识别确认的、由被测应用系统引用,但在其它应用系统边界内维护的、逻辑上相关的数据或控制信息。
EIF的主要意图是存放被测应用程序中的一个或多个基本处理所引用的数据。也就是说,一个应用程序的EIF必定是另一个应用系统的ILF - 功能类型EI:外部输入,是处理来自应用程序边界外的数据或者控制信息的一个基本处理,如用户通过增删改来维护内部逻辑文件。
经过处理的控制信息则可能维护一个ILF或不维护它,EI的主要意图是维护一个或多个ILF,以及通过其他处理逻辑来改变应用程序的行为。 - 功能类型EO:外部输出,是一个向应用程序边界外提供数据或控制信息的基本处理。EO的主要意图是向用户提供经过处理逻辑加工的、除了检索数据或控制信息之外的信息或附加信息。
处理逻辑必须包含至少一个数学公式或计算、创建导出数据、维护一个或多个ILF,并且/或者改变系统的行为 - 功能类型EQ:外部查询,是应用程序向边界之外提供数据或控制信息的基本处理。主要意图是向用户展示未经处理、直接查询的一些数据或控制信息。
处理逻辑不包含数学公式或计算,也不产生派生的数据。处理过程中外部查询既不维护ILF,也不改变系统的行为。 - EI、EO、EQ 是事务功能,ILF、EIF 是数据功能
- 功能类型案例
- 功能复杂程度
- 未调整功能点
GSC综合系统特征
VAF调整系数值
已调整功能点计数
规模变更调整因子
已调整功能点计数
已调整功能点计数比较
工作量评估–方程法
单价评估–行业区域人员成本评估
风险评估/质量评估–风险评估
综合评估–综合评估法
WBS
(六)过程规划
生命周期
若干阶段
- 把项目分为若干阶段因为:项目作为系统的一部分运行并且包含不确定性
- 项目生命周期是项目阶段的集合
- 定义了:
- 每个阶段做什么工作
- 什么样的可交付物和什么时候
- 谁参与到每个阶段
- 经理如何控制和批准工作
三个阶段:早期阶段、中期阶段、后期阶段
四个阶段:Concept、Development、Implementation、Close-out(概念、开发、实施、收尾)
五过程组:Initiating、Planning、Executing、Monitoring and Controlling、Closing(启动、规划、执行、监控与控制、收尾)
- 组间关联
- 组外映射
- 时间配比
- 在规划上花费更多的时间可以减少执行时间
启动过程组
包括识别和启动一个新的项目,确保为了正确的原因启动正确的项目
预启动,在正式启动项目之前,为项目奠定良好的基础
- 确定制约因素
- 识别发起人
- 识别项目经理
- 开发商业论证(Business case)
- 讨论过程结果
- 细分子项
启动项目,让项目顺利进入正轨
- 识别干系人(Stakeholder)
- 起草项目章程(Project Charter)
项目经理起草 -> 团队成员内审 -> 发起人/高级经理审核 -> 内签
- 召开启动会议
规划过程组
规划项目,指导项目的执行
- 团队协议
- 工作范围说明书
- 工作分解结构
- 项目时间表
- 风险排序清单
- …
执行过程组
项目执行,采取必要的行动以确保完成项目计划中的活动
- 指导/管理项目
- 执行质量保证
- 获取项目团队
- 建设项目团队
- 管理项目团队
- 管理沟通
- 实施采购
- 管理干系人参与
监控过程组
项目监控,针对项目目标来衡量进展情况、监测计划的偏离状况、采取正确的行动符合计划的进展
- 监控项目工作
- 整体变更控制
- 范围核实
- 进度控制
- 成本控制
- 质量控制
- 沟通控制
- 风险控制
- 采购控制
- 干系人控制
收尾过程组
收尾过程,包括获得干系人和客户对于最终产品和服务的验收,同时使得项目或者项目阶段实现有序的结束
核实成果+交付成果+最终陈述+经验教训
- 项目/阶段收尾
- 采购终止
小结:
过程模型
若干模型
三层五类
传统模型
特征:
- 低复杂性
- 范围变更请求很少
- 很好理解的技术架构
- 低风险
- 有经验、有能力的开发团队
- 计划驱动的TPM项目
线性 Linear
- 优点:
- 开始时就进行了进度安排
- 开始时资源已知
- 不需要最熟练的项目团队
- 不需要同地协作
- 缺点:
- 不适应变更
- 成本过高
- 耗时过长
- 要求有完整和细致的计划
- 严格的过程组线性顺序
- 不关注客户价值
增量 Incremental
- 优点:
- 更早地产生商业价值
- 更好地安排稀缺资源
- 适应小变更
- 有产品改良机会
- 比线性更关注客户价值
- 缺点:
- 团队人员不稳定
- 增量之间的交接文档
- 增量优先级必须考虑依赖性
- 更需要客户参与
- 比线性模型更长的时间
- 功能分隔可能成为问题
敏捷模型
特征:
- 没有已知的解决方案
- 预计会有新的商业机会
- 变化驱动的APM项目
- 对组织化解风险非常关键
- 客户的有效参与是绝对必要
- 使用小型同地协作团队
重型RUP
轻型SCRUM
- 优点:
- 可变更范围
- 适应变化随变而调即时规划
- 关注形成商业价值
- 客户可评审部分解决方案
- 缺点:
- 团队人员不稳定
- 同地协作的团队
- 资源需求不清晰
- 更高的客户参与度
- 不确定的最终解决方案
极限模型
特征:
- xPM是一种研发项目
- xPM项目的风险很高
- 优点:
- 备选方案保持时间长
- 能提供大量部分解决方案供早期参考
- 缺点
- 可能在所有错误的地方寻找解决方案
- 不能保证项目交付结果具有商业价值
异同点
相同点:
- 都有5个过程组
- 都开始于范围/启动过程组
- 都结束于收尾过程组
不同点: - 越来越高的不确定性
- 越来越重要的风险管理
- 越来越需要客户有效参与
- 趋向生命周期的开端
- 完整的项目计划被即时项目计划取代
最适之选
(七)敏捷方法
历史
敏捷宣言
- 个体和互动高于流程和工具
- 工作的软件高于详尽的文档
- 客户合作高于合同谈判
- 响应变化高于遵循计划
敏捷原则
应用场景
- 三用
- 需求不确定
- 设计不确定
- 计划不确定
- 三不用
- 产品高要求
- 团队有问题
- 需求负反馈