什么是项目

项目是指为增加某一独特的产品和或服务的价值所做的一次性的,有限的努力。这里,“一次性”意味着项目是有特定的开始和结束时间的,而“独特”则意味着任何一个项目具有自己的特点,即与其他项目一定存在不同之处,这些不同之处表现在项目的目标,范围,质量,成本,时间,资源等多个因素的一项或几项。

项目的特征

  • 目标性
  • 独特性
  • 一次性
  • 约束性
  • 关联性
  • 多方面性
  • 不可逆转性

项目管理

简单的说就是对项目进行管理,即有计划地,有序地,有控制地做事。项目管理就是以项目为对象的系统管理方法,通过一个特定的柔性组织,对项目进行高效率的计划,组织,不断进行资源的配置和优化,不断与项目各方沟通和协调,努力使项目执行的全过程处于最佳状态,获得最好的结果。

项目管理知识体系

  • 美国 PMI 推出的项目管理知识体系(PM BO K)

  • 英国政府商务部(OGC )出资研究开发的 (PRINCE)

  • IBM 公司全球项目管理系统 (WWPM W)

软件项目管理的本质

项目管理的目标,就是以最小的代价(成本和资源)最大的程度满足软件用户或客户的需求和期望,也就是协调好质量,任务,成本和进度等要素之间的冲突,获取平衡。概括地说,项目管理的本质,就是在保证质量的前提下,寻求任务,时间和成本三者之间的最佳平衡。

项目管理的对象

有效的项目管理集中在 3P —人员,问题,过程的管理上。

项目管理成功的要素

可以简单的认定项目成功的标志是

  • 在规定的时间内完成项目
  • 项目成本控制在预算之内
  • 功能特性达到规格说明书所要求的水平(质量)
  • 项目通过客户或用户的验收
  • 项目范围变化是最小的或可控的
  • 没有干扰或严重影响整个软件组织的主要工作流程
  • 没有改变公司文化或改进了公司的文化

项目的成败受到4个方面的影响,即项目组内环境,项目所处的组织环境,客户环境,自然社会环境。

为了确保项目成功,需要进行有效的项目管理。项目管理,就是定义目标和流程,建立组织,通过工具,管理方法来保证项目的成功。目标,组织,流程,工具,管理,形成一个项目的管理体系,缺一不可。

项目管理的基本方法

  • 阶段化管理
  • 量化管理
  • 优化管理

项目的生命周期

项目管理的基本内容是:计划,组织,监控

根据 PMBOK ,项目生命周期分为5个阶段:

  • 启动
  • 计划
  • 执行
  • 控制
  • 结束

软件的开发模型

软件的开发模型是横跨整个软件生命周期的系统开发,运行和维护所实施的全部工作和任务的结构框架,它给出了软件开发活动各阶段的关系

  • 瀑布模型
  • 快速原型实现模型
  • 从增量模型到敏捷方法
  • 极限编程
  • 行为驱动开发
  • 功能驱动开发
  • 敏捷开发模型(Scrum)

软件项目组织结构和人员角色

项目的组织结构

  • 职能型
  • 纯项目型
  • 矩阵型

通常来说,职能式的组织结构适用于项目规模小,专业面单一,以技术为重点的项目;对于大型的,重要的,复杂的项目,应采用纯项目式的组织结构;而对于项目周期短又需要多个职能部门参与时,就应该选择矩阵型的组织结构。

项目经理

一个合格的项目经理必须具备良好的自身素质和较强的管理能力,以及技术能力。

项目经理的能力体现在个人素质方面,如热情,专注,执着和勤奋,其次体现在团队合作方面,具有良好的素质。

项目干系人

软件项目干系人,也称为软件项目的相关利益人,是指积极参与项目或其利益在项目执行中或成功后受到积极或消极影响的组织和个人。干系人也可能对项目及其可交付成果和项目团队成员实施影响。一个项目团队必须明确地识别项目干系人。


项目计划的内容

软件项目管理是建立在软件技术和软件工程知识基础之上的管理活动。软件项目计划,其实就是软件项目管理计划,包括任务范围,风险,进度,资源,质量,变更控制等的管理,这些内容与软件工程研发或技术有着密切的联系。

项目计划的方法

  • 滚动计划法:是为了提高项目的连续性,适用性和灵活性而采用的一种新的计划编制方式,是动态平衡原理在计划工作中的应用。
  • WBS 方法:是一种将复杂的问题分解为简单的问题,然后再根据分解结果进行计划的方法。
    • 制定 WBS的计划,有主要三个步骤:

      • 分解工作任务
      • 制定各项活动/任务之间的依赖关系
      • 安排进度和资源,
    • 创建 WBS 可以使用自上而下,自下而上,类比,归纳等方法,最常用的是自上而下的方法。
  • 网络计划技术:网络计划方法是一种应用网络模型直观地表示软件开发众多工序之间的逻辑关系与时间关系,对完成软件工程项目所需时间,费用,资源进行求解和优化的计划方法,其基本类型是关键路线法/计划评审技术法。

项目计划原则

  • 目标性原则
  • 预防性原则
  • 客观性原则
  • 系统性原则
  • 适用性原则

项目估算的基本内容

项目估算是针对软件开发项目的规模,工作量,成本,进度等进行估算,这些估算是发生在项目实施之前,即在计划过程中完成。项目估算是基于历史数据,经验和一定方法来完成的,由项目的目标,工作范围,产品规模,业务逻辑和采用技术等决定。主要的内容有:

  • 规模估算
  • 工作量估算
  • 进度估算
  • 风险估算
  • 其他估算

基本的估算方法

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

软件规模估算

  • 德尔菲法
  • 代码行估算法
  • 功能点分析法
  • 标准构件法
  • 综合讨论

工作量估算

  • COCOMO 方法
  • 多变量模型
  • 基于用例的工作量估计
  • IBM RIM 估算方法
  • 扑克牌估算方法
  • 不同场景的估算法

资源估算

项目中的每项活动都需要耗费或占用一定的时间和资源。项目资源估算,是指通过分析和识别项目各项活动的资源需求,确定出项目活动需要投入的资源种类(包括人力,设备,场地,材料,资金等)以及资源投入的数量和资源投入的时间,从而制定出活动资源需求列表。


关键路径

在网络项目网络中会有若干条网络路线,对比个网络路线的累加工期,就会发现通常有一条路线的时间最长。这条路线决定着项目的工期时间,称为关键路径。位于关键路径上的活动就是关键项目的活动。

里程碑

一般是项目中完成阶段性工作的标志,标志着上一个阶段结束,下一个阶段开始,将一个过程性的任务用一个结论性的标志来描述,明确任务的起止点。一系列的起止点就构成了引导整个项目进展的里程碑。里程碑定义了当前阶段完成的标准和下个新阶段启动的条件或前提,并具备以下特征。

  • 里程碑的层次性,在一个父里程碑的下一层次中定义子里程碑
  • 不同类型的项目,里程碑可能不同
  • 不同规模项目的里程碑数量不一样,里程碑可以合并和分解。

如何建立里程碑

  • 设定合理的里程碑检查
  • 制定里程碑的完成目标
  • 明确里程碑验收标准
  • 确定里程碑的利益相关人
  • 标识里程碑的进度百分比

进度编制方法

  • PERT 法
  • 甘特图法
  • 表格表示法

软件质量的组织保证

软件项目质量管理,首先要在组织上得到保证。组织上没有保证,就不会有人去制定质量计划,质量的控制和管理也就难以得到落实。软件项目质量的组织保证主要是指管理层SQA 组,SEPG 组,测试组。

软件评审的方法和技术

  • 临时评审:最不正式的一种评审方法
  • 轮查:邮件分发审查方法,通过邮件将需要评审的内容分发下去,然后再收集大家的反馈意见。
  • 互为复审:在软件团队当中很容易形成一对一的伙伴合作关系,从而相互审查对方的工作结果,帮助对方找出问题。
  • 走查:主要是强调对评审的对象要从头到尾检查一遍,比上面的互为复审要求更严格一些,从而保证其评审的范围全面,达到预期效果。
  • 会议审查:是一种系统化,严密的集体评审方法。它的过程一般包含了制定计划,准备和组织会议,跟综和分析结果等。
  • 检查表:在实际的评审过程中不仅要采用合适的评审方法,还需要选择合适的评审技术。检查表,是一种常用的质量保证手段,也是正式技术评审的必要工具,审查过程往往由检查表驱动。一份精心设计的检查表,对于提高评审效率,改进评审质量有很大的帮助。
  • 其他技术:比如场景分析技术多用于需求文档评审,按照用户使用场景对产品/文档进行评审,如扮演不同的用户角色,模拟用户的行为,联想到更多的应用场景。

软件评审的过程

  • 会议准备
  • 召开会议
  • 会议决议
  • 问题跟踪

鱼骨图

鱼骨图又称因果分析图,它是分析和影响事物质量形成的诸要素间因果关系的一种分析图,因为其形状像鱼骨,故俗称鱼骨图。3个优点:

  • 可以更全面地探讨各种类别的原因
  • 鼓励通过自由讨论发挥大家的创造性
  • 提供问题与各类原因之间关系的直观表现

鱼骨图的过程

  1. 确定问题:在绘制鱼骨图的时候,首先需要抓住问题。问题可能是一个实际的问题,也可能是潜在的问题
  2. 找出问题的主要原因:确定了问题之后,需要寻找产生问题的主要原因
  3. 根据问题的类别,确定细节原因:针对列出的每个主要问题,进一步讨论和分析

质量度量

随着软件系统复杂度的不断增加,靠简单的直觉来进行管理,做出决定会变得非常困难,甚至是危险的,会被假象所迷惑,做出错误的判断。这时候,就需要于求助于度量,对软件的过程和产品实施进行量化管理。度量可以实现以下的目标:

  • 使沟通更有效,改变可见改进
  • 尽早地发现和更正问题
  • 做出关键的权衡
  • 跟踪特定的项目目标
  • 管理风险
  • 计划未来的项目

度量要素

度量提供了对项目进度评估,质量状况的洞察力和用于决策的有关数据。实施软件度量,主要通过3个基本要素----数据,图表和模型模型来体现度量的结果。

  • 数据:是关于事物或事项的记录,是科学研究最重要的基础。由于数据的客观性,它被用于许多场合。
  • 图表:仅仅拥有数据还不能够直观的进行表现和沟通,而图表可以清晰地反映出复杂的逻辑关系,具有直观清晰的特点。
  • 模型是为了某种特定的目的而对研究对象和认识对象所作出的一种简化的描述或模拟,表示对象的一种假设,说明相关变量之间的关系,可作为分析,评估和预测的工具。

什么是风险管理

项目风险管理是指对项目分险从识别到分析直到采取应对措施等的一系列过程,包括风险识别,风险量化,风险对策和风险监控等,从而将积极因素所产生的影响最大化,并使消极因素产生的影响最小化,或者说达到消除风险,回避风险和缓解风险的目的。对项目进行风险管理,可以最大限度的减少风险的发生。

风险识别

要确定影响本项目的风险来源,风险产生条件,并描述其风险特征。风险识别不是一次就可以完成的事,应该在项目的整个生命周期内持续进行。风险识别可以看作是一个持续的过程。

风险评估

是对风险影响力进行衡量的活动,即衡量风险发生的概率和风险发生后对项目目标影响的程度,从而为后面制定风险对策提供依据。

风险计划

是根据风险评估的结果,为降低项目风险的负面效应而制定方法,措施和技术手段的过程。

风险应对

就是风险计划的实施,以设法避免,消除和降低风险,包括风险预防,风险发生的监视和控制。

管理风险就是通过制定相应的措施来应对风险,减少对项目可能造成的损失,尽量避免项目的失控,为具体项目实施中的突发问题做准备,预留缓冲的缓冲的空间。最常采用的应对风险的几种措施:

  • 规避
  • 转移
  • 弱化
  • 接受

风险识别的方法和工具

风险识别有多种方法,包括面谈,头脑风暴会议,调查表,风险检查列表,风险库。最常见的方法是头脑风暴会议,风险检查列表和风险库等,而对产品和技术的风险,则要借助于 WBS (工作分解结构)来进行识别。

风险监控

风险监控可以通过设置控制基线来实现,即确定各类风险的阈值或警戒线,而风险控制基线则根据风险识别和评估的结果来获得,即可以按照风险发生概率的大小来设置基线,也可以按照风险发生的综合影响力来设置基线。


团队的生命周期

  • 形成期
  • 震荡期
  • 规范期
  • 成熟期
  • 重组期

数据收集

数据收集包括项目进展过程中的进度,状态信息收集,也包括项目完成后对整个项目进行总结时统计信息的收集。主要有两种方式,一种是被动接收,而二是主动收集

被动接收:是指项目成员按照规定/要求发出项目的相关数据信息,之后由项目经理或者项目组长进行整理和分析。比较常见的方法是日报,周报和月报,就是按照要求项目成员在每天/每周/每月对自己的相关项目工作信息进行自我总结和归纳,然后发给项目经理及项目组主要成员等指定人员。

主动收集:是指项目组长/经理/负责人应该通过各种手段主动地进行数据的收集。

  • 即时地和项目成员进行沟通,掌握项目情况
  • 建立例会制度,定期主动收集和掌握各方信息
  • 查看跟踪系统中记录的相关信息
  • 不定期召开项目研讨会根据项目进展情况召集相关人员进行现状,未来的讨论

进度可视化监控方法

  • 甘特图
  • 延迟图
  • 时间线
  • 计划与实际对比图
  • 燃尽图

变更控制

  • 需求变更
  • 设计变更
  • 代码变更
  • 进度,费用,合同时间,测试计划等的变更

流程

变更控制的目的不是控制变更的发生,而是对变更进行管理,确保变更有序进行。为了有效管理变更。需要规范相应的变更控制流程,从而对变更的提交,到接收,评估,决策直到结束。

变更的流程

  • 变更提交
  • 变更接收
  • 变更评估
  • 变更决策
  • 变更的实施与验证

项目收尾

整个收尾工作大体上可以分为项目验收项目总结两个过程。

验收的前提应该做到:

  • 完成合同要求的全部内容。
  • 完成软件系统测试,包括单元测试,集成测试,功能测试和性能测试等,并出具相关的测试报告
  • 各类文档,代码和报告的审查全部完成,包括软件需求说明书审查,概要设计审查,详细设计审查,所有关键模块的代码审查,所有测试脚本代码审查,对单元,集成,系统测试计划和报告的审查
  • 准备好相关的开发文档和产品文档
  • 验收测试计划准备好,并通过评审和批准
  • 准备好其他验收资料,如变更记录控制文档,验收审核表
  • 软件问题处理流程已经就绪
  • 准备好软件安装和验收测试环境
  • 与客户确认验收流程
  • 完成合同或合同附件规定的其他验收内容

验收测试

检验软件产品是否符合预期的各项要求,以及用户能否接受的问题。

  • 功能测试:客户依据项目合同内容,验收标准和相关的需求功能说明书,对所要求达到的成果进行验证,确保功能和接口与需求说明的一致性
  • 质量鉴定:是依据合同中的质量条款,质量计划表中的指标要求,遵循相关的质量检验标准,对项目进行质量评定
  • 资料评审:项目资料验收的重要依据,也是项目交接,维护,后期总结和存档的凭证。

验收流程

软件验收应是一个循序渐进的过程,要经历

  • 准备验收材料
  • 提交申请
  • 初审
  • 复审
  • 直到最后验收合格完成移交工作

软件项目管理期末复习相关推荐

  1. 软件项目管理期末复习--项目过程模型

    软件项目管理 项目过程模型 分析项目特征 分析项目是目标驱动的还是产品驱动的 分析项目其他特征 面向数据(data-oriented),如IS,还是面向过程控制(process-oriented),如 ...

  2. 软件项目管理期末复习--软件需求

    软件项目项目管理 软件需求 需求管理中的问题举例 需求的隐含错误 用户不断增加需求,变更需求 需求失败的原因分析 本章要点 软件需求定义 软件需求管理过程 需求建模的基本方法 案例分析 课程实践 软件 ...

  3. IMAU 软件项目管理 期末复习总结 第六章

    第六章 项目成本计划 1.估算相关概念 软件项目规模:即工作量.例如软件规划,软件管理,需求,设计,编码,测试,以及后期的维护等任务. 规模单位:LOC(源代码长度) FP(系统的功能数量) 人月(用 ...

  4. IMAU 软件项目管理 期末复习总结 第七章

    第七章 项目进度计划 1.计划过程 任务定义(划分子任务).确定任务关系(确定子任务之间的关系).历时估算.进度编排.进度计划确定 2.进度管理常用图示 2.1 网络图(重点) 描述:活动(任务)排序 ...

  5. 软件体系结构期末复习

    软件体系结构期末复习 标签(空格分隔): 未分类 回顾课本和TTP课件 内容总概 章节回顾 第1章.软件体系结构概论 0.软件体系结构的发展过程经历了四个阶段: (1)无体系结构阶段.(2)萌芽阶段. ...

  6. 哈工大软件构造期末复习

    系列文章目录 哈工大软件构造期末复习(最终章) 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录 哈工大软件构造期末复习(最终章) 前言 一.github指令 ...

  7. 哈工大软件构造期末复习(根据老师复习提纲整理)

    软构期末复习1-3章 1.软件构造的多维度视图及其划分 大体上分为build-time和run-time两大类,分别对应视图中的两排. 在build-time中,又按照时刻和时期.代码层面和成员层面区 ...

  8. 软件构造期末复习总结【一】:关于SCM和Git的一些概念整理

    目录 0.前言 1.SCM 1.1 一些概念 1.2 对于SCM的一些解释以及个人理解 2.Git 2.1 一些概念 2.2 Git的一些基本指令 0.前言 期末复习的时候感觉这部分的概念有点生疏了. ...

  9. 《软件项目管理》复习知识点

    参考书目:<软件项目管理> 出版社:清华大学出版社 编著:任永昌 目录 第一章 软件项目管理概述 第二章 软件开发过程管理 第一章 软件项目管理概述 ·项目[定义]是一个特殊的将被完成的有 ...

最新文章

  1. 1月份制造业和非制造业PMI双双回升 企稳迹象初显
  2. FPGA之道(53)状态机的模型
  3. 沙盒单机网站代表-Steam【推荐】
  4. phpstorm运行java项目_phpstorm的提速设置
  5. TCP/IP 学习 --- 2
  6. 静止的单摄像机无法得到像点的三维坐标详解
  7. Android Log工具类,Toast工具类,获取当前方法名称
  8. web的UI自动化实现步骤
  9. windows系统mysql常用命令_Windows下 MySQL命令 常用操作
  10. android控制灯编程,远程控制智能灯(android)
  11. 无法导入reg:指定的文件不是注册脚本——兼了解文本格式问题
  12. 取十六进制的后两位数、中间两位数,以及高位数
  13. FPGA时序约束分享04_output delay 约束
  14. matlab基本操作与矩阵输入简单表示
  15. 接口可以继承接口吗?
  16. var、let、const的区别
  17. http-https数据包的基本知识
  18. 小米笔记本 Air 13 评测
  19. 游戏剧本怎么写_我写了一本剧本来帮助设计师使用真实代码构建原型
  20. Day01-Day50

热门文章

  1. WAF nginx反向代理和透明代理
  2. 使用Springboot+netty实现基于Web的聊天室
  3. 2015-2016年最佳年会小品剧本,绝对爆笑,台本
  4. 计算机公开课教学反思,《让我们荡起双桨》公开课教学反思
  5. 不做大哥好多年,易趣再战江湖
  6. yii2的components详解
  7. 油田(zoj 1709, poj 1562)
  8. 猫猫学iOS(五十五)多线程网络之图片下载框架之SDWebImage
  9. 数据仓库分层作用及作用
  10. python中的unsqueeze()和squeeze()函数