软件工程学概述sml.ppt
《软件工程学概述sml.ppt》由会员分享,可在线阅读,更多相关《软件工程学概述sml.ppt(117页珍藏版)》请在三一办公上搜索。
1、软件工程,任课教师:施美玲联系方式,第一章 绪论,软件工程Software Engineering,水利工程,建筑工程,机械工程,软件工程,本章将对软件的地位和作用、软件的特点、软件 的发展、软件的危机以及软件工程学科的形成、软件 生存期等方面的问题和基本概念做详细介绍。,传统工程,新兴工程,气象工程,生物工程,本章内容,思考?,什么是软件?在软件开发过程中遇到哪些问题?如何解决这些问题?,第1章绪论,什么是软件?有何特点?何谓软件危机?如何解决?软件工程是一门什么学科?什么是软件的生存期?有哪些软件开发模型?,因为软件危机,所以要通过软件工程的方法加以解决。,一、软件及其发展,软件角色演化软
2、件的组成软件的特点软件的发展,软件角色演化,早期软件往往作为计算机硬件的附加件奉送。软件的角色在跨越60余年的时间内已经经历了很大的变化:硬件性能的极大提高;计算机体系结构的深远变化;内存和硬盘容量的快速增加;奇特的输入输出的多种选择;这些,促进了更为高级和更为复杂的基于计算机的系统。,软件角色演化,硬件芯片的集成度按摩尔定律翻番,并朝着通用化和标准化的方向发展,以便大规模批量生产。软件朝着专业化和多样化的方向发展,以满足不同的需要。20世纪80年代以来,以微软为首的一批新兴软件企业,开辟了全新的独立软件产业,并逐渐取代了硬件产业。,软件角色演化,今天的信息产业,软件占有绝对主导地位。今天,软
3、件担任着双重角色。它是一个产品,同时又是产品交付使用的载体。它表达了由计算机硬件或更广地说可通过局部硬件访问的计算机网络所体现的计算潜能。,1.软件的组成,software=programsoftware developing=programming/coding,1983年IEEE为软件下的定义是:计算机程序、方法、规则和相关的文档资料以及在计算机上运行所必需的数据。,20世纪50年代:software=program20世纪60年代:software=program+documents20世纪70年代:software=program+documents+data,1.软件的组成,soft
4、ware=program+documents+datasoftware developing programming/coding,目前对软件比较公认的解释是:软件是程序,支持程序运行的数据以及与程序有关的文档的完整集合。,程序按事先设计的功能和性能要求执行的指令序列文档与程序开发,维护和使用有关的图文材料数据使程序能正常操纵信息的数据结构,KeyPoint:关于软件是什么的错误认识.。,程序 用程序设计语言描述的,适合于计算机处理的语句序列,文档,分类 开发文档 用户文档 管理文档,作用 记录 通信和交流 管理和维护,2.软件的特点,(1)软件是逻辑的,而不是物理的产品。逻辑往往实际只存在于
5、人的头脑当中,软件的开发过程极难加以控制。定义“需要做什么”成为软件开发的根本问题,这些可视化建模技术仍然无法给出准确的、完整的描述和度量。(模型vs现实),(2)软件是由开发或工程化而形成的,没有明显的制造过程。软件成本集中于“开发”上,意味着软件项目不能像硬件制造项目那样来管理。(硬成本),(3)软件在运行和使用期间,不存在硬件那样的磨损和老化问题,但它存在退化问题,开发人员必须维护软件。(改动困难),软件可长期使用,人们总是认为软件是容易修改的,但忽视了修改所带来的副作用,不断的修改最终导致软件的退化,软件退化问题,图a是硬件故障率的变化曲线,即硬件在生命初期具有较高的故障率,这些故障主
6、要是由于设计或制造的缺陷造成的。当这些缺陷修正后,故障率在一段时期内会降低到一个稳定的曲线上。随着时间的推移,硬件构件由于种种原因受到不同程度的损害,故障率又升高了。也就是说,硬件已经开始磨损了。图b是软件的故障率曲线,在软件的生命初期隐藏的错误会使程序具有较高的故障率,理想的情况下当这些错误改正后曲线便趋于平稳,但实际情况是随着这些修改有可能引入新的错误,从而使故障率曲线呈现图中所示的锯齿状。于是,软件的退化由于修改而发生了,(4)大多数软件是自定的,而不是通过已有构件组装而成的。迄今为止,软件的开发尚未完全摆脱手工的方式。,(5)软件成本相当昂贵。IBM360操作系统的研制人员最多时可达1
7、000多人,从1963年到1966年共花了4年时间才完成,总计耗费了5000多人/年,以后又进行了不断的修改和补充。该系统的整个研制费用为5亿美元,其中近一半花在软件上。,(6)软件本身是复杂的。软件比任何其他人类制造的结构更复杂,甚至硬件的复杂性和软件相比也是微不足道的。软件本质上的复杂性是软件产品难以理解,影响软件过程的管理,并使维护过程十分复杂。,2.软件的特点,软件的本质特征,软件的本质特征,软件的本质特征,软件的本质特征,软件的本质特征,软件的本质特征,早期阶段程序设计阶段在计算机发展的早期阶段,人们认为计算机的主要用途是快速计算,软件编程简单,不存在什么系统化的方法,开发没有任何管
8、理,程序的质量完全依赖于程序员个人的技巧。编程是在一种无序的、崇尚个人技巧的状态中完成的。当时的软件特点:1)规模小、无规范与标准;2)编程作为一门技艺,程序员的素质决定软件质量;3)缺少有效方法与软件工具的支持;4)不重视软件开发的管理;5)软件的维护工作很难进行。,3.软件的发展,2.第二阶段-程序系统阶段,从60年代中期到70年代末期多用户系统引入了人机交互的新概念,实时系统能够从多个源收集、分析和转换数据,从而使得进程的控制和输出的产生是以毫秒而不是分钟来进行,产生了第一代数据库管理系统出现了软件产品和“软件作坊”的概念,设计人员开发程序不再像早期阶段那样只为自己的研究工作需要,而是为
9、了用户更好地使用计算机。被开发的软件可以在较宽的范围内使用。主机、微机上的程序可以有数百上千的用户。出现了“软件危机”问题。在开发大型软件时,遇到了许多困难:1)有些系统彻底失败;2)有些系统比原计划推迟了好几年;3)有些系统的费用大大超过了预算;4)有些系统未能圆满符合用户的当初期望;5)有些系统无法进行维护。采用“软件工程”的方法来解决“软件危机”问题。,3.软件的发展,3.第三阶段软件工程阶段,1970年代中期-1980年代末期分布式系统极大地提高了计算机系统的复杂性,网络的发展对软件开发提出了更高的要求,特别是微处理器的出现和广泛应用,孕育了一系列的智能产品。软件开发技术的度量问题受到
10、重视,最著名的有软件工作量估计COCOMO模型、软件过程改进模型CMM等。,3.软件的发展,4.第四阶段,强大的桌面系统和计算机网络迅速发展的时期计算机体系结构由中央主机控制方式变为客户机/服务器方式专家系统和人工智能软件进入了实际应用,出现了并行计算和网络计算的研究,面向对象技术在许多领域迅速取代了传统软件开发方法软件从个性化的程序变为工程化的产品,从“软件程序”发展为“软件程序数据文档”。软件的需求成为软件发展的动力,软件工作的考虑范围不再只顾及程序的编写,而是涉及到软件的整个生命周期。,3.软件的发展,二、软件危机,含义 表现 原因 克服危机的途径,(1)软件危机含义,Software
11、Crisis所谓软件危机,就是指在软件开发和软件维护过程中所存在的一系列严重问题。现代计算机应用系统中,软件的地位日益重要和突出。开发:如何满足日益增长的软件需求。维护:如何维护应用中的大量已有软件。已经成为了计算机应用系统进一步发展的瓶颈。,(2)软件危机的表现,软件开发没有真正的计划性,对软件开发进度和软件开发成本的估计常常很不准确,计划的制定带有很大的盲目因素。对于软件需求信息的获取常常不充分,软件产品往往不能真正地满足用户的实际需求。缺乏良好的软件质量评测手段,从而导致软件产品的质量常常得不到保证。,(2)软件危机的表现,对于软件的可理解性、可维护性认识不够;软件的可复用性、可维护性不
12、如人意。软件开发过程没有实现“规范化”,缺乏必要的文档资料或者文档资料不合格、不准确,难以进行专业维护。软件开发的人力成本持续上升。缺乏自动化的软件开发技术,软件开发的生产率依然低下,远远满足不了急剧增长的软件需求。,软件危机的例子,IBM 360操作系统开发时间:1963-1966年投入人力:5000人/年代码量:近100万行新版本:从上一版本中找出1000个错误修订而成结果:软件质量非常糟糕,软件几乎无法维护负责人总结:“正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷的越深,最后无法逃脱灭顶的灾难,程序设计工作就像这样一个泥潭,一批批程序员被泊在泥潭中拼命挣扎,谁也没有料到问题竟会
13、陷入这样的困境”。,软件危机的例子,为什么?为什么需要那么长时间才能结束开发?为什么成本如此之高?为什么我们不能在把软件交给客户之前就发现所有的错误?为什么在软件开发过程中我们难以度量其进展?大型系统的软件生产已经成了管理人员担惊受怕的项目。于是,20世纪60年代后期,人们惊呼发生了软件危机(Software crisis)。软件危机主要包含两方面问题:1)如何开发软件以满足对软件日益增长的需求;2)如何维护数量不断增长的已有软件。,(3)原因,产生软件危机的原因可以归纳为主、客观两个方面。从客观上来看,软件不同于硬件,它的生产过程和产品都具有明显的“不可视”特征,这就导致在完成编码并且上机运
14、行之前,对于软件开发过程的进展情况较难衡量,软件产品的质量也较难进行先期评价,因此,对于开发软件的过程进行管理和控制比较困难。,(3)原因,产生软件危机的原因可以归纳为主、客观两个方面。从主观上分析,导致软件危机发生的另一大原因,可以归于在计算机系统发展的早期,软件开发的“个体化”特点,主要表现为忽视软件需求分析的重要性、忽视软件的可理解性、文档不完备、轻视软件的可维护性、过分强调编码技巧等等方面。,(4)克服危机的途径,基于软件危机产生的主、客观原因,应从软件工程技术和软件工程管理两方面来采取措施,防范软件危机的发生。从管理层面上考虑,应当注意推广和使用在实践中总结出来的开发软件的成功的技术
15、和方法,并且探索更好的、更有效的技术和方法,注意积累软件开发过程中的经验数据财富,逐步消除在计算机系统早期发展阶段形成的一些错误概念和做法。,(4)克服危机的途径,从技术角度考虑,应当开发和使用更好的软件开发工具,提高软件开发效率和开发工作过程的规范化程度目前广为使用的统一建模语言(UML)、各种配置管理工具、缺陷管理工具和自动测试工具都在软件工程活动中发挥了很好的作用。计算机辅助软件工程(CASE)更是目前备受重视的一个旨在实现软件开发自动化的新的领域。,三.软件工程,研究“大型”软件开发和维护的技术、方法、工具、环境和管理的工程学科。,(1)工程,工程是对技术(或社会)实体的分析、设计、建
16、造、验证和管理。,工程的含义,工程的特征,工程的特征,(2)软件工程,提出1968年,Fritz Bauer正式提出SE概念定义软件工程是指导计算机软件开发和维护的工程学科。它采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明是正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。,软件工程三要素,方法为软件开发提供“如何做”的技术。包括多方面的任务,如项目计划与估算、软件系统需求分析、数据结构、系统总体结构的设计、算法的设计、编码、测试以及维护等。常采用某种特殊的语言或图形的表达方法及一套质量保证标准工具(如,Rational R
![软件工程学概述sml.ppt_第1页](https://www.31ppt.com/fileroot1/2023-7/9/77832006-a9cf-44b7-af4a-54903f0697d0/77832006-a9cf-44b7-af4a-54903f0697d01.gif)
![软件工程学概述sml.ppt_第2页](https://www.31ppt.com/fileroot1/2023-7/9/77832006-a9cf-44b7-af4a-54903f0697d0/77832006-a9cf-44b7-af4a-54903f0697d02.gif)
![软件工程学概述sml.ppt_第3页](https://www.31ppt.com/fileroot1/2023-7/9/77832006-a9cf-44b7-af4a-54903f0697d0/77832006-a9cf-44b7-af4a-54903f0697d03.gif)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 工程学 概述 sml
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6610846.html