软件项目管理

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

  • 人员(Person):工作风格(外向/内向、理性/感性)

    • 项目管理人员
    • 高级管理人员
    • 研发人员
    • 客户
    • 最终用户
  • 产品(Product)
  • 过程(Procedure)
  • 项目(Project)

项目组织:

  • 主程序员负责制小组

    chief programmer team

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

    egoless approach

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

    • 大量的不确定性时

软件项目估算

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

成本估算方法

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

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

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

COCOMO 估算模型

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

    E=a(L)bD=cEdE=a(L)^b\\D=cE^dE=a(L)bD=cEd

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

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

    E=a(L)bEAFE=a(L)^bEAFE=a(L)bEAF

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

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

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

E=bScm(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+2pV(G)=m-n+2pV(G)=m−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∗C

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

风险评估

(ri,li,xi)

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

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

风险控制


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

【软件工程系列】软件项目管理相关推荐

  1. 软件工程系列- 软件开发的可行性研究

    软件工程系列 - 软件开发的可行性分析 软件开发过程中的可行性是指,软件开发过程中,在各种软件开发环境下,用最小的代价在尽可能短的时间内确认问题是否能够解决. 软件可行性一般可以从这几个方面进行分析: ...

  2. 东软 软件工程3 软件项目管理 团队组织管理

    团队组织管理 团队的概念 项目组的组织原则 项目组的组织方式 软件项目管理过程组

  3. [软件工程] 软件项目管理

    软件项目管理 软件项目管理 一.估算软件规模 (一) 代码行技术 (二) 功能点技术 1. 信息域特性 2. 估算功能点的步骤 (1)第1步:计算未调整的功能点数UFP (2)第2步:计算技术复杂性因 ...

  4. 软件工程与项目管理的关系_PM:软件项目管理概要

    软件项目管理的定义 软件工程的活动包括问题定义.可行性研究.需求分析.设计.实现.确认.支持等,所有这些活动都必须进行管理,软件项目管理贯穿于软件工程的演化过程之中,如图1 所示. 软件项目管理的过程 ...

  5. 『软件工程6』详解软件项目管理之软件范围与估算

    软件项目管理--软件范围与估算 一.软件项目计划 1.目标 2.步骤 二.软件范围 1.软件范围定义 2.软件范围--引例 三.影响估算的因素 四.软件项目资源 1.软件项目资源构成 2.分析图 3. ...

  6. 『软件工程4』一文了解软件项目管理中的4P

    软件项目管理中的4P 一.项目管理的重要性和定义 1.重要性(两个阶段) 2.软件项目管理的定义 二.管理四要素4P 1.管理的四要素(4P) 2.软件项目中影响最终结果的要素 3.项目管理关心的问题 ...

  7. (软件工程复习核心重点)第十二章软件项目管理习题

    选择题 填空题 功能点技术信息域特性有 输入项数 输出项数 查询数 主文件数 外部接口数 一个任务集合包括 一组软件工程工作任务 里程碑 可交付的产品 COCOMO2的三层模型 应用系统组成模型 早期 ...

  8. (软件工程复习核心重点)第十二章软件项目管理-第一节:软件项目管理综述、估算软件规模和工作量估算

    文章目录 一:软件项目管理综述 (1)管理 (2)软件项目管理 二:估算软件规模 (1)代码行技术 A:定义 B:方法 C:优缺点 (2)功能点技术 A:定义 B:信息域特性 C:估算功能点的步骤 ① ...

  9. 软件工程学习笔记(二)软件项目管理

    软件项目管理 项目的特征:临时性,独特性,逐步完善 人员 软件项目的参与人员 软件开发团队 组织方式:民主式组织结构,主程序员式组织结构,技术管理式组织结构,大型项目的层次式组织结构 选择人员进行软件 ...

最新文章

  1. 数据分析师必看:5大概率分布,你了解多少?
  2. 在cxf中使用配置避免增加字段导致客户端必须更新、同步实体属性的问题
  3. Windows Server 2016 + Exchange 2016 +Office365混合部署(四)
  4. CUDA编程之快速入门
  5. C++ JSON库:JSON for Morden C++
  6. axios某一接口失败后不调用_axios 源码系列之如何取消请求
  7. cisco 2960 VLAN MAC_Mac翻译系列软件推荐一:欧路词典 for Mac
  8. 多叉树的前序遍历_多叉树的创建和遍历(为Trie树做准备)
  9. 饿了么想解决外卖小哥马路杀手的问题,但用无人机?
  10. 数据结构之搜索算法二:二叉搜索树
  11. JavaScript学习笔记(3)——JavaScript与HTML的组合方式
  12. [个人自用,全网最优]EDEM-FLUENT个人自学教程,拒绝手忙脚乱无用功!
  13. Win11设置定时关机命令没反应怎么办?
  14. html表头和左侧固定js,JS固定表头及固定左边列
  15. 逆向-攻防世界-logmein
  16. 对SPEA算法的一些总结
  17. iphone6s html5没声音,iphone6S来电没声音怎么回事?解决iphone来电没声音的方法
  18. echarts 报错Failed to execute 'createRadialGradient' on 'CanvasRenderingContext2D': The provided doubl
  19. 解决Error:403 No valid crumb was included in the request
  20. hadoop开发环境配置

热门文章

  1. 复韵母有哪些?18个复韵母都有什么
  2. 拜托,面试请不要再问我 Spring Cloud Alibaba 底层原理
  3. Python ROS键盘控制机械臂
  4. Arthas阿尔萨斯的使用安装详细教程
  5. Java 16只球队分组
  6. [统计学教程] 第七章 假设检验
  7. 记事本编写java代码出现中文乱码
  8. vfloppy使用问题
  9. Android PAD扫描枪扫描二维码条形码
  10. JavaScript伪数组和数组