软件工程概述

上传人:壹****1 文档编号:498280199 上传时间:2023-07-15 格式:DOCX 页数:18 大小:215.96KB
返回 下载 相关 举报
软件工程概述_第1页
第1页 / 共18页
软件工程概述_第2页
第2页 / 共18页
软件工程概述_第3页
第3页 / 共18页
软件工程概述_第4页
第4页 / 共18页
软件工程概述_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《软件工程概述》由会员分享,可在线阅读,更多相关《软件工程概述(18页珍藏版)》请在金锄头文库上搜索。

1、第一章软件工程概述1.1软件工程的产生和发展软件工程是在克服60年代末所出现的“软件危机”的过程中逐渐形成与发展的。自968 年在北大西洋公约组织(NATO)举行软件可靠性的学术会议上正式提出“软件工程(Software Engineering)”的概念以来,在不到40年的时间里,软件工程在理论和实践两 方面都取得了长足的进步。软件工程是一门指导计算机软件系统开发和维护的工程学科,是一门新兴的边缘学科, 它涉及到计算机科学、工程科学、管理科学、数学等多学科,软件工程的研究范围广,不仅 包括软件系统的开发方法和技术、管理技术,还包括软件工具、环境及软件开发的规范。软件是信息化的核心,国民经济、国

2、防建设、社会发展及人民生活都离不开软件。软 件产业关系到国家经济发展和文化安全,体现了国家综合实力,是决定1世纪国际竞争地 位的战略性产业。因此大力推广应用软件工程的开发技术及管理技术,提高软件工程的应 用水平,对促进我国软件产业与国际接轨推动软件产业的迅速发展起着十分重要的关键作 用。1.1.1软件工程的发展过程软件工程的产生和发展是与软件的发展过程紧密相关的。自从第一台电子计算机诞生 以来,就开始了软件的生产,“软件工程”提出至今,它的发展已经历了四个重要阶段:1. 第一代软件工程(60年代末到70年代)60年代末,软件生产主要采用“生产作坊方式”。随着软件需求量、规模及复杂度的迅 速增大

3、,生产作坊的方式已不能够适应软件生产的需要,出现了所谓“软件危机”,即软件生 产效率低,大量质量低劣的软件涌入市场或在开发过程中夭折。由于“软件危机”的不断 扩大,对软件生产已经产生了严重危害。为了克服“软件危机(Software crisis),在著名的NATO (北大西洋公约组织)软件可靠 性会议上第一次提出“软件工程”的名词,将软件开发纳入了工程化的轨道,基本形成了软件 工程的概念、框架、技术和方法。这阶段又称为传统的软件工程。2. 第二代软件工程(80年代中到90年代)80年代中开始,以Smalltalk为代表的面向对象的程序设计语言相继推出,面向对象的 方法与技术得到发展,从90年代

4、起,研究的重点从程序设计语言逐渐转移到面向对象的分 析与设计,演化为一种完整的软件开发方法和系统的技术体系90年代以来,出现了许多面 向对象的开发方法的流派,面向对象的方法逐渐成为软件开发的主流。所以这一阶段又成为 称为对象工程。3. 第三代软件工程随着规模的不断增大,开发人员也随之增多,开发时间相应持续增长,加之软件是知 识密集型的逻辑思维产品,这些都增加了软件工程管理的难度。人们在软件开发的实践过 程中认识到:提高软件生产率,保证软件质量的关键是对“软件过程”的控制和管理,提出 对软件项目管理的计划、组织、成本估算、质量保证、软件配置管理等技术与策略,逐步 形成了软件过程工程。4. 构件工

5、程90起年代,基于构件(Component)的开发方法取得重要进展,软件系 统的开发可通过使用现存的可复用构件组装完成,而无需从头开始构造,以此达到提高效 率和质量,降低成本的目的。称为构件工程。1.1.2软件危机1、软件危机的产生“软件危机” Software crisis)的出现是由于软件的规模越来越大,复杂度不断增加, 而软件需求量也不断增大,“生产作坊式”的软件开发模式及技术已不能满足软件发展的需要。软件开发过程是一种高密集度的脑力劳动,对开发人员的需要投入大量的人力、物力 和财力,由于软件开发的模式及技术不能适应软件发展的需要,致使大量质量低劣的软件 产品涌向市场,有的甚至在开发过程

6、中就夭折了。国外在开发一些大型软件系统时,遇到 了许多困难,有的系统最终彻底失败了;有的系统则比原计划推迟了好多年,而且费用大 大超过了预算;有的系统不能符合用户当初的期望;有的系统则无法进行修改维护。例如:IBM公司的OS/360,共约100万条指令,花费了 5000个人年;经费达数亿美元,而 结果却令人沮丧,错误多达2000个以上,系统根本无法正常运行。OS/360系统的负责人 Brooks这样描述开发过程的困难和混乱:“像巨兽在泥潭中作垂死挣扎,挣扎得越猛,泥浆 就沾得越多,最后没有一个野兽能够逃脱淹没在泥潭中的命运。”1962年6月,美国飞往金星的第一个空间探测器(水手I号),因其飞舱

7、中计算机导航 程序的一条语句出错,致使空间探测器偏离航线无法取得成功。还有,可以称为上世纪世界上最精心设计,并花费了巨额投资的美国阿波罗登月飞行 计划的软件,也仍然没有避免出错,例如阿波罗号由于太空飞船的一个计算机软件错误, 造成存储器的一部分信息丢失;阿波罗14号在飞行的10天中,出现了 18个软件错误。2、软件危机的表现20世纪60年代末期所发生的软件危机,反映在软件可靠性没有保障、软件维护工作 量大、费用不断上升、进度无法预测、成本增长无法控制、程序人员无限度地增加等各个 方面,以致形成人们难以控制软件开发的局面。软件危机”主要表现在两个方面:(1) 软件产品质量低劣,甚至在开发过程中就

8、夭折。(2) 软件生产率低,不能满足需要。1.1.3软件工程的定义究竟什么是“软件工程”?自从1968年提出软件工程这个术语,对于软件工程就有了各种各样的定义,但是它们 的基本思想都是强调在软件开发过程中应用工程化原则的重要性。例如,Boehm曾经为软件工程下了以下定义:“运用现代科学技术知识时间并构造计算机程序 及为开发、运行和维护这些程序所必需的相关文件资料。”。1983年,IEEE(国际电气与电子工程师协会)所下的定义是:软件工程是开发、运行、 维护和修复软件的系统方法。1990年,IEEE又将定义更改为:对软件开发、运作、维护的系统化的、有规范的、 可定量的方法之应用,即是对软件的工程

9、化应用。软件工程有方法、工具和过程三个要素。软件工程方法就是研究软件开发“如何作”的 技术;软件工具是研究支撑软件开发方法的工具、软件工具的集成环境一计算机辅助软件 工程CASE;软件工程过程则是指将软件工程方法与软件工具相结合实现合理、及时的进 行软件开发的目的。1.1.4软件工程研究的内容软件工程是一门指导软件开发的工程学科,是以计算机理论及其他相关学科的理论为 指导,采用工程化的概念、原理、技术和方法进行软件的开发和维护,把经实践证明的科 学的管理措施与最先进的技术方法结合起来,以较少的代价获得高质量的软件。1、软件工程研究的内容软件工程是一门新兴的边缘学科,涉及的学科多,研究的范围广。

10、归结起来软件工程研 究的主要内容有以下4个方面:方法与技术、工具及环境、管理技术、标准与规范。软件开发方法,主要讨论软件开发的各种方法及其工作模型,包括了多方面的任务, 如软件系统需求分析、总体设计、以及如何构建良好的软件结构,数据结构及算法设计等, 同时讨论具体实现的技术,软件工具为软件工程方法提供了支持,研究计算机辅助软件工程 CASE,建立软件工程环境。软件工程管理,是指对软件工程全过程的控制和管理,包括计划安排、成本估算、项 目管理、软件质量管理。软件工程标准化与规范化,使得各项工作有章可循,以保证软件 生产率和软件质量的提高。软件工程标准可分为个层次:国际标准、行业标准、企业规范 和

11、项目规范。必须要强调的是,随着人们对软件系统研究的逐渐深入,软件工程所研究的内容也不 是一成不变的。2、软件工程的目标软件工程研究的目标是“以较少的投资获取高质量的软件”。即软件的开发要在保证质量 和效率的同时,尽量缩短开发期,降低软件成本。软件过程所实现的多目标中,有的是互补的, 例如缩短开发期,显然可降低成本,维护是需要代价的,易于维护就可降低总成本。高性能与 高可靠性是互补的。而有的目标则是互斥的,例如:要获得高的可靠性,通常要采取一些冗余的措施,往往成本会增加。为了实现软件工程的多目标,要对软件的的各项质量指标进行综合考虑,以实现软件 开发的“多!快!好!省! ”的总目标。图1.1软件

12、工程的目标3、软件工程的基本原则过去,软件工程的基本原则是抽象、模块化、清晰的结构、精确的设计规格说明。但 今天的认识已经发生了很大的变化。现已提出的软件工程四条基本原则是:第一,必须认识软件需求的变动性,便采取适当措施来保证结果产品能忠实地满足用 户要求。在软件设计中,通常要考虑模块化、抽象与信息隐蔽、局部化、一致性等原则。第二,稳妥的设计方法大大地方便软件开发,以达到软件工程的目标。软件工具与环 境对软件设计的支持来说,颇为重要。第三,软件工程项目的质量与经济开销直接取决于对它所提供的支撑的质量与效用。第四,有效的软件工程只有在对软件过程进行有效管理的情况下才能实现。近年来,印度的软件产业

13、迅速发展,其成功的经验是,严格按照国际规范进行科学管 理。在本教材中,虽然主要讨论软件开发技术,只在第十章讨论软件管理技术,但软件管 理仍然是软件开发成功的关键,因此,将介绍当前质量管理的国际规范CMM (软件成熟 度的度量)。1.2软件与软件生存期“软件工程”是在软件生产中采用工程化的方法,采用一系列科学的、现代化的方法 技术来开发软件。这种工程化的思想贯穿到软件开发和维护的全过程。为了进一步学习有关软件工程的方法、技术,先介绍软件、软件生存期及软件工程过 程,这几个重要的概念。1.2.1软件的概念和特点1.软件(Software)“软件就是程序,开发软件就是编写程序”是一个错误观念。这种错

14、误观点的长期存 在,影响了软件工程的正常发展。事实上,正如Boehm指出的:软件是程序以及开发、使用和维护程序所需的所有文 档。它是由应用程序,系统程序,面向用户的文档及面向开发者的文档四部分构成。即:软件=程序+文档,2 .软件的特点(1) 软件是一种逻辑实体,不是具体的物理实体。(2) 软件产品的生产主要是研制。(3) 软件具有“复杂性”,其开发和运行常受到计算机系统的限制。(4) 软件成本昂贵,其开发方式目前尚未完全摆脱手工生产方式。(5) 软件不存在磨损和老化问题,但存在退化问题。失效率失效率图1.2软件失效率曲线图1.1给出了硬件的失效率曲线,它是一个J型曲线(即浴盆曲线),说明硬件

15、随着 使用时间的增加失效率急剧上升。图1.2所描述的软件失效率曲线,它没有!型曲线的右半翼表明软件随着使用时间的 增加失效率降低,因为软件不存在磨损和老化问题,然而存在退化问题。3、软件的分类(1) 按照软件功能划分系统软件-如操作系统、设备驱动程序等。支撑软件(实用软件)一协助用户开发的工具软件,如编辑程序、程序库、图形 软件包等。应用软件一如工程与科学计算软件、CAD/CAM软件、CAI软件、信息管理系统 等。(2) 按照软件规模划分如表1 1所示,按照软件的不同大小(源代码行、参加人数、研制时间分为微型、 小型、中型、大型、甚大型和极大型。需要说明的是:随着软件产品规模的不断增大,类别 的指标也会变化。(3 )按照软件工作方式划分实时处理软件、交互式软件、批处理软件(4)按照软件服务对象的范围划分项目软件一由客户委托开发的软件。产品软件一由软件开发机构开发,提供给市场的。此外,还可以按照软件使用的频度及按照软件失效的影响进行划分。表1-1软件规模分类类别参加人数研制期限产品规模(源代码行)微型114周0.5K小型116月1K2K中型2512年5K50K大型52023年5K500K甚大型100100045年1M极大型20005000510 年1M10M

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

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