03-软件项目管理
软件项目管理的范围
项目管理的5要素
- 技术(Technical):只是一部分,并不是软工的全部。
- 方法(Methodology):合适的方法管理团队、管理风险、制定计划等
- 团队建设(Team Building)
- 信息(Imformation)
- 沟通(Communication)
战略角度
- 人员:如何有效利用人力,使其各尽其责。
- 问题:根据用户需求解决问题,将大的问题分解为一个个小问题。
- 过程:项目要遵循定义好的规范和过程进行。
战术角度
- 质量
- 进度
- 成本
三平衡,其中一个的改变将牵动其余两个。
过程管理与软件项目管理的关系
过程
从技术上看,对于某个任务的一个过程,是由执行该任务时应当遵循的一个步骤序列组成。
对组织而言,过程涵盖了项目经理所掌握的成功的执行项目的实践。
- 软工过程:规定如何执行工程任务,例如需求规范、设计测试等。
- 项目管理过程:规定如何设置里程碑、人员组织、管理风险、监督进展等任务。
极大程度地不同人完成产品之间的差异,保证整个软件开发的过程可控
- 把用于软件开发及维护的全部技术、方法、活动、工具及它们之间的相互变换统称为软件过程。
过程管理
- 过程:做事情的一种固有的方式
- 过程管理:对过程进行管理,目的时让过程能被共享、复用,并得到持续的改进。
软件过程管理就是注重循序渐进地积累,积累项目中的各个环节的实践经验和项目管理的实践经验,保证我们的生产力持续地发展。
例如:需求分析、需求说明书,属于最佳实践,确保最终的结果
为什么项目经理必须遵循过程
- 过程代表集体的智慧,增加成功的机会
- 过程可能会包含一些多余的步骤,但项目存在很多未知情况下,捷径会增加风险
- 没有采用过程,不能很好地预测项目结果
- 没有定义过程,个人和组织不能有效的学习,不能提高竞争力
- 过程减少PM考虑的问题。例如checklist会涵盖80%的问题
项目管理与CMM
CMM(Capability Maturiy Model)能力成熟度模型:规定了过程所必须的特征,但没有规定专门的过程。
- 目的:对成熟的过程和不成熟的过程加以区别
- 过程能力(Process capability):使用一个过程执行项目时能够从中期望得到的结果范围。
- 过程绩效(Process performance):使用一个过程执行项目时所实现的实际结果。
- 成熟度等级:通往更高成熟度途中会经历一些良好定义的稳定状态。
- 关键过程领域(Key process area):
- 不同的成熟度等级由一些KPA来表征(公司达到某些KPA
→
\rightarrow
→ 公司达到某成熟度等级)
- 初始级:项目按团队和项目经理认为合适的方式开发。
- 可重复级:有一定的标准和规范
- 需求管理
- 软件项目规划
- 软件项目跟踪与监督
- 软件转包管理
- 软件质量保证
- 软件配置管理
- 已定义级(大体量软件的国内招标普遍最低要求):在可重复级的基础上添加
- 组织过程焦点
- 组织过程定义
- 培训方案
- 集成软件管理
- 软件生产工程
- 组间协调
- 互相评审
- 已管理级:管理后加入量化指标(在已定义级的基础上)
- 软件质量管理
- 定量过程管理
- 优化级:定义过程并不一定适用于所有软件产品
- 过程变更管理
- 技术变更管理
- 故障预防
- KPA规定了一组任务,称为关键实践(key practice)
- 不同的成熟度等级由一些KPA来表征(公司达到某些KPA
→
\rightarrow
→ 公司达到某成熟度等级)
- 核心:把软件开发视为一个过程,并根据这一原则对软件开发和维护进行过程监控和研究,以使其更加科学化、标准化。使企业能够更好地实现商业目标。
- 强调:
- 凡事有计划,按计划办(所做所有事情均在计划表中)
- 事事有规程,人走后做事能重复(事与人解绑)
- 注重评审和验证,关键工作产品要经过正式评审
- 实现定期监控(例会)
- 要求对所有发现的问题,所有措施项都要进行跟踪,而且一直到跟踪结束
- 通过SQA(质量保证),保证过程得到遵守和不断修改
- 注意采集度量(结果实时反馈)
软件项目管理过程中,量化极为重要
软件项目管理过程
- 项目启动:做什么
- 项目跟踪:怎么做
- 项目跟踪控制:保证做好
- 项目结束:收尾,评审
- 流程:
- 项目初始(按逻辑顺序):
- 项目计划(核心)
- 范围计划
- 时间计划
- 成本计划
- 质量计划
- 人力计划
- 沟通计划
- 风险计划
- 合同计划
- 配置管理计划(例如Git等)
- 集成计划(将前9个计划平衡后合成一个整体)
- 项目执行控制
- 项目结束
以上为B站BV1HE411P79e的课程笔记,如有不足之处请指出,谢谢!