《软件工程概述.ppt》由会员分享,可在线阅读,更多相关《软件工程概述.ppt(22页珍藏版)》请在第壹文秘上搜索。
1、软件工程介绍 1.软件的发展软件的发展 从系统的角度划分:从系统的角度划分: 计算机软件经历了三个发展阶段:计算机软件经历了三个发展阶段:程序设计阶段,大约为程序设计阶段,大约为20世纪五六十年代;世纪五六十年代;程序系统阶段,大约为六七十年代;程序系统阶段,大约为六七十年代;软件工程阶段,约为软件工程阶段,约为20世纪世纪70年代以后。年代以后。软件的分类计算机软件计算机软件系统软件系统软件应用软件应用软件系统管理软件系统管理软件系统支持程序系统支持程序系统开发程序系统开发程序通用应用程序通用应用程序专业应用程序专业应用程序 操作系统操作系统 系统应用程序系统应用程序 程序设计语言程序设计语
2、言 字处理字处理 会计会计通用通用. . 操作环境操作环境 执行管理器执行管理器 翻译器翻译器 电子表电子表 帐务等帐务等 数据库管理系统数据库管理系统 安全管理器安全管理器 程序设计环境程序设计环境 数据库管理数据库管理 市场市场销售销售 通信管理器通信管理器 计算机辅助计算机辅助 通信通信 分析等分析等 软件工程包软件工程包 绘图绘图 制造制造产品产品 控制等控制等软件的概念、特点软件的概念、特点 关于软件的形式化定义,即软件是关于软件的形式化定义,即软件是(1 1) 能够完成预定功能和性能的可执行指令;能够完成预定功能和性能的可执行指令;(2 2) 使得程序能够适当地操作信息的数据结构;
3、使得程序能够适当地操作信息的数据结构;(3 3) 描述程序的操作和使用的文档。描述程序的操作和使用的文档。(1 1) 软件是逻辑的,而不是物理的产品。逻辑往往实际只存在于人的头脑软件是逻辑的,而不是物理的产品。逻辑往往实际只存在于人的头脑当中,软件的开发过程极难加以控制。当中,软件的开发过程极难加以控制。(2 2) 软件是由开发或工程化而形成的,没有明显的制造过程。软件成本集软件是由开发或工程化而形成的,没有明显的制造过程。软件成本集中于中于 开开 上,意味着软件项目不能象硬件制造项目那样来管理。上,意味着软件项目不能象硬件制造项目那样来管理。(3 3) 软件在运行和使用期间,不存在硬件那样的
4、磨损和老化问题,但它存软件在运行和使用期间,不存在硬件那样的磨损和老化问题,但它存在退化问题,开发人员必须维护软件。在退化问题,开发人员必须维护软件。(4 4) 大多数软件是自定的,而不是通过已有构件组装而成的。迄今为止,大多数软件是自定的,而不是通过已有构件组装而成的。迄今为止,软件的开发尚未完全摆脱手工的方式。软件的开发尚未完全摆脱手工的方式。(5 5) 软件成本相当昂贵。软件成本相当昂贵。IBM360IBM360操作系统的研制人员最多时可达操作系统的研制人员最多时可达10001000多人,从多人,从19631963年到年到19661966年共年共花了四年时间才完成,总计耗费了花了四年时间
5、才完成,总计耗费了50005000多人年,以后又进行不断的修改和补多人年,以后又进行不断的修改和补充。该系统的整个研制费用为充。该系统的整个研制费用为5 5亿美元,其中近一半花在软件上。亿美元,其中近一半花在软件上。 (6 6) 软件本身是复杂的。软件本身是复杂的。软件比任何其他人类制造的结构更复杂,甚至硬件的复杂性和软件相比软件比任何其他人类制造的结构更复杂,甚至硬件的复杂性和软件相比也是微不足道的。也是微不足道的。软件本质上的复杂性是软件产品难以理解,影响软件过程软件本质上的复杂性是软件产品难以理解,影响软件过程的管理,并使维护过程十分复杂。的管理,并使维护过程十分复杂。是软件产品难以理解
6、,影响软件过程的管理,是软件产品难以理解,影响软件过程的管理,并使维护过程十分复杂。并使维护过程十分复杂。与硬件相比,软件具有以下不同的特点:与硬件相比,软件具有以下不同的特点:软件危机软件危机产生软件危机的原因:产生软件危机的原因: 早期的软件开发过程不规范,缺少与程序有关的文档,软早期的软件开发过程不规范,缺少与程序有关的文档,软件开发的实际的成本和进度往往与预计的相差甚远,软件件开发的实际的成本和进度往往与预计的相差甚远,软件的质量得不到保证,开发出来的软件常常不能使用户满意。的质量得不到保证,开发出来的软件常常不能使用户满意。 软件的规模越来越大,带来了软件的复杂度的增加,软软件的规模
7、越来越大,带来了软件的复杂度的增加,软件的复杂性使软件产品很难理解,而且也会影响软件过程件的复杂性使软件产品很难理解,而且也会影响软件过程管理,结果可能使软件的开发费用经常超支,完成时间也管理,结果可能使软件的开发费用经常超支,完成时间也经常脱期。更为严重的是随着软件规模的增长,可靠性在经常脱期。更为严重的是随着软件规模的增长,可靠性在下降,质量保证也越来越困难,导致软件开发的生产率远下降,质量保证也越来越困难,导致软件开发的生产率远远跟不上计算机应用的迅速增长。远跟不上计算机应用的迅速增长。 软件开发时缺少好的方法指导和工具辅助,同时又缺少有软件开发时缺少好的方法指导和工具辅助,同时又缺少有
8、关的文档,使得大量已有的软件难以维护。关的文档,使得大量已有的软件难以维护。 什么是软件危机:什么是软件危机:人们把软件开发和维护中的各种问题称为人们把软件开发和维护中的各种问题称为“软件危机软件危机”。软件危机主要包含两方面的问题:软件危机主要包含两方面的问题:如何开发软件以满足软件日益增长的需求;如何开发软件以满足软件日益增长的需求;如何维护数量不断增长的已有软件。如何维护数量不断增长的已有软件。软件危机的表现:软件危机的表现: 对软件开发成本和进度的估算很不准确。对软件开发成本和进度的估算很不准确。用户对完成的软件很不满意。用户对完成的软件很不满意。软件产品的质量很不可靠。软件产品的质量
9、很不可靠。 没有完整的文档。没有完整的文档。软件成本比重上升,软件、硬件成本变化趋势如图软件成本比重上升,软件、硬件成本变化趋势如图1-21-2所示。所示。 软件开发生产效率低下,软件开发技术进步落后与需求的增长,造成软件开发生产效率低下,软件开发技术进步落后与需求的增长,造成“供不应求供不应求”的局面,如图的局面,如图1-31-3所示。所示。 硬件硬件软件软件图图1-2硬件硬件/软件成本变化趋势软件成本变化趋势 图图1-3软件技术进步落后于需求的增长软件技术进步落后于需求的增长软件工程的基本原理及过程软件工程的基本原理及过程 软件工程的定义:软件工程的定义:采用工程的概念、原理和方法来开发和
10、维护软件,采用工程的概念、原理和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。方法结合起来,这就是软件工程。 著名的软件工程专家著名的软件工程专家B.W.Boehm在在1983年的一篇论文中提出了软件年的一篇论文中提出了软件工程的七条基本原理:工程的七条基本原理: 1)用分阶段的生命周期计划严格管理)用分阶段的生命周期计划严格管理 2) 坚持进行阶段评审坚持进行阶段评审 3) 实行严格的产品控制(推迟实现的原则)实行严格的产品控制(推迟实现的原则) 4) 使用现代程序设
11、计技术使用现代程序设计技术 5) 结果应能清楚地审查结果应能清楚地审查 6)开发小组的人员应少而精)开发小组的人员应少而精 7)承认不断改进软件工程实践的必要性)承认不断改进软件工程实践的必要性 软件工程的目标与原则软件工程的目标与原则软件工程开发的目标:软件工程开发的目标:1 1)能够满足基本需要)能够满足基本需要2 2)开发成本要小)开发成本要小3 3)较低的维护费用)较低的维护费用4 4)及时完工并交付使用)及时完工并交付使用5 5)可移植性好)可移植性好更具体的产品性能指标是,开发的软件产品应该具有可修改性、有效性、可更具体的产品性能指标是,开发的软件产品应该具有可修改性、有效性、可靠
12、性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性。可互操作性。 软件开发中必须遵循下列软件工程的原则:软件开发中必须遵循下列软件工程的原则: 抽象、信息隐蔽、模块化、局部抽象、信息隐蔽、模块化、局部化、一致性、完整性和可验证性。化、一致性、完整性和可验证性。软件工程包括软件工程包括3 3个要素个要素方法、工具和过程。方法、工具和过程。软件工程方法为软件开发提供了软件工程方法为软件开发提供了“如何做如何做”的技术。它包括项目计划的技术。它包括项目计划与估算、软件系统需求分析、数据结构设计、系统总体结构设计
13、、算与估算、软件系统需求分析、数据结构设计、系统总体结构设计、算法过程设计、编码、测试以及维护等。法过程设计、编码、测试以及维护等。软件工具为软件工程方法学提供自动或半自动的软件支撑环境。目前软件工具为软件工程方法学提供自动或半自动的软件支撑环境。目前流行的是把诸多软件工具集成起来,使得工具之间实现信息互用,这流行的是把诸多软件工具集成起来,使得工具之间实现信息互用,这样建立起称做计算机辅助软件工程样建立起称做计算机辅助软件工程CASECASE的软件开发支撑系统。的软件开发支撑系统。软件工程过程是将软件工程的方法和工具综合起来,以达到合理、及软件工程过程是将软件工程的方法和工具综合起来,以达到
14、合理、及时地进行计算机软件开发的目的。过程定义了方法使用的顺序、要求时地进行计算机软件开发的目的。过程定义了方法使用的顺序、要求交付的文档资料、保证质量和协调变化所需的管理以及软件开发各个交付的文档资料、保证质量和协调变化所需的管理以及软件开发各个阶段完成的里程碑。阶段完成的里程碑。软件开发模型是软件开发全部过程、活动和任务的结构框架。它能直软件开发模型是软件开发全部过程、活动和任务的结构框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。略。软件开发模型也常称为:软件过程模型、软件生存周期模型或软件工软件开发
15、模型也常称为:软件过程模型、软件生存周期模型或软件工程范型。程范型。主要的软件过程模型包括传统开发模型主要的软件过程模型包括传统开发模型瀑布模型、快速原型模型,瀑布模型、快速原型模型,演化模型演化模型螺旋模型、增量模型,面向对象开发模型螺旋模型、增量模型,面向对象开发模型构件集成构件集成模型,形式化开发模型模型,形式化开发模型转换模型、净室模型等。转换模型、净室模型等。瀑布模型瀑布模型瀑布模型把软件生存期划分为计划、开发和运行三个时期,每个时期瀑布模型把软件生存期划分为计划、开发和运行三个时期,每个时期又划分为若干个阶段,规定了制定开发计划、进行需求分析和说明、又划分为若干个阶段,规定了制定开
16、发计划、进行需求分析和说明、软件设计、程序编码、测试及运行维护等各项工程活动,如图软件设计、程序编码、测试及运行维护等各项工程活动,如图1616所所示。示。在整个瀑布模型中贯穿有以下几个观点:在整个瀑布模型中贯穿有以下几个观点:1)1)各阶段具有顺序性,一个阶段的开始是以上一阶段工作作为基础的。各阶段具有顺序性,一个阶段的开始是以上一阶段工作作为基础的。2)2)在整个模型中贯穿的是一种推迟实现的观点在整个模型中贯穿的是一种推迟实现的观点尽可能推迟程序的实现是瀑布模型的重要指导思想,其好处在于抛开尽可能推迟程序的实现是瀑布模型的重要指导思想,其好处在于抛开具体实现的限制可以找到更有利于解决问题的方法。具体实现的限制可以找到更有利于解决问题的方法。3)3)严格质量管理的观点。严格质量管理的观点。这一观点体现在两个方面:一是每阶段要有规定的文档产生,以文档这一观点体现在两个方面:一是每阶段要有规定的文档产生,以文档资料的产生为该阶段结束的标志。二是每一阶段完成之后,必须要通资料的产生为该阶段结束的标志。二是每一阶段完成之后,必须要通过审核才能开始下一阶段工作,目的是及早发现问题,消除隐患。从