0.软件工程概述.ppt
《0.软件工程概述.ppt》由会员分享,可在线阅读,更多相关《0.软件工程概述.ppt(88页珍藏版)》请在课桌文档上搜索。
1、Chapter 0,什么是软件工程?(软件学:关于软件的科学),Contents,0 什么是软件?1.1 什么是软件工程?1.2 软件工程取得了哪些进展?1.3 什么是好的软件?1.4 软件工程设计的人员?1.5 系统的方法 1.6 工程的方法 1.7 开发团队的成员 1.8 软件工程发生了多大的变化?1.9 信息系统的例子 1.10 实时系统的例子 1.11 本章对单个开发人员的意义,本章概述,软件的含义软件工程的含义软件工程的发展历程“好的软件”的含义为什么系统的方法是重要的自20世纪70年代以来,软件工程是如何变革的.注意理解以下问题:什么是软件工程为什么需要软件工程(产生背景)软件工程
2、需要解决那些问题软件工程涉及那些方面内容,0 什么是软件?,软件(英语:Software)是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲软件被划分为编程语言、系统软件、应用软件和介于这两者之间的中介软件(中间件)。其中系统软件为计算机使用提供最基本的功能,但是并不针对某一特定应用领域。而应用软件则恰好相反,不同的应用软件根据用户和所服务的领域提供不同的功能。,0 什么是软件?,软件并不只是包括可以在计算机上运行的计算机程序,与这些计算机程序相关的文档,一般也被认为是软件的一部分。软件(Software)是计算机系统中与硬件相互依存的另一部分,它是包括程序(Program),数据(D
3、ata)及其相关文档(Document)的完整集合。程序是按事先设计的功能和性能要求执行的指令序列数据是使程序能正常操纵信息的数据结构文档是与程序开发,维护和使用有关的图文材料软件被应用于世界的各个领域,对人们的生活和工作都产生了深远的影响。,早期程序员们使用机器语言来进行编程运算;随着编译技术的出现,人们设计了许多更高级别的语言;例如:汇编语言,C语言,Pascal语言,Java语言,C#语言等。,0 软件:编程语言,软件可以由以下这些编程语言写成:低阶语言:组合语言,为硬件间各装置沟通的桥梁软件,又称为固件(例如BIOS,汇编语言)。高阶语言:Basic、C语言、C+语言等,为编辑操作系统
4、和应用软件的语言。脚本语言:例如 Shell Script、Javascript、PHP、Python。,据统计,全世界的高级语言起码有几千种,但从可计算性的角度看,它们的计算能力都等价于图灵机。已经证明,一个计算机语言,只要除了赋值语句之外,还包括顺序语句,条件语句和循环语句,它的计算能力即相当于图灵机。这里当然要排除其他技术因素的影响,如程序长度,变量个数,数据精度等。,0 软件:系统软件,系统软件为计算机使用提供最基本的功能,可分为操作系统和支撑软件,其中操作系统是最基本的软件。系统软件是负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机
5、当作一个整体而不需要顾及到底层每个硬件是如何工作的。1操作系统是一管理计算机硬件与软件资源的程序,同时也是计算机系统的内核与基石。操作系统身负诸如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让使用者与系统交互的操作接口。2支撑软件是支撑各种软件的开发与维护的软件,又称为软件开发环境(SDE)。它主要包括环境数据库、各种接口软件和工具组。著名的软件开发环境有IBM公司的Web Sphere,微软公司.NET Framework的等。包括一系列基本的工具(比如编译器,数据库管理,存储器格式化,文件系统管理,用户身份验证,驱动管
6、理,网络连接等方面的工具)。,0 软件:应用软件-为了某种特定的用途而被开发的软件,它可以是一个特定的程序,比如一个图像浏览器。也可以是一组功能联系紧密,可以互相协作的程序的集合,比如微软的Office软件。也可以是一个由众多独立程序组成的庞大的软件系统,比如数据库管理系统。较常见的有:文书处理软件如WPS Office、Microsoft Office、LibreOffice信息管理软件 如Oracle Database数据库辅助设计软件 如AutoCAD、开目CAD实时控制软件P2P流媒体软件 PPLive、PPStream、Banacast、UUSee、QQlive图形图像软件 Adob
7、e Photoshop、CorelDRAW、painter、MAYA、3DS MAX、lightwave后期合成软件 after effects、combustion、digital fusion、shake、flame网页浏览软件 Internet Explorer、Firefox、Chrome、Safari、Opera、Konqueror网络通讯软件 ICQ、Windows Live Messenger、Skype、Yahoo!Messenger、QQ、AOL Instant Messenger影音播放软件 MPlayer、RealPlayer、WMP、暴风影音、风雷影音音乐播放软件 Wi
8、namp、Foobar2000、千千静听、酷我音乐、酷狗音乐下载管理软件 Orbit、迅雷、快车、QQ旋风电子邮件客户端 Windows Live Mail、Outlook Express、Foxmail、ThunderBird、Dreammail、KMail资讯安全软件 360安全卫士 360杀毒 德国小红伞、卡巴斯基、诺顿防毒、瑞星杀毒、金山毒霸、虚拟机软件 VMware、VirtualBox、Microsoft Virtual PC,0 软件:软件工程师,一般指从事软件开发职业的人。软件工程师10余年来一直占据高薪职业排行榜的前列,作为高科技行业的代表,技术含量很高,职位的争夺也异常激烈
9、。软件开发是一个系统的过程,需要经过市场需求分析、软件代码编写、软件测试、软件维护等程序。软件开发工程师在整个过程中扮演着非常重要的角色,主要从事根据需求开发项目软件工作。,软件发展的历史回顾,现在的计算机的数学理论基础是由计算机的开山鼻祖,大名鼎鼎的图灵于1937年提出的图灵机模型。图灵确定了计算机中的可计算性(calculability)理论:即一个实际问题是否可以使用计算机来解决一个可以使用计算机解决的问题应该被定义为“可以在有限步骤内被解决的问题”,可计算性理论,可计算性理论是计算机科学的理论基础之一。在30年代图灵对存在通用图灵机的逻辑证明表明,制造出能编程序来作出任何计算的通用计算
10、机是可能的,这影响了40年代出现的存储程序计算机(即诺伊曼型计算机)的设计思想。可计算性理论确定了哪些问题可用计算机解决,哪些问题不可用计算机解决。如图灵机的停机问题是不可判定的表明,不可能用一个单独的程序来判定任意程序的执行是否终止。可计算性理论中的基本思想、概念和方法,被广泛应用于计算机科学的各个领域。建立数学模型的方法在计算机科学中被广泛采用。,可计算性理论起源于对数学基础问题的研究。20世纪30年代,为了讨论是否对于每个问题都有解决它的算法,数理逻辑学家提出了几种不同的算法定义:(1)K.哥德尔和S.C.克林尼提出了递归函数的概念;(2)A.丘奇提出转换演算;(3)A.M.图灵和E.波
11、斯特各自独立地提出了抽象计算机的概念(后人把图灵提出的抽象计算机称为图灵机),并证明这些数学模型的计算能力是一样的,即它们是等价的。(4)后来,人们又提出许多等价的数学模型,如A.马尔可夫于40年代提出的正规算法(后人称之为马尔可夫算法),60年代前期提出的随机存取机器模型(简称 RAM)等。50年代末和60年代初,胡世华和J.麦克阿瑟等人各自独立地提出了定义在字符串上的递归函数。,递归的思想被用于程序设计,产生了递归过程和递归数据结构,也影响了计算机的体系结构。演算被用于研究程序设计语言的语义,例如,表处理语言就以转换演算为理论基础。,随后不到十年,电子计算机就诞生了(1945)。(埃尼亚克
12、 ENIAC)它当时的主要任务之一就是用于导弹弹道轨迹的计算。,现代电子计算机的体系结构及实际计算模型来自冯.诺依曼的思想。1946年他和他的同事们发现了埃尼亚克的缺陷,发表了一份报告,提出了程序放入内存,顺序执行的思想。英国的科学家维尔克斯实现了冯.诺依曼的思想,领导研制了“艾克萨克”。因此,现在的计算机通常被称为冯.诺依曼计算机。,软件开发的发展阶段,软件开发经历了程序设计阶段、软件设计阶段和软件工程阶段的演变过程。程序设计阶段(1946年1955年)特点:尚无软件的概念,程序设计主要围绕硬件进行开发,规模很小,工具简单,无明确分工(开发者和用户),程序设计追求节省空间和编程技巧,无文档资
13、料(除程序清单外),主要用于科学计算。软件设计阶段(1956年1970年)特点是:硬件环境相对稳定,出现了“软件作坊”的开发组织形式。随着计算机技术的发展和计算机应用的日益普及,软件系统的规模越来越庞大,高级编程语言层出不穷,应用领域不断拓宽,开发者和用户有了明确的分工,社会对软件的需求量剧增。但软件开发技术没有重大突破,软件产品的质量不高,生产效率低下,从而导致了“软件危机”的产生。软件工程阶段(1970年起)特点是:硬件已向巨型化、微型化、网络化和智能化四个方向发展,数据库技术已成熟并广泛应用,第三代、第四代语言出现;第一代软件技术:结构化程序设计在数值计算领域取得优异成绩;第二代软件技术
14、:软件测试技术、方法、原理用于软件生产过程;第三代软件技术:处理需求定义技术用于软件需求分析和描述。,软件工程产生的背景,c.软件的发展,早期面向批处理有限的分布自定义软件,第二阶段多用户实时数据库软件产品,第三阶段分布式系统嵌入“智能”低成本硬件消费者的影响,第四阶段强大的桌面系统面向对象技术专家系统人工神经网络并行计算网路计算机,1950,1960,1970,1980,1990,2000,1968年10月,北大西洋公约组织(NATO)的科学家在德国召开的学术会议上正式提出了软件危机问题。,软件危机,1968,NATO(北大西洋公约组织),软件危机(1)对软件开发成本和进度的估计常常不准确。
15、开发成本超出预算,实际进度比预定计划一再拖延的现象并不罕见。(2)用户对“已完成”系统不满意的现象经常发生。(3)软件产品的质量不可靠。(4)软件的可维护程度非常之低。(5)软件通常没有适当的文档资料。(6)软件的成本不断提高。(7)软件开发生产率无法满足人们对软件的生产要求,软件开发生产率的提高落后于硬件的发展。1968年秋季,软件工程学的形成,软件危机的原因,软件工程研究结果表明,软件危机的原因主要有两方面:一、与软件本身的特点有关二、与软件开发人员有关(1)软件生产水平相当程度上取决于软件人员的教育、训练和经验的积累;(2)大型软件需要许多人合作开发,容易出现理解的差异和错误;(3)计算
16、机技术和应用发展迅速,知识更新周期加快,软件开发人员变动大。,软件工程主要研究软件生产的客观规律性,建立与系统化软件生产有关的概念、原则、方法、技术和工具,指导和支持软件系统的生产活动,以期达到降低软件生产成本、改进软件产品质量、提高软件生产率水平的目标。人们开始研制和使用软件工具辅助软件项目管理与技术生产,并软件生命周期各阶段使用的软件工具有机地集合成为一个整体,以期从管理和技术两方面解决软件危机问题。人工智能与软件工程的结合成为80年代末期活跃的研究领域。基于程序变换、自动生成和可重用软件等软件新技术研究也已取得一定的进展,把程序设计自动化的进程向前推进一步。,23,非常复杂,逻辑复杂远远
17、高于硬件的逻辑复杂度开发复杂成本难以估算进度难以控制人员素质要求质量得不到保证96年Ariane火箭发射失败,浮点数转换时发生错误,软件工程产生的背景:软件的特征,成本高(1/2),软件工程产生的背景:软件的特征,成本高(2/2),软件工程产生的背景:软件的特征,风险大,1995年美国Standish咨询集团的统计分析(至90年代初的软件项目执行情况)成功:16.2%失败:31受到挑战:53.8%近几年来的统计数据成功:26失败:28受到挑战:46%,软件工程产生的背景:软件的特征,维护困难,维护形式多样化改正性:修改故障完善性:增加功能适应性:移植维护成本越来越高55%到70维护带来的问题,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 概述
链接地址:https://www.desk33.com/p-235947.html