您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 79第1章 软件工程学概述
软件工程SoftwareEngineering主讲人:林天华邮箱:lintianhua@heuet.edu.cn手机:15373683850©CopyrightXinjunMao课程介绍和要求教学目标•为什么要学习这门课程–有助于正确理解和认识“软件”的概念及其特点–理解软件开发面临的问题和挑战–掌握软件工程的原则、方法和思想来系统地开发软件,尤其是复杂、庞大的软件的开发–了解和接触软件开发所需的各种技术手段•理解、掌握和运用©CopyrightXinjunMao课程介绍和要求理解•什么是软件工程指导软件开发和维护的工程性学科,采用工程化的概念、原理、技术和方法进行软件的开发和维护。•为什么需要软件工程(产生背景)•软件工程需要解决那些问题•软件工程涉及那些方面内容©CopyrightXinjunMao课程介绍和要求掌握•软件工程–概念–技术–过程–手段–工具©CopyrightXinjunMao课程介绍和要求运用•运用工程化思想进行软件开发–需求分析–软件设计–程序设计–软件维护©CopyrightXinjunMao课程介绍和要求先导要求程序设计语言最好有一定的软件开发经验©CopyrightXinjunMao课程介绍和要求7课程实习要求(1/2)•内容–选择一个项目开发课题,用软件工程的思想指导其开发过程。完成需求分析,详细设计,测试,项目汇报。•时间–每2周提交一个,最后一次实习课为项目汇报•分组–以小组为单位,4—5人一组为宜©CopyrightXinjunMao课程介绍和要求8课程实习要求(2/2)•提交内容–电子文档•评价方法–按阶段递交和打分–文档:完整性、合理性、规范性•注意:严格按照要求执行©CopyrightXinjunMao课程介绍和要求学习要求•听–理解知识点和思想–无需死记硬背•思考、做–实践–体会软件工程的原则、方法和技术,在实践中提高–培养抽象思维能力–培养独立解决问题的能力–培养合作精神•读–阅读相关资料©CopyrightXinjunMao课程介绍和要求10考核方式•平时(20%)•考试(80%)软件工程为什么难学?第1章软件工程概述软件工程产生的背景(软件危机)软件工程定义软件工程方法学软件过程模型小结1.1软件工程产生的背景1)软件a.软件的定义软件(Software)是计算机系统中与硬件相互依存的另一部分,它是包括程序(Program),数据(Data)及其相关文档(Document)的完整集合。Software=Program+Data+Documen软件就是程序,软件开发就是编程序吗?程序是按事先设计的功能和性能要求执行的指令序列数据是使程序能正常操纵信息的数据结构文档是与程序开发,维护和使用有关的图文材料1.1软件工程产生的背景©CopyrightXinjunMao15(1)非常复杂•逻辑复杂–远远高于硬件的逻辑复杂度•开发复杂–成本难以估算–进度难以控制–人员素质要求–质量得不到保证•96年Ariane火箭发射失败,浮点数转换时发生错误b、软件的特征1.1软件工程产生的背景(2)成本高1.1软件工程产生的背景b、软件的特征©CopyrightXinjunMao课程介绍和要求(2)成本高产品代码行工作量(人年)成本(百万)Lotus1-2-3Version3.0400k26322SpaceShuttle25.6M121989LincolnContinental83.5M351.8CityBankTellermachine780k15013.2IBMChechoutScanner90k583©CopyrightXinjunMao课程介绍和要求(3)风险大•1995年美国Standish咨询集团的统计分析(至90年代初的软件项目执行情况)–成功:16.2%–失败:31%–受到挑战:53.8%•近几年来的统计数据–成功:26%–失败:28%–受到挑战:46%1.1软件工程产生的背景b、软件的特征(4)维护困难•维护形式多样化–改正性:修改故障–完善性:增加功能–适应性:移植•维护成本越来越高–55%到70%•维护带来的问题1.1软件工程产生的背景b、软件的特征1.1软件工程产生的背景c.软件的发展早期•面向批处理•有限的分布•自定义软件第二阶段•多用户•实时•数据库•软件产品第三阶段•分布式系统•嵌入“智能”•低成本硬件•消费者的影响第四阶段•强大的桌面系统•面向对象技术•专家系统•人工神经网络•并行计算•网路计算机1950196019701980199020001968年10月,北大西洋公约组织(NATO)的科学家在德国召开的学术会议上正式提出了软件危机问题。1.1软件工程产生的背景2)、软件危机a、软件危机的表现(1/3)成本高IBM360OS,5000多人年,耗时4年(1963-1966),花费2亿多美元美国空军:1955年软件占总费用(计算机系统)的18%,70年60%,85年达到85%美国全球军事指挥控制系统,硬件1亿美元,软件高达7.2亿美元计算机软件和硬件费用比010203040506070809060年代80年代计算机软件计算机硬件软件质量得不到保证软件应用面的扩大:科学计算、军事、航空航天、工业控制、企业管理、办公、家庭软件越来越多的应用于安全攸关(safetycritical)的系统,对软件质量提出更高的要求80年代欧洲亚丽安娜火箭的发射失败,原因是软件错误美国阿托拉斯火箭的发射失败,原因是软件故障英国1986年开发的办公室信息系统Folios经4年,因性能达不到要求,1989年取消日本第5代机因为软件问题在投入50亿美元后于1993年下马涌温线高铁追尾事故由于软件质量问题导致失败的软件项目非常多a、软件危机的表现(2/3)a、软件危机的表现(3/3)进度难以控制项目延期比比皆是由于进度问题而取消的软件项目较常见只有一小部分的项目能够按期完成维护非常困难软件维护的多样性软件维护的复杂性软件维护的副作用IBM360OS项目的负责人F.D.Brooks事后总结了他在组织开发过程中的沉痛教训时说:……正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深。最后无法逃脱灭顶的灾难,……程序设计工作正像这样一个泥潭,……一批批程序员被迫在泥潭中拼命挣扎,……谁也没有料到竟会陷入这样的困境……b、产生软件危机的原因-与软件本身的特点有关(难于维护,逻辑复杂)-与软件开发与维护的方法不正确有关:-软件≠程序-急于求成=拔苗助长-各自为阵无方法/学•开发一个具有一定规模和复杂性的软件系统与编写一个简单的程序不一样–正如建设狗窝和高楼大厦•大型、复杂软件系统的开发是一项工程,必须按照工程化的方法组织软件的生产和管理,必须经过分析、设计、实现、测试、维护等一系列软件过程和活动C、软件工程(学)因危机而产生d、软件工程(学):克服软件危机的努力(1)从管理的角度软件开发过程的研究、文档的标准化以及人们的交流方式等(2)软件开发方法的研究结构化软件开发方法,面向对象的开发提出有效的方法和工具支持软件开发1968年提出软件工程概念和思想20世纪70年代的结构化软件开发方法20世纪80年代的面向对象的软件开发方法新的技术:软件重用、快速原型、需求工程典型技术:COM,Java,C++,J2EE,.Net,….支撑工具和环境:Jbuilder,VisualStudio,WebLogic,…1、解决危机的技术途径20世纪80年代末,美国DoD和工业界开始认识到管理的重要性美国DoD的一项研究表明,70%的项目由于管理不善导致难以控制进步、成本和质量;进一步的研究发现:管理是影响软件项目成功开发的全局性因素,而技术只影响局部如果软件开发组织不能对软件项目进行有效管理,就不能充分发挥软件开发方法和工具的潜力,也就不能高效率地开发出高质量的软件产品2、解决危机的管理途径1.2软件工程定义(1)Theestablishmentanduseofsoundengineeringprinciples(methods)inordertoobtaineconomicallysoftwarethatisreliableandworksonrealmachines.(1968-FritzBauer)软件工程就是建立和使用一套合理的工程原理,从而经济地获得可靠的、可以在实际机器上高效运行的软件。1.2软件工程定义(2)Softwareengineering.(1)Theapplicationofasystematic,disciplined,quantifiableapproachtothedevelopment,operation,andmaintenanceofsoftware;thatis,theapplicationofengineeringtosoftware.(2)Thestudyofapproachesasin(1).(IEEE(TheInstituteforElectricalandElectronicengineers)Std610-1990.)软件工程是:(1)把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;(2)研究(1)中提到的途径。1.2软件工程定义(3)Engineeringisthesystematicapplicationofscientificknowledgeincreatingandbuildingcost-effectivesolutionstopracticalproblemsintheserviceofmankind.Softwareengineeringisthatformofengineeringthatappliestheprinciplesofcomputerscienceandmathematicstoachievingcost-effectivesolutionstosoftwareproblems.Boehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料1.2软件工程定义总之:软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。软件工程的特性1.软件工程关注于大型程序的构造2.软件工程的中心课题是控制复杂性3.软件经常变化4.开发软件的效率非常重要5.和谐地合作是开发软件的关键6.软件必须有效地支持它的用户7.在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人1.2软件工程定义软件工程的基本原理用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精承认不断改进软件工程实践的必要性软件工程包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(methodology),也称为范型(paradigm)。在软件工程领域中,这两个术语的含义基本相同。软件工程方法学包含3个要素:方法、工具和过程。传统方法学和面向对象方法学1.2软件工程方法学1.2软件工程方法学软件工程:一种层次化技术质量关注点过程方法工具软件工程层次图软件工程三个要素:工具、方法、过程基础层,综合方法及工具,定义方法使用的顺序,所需要的管理为软件开发提供“如何做”的技术为软件开发提供自动或半自动的软件支撑环境,建立计算机辅助软件工程(CASE)的软件开发支撑系统以有组织的质量保证为基础1.2软件工程方法学ALM(ApplicationLifecycleManagement)MSF(MicrosoftSolutionFramework)软件工程层次的扩展1.3软件生命周期模型问题定义软件定义可行性研究需求分析总体设计详细设计软件生命周期软件开发编码和单元测试综合测试运行维护持久满足用
本文标题:79第1章 软件工程学概述
链接地址:https://www.777doc.com/doc-3400598 .html