软件工程案例分析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件危机
一种看法
“两难境地(Crunch Mode)”:处于两难境地的项目 面临无法达到最初目标的威胁(费用、进度表、功能 性等),而项目团队努力想跨越困境。
“我们正处于两难境地,在半夜之前是不会回家”
“死亡行军(Death March)”:用来描述其进度表几 乎不可能完成的项目。
“这是一个死亡行军项目,我希望自己不要参与进去”
3000多个工程师,几百个小团队。
Exchange2000和 Windows2000开发人员结构
项目经理
Exchange2000 25人
Windows2000 约250人
开发人员
140人
约1700人百度文库
测试人员
350人
约3200人
“软件工程案例分析”课程与其它 软件专业课的区别
(1) 立足于系统的整体。
1999 年 10 月,耗资 1.25 亿美元的 NASA 的 火星气象卫星失踪(公英制转换)
软件危机
一些数据:
大约70%的软件开发项目超出了估算的时间,大 型项目平均超出计划交付时间20%到50%,90% 以上的软件项目开发费用超出预算,并且项目越 大,超出项目计划的程度越高
美国政府审计局:只有不到2%的合同定购软件 在发布时具有可用性——98%以上的项目都失败 了
从系统的角度看软件项目
一个项目关注于生成一个系统和/或将一个旧系统 转换为一个新系统
系统,子系统和环境 开放和封闭系统
项目失败的一个原因是技术人员不能够开放系统和立 即接受外界的变化。
部分优化
例如:可能很高效,但是难于修改
社会技术系统
软件项目属于此类
软件项目中的人员
项目影响者(stakeholders)
制约软件产业发展的因素
软件开发规范与标准 知识产权环境 知识结构 公司体制
项目与项目管理
项目是什么
没有例行的任务 需要计划 特定的目标需要满足或者特定的产品需要生成 项目有一个预定义的时间范围 工作不仅仅是为自己,也是为他人 工作中有些特性 工作分为若干阶段 项目完成需要资源 项目是大型的或者复杂的
项目小组内部: 项目小组外部,但是在同一组织内: 项目小组和组织外部:如客户
不同的项目影响者有不同的目标,因而项 目领导者需要能够协调这些目标。Boehm和 Ross提出软件项目管理的“W理论”,该理 论关注于所有各方都能从项目种获益因而 对项目的成功都有兴趣。(W代表Everyone a Winner)
软件项目的活动
需求分析 描述 设计 编码 校验 安装 维护
软件项目分类
按软件类别
信息系统:与组织接口 嵌入式系统:接口是机器 操作系统是一个信息系统还是嵌入式系统?
有些项目是为了生成某一产品,而某些项 目的进行是为了达到某些目标。许多软件 项目分为两个阶段,第一阶段是目标驱动 ,第二阶段再生成真正的软件产品。
软件工程案例分析
陈天洲 浙江大学计算机学院
软件特征(1)
最根本的:软件是一种逻辑元素而不是物理元素
软件是开发出的,而不是用传统的方法制造出来 的
软件不会被用坏
失败概率
一般产品的浴盆曲线
时间
软件特征(2)
失败 概率
软件失败概率 实际曲线
软件失败概 率理想曲线
时间
软件特征(3)
工业界已经走向了标准化装配时代,然而 绝大多数软件还是定制出来的。
软件工程技术的两个明显特点
• 强调规范化
• 强调文档化
新世纪软件产业的趋势
• 网络化趋势:计算机与通信的融合趋势
万维网智能网络
•服务化趋势:“打包式”软件 “服务式
”软件
•全球化趋势
中国软件产业发展主要问题
产业规模小、集中度低 产业竞争力弱,缺乏核心技术 市场秩序较为混乱,盗版严重
软件危机的主要特征
软件开发周期大大超过规定日期; 软件开发成本严重超标; 软件质量难于保证
软件成功的标准
用户在用 用户可很容易做完要做的事
失败的根本原因: 开发人员写出的东西达不到 用户要求(人的问题.技术问题)
软件技术面临的问题
• 规模 • 复杂性 • 生产率
例:•Windows95有1000万行代码 •Windows2000有5000万行代码,
项目管理是什么
项目管理是在项目活动中应用知识,技能,工具和技术 来满足项目需求的过程,它通过初始化,计划,执行, 控制和结束等活动来完成。
软件项目与软件项目管理
软件项目的特征 不可见 复杂性(以每一单位货币来看) 灵活性:软件去适应人或组织而不是相反
一致性
软件项目管理
为了使软件项目能够按照预定的成本、进度、质量顺 利完成,而对成本、人员、进度、质量、风险等进行 分析和管理的活动。
(2) 系统分析、系统设计、 测试及维护的方法实践。
(3) 构筑一个软件系统,实践 软件开发全过程。
系统分析员的地位
用户
分析员
程序员
“一个好的工业,应有一套 良好的标准来配套”
软件工业化生产过程应具备的特点
明确的工作步骤 详细具体的规范化文档 明确的质量评价标准
软件产品的标准化 软件开发过程的标准化
科学计算函数库(60年代) 重用数据结构 重用组件
成本结构发生了巨大的变化
一次性的制造成本 介质成本的可忽略性-逻辑产品 不可回逆的投入 维护成本的增加 服务是质量要素中的重点
软件危机
“软件危机” 是1958年在NATO会议上作为 一个正式的议题被提出来
软件项目不成功的例子比比即是:
软件危机
更准确的说法:慢性痛苦(chronic affliction) Suggested by Prof. Daniel Tiechrow, University of Michigan
尽管忍受痛苦,但是软件依然在我们这个 世界起着越来越重要的作用,但是如果能 够医治痛苦,那么软件业将发展得更加健 康。
软件开发面临的挑战
处理最终日期(deadlines)(85%) 处理资源约束(83%) 与任务小组有效的沟通(80%) 从小组成员处得到承诺(74%) 建立可测量的milestone(90%) 处理变化(60%) 得到团队公认的项目计划(57%) 从管理层得到承诺(45%) 处理冲突(42%)管理销售商和子项目承包商(