软件项目管理
有效的软件项目管理集集中在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表示技术状态常数,其值依赖于开发环境
软件度量
分类:
- 面向规模的度量:通常用程序的代码行数LOC来衡量
- 面向功能的度量
- 生产率度量
- 质量度量
- 技术度量
复杂性度量:规模、难度、结构、智能度
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进行处理,非常感谢!