null软件开发工程管理软件开发工程管理第一讲本讲主要内容本讲主要内容认识有关“软件危机”的几个概念
复习软件工程
掌握项目、项目管理等概念软件失控(1/8)软件失控(1/8)软件失控项目(Software Runaway):
指在创建系统所需软件时遇到困难,导致大大超出可控制范围的项目
超时
超支
产品无法达到预期要求
显著未能实现目标和(或)至少超出原定预算30%(100% by. Robert. Glass)的项目到底有多少软件项目失控?98%软件失控(2/8)软件失控(2/8)软件危机(Software Crisis):
软件总是超出预算、落后于进度表,而且不可靠。
用最新的技术不见得能解决“危机”!
其实我们不相信真的存在软件危机软件失控案例(1/8)软件失控案例(1/8)案例:佛罗里达福利救济系统
项目名称:佛罗里达在线接收集成数据访问系统
系统规模:
基于巨型机的系统
支持84个数据库、1390个程序、12000多个终端和个人计算机、每天550万次在线交易
开发目标:
每年节省上百万州资金软件失控案例(2/8)软件失控案例(2/8)承接公司:EDS
合同
劳动合同范本免费下载装修合同范本免费下载租赁合同免费下载房屋买卖合同下载劳务合同范本下载
期限:3年(1989~1992)
合同价值:8500万美元软件失控案例(3/8)软件失控案例(3/8)结果:
EDS公司拒绝了价值1900万美元的两个一年期合同
为几十万人错误地发放了医疗补助卡
多支付2.6亿美元医疗补助
少支付5800万美元医疗补助
美联邦对该州处以1.44亿美元的罚款软件失控案例(4/8)软件失控案例(4/8)主要原因:
项目目标不明确
沟通不善
错误估计系统规模
技术选择不合理
……软件失控案例(5/8)软件失控案例(5/8)案例:丹佛国际机场
项目名称:丹佛国际机场行李处理系统
开发目标:
建造世界上最大的机场
建造世界上最复杂的自动化行李处理系统
实现30分钟内转乘飞机
……软件失控案例(6/8)软件失控案例(6/8)机场项目预算:政府拨款5亿美元,总计20亿美元
行李系统部分承接公司:BAE
合同期限:2年(1992~1994)
软件失控案例(7/8)软件失控案例(7/8)结果:
本该在1993年10月竣工的机场,推迟到1995年1月28日才启用,落后进度16个月
超出预算近20亿美元
交付时不是一条行李处理系统,而是三条
BAE被处以每天1.2万美元的罚款
丹佛市向BAE索赔5000万美元
BAE反诉丹佛市,并索赔4000万美元
……软件失控案例(8/8)软件失控案例(8/8)主要原因:
项目目标不明确
边建设边设计
沟通不善
项目组织问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
项目管理问题
政府职能问题
法律问题
……软件失控(3/8)软件失控(3/8)两难境地(Crunch Mode by. John Boddie):
处于两难境地的项目面临着无法达到最初目标的威胁,而项目团队在努力想要跨越该困难。
死亡行军(Death March by. Ed Yourdon):
项目的各项参数超出正常标准至少50%。
死亡行军项目已经司空见惯——作者
软件失控(4/8)软件失控(4/8)两难境地:
用来描述进度表极其紧迫的项目;
死亡行军:
描述其进度表几乎不可能完成的项目;
失控:
用来描述接近于或者已告终结的项目。
两难境地死亡行军失控
软件失控(5/8)软件失控(5/8)软件失控主要原因:
需求不明确,项目目标不完整
拙劣的
计划
项目进度计划表范例计划下载计划下载计划下载课程教学计划下载
和过于乐观的评估
采用新技术
管理
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
缺乏或不恰当
团队组织不当,缺少资深人员
性能问题
软件失控(6/8)软件失控(6/8)相关研究结论:
许多失控的项目都是(或曾是)“野心过大”的项目。
很多项目失败的原因是多方面的。可能有主要原因,也可能没有,但是多数失控的项目都出现了问题。
管理问题比技术性问题更多地成为主要原因。
进度超时(89%)比成本超额(62%)更普遍。软件失控(7/8)软件失控(7/8)相关研究结论:
被调查者认为在政府和金融部门中应该有更多的失控项目,而服务业和制造业中较少。但调查结果显示,所有的部门都同样难逃其患。
被调查者对于失控的趋势很乐观,42%的人认为失控项目的数量会降低,只有8%的人认为会增长。
失控项目通常在项目生命期的早期就显示了他们的真实面目。超过50%的项目在开发过程中显示出问题症状,而25%的项目在初始的计划阶段就显示出了问题的症状。软件失控(8/8)软件失控(8/8)相关研究结论:
首先意识到项目失控的是项目团队(72%),只有19%的项目失控是由高级管理层首先意识到的。
技术越来越成为项目失控的原因。“企业采用新技术”渐渐成为导致项目失控的普遍原因。
没有运用风险管理的项目更容易失控。NextNext你了解软件吗?软件(一)软件(一)什么是软件?
软件 == 程序?
软件 = 程序+数据+文档软件(二)软件(二)一些困扰我们多年的问题:
为什么需要那么长时间才能结束开发?
为什么成本这么高?
为什么我们不能在把软件交付给客户之前就发现所有的错误?
为什么在软件开发过程中我们总是难以度量其进展?
软件工作遵循自行车第一定律——
不管你去哪里,总是上坡和顶风!软件(三)软件(三)上述问题不是答案的答案:
软件是这世界上最复杂的产品!
软件是逻辑的,而不是有形的!1、软件是被开发或设计的,不是被制造的
2、软件不会“磨损”
3、大多数软件仍是定制的软件(四)软件(四)广泛流传于软件界的神话:
我们有最棒的开发工具,有最新的计算机……
就算我们进度落后于计划,仍可以通过增加程序员来赶上进度!
对目标有一点儿了解就可以开始写程序了,我们可以慢慢补充细节!
一旦我们写出了程序并使其正常运行,我们的工作就结束了!
在程序真正运行之前,没有办法评估其质量!
……NextNext你了解软件吗?
怎么做能保证软件质量?
采用合理的——软件工程技术软件工程(一)软件工程(一)定义:
将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;
对上文所述方法的研究。
目标:
生产正确、可用及具有经济效益的产品软件工程(二)软件工程(二)活动:
问题定义
可行性研究
需求
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
设计
实现
确认
支持软件工程(三)软件工程(三)软件过程 == 软件工程?
软件过程的通俗解释:
一个路线图——一系列可预测的步骤
从技术角度的解释:
一个为建造高质量软件所需完成的任务的框架
一个过程通常包含若干软件工程活动
结论:
软件过程既是软件工程又不是软件工程软件工程(四)软件工程(四)软件过程的一般性特征
定义阶段
开发阶段
支持阶段
大量的庇护性活动软件工程(五)软件工程(五)常用的软件过程模型:
线性模型
原型实现模型
增量模型
螺旋模型
……NextNext你了解软件吗?
怎么做能保证软件质量?
采用合理的——软件工程技术
什么是项目?项目 ——定义项目 ——定义什么是项目?
在一定约束条件下具有特定目标的一项一次性任务
是已计划的任务
通常分为常规项目和非常规项目
常规项目多称之为常规运作项目 ——定义项目 ——定义项目与常规运作:
项目是一次性的,常规运作是重复进行的
项目是以目标为导向的,常规运作是通过效率和有效性体现的
项目中存在大量的变更管理,常规运作基本保持持续的连贯性项目 ——定义项目 ——定义多用以下特征判断项目性质:
涉及非常规任务
需要策划
要满足特定的目标或要创造特定的产品
项目有预先确定的时间跨度
为别人工作而不是为自己工作
工作涉及到几个学科
工作分几个阶段进行
可用于项目的资源是受到限制的
项目庞大或者复杂思考思考将以下问题排序,顶部的为“项目”,底部的为“常规运作”:
编辑一版报纸
在火星上投放机器人设备搜索生命迹象
准备结婚
改进财务计算机系统以处理通用货币问题
开发优秀人机界面的研究项目
对用户使用某计算机系统时出现的问题的原因进行调查
为班级学生分配C++课程的实验任务
为某台新计算机编制操作系统
在组织中安装新版本的配置管理软件项目 ——组成要素(一)项目 ——组成要素(一)项目是有生命周期的
项目启动阶段
项目计划阶段
项目执行阶段
项目结束阶段项目 ——组成要素(二)项目 ——组成要素(二)项目当事人和项目利益相关者
项目当事人
项目的参与各方
项目利益相关者
项目当事人和其利益受该项目影响的个人和组织项目 ——组成要素(三)项目 ——组成要素(三)项目的组织结构
项目型组织和非项目型组织
项目型管理和非项目型管理
外部环境的影响项目管理 ——定义项目管理 ——定义什么是项目管理?
在一个确定的时间范围内,为了完成一个既定的目标,通过特殊形式的临时性组织运行机制,经有效的计划、组织、领导和控制,充分利用既定有限资源的一种系统管理方法
项目管理 ——特点项目管理 ——特点综合性
创造性
时间性项目管理 ——要素项目管理 ——要素范围
时间
成本
质量
组织
客户满意度建议采用的管理活动建议采用的管理活动计划
组织
人员
指导
监督
控制
革新
代表做好软件项目管理的一些要点做好软件项目管理的一些要点设定目的
设定子目的和目标
并提供有效性度量
确定项目利益相关者
通过业务案例进行成本效益分析
生成完整的需求规格说明
对整个活动进行管理和控制
……软件项目管理——概述(一)软件项目管理——概述(一)特点:
抽象性
没有物理制造过程
缺陷检测的困难性
只能通过测试降低错误率,但几乎不可能根除
高度的复杂性
实际问题复杂,自身逻辑复杂
缺乏统一规则
手工作坊式开发软件项目管理——概述(二)软件项目管理——概述(二)软件项目管理的内容:
需求管理
时间管理
成本管理
配置管理
风险管理
质量管理
资源管理
沟通管理
合同管理
……