全套电子ppt课件:软件工程-第一套

举报
资源描述
第一章第一章 软件工程概述件工程概述【本章引言】【本章引言】自从1946年第一台电子计算机诞生以来,计算机的研究生产和应用得到迅猛的发展,计算机系统已经经历了四个不同的发展阶段,计算机科学成为当今世界上发展最快和应用最广的学科之一。然而,我们仍然没有彻底摆脱“软件危机”困扰,软件已经成为限制计算机系统发展的关键因素。为了克服这种困扰,软件工作者在不断的研究消除软件危机的方法,从而逐步形成了计算机科学技术领域中的一门新兴的工程学科软件工程。本章将对软件概念、软件分类、软件发展、软件危机、软件工程概念、软件生命周期及软件开发模型等方面做简要的介绍,通过本章学习,可为后几章软件工程的深入学习打下基础。【本章重点】本章重点】软件工程概念软件生命周期软件开发模型【学【学习目目标】理解软件工程的基本概念和软件生命周期了解软件开发的几种模型1.1软件概述1.2软件工程的概述1.3软件生命周期1.4软件开发模型1.5小结1.6习题第一章第一章 软件工程概述件工程概述1.1.1 软件的概念1.1.2 软件的分类1.1.3 软件的发展1.1.4 软件危机1.1软件概述1.1.1 软件的概念随着计算机技术的快速发展,硬件性能有了极大的提高,计算机体系结构发生了深刻的变化,内存和存储容量的快速增加,以及各种各样的输入和输出选择等,所有这些都促进了更高级和更为复杂的基于计算机系统的开发。软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合。其中,程序是按事先设计的功能和性能要求执行的指令序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发、维护和使用有关的图文材料。1.1.2 软件的分类软件多种多样,随着软件复杂程度的增加,软件的界限越来越不明显。按软件的作用,一般可以分为以下几类。1系统软件系统软件(systemsoftware)是指能与计算机硬件紧密配合在一起,使计算机系统各个部件、相关的软件、和数据协调高效地工作的软件。系统软件是计算机系统的重要组成部分,它支持应用软件的开发和运行。系统软件包括:操作系统、网络软件、编译程序、数据库管理程序、文件编辑系统、系统检查与诊断软件等。2应用软件应用软件(applicationsoftware)则是在系统软件基础上,为解决特定的领域应用而开发的软件。按其性质不同可以分为以下几类:事务软件事务信息处理是一个最大的软件应用领域。如工资单、收/支计算、存货盘点报表等。这些独立的系统可以组成管理信息系统(MIS)软件,它从一个或多个装有事务信息的数据库中存取数据。在这个领域中的应用是重新建立已有的数据,便于事务操作或做出管理决策。另外,除了传统的数据处理应用,事务软件还可以实现交互计算(如营业点的交易处理)。1.1.2 软件的分类实时软件监视、分析和控制现实世界中发生的事件,能以足够快的速度对输入信息进行处理并在规定的时间内作出反应的软件,称之为实时软件。实时软件包括四个组成部分:数据采集器(负责从外部环境中获取和格式化信息)、分析器(负责将信息转换成应用所需要的形式)、输出/控件器(负责响应外部环境)、管理器(负责协调系统各个部件工作,使系统能保持在一个可接受的响应时间内给实时响应)。实时系统必须在严格的时间范围内响应,因此实时软件和计算机系统必须有很高的可靠性和安全性。1.1.2 软件的分类工程和科学软件工程和科学软件具有数值算法的特点。其应用范围从天文学到火山学;从自动应力分析到空间航天飞机轨道动力学;从分子生物学到自动化制造。但是,在工程和科学领域中的新的应用已经远离传统的数值算法。计算机辅助设计(CAD)、系统模拟和其他交互应用系统已经做到具有实时和系统软件的特点。1.1.2 软件的分类嵌入式软件嵌入式计算机系统将计算机嵌入在某一系统之中,使之成为该系统的重要组成部分、控制该系统的运行,进而实现一个特定的物理过程。用于嵌入式计算机系统的软件称为嵌入式软件(embeddedsoftware)。大型的嵌入式计算机系统软件可用于航空航天系统、指挥控制系统、武器系统等;小型的嵌入式计算机系统软件可用于工业的智能化产品之中,这时嵌入式软件驻留在只读存储内,为该产品提供各种控制功能和仪表的数字或图形显示功能等。如汽车的刹车控制,空调机、洗衣机的自动控制等。1.1.2 软件的分类个人计算机软件个人计算机软件市场在过去的十几年就已经兴起。发展字处理、电子报表、计算机图形、家庭游戏、数据库管理、个人和事务财务应用、外部网络或数据库存取等数百种应用。事实上,个人计算机软件体现了一些最具有创新的软件人机界面设计。基于Web的软件浏览器检索的Web界面是软件,它结合了可执行的指令(CGI、HTML、Perl或Java)和数据(超文本和视频及音频的多种数据)。本质上,网络变成了一个巨大的计算机,提供了一个几乎无限的可通过任何调制解调器被访问的软件资源。1.1.2 软件的分类人工智能软件人工智能(AI)软件采用非数值算法来解决不适于直接计算和分析的复杂问题。一般说来,这些问题都不能通过计算或直接分析而得到答案。迄今为止,在专家系统、模式识别、自然语言理解、人工神经网络、程序验证、自动程序设计、机器人学等领域开发了许多人工智能应用软件,用于诊断疾病、产品检测、自动定理证明、图像和语言自动识别、语言翻译等。1.1.2 软件的分类3工具软件这是20世纪80年代发展起来,是系统软件和应用软件之间的支持软件。一般用来辅助和支持开发人员开发和维护应用软件,以提高软件的开发质量和生产率。它包括需求分析工具、设计工具、编码工具、测试工具、维护工具和管理工具等。工具软件又可分为垂直工具软件和水平工具软件。垂直工具软件是指生命周期的某一阶段特定活动所使用的工具软件,如分析、设计、测试等活动;水平工具软件是指整个生命周期活动所使用的工具软件,如项目管理、配置管理等活动。1.1.2 软件的分类4可重用软件可重用技术是最近几年提出来的。实际上过去就有这种技术,如各种标准程序库,通常它是计算机厂家提供的系统软件中的一部分,对这些标准程序库里的标准子程序稍加改造,甚至不经改造就可以把它们编入新开发的程序。但过去的这种标准程序应用面比较窄,大多只限于一些数学子程序。今天,世界已把可重用范围扩展到算法以外,数据结构也可以重用。20世纪90年代的可重用构件则是把数据和相应的操作两者封装在一起(通常叫做类或对象),使软件工程师能够用可重用构件来建立新的应用程序。例如,现在的交互式界面一般就是用这种可重用构件组成的。这些可重用构件能够建立图形窗口、下拉菜单、以及各种交互机制。建立这样的界面所需要的数据结构和处理细节都包含在一个由界面构件所组成的可重用库里。1.1.2 软件的分类1.1.3 软件的发展自20世纪40年代世界上第一台计算机问世以来,软件经历了程序设计、程序系统及软件工程三个阶段的发展。程序设计阶段(20世纪50年代至60年代)的软件指的是程序,程序的开发采用个体工作的方式,开发工作主要依赖于开发人员的个人技能和程序设计的技巧,软件的质量得不到保证,缺乏与程序有关的文档。程序系统阶段(20世纪60年代至70年代)的软件是指程序和说明书,软件开发采用开发小组工作的方式,开发工作主要依赖于开发小组的水平,文档资料的不齐全给软件维护带来了很大的难度,软件技术的发展不能满足需要。软件工程阶段(20世纪70年代以后)的软件则是指程序、文档、数据,由开发小组及大中型软件开发机构承担开发软件的任务,开发工作主要依赖于整个机构的管理水平,采用多种开发技术。目前在很多应用领域,人们开始采用面向对象的软件开发技术。专家系统、人工智能软件开始走向实际应用。软件技术呈现国际化、网络化、服务化等多种发展趋势。互联网作为二十世纪最重要的科技成果之一,给人类生活和经济发展都带来了深远的影响,它所展现出的勃勃商机,吸引了众多厂商围绕互联网开发软件,与分布计算、网络和互联网相关的软件技术成为软件领域的主要技术热点。此外,自由软件潮流、智能化、简易化、多样化等趋势正极大地拓展软件产业的发展空间,派生出许多具有成长潜力的新兴领域。1.1.3 软件的发展1.1.4 软件危机1软件危机的含义软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题绝不仅仅是不能正常运行的软件才具有的。实际上,几乎所有软件都不同程度地存在这些问题。概括地说,软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。鉴于软件危机的长期性和症状不明显的特征,近年来有人建议把软件危机更名为“软件萧条(depression)”或“软件困扰(afflication)”。不过“软件危机”这个词强调了问题的严重性,而且也已为绝大多数软件工作者所熟悉,所以本书仍将沿用它。1.1.4 软件危机2产生软件危机的原因产生软件危机的原因很多,总结起来有以下几点:由于缺乏软件开发经验和有关软件开发数据的积累,使得开发工作的计划很难制定,以致经常出现超出经费预算,无法遵循进度计划,完成开发的期限一再拖延等情况。软件需求在开发的初期阶段不够明确,或是未能得到确切的表达。开发工作开始后,软件人员和用户又未能及时交换意见,造成矛盾在开发后期集中暴露。开发过程没有统一、公认的方法论和规范进行指导,参加开发的人员各行其事。另外,设计和实现过程的资料很难维护。未能在测试阶段做好充分的检测工作,提交至用户的软件质量差,在运行过程中暴露出大量的问题。1.1.4 软件危机3软件危机的解决方法为了消除软件危机,首先应该对计算机软件有一个正确的认识。应该彻底清除在计算机系统早期发展阶段形成的“软件就是程序”的错误概念。一个软件必须由一个完整的配置组成。事实上,软件是程序、数据及相关文档的完整集合。其中,程序是能够完成预定功能和性能的可执行的指令序列;数据是使程序能够适当地处理信息的数据结构;文档是开发、使用和维护程序所需要的图文资料。1983年IEEE为软件下的定义是:计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必须的数据。虽然表面上看来在这个定义中列出了软件的5个配置成分,但是方法和规则通常是在文档中说明并在程序中实现的。1.1.4 软件危机更重要的是,必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。必须充分吸取和借鉴人类长期以来从事各种工程项目所积累的行之有效的原理、概念、技术和方法,特别要吸取几十年来人类从事计算机硬件研究和开发的经验教训。应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误的概念和做法。1.1.4 软件危机应该开发和使用更好的软件工具。正如机械工具可以“放大”人类的体力一样,软件工具可以“放大”人类的智力。在软件开发的每个阶段都有许多繁琐重复的工作需要做,在适当软件工具辅助下,开发人员可以把这类工作做得既快又好。如果把各个阶段使用的软件工具有机地集合成一个整体,支持软件开发的主过程,则称为软件工程支撑环境。总之,为了消除软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。1.2 软件工程的概念件工程的概念1.2.1 软件工程的定义和原理1.2.2 软件工程的目标1.2.3 软件工程的原则1.2.1 软件工程的定义和原理1软件工程的定义软件工程(softwareengineering)这个名词是北大西洋公约组织(NATO)科学技术委员会1968年秋在当时的联邦德国召集了近50名第一流的编程人员、计算机科学家和工业界巨头,制定摆脱软件危机的办法时提出来的。尽管当时专家们无法设计出一张指导软件业走向更牢固阵地的详细路线图,但他们借鉴硬件工程的办法,确实为解决软件这一难题,不仅创造了一个新名词软件工程,还使软件工程有了方向。从1968年到现在已经40多年,应该说,在
展开阅读全文
温馨提示:
金锄头文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
相关资源
正为您匹配相似的精品文档
相关搜索

当前位置:首页 > 办公文档 > 教学/培训


电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号