软件系统开发与软件工程方法讲义34371.pptx
《软件系统开发与软件工程方法讲义34371.pptx》由会员分享,可在线阅读,更多相关《软件系统开发与软件工程方法讲义34371.pptx(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第七章 软件系统开发与软件工程方法 n n一、软件危机n n二、软件工程一、软件危机1、软件开发的发展历程 1960 1970 1980 1990 2000 早期 第二阶段 第三阶段 第四阶段面向批处理 多用户 分布式系统 强大的桌面系统有限的分布 实时 嵌入“智能”面向对象技术自定义软件 数据库 低成本硬件 专家系统开发者=使用者 软件产品 人工神经网络 并行计算 网络计算机一、软件危机2、软件危机 1)案例思考1FAA的失败项目 20世纪80年代中期,更换空中交通控制系统已成为美国联邦航空管理局(FAA)非常优先的任务。1989年IBM公司获得更换该系统的合同,截止期为2001年,预计投入
2、25亿美元。由于面临着极苛刻的需求,该软件项目是已进行的最复杂的项目之一。例如,交通控制系统必须具备全局完整性并且每周7天,每天24小时不能停止工作,甚至在升级时或正常维护时,也不允许有停顿时间。任何错误的数据都会引起重大伤亡,任何停机均会导致世界范围的出行延误或潜在的危险。该系统的反应时间不能超过2-3秒。此外,该系统设计时必须考虑到允许私人飞机驾驶员继续使用旧设备,并要求软件能在未来移植到更新的硬件设备上。当IBM获得该合同后,该系统的主要花费为软件开发,用于硬件的投入仅为8万美元。1993年,负责该项目的IBM子公司IBM联邦系统公司被IBM卖给了Loral公司。到1994年,该系统已花
3、费了23亿美元,但尚未提交系统的任何程序段,而此时估算整个系统的花费将增至50亿美元。1994年底,FAA不得不承认该项目失败并进行调查。作为调查的结果,FAA取消或修改了系统的四个主要部分。面临当前空中控制系统存在的隐患,FAA不得不订购了一套作为权宜之计的系统,由另一家公司开发。你认为该项目的失败反映了什么问题?失败的主要原因可能是什么?FAA为什么选择取消和修改的方式而不是增加资源和生产力的方式?FAA对此项目调查总结出的原因为以下几条:FAA并没有明确掌握某些系统功能的需求。制定了过于急躁的开发和实现计划(包括费用与进度的估计)在给定的软件复杂度下,没有考虑到开发商的生产力,尤其是早期
4、阶段需要投入的资源。在人月神话一书中,Brooks将过去30年大型软件项目的开发比喻为史前陷入沥青坑的巨兽。恐龙、猛犸、剑齿虎等动物在焦油中挣扎,然而挣扎得越激烈,就陷得越快,最终都沉到了坑底。过去的大型软件项目中,大多数开发出了可运行的系统不过只有极少数满足了目标、进度和预算的要求。表面上看起来没有任何一个单独的问题会导致困难,每个问题都能获得解决,但这些问题纠缠和积累在一起时,团队的行动就越来越慢,并且很难再看清问题的本质。1995年美国的商业软件失败统计:一、软件危机2、软件危机 案例思考2遗传信息库建设 在 正 在 建 设 的 遗 传 信 息 库 如,假 设 你 要 开 发 一 个 管
5、 理 软 件。你 并 不 是 一 个 生 物 遗 传 方 面 的 专 家,甚 至 对 此 方 面 的 知 识一 窍 不 通,你 该 如 何 入 手?要 使 该 项 目 成 功,你 认 为 应 该有哪些保障条件?你的问题是什么:对遗传信息的管理需要什么条件:了解遗传信息的表示和管理流程如何实现:与遗传领域的专家交流。障碍是什么:难以沟通与交流。可能因误解产生错误的需求描述。一、软件危机2、软件危机 软件项目为什么会失败?软件项目失败的核心问题在哪里?答案只有一个:复杂性。软件要解决的问题本身是复杂的开发人员一般不是该问题领域的专家软件规模要求多人参与,而不同专业领域的人的交流是困难的软件规模使得
6、既要理解系统整体结构又要把握细节比较困难。n例:Windows95有1000万行代码 Windows2000有5000万行代码Exchange2000和 Windows2000开发人员结构Exchange2000 Windows2000项目经理25人 约250人开发人员140人 约1700人测试人员350人 约3200人一、软件危机2、软件危机 2)软件神话 1管理神话神话:有关软件开发的理论和方法已经很丰富,有很多可用的标准与规范,因而可以保证软件开发的顺利进行。现实:理论与方法在大多数实践中并没有得到真正的应用。使用者并没有对这些理论与方法建立正确的认识。神话:已经有很多强大的开发工具和先
7、进的计算机硬件,这些可以保证软件开发的质量与效率。现实:这些工具并没有得到合理的应用。神话:如果我们落后于进度,可以通过增加人手来赶上。现实:向一个已经延迟的项目增加人手,只会使延迟的项目更加落后除非项目中不需要交流。生一个孩子10个月,无论有多少人。一、软件危机2、软件危机 2)软件神话 1管理神话神话:通过把软件项目外包给实现强大的软件开发公司可以保证软件的成功。现实:再专业的软件公司,不了解客户的需求和业务流程,也不可能顺利完成软件开发项目。改正一个问题需付出的代价需求分析结构设计详细设计编码集成测试系统测试现场改正一个问题的估计费用改正一个问题估计的工作量20200200010005.
8、02.50.050.5(美元)(人天)一、软件危机2、软件危机 2)软件神话 2客户神话神话:有了目标系统的一般性描述就可以写程序了,细节可以逐步完善。现实:糟糕的系统定义是项目失败的主要原因。关于问题域、功能、行为、性能、接口、设计约束以及确认标准的形式化的、详细的描述是必要的,这些内容只能通过客户与开发者之间的交流才能确定。神话:软件需求是经常变更的,而这些变更可以容易的被满足,因为软件是灵活的。现实:软件需求确实是容易变更的,但变更的代价将随软件开发的进度不同而有很大的差异。如果重新项目早期的问题定义,需求变化则很容易被调节,而项目后期需求变更的代价可能是致命的。一、软件危机2、软件危机
9、 2)软件神话3实践者的神话神话:软件是艺术,软件开发是个人的舞台。现实:50年代可能是,现在不是。神话:一旦写完了程序并能正常运行,我们的工作就结束了。现实:越早开始写代码,软件开发花费的时间就越长。统计表明60%到80%的工作量是花在将软件第一次交付给客户以后发生的。神话:程序真正运行以前,没有办法评估其质量。现实:高质量的实现来自高质量的设计。从项目一开始就必须进行技术评审。神话:项目的成功来自于可运行程序的提交。软件开发过程中的文档是不必要的,延缓项目进度的东西。现实:软件项目的成果包含很多内容,文档是成功开发的基础,也是软件质量的保证。好的开发质量降低了重复劳动,从而提高了效率,导致
10、更短的交付时间。一、软件危机2、软件危机 3)软件危机及主要表现软件危机指在计算机软件开发和维护过程中所遇到的一系列严重问题软件开发不能满足日益增长的需求;难以维护不断增长的已有软件。1成本与进度的估计2用户需求与产品不一致3软件可靠性差4可维护性差5文档资料不完整6软件成本比例不断上升7开发生产率相对停滞一、软件危机2、软件危机 3)软件项目成败的因素分析1)失败项目的主要原因1用户需求不完整、被误解或经常变化2有限的用户参与3缺少行政支持4缺少技术支持5项目计划不充分6目标不明确7没有足够的资源(客户没有提供/开发者不具备相应生产力)2)成功项目的主要原因1大量的用户参与2上层管理人员的支
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 系统 开发 软件工程 方法 讲义 34371
限制150内