软件系统开发与软件工程方法讲义_第1页
软件系统开发与软件工程方法讲义_第2页
软件系统开发与软件工程方法讲义_第3页
软件系统开发与软件工程方法讲义_第4页
软件系统开发与软件工程方法讲义_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第七章软件系统开发与软件工程方法

一、软件危机二、软件工程软件系统开发与软件工程方法讲义第1页

一、软件危机1、软件开发发展历程

1960197019801990

早期

第二阶段第三阶段第四阶段

面向批处理

多用户

分布式系统

强大桌面系统

有限分布

实时

嵌入“智能”

面向对象技术

自定义软件

数据库

低成本硬件

教授系统开发者=使用者

软件产品

人工神经网络

并行计算

网络计算机软件系统开发与软件工程方法讲义第2页

一、软件危机2、软件危机

1)案例思索1——FAA失败项目 20世纪80年代中期,更换空中交通控制系统已成为美国联邦航空管理局(FAA)非常优先任务。1989年IBM企业取得更换该系统协议,截止期为,预计投入25亿美元。因为面临着极苛刻需求,该软件项目是已进行最复杂项目之一。比如,交通控制系统必须具备全局完整性而且每七天7天,天天二十四小时不能停顿工作,甚至在升级时或正常维护时,也不允许有停顿时间。任何错误数据都会引发重大伤亡,任何停机均会造成世界范围出行延误或潜在危险。该系统反应时间不能超出2-3秒。另外,该系统设计时必须考虑到允许私人飞机驾驶员继续使用旧设备,并要求软件能在未来移植到更新硬件设备上。当IBM取得该协议后,该系统主要花费为软件开发,用于硬件投入仅为8万美元。1993年,负责该项目标IBM子企业——IBM联邦系统企业被IBM卖给了Loral企业。到1994年,该系统已花费了23亿美元,但还未提交系统任何程序段,而此时估算整个系统花费将增至50亿美元。1994年底,FAA不得不认可该项目失败并进行调查。作为调查结果,FAA取消或修改了系统四个主要部分。面临当前空中控制系统存在隐患,FAA不得不订购了一套作为权宜之计系统,由另一家企业开发。 你认为该项目标失败反应了什么问题?失败主要原因可能是什么?FAA为何选择取消和修改方式而不是增加资源和生产力方式?软件系统开发与软件工程方法讲义第3页FAA对此项目调查总结出原因为以下几条:FAA并没有明确掌握一些系统功效需求。制订了过于急躁开发和实现计划(包含费用与进度预计)在给定软件复杂度下,没有考虑到开发商生产力,尤其是早期阶段需要投入资源。在《人月神话》一书中,Brooks将过去30年大型软件项目标开发比喻为史前陷入沥青坑巨兽。恐龙、猛犸、剑齿虎等动物在焦油中挣扎,然而挣扎得越激烈,就陷得越快,最终都沉到了坑底。过去大型软件项目中,大多数开发出了可运行系统——不过只有极少数满足了目标、进度和预算要求。表面上看起来没有任何一个单独问题会造成困难,每个问题都能取得处理,但这些问题纠缠和积累在一起时,团体行动就越来越慢,而且极难再看清问题本质。软件系统开发与软件工程方法讲义第4页1995年美国商业软件失败统计:软件系统开发与软件工程方法讲义第5页

一、软件危机2、软件危机

案例思索2——遗传信息库建设 在正在建设遗传信息库如,假设你要开发一个管理软件。你并不是一个生物遗传方面教授,甚至对此方面知识一窍不通,你该怎样入手?要使该项目成功,你认为应该有哪些保障条件?你问题是什么:对遗传信息管理需要什么条件:了解遗传信息表示和管理流程怎样实现:与遗传领域教授交流。障碍是什么:难以沟通与交流。可能因误解产生错误需求描述。软件系统开发与软件工程方法讲义第6页

一、软件危机2、软件危机

软件项目为何会失败?

软件项目失败关键问题在哪里?答案只有一个:复杂性。软件要处理问题本身是复杂开发人员普通不是该问题领域教授软件规模要求多人参加,而不一样专业领域人交流是困难软件规模使得既要了解系统整体结构又要把握细节比较困难。软件系统开发与软件工程方法讲义第7页例:Windows95有1000万行代码

Windows有5000万行代码Exchange和Windows开发人员结构ExchangeWindows项目经理25人约250人开发人员140人约1700人测试人员350人约3200人软件系统开发与软件工程方法讲义第8页

一、软件危机2、软件危机

2)软件神话

[1]管理神话神话:相关软件开发理论和方法已经很丰富,有很多可用标准与规范,因而能够确保软件开发顺利进行。现实:理论与方法在大多数实践中并没有得到真正应用。使用者并没有对这些理论与方法建立正确认识。神话:已经有很多强大开发工具和先进计算机硬件,这些能够确保软件开发质量与效率。现实:这些工具并没有得到合理应用。神话:假如我们落后于进度,能够经过增加人手来赶上。现实:向一个已经延迟项目增加人手,只会使延迟项目愈加落后——除非项目中不需要交流。生一个孩子10个月,不论有多少人。软件系统开发与软件工程方法讲义第9页

一、软件危机2、软件危机

2)软件神话

[1]管理神话神话:经过把软件项目外包给实现强大软件开发企业能够确保软件成功。现实:再专业软件企业,不了解客户需求和业务流程,也不可能顺利完成软件开发项目。软件系统开发与软件工程方法讲义第10页更正一个问题需付出代价需求分析结构设计详细设计编码集成测试系统测试现场更正一个问题预计费用更正一个问题预计工作量2020010005.02.50.050.5(美元)(人天)软件系统开发与软件工程方法讲义第11页

一、软件危机2、软件危机

2)软件神话

[2]客户神话神话:有了目标系统普通性描述就能够写程序了,细节能够逐步完善。现实:糟糕系统定义是项目失败主要原因。关于问题域、功效、行为、性能、接口、设计约束以及确认标准形式化、详细描述是必要,这些内容只能经过客户与开发者之间交流才能确定。神话:软件需求是经常变更,而这些变更能够轻易被满足,因为软件是灵活。现实:软件需求确实是轻易变更,但变更代价将随软件开发进度不一样而有很大差异。假如重新项目早期问题定义,需求改变则很轻易被调整,而项目后期需求变更代价可能是致命。软件系统开发与软件工程方法讲义第12页

一、软件危机2、软件危机

2)软件神话[3]实践者神话神话:软件是艺术,软件开发是个人舞台。现实:50年代可能是,现在不是。神话:一旦写完了程序并能正常运行,我们工作就结束了。现实:越早开始写代码,软件开发花费时间就越长。统计表明60%到80%工作量是花在将软件第一次交付给客户以后发生。神话:程序真正运行以前,没有方法评定其质量。现实:高质量实现来自高质量设计。从项目一开始就必须进行技术评审。神话:项目标成功来自于可运行程序提交。软件开发过程中文档是无须要,延缓项目进度东西。现实:软件项目标结果包含很多内容,文档是成功开发基础,也是软件质量确保。好开发质量降低了重复劳动,从而提升了效率,造成更短交付时间。软件系统开发与软件工程方法讲义第13页

一、软件危机2、软件危机

3)软件危机及主要表现软件危机指在计算机软件开发和维护过程中所碰到一系列严重问题——软件开发不能满足日益增加需求;难以维护不停增加已经有软件。[1]成本与进度预计[2]用户需求与产品不一致[3]软件可靠性差[4]可维护性差[5]文档资料不完整[6]软件成本百分比不停上升[7]开发生产率相对停滞软件系统开发与软件工程方法讲义第14页一、软件危机2、软件危机

3)软件项目成败原因分析1)失败项目标主要原因[1]用户需求不完整、被误解或经常改变[2]有限用户参加[3]缺乏行政支持[4]缺乏技术支持[5]项目计划不充分[6]目标不明确[7]没有足够资源(客户没有提供/开发者不具备对应生产力)2)成功项目标主要原因[1]大量用户参加[2]上层管理人员支持[3]完整、详细项目计划[4]符合实际工作进度与里程碑[5]开发人员培训、交流[6]良好工作环境、团体协作机制软件系统开发与软件工程方法讲义第15页一、软件危机2、软件危机

3)消除软件危机思绪——[1]正确观念a)软件不是程序软件是逻辑产品而不是实物产品软件功效依赖于硬件和软件运行环境以及人们对它操作软件特征:功效多样性实现多样性能见度低软件结构合理性差智力密集及知识产权保护b)软件开发不是个体劳动软件设计复杂性软件系统开发与软件工程方法讲义第16页一、软件危机2、软件危机

3)消除软件危机思绪——[2]正确过程管理与控制软件开发技术:软件开发方法软件开发过程软件工具和软件工程环境软件工程管理:软件管理软件经济软件心理软件系统开发与软件工程方法讲义第17页二、软件工程1、软件工程将工程管理思想引入软件开发过程:

转变对软件认识:上升程序系统转变思维定式:上升程序员系统工程师(系统分析员)

工程化训练软件系统开发与软件工程方法讲义第18页二、软件工程1、软件工程将工程管理思想引入软件开发过程:

软件系统开发与软件工程方法讲义第19页用户分析员程序员软件系统开发与软件工程方法讲义第20页“一个好工业,应有一套

良好标准来配套”软件工业化生产过程应具备特点:明确工作步骤详细详细规范化文档明确质量评价标准软件系统开发与软件工程方法讲义第21页软件产品标准化软件开发过程标准化软件系统开发与软件工程方法讲义第22页

强调规范化强调文档化软件工程技术两个显著特点:软件系统开发与软件工程方法讲义第23页二、软件工程1、软件工程FritzBauer在NATO会议上给出定义:“软件工程是为了经济地取得可靠和能在实际机器上高效运行软件而确立和使用健全工程原理(方法)。”

软件系统开发与软件工程方法讲义第24页二、软件工程1、软件工程IEEE【IEE83】给出软件工程定义:“软件工程是开发、运行、维护和修复软件系统方法。”

软件系统开发与软件工程方法讲义第25页二、软件工程1、软件工程

IEEE【IEE93】给出了一个愈加综合定义:“将系统化、规范、可度量方法应用于软件开发、运行和维护过程,即将工程化应用于软件中。”软件系统开发与软件工程方法讲义第26页二、软件工程1、软件工程

软件工程是应用计算机科学、数学及管理科学等原理开发软件工程。它借鉴传统工程标准、方法,以提升质量,降低成本为目标。软件工程所包含内容不是一成不变,而是伴随人们对软件系统研制开发和生产了解不停发展改变,应该用发展眼光对待。软件系统开发与软件工程方法讲义第27页二、软件工程1、软件工程软件工程是一个层次化活动,a)质量——软件工程根基与目标b)过程——建造一个高质量软件所需完成任务框架c)方法——提供了怎样建造软件技术伎俩d)工具——为过程和方法提供自动或半自动化支持(CASE)软件系统开发与软件工程方法讲义第28页工具方法过程质量焦点软件系统开发与软件工程方法讲义第29页二、软件工程2、软件工程普通视图

工程:对技术(或社会)实体分析、设计、结构、验证和管理。首先要问题问题: 要处理什么问题? 实体什么特征能处理这个问题? 怎样设计该实体? 怎样构建该实体? 怎样控制和防止构建过程中错误? 怎样在用户要求修改、适应和增强时长久地支持这些实体?定义阶段:做什么开发阶段:怎样做支持阶段:应对改变项目跟踪与控制技术评审质量确保软件配置管理文档管理复用管理测试管理风险管理支持活动软件系统开发与软件工程方法讲义第30页软件工程框架可用性性性确正合算选取适宜开发模型采取适当设计方法提供高质量工程支持重视软件工程管理基本过程标准

目标过

程支持过程组织过程软件系统开发与软件工程方法讲义第31页软件过程评定软件能力成熟度CMM1-初始级:没有过程定义,个人能力。2-可重复级:基本项目管理过程,跟踪费用与进度,有必要规范以重复类似项目标成功。3-定义级:过程管理文档化、标准化、集成化。使用统一文档化组织过程认可方法开发和维护软件。4-管理级:对软件过程与产品质量进行详细地定量地搜集与评定5-优化级:经过定量反馈不停进行过程优化与改进。软件系统开发与软件工程方法讲义第32页二、软件工程3、软件开发过程——软件生命周期软件产品或软件系统从设计、投入使用到被淘汰全过程。软件系统开发与软件工程方法讲义第33页软件生存期阶段划分(1)可行性研究与计划(2)需求分析(3)总体设计(4)详细设计(5)实现(6)集成测试(7)确认测试(8)使用和维护软件系统开发与软件工程方法讲义第34页二、软件工程3、软件开发过程——软件开发模型软件开发模型是软件开发全部过程、活动和任务结构框架。它能直观表示软件开发全过程,明确要求要完成主要活动、任务和开发策略。软件开发模型也常称为:软件过程模型软件生存期模型软件工程范型软件系统开发与软件工程方法讲义第35页二、软件工程2、软件开发过程——瀑布模型可行性研究与计划需求分析设计编码运行维护测试定义阶段开发阶段维护阶段软件系统开发与软件工程方法讲义第36页按照传统瀑布模型开发软件特点1.阶段间含有次序性和依赖性。2.推迟实现观点。3.每个阶段必须完成要求文档;每个阶段结束前完成文档审查,及早更正错误。软件系统开发与软件工程方法讲义第37页二、软件工程2、软件开发过程——原型模型建造/修改原型用户测试运行原型

听取用户意见软件系统开发与软件工程方法讲义第38页采取原型模型软件生存周期分析定义系统需求生成原型系统设计程序设

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论