一讲软危机与软工程课件

上传人:沈*** 文档编号:240907460 上传时间:2024-05-17 格式:PPT 页数:38 大小:301.50KB
返回 下载 相关 举报
一讲软危机与软工程课件_第1页
第1页 / 共38页
一讲软危机与软工程课件_第2页
第2页 / 共38页
一讲软危机与软工程课件_第3页
第3页 / 共38页
点击查看更多>>
资源描述
软件工程 Software Engineering第一讲王玉善 课程简介授课内容授课方式考核方式参考书目:软件工程:实践者的研究方法(第5版),Roger S.Pressman 机械工业出版社议题第1章 软件工程学概述软件软件危机软件工程 计算机软件已经成为一种驱动力。它是进行商业决策的引擎;它是现代科学研究和工程问题寻求解答的基础;它也是鉴别现代产品和服务的关键因素。它被嵌入在各种类型的系统中:交通、医疗、电信、军事、工业生产过程、娱乐、办公、难以穷举。软件在现代社会中确实是必不可少的。而且我们进入21世纪,软件将成为从基础教育到基因工程的所有领域新进展的驱动器。什么是软件软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合程序是按事先设计的功能和性能要求执行的指令序列数据是使程序能正常操纵信息的数据结构文档是与程序开发,维护和使用有关的图文材料软件的特点软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性软件的生产与硬件不同,在它的开发过程中没有明显的制造过程在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题软件的特点软件的特点软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性软件本身是复杂的实际问题的复杂性程序逻辑结构的复杂性 软件成本相当昂贵相当多的软件工作涉及到社会因素软件的发展In the early days:“Software”=“Place a sequence of instructions together to get the computer to do something useful”.User ComputerComputer became cheaper and more commonHigh level languages were inventedProgrammerUser ComputerLate 1950s:Early 1960s:Very few large software projects were done by some experts.Middle to late 1960s:Truly large software systems were attempted.After 1968:Software Engineering软件危机(Crisis)软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题:成本和进度软件产品的质量可维护性软件通常没有适当的文档资料。软件成本在计算机系统总成本中所占的比例逐年上升。软件开发生产率产生软件危机的原因 项目没有被很好地理解;计划不周,最终导致进度拖延。例 在20世纪60年代后期,一位热情的年青工程师受命为一个自动化制造应用项目“编写”计算机程序。选择他的理由非常简单,因为在整个技术小组中他是唯一参加过计算机编程培训的人。这位工程师对汇编语言的IN和OUT指令以及Fortran语言有所了解,但是却根本不懂软件工程,更不要说项目进度安排和跟踪了。他的老板给了他一大堆相关的手册,以及需要做些什么的口头描述。年轻人被告知该项目必须在两个月之内完成。他阅读了这些手册,想好了解决方法,就开始编写代码。两周后,老板将他叫到办公室询问项目进展情况。问题出在哪里?“非常好”工程师以年轻人的热情回答道,“这个项目远比我想像的简单。我差不多已经完成了75%的任务。老板笑了,说道:“真是太棒了”然后他嘱咐年轻人继续努力工作,准备好一周后再汇报一次工作进度。一周后老板将年轻人叫到办公室,问他说:“现在进度如何?”“一切顺利”年轻人回答说,“但是我遇到了一些小麻烦。我会排除这些困难,很快就可以回到正轨上来。”“你觉得在最后期限之前能否完成?”老板问道。“没有问题”工程师答道。“我差不多已经完成了90%”如果你在软件领域中工作过几年,你一定可以将这个故事写完。毫不奇怪,年轻工程师在整个项目工期内始终停留在90%的进度上,(在别人的帮助下)直到交付期限之后一个月才做完 没有充分的文档资料没有充分的文档资料(documentationdocumentation)Managers evaluate,track progress,.Programmers communicate to each otherMaintainers 人与人的交流比写程序困难得多。.软件缺乏”可见性”,软件可靠性缺少度量的标准,质量无法保证。如何保证软件产品的质量,是非常复杂困难的问题。特别对于规模庞大的软件.软件难以维护(maintainability)不易升级(evolvability)负责软件的管理者像大多数其他行业的管理者一样,都有巨大的压力,要维持预算、保持进度,还要提高质量。就像溺水者抓住一根救命稻草,软件管理者常常抓住软件神话不放,这些神话能够缓解其压力的话(哪怕是暂时的)。神话1:我们已经有了关于建造软件的标准和规程的书籍,难道它们不能给人们提供所有它们需要知道的信息吗?现实:不错,关于标准的书籍已经存在,但真正使用它们了吗?软件实践者知道它们的存在吗?它们是否反映了现代软件工程实践?它们完备吗?它们对在保持关注质量的情况下改善交付时间是简便有效的吗?很多情况下,这些问题的答案是否定的。软件神话管理神话神话2:如果我们已经落后于计划,可以增加更多的程序员赶上进度。现实:给一个已经延迟的软件项目增加人手只会使其更加延迟。神话3:如果我决定向第三方外包软件项目,我可以放松并让承包公司去建造它。现实:如果一个机构不了解如何在内部管理和控制软件项目,当它外包软件项目时将总是处于挣扎的境地。软件神话客户神话在许多情况下,客户相信关于软件的神话,因为负责软件开发的管理者和开发人员很少去纠正客户的错误理解。导致客户过高的期望值,并最终引起对开发人员的不满意。神话1:有了对目标的一般性描述就足以开始写程序了,我们可以以后再补充细节。现实:糟糕的系统定义是软件项目失败的主要原因。关于信息领域、功能、行为、性能、接口、设计约束及确认标准的形式化的、详细的描述是必要的。这些内容只有通过客户和开发者之间彻底地交流后才能确定。神话2:软件需求确实是经常变更的,但这些变更能够很容易地满足,因为软件是灵活的。现实:软件需求确实是变更的,但这些变更产生的影响会随着其被引入的时间而不同的。软件神话实践者神话在软件的早期阶段,程序设计被看成是一门艺术。神话1:一旦我们写出了程序并使其正常运行,我们的工作就结束了。现实:越早开始写代码,就要花越长的时间才能完成它。研究表明在一鼐软件上所投入的60%到80%的工作量是花费在软件第一次交付客户之后。神话2:在程序真正运行之前,没有办法评估其质量。现实:从项目一开始就可以应用的最有效的软件质量保证机制之一是正式的技术评审。神话3:一个成功项目唯一应该提交的就是运行程序。现实:运行程序仅是软件配置的一部分,软件配置包括很多东西。神话4:软件工程将使我们创建大量的、不必要的文档,并总是延缓我们的进度。现实:软件工程并不是为创建文档,而了创建质量。消除软件危机的途径了解产生软件危机的原因,澄清错误认识,建立起关于软件开发和维护的正确概念,还仅仅是解决软件危机的开始,全面解决软件危机需要一系列综合措施。软件工程 Software Engineering人们对软件生产提出了许多疑问:为什么需要那么长的时间才能完成软件开发。为什么开发成本如此高为什么我们不能在把软件提交客户之前就发现所有的错误为什么在软件开发过程总是难以度量其进展造成以上问题的原因主要是:软件行业发展的速度太快,对经验总结不足人们对自身处理能力的认识不清解决的方法:多实践,积累成功和失败的案例总结、思考、提取经验建立软件的模型和模式软件工程软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它软件工程Fritz Bauer:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法IEEE:软件工程是开发、运行、维护和修复软件的系统方法软件工程的本质特性1.软件工程关注于大型程序的构造2.软件工程的中心课题是控制复杂性3.软件经常变化4.开发软件的效率非常重要5.和谐地工作是开发软件的关键6.软件必须有效的支持它的用户7.在软件工程领域中是由一种文化背景的人替具有另一种文化背景的人创造产品软件工程的基本原理1.分阶段的生命周期计划严格管理2.坚持进行阶段评审3.实行严格的产品控制基准配置管理4.采用现代程序设计技术5.结果应能清楚地审查6.开发小组的人员应该少而精 1+127.承认不断改进软件工程实践的必要性软件工程三要素:方法、工具和过程软件工程方法为软件开发提供了“如何做”的技术 传统软件工程方法学 与面向对象方法学软件工具为软件工程方法提供了自动的或半自动的软件支撑环境软件工程过程定义了:方法使用的顺序 要求交付的文档资料 为保证质量和适应变化所需要的管理 软件开发各个阶段完成的里程碑软件工程三要素A Layered Technologya“quality”focusa“quality”focusprocess modelprocess modelmethodsmethodstoolstoolsObject-oriented methodRational Rose谁需要软件工程程序员项目组成员项目负责人为什么需要软件工程项目延迟用户需求维护困难项目超支我国软件业的现状我国软件业的规模目前,我国从事软件开发、研制、销售、维护和服务的软件企业有2000家左右,加上兼营的企业,总数大约有10000多家,其中具有自主软件研发能力的软件企业约5700家,从事软件销售、维护和服务的企业5000多家。在这里面,营业规模超过一亿元的软件企业达到100家以上,超过5亿元的达到18家,超过10亿元的达到12家。我国软件业的现状2001年,世界软件产品市场销售额超过1865亿美元,我国当年的销售额为285亿元人民币,只占世界市场不到2的份额。国内软件市场有限的份额中大部分为国外软件厂商所瓜分,国内所开发的软件产品仅占小部分。我国软件业的现状2001年我国软件销售总额963亿美元,软件企业约5000家,从业人员29万。2001年印度软件销售总额1023亿美元,软件企业约6000家,从业人员40万。2001年我国软件的出口额仅为7.2亿美元,2000年与1999年分别为4亿美元及2.5亿美元。印度在软件出口方面,则一直保持高速的增长。1990年印度软件出口只有5000万美元,1999年就达到了39亿美元,2000年达到了62亿美元,而2001年印度软件出口额为778亿美元,已经占到了印度全部出口总额的10.5。我国软件业的现状我国软件业发展不理想的原因除了政策和盗版外,最大的问题是我国绝大多数软件企业对其软件开发工作过程缺乏有效的管理和控制。多数软件企业开发和生产基本上处于“技术少标准、开发缺规范、生产无检验、质量无保证”的状态。在这方面印度软件业的发展能够给我们以启发。它山之石印度软件业能够这么迅速地发展起来,除了有政府支持、英语程度、人才储备等原因外,最重要的是从标准化与产品流程入手,重视管理。印度的软件开发管理的特点是流程重于项目,流程管理人员独立于研发部门,专门检查研发部门的开发流程是不是按照既定流程走,如果流程不对,项目肯定就此停止。另外,所谓的项目经理一般都是从编码人员升上来的,至少有四年以上的经验,而公司所有的东西(包括草稿)都有文档,其详细文档要求达到只有这个文档就可以编码的程度。于是,印度软件公司开发出来的软件整个体系架构非常清晰,而且相当稳定。由于印度企业不是靠一两个软件英雄搞研发,而是靠一大批软件技术人员的分工协作,所以,他们必须注重标准化,注重开发的流程管理,以与国际接口。目前印度软件公司中有170家公司获得ISO9000质量标准认证,是世界上获得质量认证软件企业最多的国家。在得到卡内基梅隆大学软件工程学会最高级别的全球23家计算机软件公司中,有15家是印度公司。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!