【软件工程系列】软件项目管理
软件项目管理
有效的软件项目管理集集中在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表示技术状态常数,其值依赖于开发环境
软件度量
分类:
- 面向规模的度量:通常用程序的代码行数LOC来衡量
- 面向功能的度量
- 生产率度量
- 质量度量
- 技术度量
复杂性度量:规模、难度、结构、智能度
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:确保已有的功能仍能正常地工作
【软件工程系列】软件项目管理相关推荐
- 软件工程系列- 软件开发的可行性研究
软件工程系列 - 软件开发的可行性分析 软件开发过程中的可行性是指,软件开发过程中,在各种软件开发环境下,用最小的代价在尽可能短的时间内确认问题是否能够解决. 软件可行性一般可以从这几个方面进行分析: ...
- 东软 软件工程3 软件项目管理 团队组织管理
团队组织管理 团队的概念 项目组的组织原则 项目组的组织方式 软件项目管理过程组
- [软件工程] 软件项目管理
软件项目管理 软件项目管理 一.估算软件规模 (一) 代码行技术 (二) 功能点技术 1. 信息域特性 2. 估算功能点的步骤 (1)第1步:计算未调整的功能点数UFP (2)第2步:计算技术复杂性因 ...
- 软件工程与项目管理的关系_PM:软件项目管理概要
软件项目管理的定义 软件工程的活动包括问题定义.可行性研究.需求分析.设计.实现.确认.支持等,所有这些活动都必须进行管理,软件项目管理贯穿于软件工程的演化过程之中,如图1 所示. 软件项目管理的过程 ...
- 『软件工程6』详解软件项目管理之软件范围与估算
软件项目管理--软件范围与估算 一.软件项目计划 1.目标 2.步骤 二.软件范围 1.软件范围定义 2.软件范围--引例 三.影响估算的因素 四.软件项目资源 1.软件项目资源构成 2.分析图 3. ...
- 『软件工程4』一文了解软件项目管理中的4P
软件项目管理中的4P 一.项目管理的重要性和定义 1.重要性(两个阶段) 2.软件项目管理的定义 二.管理四要素4P 1.管理的四要素(4P) 2.软件项目中影响最终结果的要素 3.项目管理关心的问题 ...
- (软件工程复习核心重点)第十二章软件项目管理习题
选择题 填空题 功能点技术信息域特性有 输入项数 输出项数 查询数 主文件数 外部接口数 一个任务集合包括 一组软件工程工作任务 里程碑 可交付的产品 COCOMO2的三层模型 应用系统组成模型 早期 ...
- (软件工程复习核心重点)第十二章软件项目管理-第一节:软件项目管理综述、估算软件规模和工作量估算
文章目录 一:软件项目管理综述 (1)管理 (2)软件项目管理 二:估算软件规模 (1)代码行技术 A:定义 B:方法 C:优缺点 (2)功能点技术 A:定义 B:信息域特性 C:估算功能点的步骤 ① ...
- 软件工程学习笔记(二)软件项目管理
软件项目管理 项目的特征:临时性,独特性,逐步完善 人员 软件项目的参与人员 软件开发团队 组织方式:民主式组织结构,主程序员式组织结构,技术管理式组织结构,大型项目的层次式组织结构 选择人员进行软件 ...
最新文章
- 数据分析师必看:5大概率分布,你了解多少?
- 在cxf中使用配置避免增加字段导致客户端必须更新、同步实体属性的问题
- Windows Server 2016 + Exchange 2016 +Office365混合部署(四)
- CUDA编程之快速入门
- C++ JSON库:JSON for Morden C++
- axios某一接口失败后不调用_axios 源码系列之如何取消请求
- cisco 2960 VLAN MAC_Mac翻译系列软件推荐一:欧路词典 for Mac
- 多叉树的前序遍历_多叉树的创建和遍历(为Trie树做准备)
- 饿了么想解决外卖小哥马路杀手的问题,但用无人机?
- 数据结构之搜索算法二:二叉搜索树
- JavaScript学习笔记(3)——JavaScript与HTML的组合方式
- [个人自用,全网最优]EDEM-FLUENT个人自学教程,拒绝手忙脚乱无用功!
- Win11设置定时关机命令没反应怎么办?
- html表头和左侧固定js,JS固定表头及固定左边列
- 逆向-攻防世界-logmein
- 对SPEA算法的一些总结
- iphone6s html5没声音,iphone6S来电没声音怎么回事?解决iphone来电没声音的方法
- echarts 报错Failed to execute 'createRadialGradient' on 'CanvasRenderingContext2D': The provided doubl
- 解决Error:403 No valid crumb was included in the request
- hadoop开发环境配置