您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 第01章+软件工程概述
1第1章软件工程概述内容1.0软件概念1.1软件危机1.2软件工程1.3软件生命周期1.4软件过程1.0软件概念软件软件的特点软件发展历程软件概念-软件软件(Software)是计算机系统中与硬件相互依存的另一部分,它是包括程序(Program),数据(Data)及其相关文档(Document)的完整集合。Software=Program+Data+Document程序是按事先设计的功能和性能要求执行的指令序列数据是使程序能正常操纵信息的数据结构文档是与程序开发,维护和使用有关的图文材料软件概念-软件的特点抽象性软件是逻辑实体,没有明显的制造过程,运行和使用没有磨损与老化问题。依存性软件开发和运行依赖于计算机系统。工艺性软件开发至今尚未完全摆脱手工工艺的开发方式。复杂性软件逻辑结构、开发技术、项目管理复杂。成本高开发成本、维护成本高。风险大软件项目的成功率低。维护难维护不能依靠原开发者,理解软件代码难,维护也是开发,维护成本高软件工作涉及各种社会因素政策规章、管理思想、文化背景、信息素养、技术水平、系统接口等。软件的复杂性逻辑复杂软件的逻辑结构非常复杂开发复杂成本难以估算、进度难以控制、人员素质要求、质量得不到保证成本高例:软件成本产品代码行工作量(人年)成本(百万)Lotus1-2-3Version3.0400k26322SpaceShuttle25.6M121989LincolnContinental83.5M351.8CityBankTellermachine780k15013.2IBMChechoutScanner90k583风险大1995年美国Standish咨询集团的统计分析(至90年代初的软件项目执行情况)成功:16.2%失败:31%受到挑战:53.8%近几年来的统计数据成功:26%失败:28%受到挑战:46%维护难维护形式多样化改正性:修改故障完善性:增加功能适应性:移植维护成本越来越高55%到70%维护带来的问题可能引发新的错误,经维护后逻辑结构更复杂1.1软件危机软件危机软件发展历程,软件危机,软件危机的表现。产生软件危机的原因软件特点有关,开发中的问题,维护中的问题。消除软件危机的途径正确认识“软件”,重视软件过程,采用有效的软件开发技术和方法,引进工程管理方法。软件发展历程早期•面向批处理•有限的分布•自定义软件第二阶段•多用户•实时•数据库•软件产品第三阶段•分布式系统•嵌入“智能”•低成本硬件•消费者的影响第四阶段•强大的桌面系统•面向对象技术•专家系统•人工神经网络•并行计算•网路计算机1950196019701980199020001968年10月,北大西洋公约组织(NATO)的科学家在德国召开的学术会议上正式提出了软件危机问题。软件危机软件危机是计算机软件开发和维护过程中所遇到的一系列严重问题。主要包括下列两个方面的问题:如何开发软件,以满足对软件的日益增长的需求;如何维护不断增多的已有软件。软件危机的典型表现对软件开发成本和进度的估计常常很不准确;用户对交付的软件经常不满意;软件产品的质量往往达不到要求;开发出来的软件通常难以维护;软件产品文档资料不适用和不完善;软件成本在整个系统总成本中所占比例逐年上升;软件开发生产率的提高不能满足对软件需求的增长;………成本问题计算机软件和硬件费用比越来越大IBM360OS,5000多人年,耗时4年(1963-1966),花费2亿多美元美国空军:1955年软件占总费用(计算机系统)的18%,70年60%,85年达到85%美国全球军事指挥控制系统,硬件1亿美元,软件高达7.2亿美元010203040506070809060年代80年代计算机软件计算机硬件软件质量问题软件应用面的扩大:科学计算、军事、航空航天、工业控制、企业管理、办公、家庭软件越来越多的应用于安全攸关的系统,对软件质量提出更高的要求80年代欧洲亚丽安娜火箭的发射失败,原因是软件错误美国阿托拉斯火箭的发射失败,原因是软件故障软件的复杂性越来越高英国1986年开发的办公室信息系统Folios经4年,因性能达不到要求,1989年取消日本第5代机因为软件问题在投入50亿美元后于1993年下马由于软件质量问题导致失败的软件项目非常多项目进度问题项目进度难以控制项目延期比比皆是由于进度问题而取消的软件项目较常见只有一小部分的项目能够按期完成软件维护问题软件维护非常困难软件维护的多样性软件维护的复杂性软件维护的副作用产生软件危机的原因与软件本身的特点有关成本高、风险大、难于维护、逻辑复杂。软件是计算机系统中的逻辑实体而不是物理实体,软件生产与硬件不同,在它的开发过程中没有明显的制造过程。软件是通过人们的智力活动,把知识与技术转化成信息的一种产品。在软件的运行过程中,没有“用坏”的问题。软件维护意味着修正原来的设计,较为困难。与软件开发与维护的方法不正确有关软件专业人员对软件开发和维护存在糊涂观念,在实践过程中采用了错误的方法和技术。如忽视软件需求分析的重要性;轻视软件维护。消除软件危机的途径正确认识“软件”软件≠程序,软件是相关程序、数据及文档的集合。正确认识“软件开发”软件开发不是个体劳动,而主要是一种有组织的团队活动。研究软件开发的技术手段在软件开发中使用已证明行之有效的技术,研究和探索新的技术。更好地使用软件工具,建立一个良好的软件工程支撑环境。研究软件开发的管理方法在软件开发中使用已证明行之有效的工程管理方法。组织良好、管理严密,使各类人员协同配合,共同完成软件开发的工程项目。软件工程学的是由于“软件危机”的出现和加重而产生的,研究用工程的方法来管理软件的开发。开发一个具有一定规模和复杂性的软件系统与编写一个简单的程序不一样。大型、复杂软件系统的开发是一项工程,必须按照工程化的方法组织软件的生产和管理,必须经过分析、设计、实现、测试、维护等一系列软件过程和活动软件工程学的产生提出有效的方法和工具支持软件开发1968年提出软件工程概念和思想20世纪70年代的结构化软件开发方法20世纪80年代的面向对象的软件开发方法新的技术:软件重用、快速原型、需求工程典型技术:COM,Java,C++,J2EE,.Net,….支撑工具和环境:Jbuilder,VisualStudio,WebLogic,…解决危机的技术途径20世纪80年代末,美国DoD和业界开始认识到管理的重要性美国DoD的一项研究表明,70%的项目由于管理不善导致难以控制进步、成本和质量;进一步的研究发现:管理是影响软件项目成功开发的全局性因素,而技术只影响局部如果软件开发组织不能对软件项目进行有效管理,就不能充分发挥软件开发方法和工具的潜力,也就不能高效率地开发出高质量的软件产品解决危机的管理途径1.2软件工程软件工程的概念软件工程的基本原理软件工程方法学软件工程概念软件工程是指导计算机软件开发与维护的一门工程学科。采用工程的概念、原理、方法和技术来开发和维护软件。将经过时间和实践考验而证明正确的管理方法和最好的技术手段结合起来,经济有效地开发和维护软件。软件工程是一门不断发展的学科。软件工程定义(FritzBauer,1968)Theestablishmentanduseofsoundengineeringprinciples(methods)inordertoobtaineconomicallysoftwarethatisreliableandworksonrealmachines.(1968-FritzBauer)软件工程就是建立和使用一套合理的工程原理,从而经济地获得可靠的、可以在实际机器上高效运行的软件。软件工程定义(IEEE,1990)Softwareengineering.(1)Theapplicationofasystematic,disciplined,quantifiableapproachtothedevelopment,operation,andmaintenanceofsoftware;thatis,theapplicationofengineeringtosoftware.(2)Thestudyofapproachesasin(1).(IEEE(TheInstituteforElectricalandElectronicengineers)Std610-1990.)软件工程是:(1)把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;(2)研究(1)中提到的途径。软件工程定义(CMU/SEI,1990)Engineeringisthesystematicapplicationofscientificknowledgeincreatingandbuildingcost-effectivesolutionstopracticalproblemsintheserviceofmankind.Softwareengineeringisthatformofengineeringthatappliestheprinciplesofcomputerscienceandmathematicstoachievingcost-effectivesolutionstosoftwareproblems.SEIsoftwareengineeringdefinitionfrom1990SEIReportonUndergraduateSoftwareEngineeringEducation(CMU/SEI-90-TR-003):软件工程定义软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。它采用经过实践验证的工程的原则、方法,以提高质量,降低成本为目的。软件工程的本质特性关注于大型程序的构造控制软件复杂性适应软件的经常变化性提高软件开发的效率和谐合作开发软件使软件有效地支持它的用户需求软件是有一种文化背景的人为另一种文化背景的人开发的产品。软件工程的基本原理用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精承认不断改进软件工程实践的必要性软件工程包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。通常把在软件生命周期全过程中使用的一整套技术方法的集合称为软件工程方法学(methodology),也称为范型(paradigm)。软件工程方法学软件工程方法学三要素软件工程方法学包含3个要素:方法、工具和过程。方法完成软件开发各项任务的技术方法。工具为运用方法而提供的软件工程支撑环境(支撑分析、设计、开发等)。过程规定了完成软件开发各项任务的工作步骤。传统软件工程方法学传统软件工程方法学是生命周期方法学软件生命周期一个软件定义、开发、使用和维护,直到最终被废弃,要经历的漫长的时期,称为软件的生命周期。生命周期方法学这种方法学把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务。2面向对象方法学面向对象主要概念对象、类、继承、消息等。面向对象方法学这种方法学把数据和行为看成同等重要,它是一种以数据为主线,把数据和对数据的操作紧密结合起来的方法1.3软件生命周期软件生命周期概念软件生命周期模型软件生命周期各阶段任务常见的软件工程方法学(几大公司)软件生命周期概念软件生命周期基本阶段软件生命周期由软件定义、软件开发和软件维护三个时期组成,每个时期又可划分若干个阶段。生命周期方法学软件工程采用的生命周期方法学就是从时间角度对软件开发和维护的复杂性进行分解,把软件生存的漫长周期依次划分为若干个阶段,每个阶段都有独立的任务,然后逐步完成每个阶段的任务。划分软件生存周期阶段的基本原则使各阶
本文标题:第01章+软件工程概述
链接地址:https://www.777doc.com/doc-202868 .html