第一章:软件工程管理介绍

软件危机的表现

  1. 用户需求得不到满足
  2. 生产成本高,价格昂贵
  3. 难以更改,调试和提高
  4. 容易交付延迟

    软件特性
  5. 软件的复杂程度越高,越难对其变更

  6. 对一个程序作出的变更越多,其复杂度越高

    软件项目管理与其他工程系统管理的区别

  7. 软件在准备好并运行前是不可见的

  8. 一个小小的变更请求可能会产生很大的影响,但变更又是常态而非特例
  9. 智力劳动

    Task or Jobs:伴有极少许不确定性的定义明确且易懂的任务的重复 Exploration:输出结果很不确定 Projects: 在上述两者中间,既有常规又有挑战

项目的定义(Project)

预算内为达成一系列目标而进行的在一个确定的时间周期内的一系列活动
Software Project: 是一个涉及从需求收集到软件测试与维护的不同操作的过程,其目标是在规定的时间内得到一个高效的软件产品

具有明确目标的付出 通常由多个任务组成 具有定义好的优先关系 有明确的完成时限

软件公司的两大组成:软件开发和软件项目管理

需要项目管理的原因

  1. 软件开发行业不同于其他开发行业
    1. 软件开发行业迭代快速,不能将旧的开发经验完全应用于新开发
    2. 这种快速的变化给软件开发行业带来很多风险
    3. 为了与快速变化的事物保持一致,拥有软件项目管理提供的管理策略非常重要
  2. 对于软件公司,在客户预算与给定的时间内提供最优质的产品十分重要

项目的约束条件:时间,范围和成本被称为项目管理的三项约束,质量加上是四项

什么是项目管理

  1. 项目管理是”将知识、技能、工具和技术应用到项目活动中,以满足项目需求“
  2. 项目管理知识体系的目的是做唯一公认的”专案管理知识体的子集合“的典范实务,”公认“的意思是有价值以及用处的共识,且其多数时间知识跟实务都可被多数的专家应用,”典范实务“的意思是普遍同意的知识,技能,工具,技术的应用可以提升许多专案的成功率。

    五大过程组: 起始过程组,规划过程组,执行过程组,监视与管制过程组,结束过程组 十大知识领域 项目整体管理,项目范围管理,专案时程管理,项目成本管理,项目质量管理 项目人力资源管理,项目沟通管理,项目风险管理,项目采购管理,项目干系人管理

项目成功

  1. 项目满足范围,时间和成本目标
  2. 项目使得客户,赞助商满足
  3. 项目的结果达到其主要目标,如赚取或节省一定数额的钱,提供一个良好的投资回报,或仅仅使得赞助商开销

    项目利益相关者: 内部:项目经理,项目团队,最高管理层 外部:项目的客户,供应商

W5HH 原则

  1. 为什么要开发这个系统
  2. 将要做什么
  3. 什么时候开始做
  4. 每个功能由谁负责
  5. 他们的机构组织位于何处
  6. 如何完成技术工作和管理工作
  7. 每种资源需要多少

    软件项目的类型

  8. 产品(通用软件)SaaP

  9. 服务(定制软件)SaaS,即通过网络进行运行

    另一种软件分类:

    1. 信息系统 2. 嵌入式软件

Project Management = Plan the work + work the plan

  1. 计划:评估,资源分配和调度
  2. 人员配置:招聘和激励员工
  3. 知道:确保团队是一个整体
  4. 监控:检测到计划偏差并采取纠正措施

    软件项目管理

  5. 项目组合管理(Portfolio):项目组合管理用来衔接战略规划和项目管理,来源于投资领域,项目组合管理首先解决的是投资导向的问题,根据战略规划,决定资源分配,确保投资组合收益最大化。

  6. 项目集(Program):根据项目之间的依赖关系,看如何能投入更少的资源实现既定的目标

    项目经理的主要职责
  7. 可行性研究:项目在技术上看是否可行?从商业角度看是否有价值?

  8. 计划:只在项目可行时进行

    估计,调度,人员配备,风险管理

  9. 执行监督和控制:监督和控制计划的实施

    监督,控制,创新,代表