【软件工程系列】软件项目管理

软件项目管理

有效的软件项目管理集集中在4个P上,即

  • 人员(Person):工作风格(外向/内向、理性/感性)
    • 项目管理人员
    • 高级管理人员
    • 研发人员
    • 客户
    • 最终用户
  • 产品(Product)
  • 过程(Procedure)
  • 项目(Project)

项目组织:

  • 主程序员负责制小组

    chief programmer team

    • 高度确定性、稳定性、一致性和重复性
  • 忘我方法

    egoless approach

    :让每个人平等地承担责任,民主式投票产生结果

    • 大量的不确定性时

软件项目估算

方法:已完成类似项目、分解技术、经验

成本估算方法

自顶向下、自底向上、差别估算、专家估算法、类推估算法、算式估算法

悲观的预测x,乐观的预测y、最有可能的猜测z

则beta概率分布的平均值为(x+4y+z)/6

COCOMO 估算模型

  • 基本COCOMO模型(静态单变量)

    E = a ( L ) b D = c E d E=a(L)^b\D=cE^d E=a(L)bD=cEd

    其中E工作量,D开发时间,L源代码行数

  • 中级COCOMO模型(静态多变量,分为系统和部件)

    E = a ( L ) b E A F E=a(L)^bEAF E=a(L)bEAF

    其中EAF是工作量调节因子(15种影响软件工作量的因素)

  • 详细COCOMO模型(分为系统、子系统、模块)

演化成COCOMOII模型,包括应用组装模型、早期设计阶段模型、体系结构阶段模型

E = b S c m ( X ) E=bS^cm(X) E=bScm(X)

其中,bSc是初始的基于规模的估算,通过关于成本驱动因子信息的向量m(X)对它进行调整

Putnam模型

动态多变量模型,假设在软件开发的整个生存期种工作量有特定的分布

【软件工程系列】软件项目管理

其中td表示开发持续时间,Ck表示技术状态常数,其值依赖于开发环境

软件度量

分类:

  1. 面向规模的度量:通常用程序的代码行数LOC来衡量
  2. 面向功能的度量

  1. 生产率度量
  2. 质量度量
  3. 技术度量

复杂性度量:规模、难度、结构、智能度

McCabe度量法

又称环路度量,是程序流程图的改变

度量值 V ( G ) = m n + 2 p V(G)=m-n+2p V(G)=m/span>n+2p

其中,m是弧的个数,n是结点数,p是强连通分量的个数

一般10是上限,要充分测试此模块变得很艰难

进度管理

项目进度(Project schedule) 通过列举项目的各个阶段,把每个阶段分解成离散的任务或活动,来描述特定项目的软件开发周期。

可交付产品(deliverable),即在项目开发的过程中客户希望看到的产品:

  • 文档
  • 功能的演示
  • 子系统的演示
  • 精确性的演示
  • 可靠性、安全性或性能的演示

活动(actibity):是项目的一部分,它在一段时间内发生

可以通过4个参数对活动进行描述:

  • 前驱(precursor):活动的一组条件
  • 工期(duration)
  • 截止日期(due date)
  • 终点(end point):表示活动已经结束,通常是一个里程碑或可交付的产品

活动图: 表示活动之间的依赖关系,虚线表示这些活动必须在后一个活动之前完成

关键路径法(Critical Path Method, CPM):是每个节点的时差都为零的路径

时差slack time/浮动时间float = 可用时间available time – 真实时间real time/实际时间actual time

时差=最晚开始时间 – 最早开始时间

里程碑(milestone) 是活动的完成——某一特定的时刻

工作分解结构(work breakdown structure):把项目描述为由若干离散部分构成的集合


工具:

  • Gantt甘特图
    • 水平条形图,以日历为基准
    • 清晰地描述,每个任务从何时开始,到何时结束,任务的进展情况以及各个任务之间的并行性
    • 但不能清楚地反映出各任务之间的依赖关系,难以确定整个项目的关键所在,也不能反映计划中有潜力的部分
  • PERT(Program Evaluation & Review Technique)项目计划评审技术图
    • 采用正态分布,对于实际时间的一个估计的窗口window/区间interval
    • 有向图,箭头表示任务,结点表示事件
    • 清晰地描述,每个任务从何时开始,到何时结束,给出各任务之间的关系,
    • 但不能反映各个任务之间的并行性

软件项目的组织

  • 主程序员制小组
  • 民主制小组
  • 层次式小组

软件质量管理

质量特性:

  • ISO/IEC 9126指标
    • 质量特性
      • 功能性
      • 可靠性
      • 易使用性
    • 质量子特性
    • 度量指标
  • Mc Call软件质量模型
    • 产品运行
    • 产品修正
    • 产品转移

质量保证

软件评审

软件容错技术

软件配置管理

Software Configure Management(SCM),用于整个软件工程过程,其目标是标识变更,控制变更,确保变更准确实现, 告有关变更

  • 基线:各开发阶段的一个特定点,使开发阶段的工作划分更明确
  • 软件配置项 Software Configure Item,SCI,配置管理的基本单位
  • 版本控制
  • 变更控制

风险管理

风险类别

识别风险

风险预测/分析风险

评估风险/为每个风险分配优先级

RE:风险显露度/风险暴露(risk exposure)

RE=P

其中,P是风险发生的概率,C是风险发生时带来的项目成本

风险评估

(ri,li,xi)

分别表示风险,概率,影响

风险杠杆 = (降低前的风险暴露-降低后的风险暴露)/(降低风险的成本)

风险控制


回归测试 regression testing:确保已有的功能仍能正常地工作

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月23日
下一篇 2021年1月23日

相关推荐