1、第一章第一章 软件工程概述软件工程概述 学习目标:学习目标:掌握:软件和软件工程的基本概念、软件开发掌握:软件和软件工程的基本概念、软件开发 的瀑布型模型的瀑布型模型 了解:软件生存周期及软件开发的各种模型了解:软件生存周期及软件开发的各种模型 学习要点:学习要点:软件、软件工程、软件生存周期和软件开发的软件、软件工程、软件生存周期和软件开发的 模型(瀑布型和螺线型)模型(瀑布型和螺线型)1.1 软件的概念、特点和分类软件的概念、特点和分类 软件的概念软件的概念 软件软件是计算机系统中与硬件相互依存的是计算机系统中与硬件相互依存的另一部份,它是包括程序、数据及其相另一部份,它是包括程序、数据及
2、其相关文档的完整集合。关文档的完整集合。软件的特点软件的特点 软件是一种逻辑实体,而不是具体的物理实体,因软件是一种逻辑实体,而不是具体的物理实体,因此它具有抽象性。此它具有抽象性。软件一旦研制成功,以后就可以大量复制,即它的软件一旦研制成功,以后就可以大量复制,即它的研制成本远远大于它的生产成本。软件故障往往是研制成本远远大于它的生产成本。软件故障往往是在开发时产生,所以要保证软件的质量,必须重视在开发时产生,所以要保证软件的质量,必须重视软件的开发过程。软件的开发过程。在软件的运行和使用期间,没有硬件那样的机械磨在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题。损、老化问题。软件的
3、开发和运行经常受到计算机系统的限制,对软件的开发和运行经常受到计算机系统的限制,对计算机系统有不同程度的依赖性。计算机系统有不同程度的依赖性。软件的开发至今尚未完全摆脱手工的开发方式。软件的开发至今尚未完全摆脱手工的开发方式。软件的开发费用越来越高,成本相当昂贵。软件的开发费用越来越高,成本相当昂贵。软件的分类软件的分类 按软件的功能进行划分按软件的功能进行划分 系统软件系统软件:能与计算机硬件紧密配合在一能与计算机硬件紧密配合在一起,使计算机系统各个部件、相关的软起,使计算机系统各个部件、相关的软件和数据协调、高效地工作的软件。件和数据协调、高效地工作的软件。支撑软件支撑软件:是协助用户开发
4、软件的工具性是协助用户开发软件的工具性软件,其中包括帮助程序人员开发软件软件,其中包括帮助程序人员开发软件产品的工具,也包括帮助管理人员控制产品的工具,也包括帮助管理人员控制开发的进程的工具。开发的进程的工具。按软件规模进行划分按软件规模进行划分 微型微型:一个人在几天之内完成的软件。写出的程序一个人在几天之内完成的软件。写出的程序不到不到5百行语句百行语句。小型小型:一个人半年之内完成的一个人半年之内完成的2千行以内的程序。千行以内的程序。中型中型:5个人以内在一年多时间里完成的个人以内在一年多时间里完成的5千到千到5万万行的程序。行的程序。大型大型:5至至10个人在两年多的时间里完成的个人
5、在两年多的时间里完成的5万到万到10万行的程序。万行的程序。甚大型甚大型:100至至1000人参加用人参加用4到到5年时间完成的具年时间完成的具有有100万行程序的软件项目。万行程序的软件项目。极大型极大型:2000人到人到5000人参加,人参加,10年内完成的年内完成的1000万行以内的程序。万行以内的程序。按软件工作方式划分按软件工作方式划分 实时处理软件实时处理软件:指在事件或数据产生时,应立指在事件或数据产生时,应立即在规定的时间里予以处理,并及时反馈信号,即在规定的时间里予以处理,并及时反馈信号,控制需要监测和控制的过程的软件。控制需要监测和控制的过程的软件。分时软件分时软件:允许多
6、个联机用户同时使用计算机。允许多个联机用户同时使用计算机。系统把处理机时间轮流分配给各联机用户,使系统把处理机时间轮流分配给各联机用户,使各用户都感到只是自已在使用计算机的软件。各用户都感到只是自已在使用计算机的软件。交互式软件交互式软件:能实现人机通信的软件。能实现人机通信的软件。批处理软件批处理软件:把一组输入作业或一批数据以成把一组输入作业或一批数据以成批处理的方式一次运行,按顺序逐个处理完的批处理的方式一次运行,按顺序逐个处理完的软件。这是最传统的工作方式。软件。这是最传统的工作方式。按软件服务对象的范围划分按软件服务对象的范围划分 项目软件:也称定制软件,是受某个特项目软件:也称定制
7、软件,是受某个特定客户定客户(或少数客户或少数客户)的委托,由一个或的委托,由一个或多个软件开发机构在合同的约束下开发多个软件开发机构在合同的约束下开发出来的软件。出来的软件。产品软件产品软件:直接提供给市场的软件。:直接提供给市场的软件。1.2 软件的发展和软件危机软件的发展和软件危机软件经历了三个发展阶段软件经历了三个发展阶段:程序设计阶段,约为程序设计阶段,约为50至至60年代年代 程序系统阶段,约为程序系统阶段,约为60至至70年代年代 软件工程阶段,约为软件工程阶段,约为70年代以后年代以后软件危机软件危机 在软件发展的第二阶段,随着计算机硬件技术在软件发展的第二阶段,随着计算机硬件
8、技术的进步,计算机的容量、速度和可靠性有了明的进步,计算机的容量、速度和可靠性有了明显的提高,生产硬件的成本降低了。计算机价显的提高,生产硬件的成本降低了。计算机价格的下跌为它的广泛应用创造了极好的条件。格的下跌为它的广泛应用创造了极好的条件。在这一形式下,要求软件能与之相适应。然而在这一形式下,要求软件能与之相适应。然而软件技术的进步一直未能满足形式发展提出的软件技术的进步一直未能满足形式发展提出的要求。在软件开发中遇到的问题找不到解决的要求。在软件开发中遇到的问题找不到解决的办法,致使问题积累起来,形成日益尖锐的矛办法,致使问题积累起来,形成日益尖锐的矛盾。软件开发时期所面临的这种状态就是
9、所谓盾。软件开发时期所面临的这种状态就是所谓的的软件危机软件危机。软件危机中遇到的问题软件危机中遇到的问题 软件开发无计划性软件开发无计划性 软件需求不充分软件需求不充分 软件开发过程无规范软件开发过程无规范 软件产品无评测手段软件产品无评测手段 软件危机定义软件危机定义软件危机指的是软件开发和维护过程软件危机指的是软件开发和维护过程中遇到的一系列严重问题。中遇到的一系列严重问题。(1)软件危机的表现)软件危机的表现 产品不符合用户的实际需要。产品不符合用户的实际需要。软件开发生产率提高的速度远远不软件开发生产率提高的速度远远不能满足客观需要,软件的生产率远远低能满足客观需要,软件的生产率远远
10、低于硬件生产率和计算机应用的增长,使于硬件生产率和计算机应用的增长,使人们不能充分利用现代计算机硬件提供人们不能充分利用现代计算机硬件提供的巨大潜力。的巨大潜力。软件产品的质量差。软件产品的质量差。对软件开发成本和进度的估计常常不准对软件开发成本和进度的估计常常不准确。确。软件的可维护性差。软件的可维护性差。软件文档资料通常既不完整也不合格。软件文档资料通常既不完整也不合格。软件的价格昂贵,软件成本在计算机系软件的价格昂贵,软件成本在计算机系统总成本中所占的比例逐年上升。统总成本中所占的比例逐年上升。(2)产生软件危机的原因)产生软件危机的原因软件不同于硬件,它是计算机系统中的软件不同于硬件,
11、它是计算机系统中的逻辑部件而不是物理部件。在写出程序代逻辑部件而不是物理部件。在写出程序代码并在计算机上试运行之前,很难检验开码并在计算机上试运行之前,很难检验开发的正确性,而且软件开发的质量也较难发的正确性,而且软件开发的质量也较难评价。评价。软件不同于一般程序,它的一个显著特软件不同于一般程序,它的一个显著特点是规模庞大。点是规模庞大。虽然软件本身独有的特点确实给开发和虽然软件本身独有的特点确实给开发和维护带来一些客观困难,但是人们在开发维护带来一些客观困难,但是人们在开发和使用计算机系统的长期实践中,也确实和使用计算机系统的长期实践中,也确实积累和总结出了许多成功的经验。积累和总结出了许
12、多成功的经验。开发和管理人员只重视开发而轻视问题开发和管理人员只重视开发而轻视问题的定义,使软件产品无法满足用户的需求。的定义,使软件产品无法满足用户的需求。软件管理技术不能满足现代软件开发的软件管理技术不能满足现代软件开发的需要,没有统一的软件质量管理规范。需要,没有统一的软件质量管理规范。在软件的开发与维护关系问题上存在错在软件的开发与维护关系问题上存在错误的概念。误的概念。软件工程的定义软件工程的定义软件工程软件工程是指导计算机软件开发和维护是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间术和方法来开发
13、与维护软件,把经过时间考验而证明正确的管理技术和当前能够得考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软到的最好的技术方法结合起来,这就是软件工程。件工程。1.3 软件工程过程和软件生存期软件工程过程和软件生存期1.3 软件工程过程和软件生存期软件工程过程和软件生存期 软件工程过程软件工程过程是为获得软件产品而完成的一是为获得软件产品而完成的一系列软件工程活动。软件工程过程通常包含系列软件工程活动。软件工程过程通常包含四种基本的过程活动四种基本的过程活动:(1)软件规格说明软件规格说明:规定软件的功能及其运规定软件的功能及其运行的限制行的限制;(2)软件开发软件开发:
14、产生满足规格说明的软件产生满足规格说明的软件;(3)软件确认软件确认:确认软件能够完成客户提出确认软件能够完成客户提出的要求的要求;(4)软件演进软件演进:为满足客户的变更要求,软为满足客户的变更要求,软件必须在使用的过程中演进。件必须在使用的过程中演进。软件工程准则可以概括为如下六条基本软件工程准则可以概括为如下六条基本原理。原理。(1)用分阶段的生存周期计划严格管理)用分阶段的生存周期计划严格管理(2)坚持进行阶段评审)坚持进行阶段评审(3)实行严格的产品控制)实行严格的产品控制(4)采用现代程序设计技术)采用现代程序设计技术(5)结果应能清楚地审查)结果应能清楚地审查(6)合理安排软件开
15、发小组的人员)合理安排软件开发小组的人员软件工程的基本内容与目标软件工程的基本内容与目标1软件工程的基本内容软件工程的基本内容从内容上划分软件工程学可分为理论、从内容上划分软件工程学可分为理论、结构、方法、工具、环境、管理、规范等。结构、方法、工具、环境、管理、规范等。2软件工程学研究的基本目标软件工程学研究的基本目标(1)定义良好的方法学,面向计划、开)定义良好的方法学,面向计划、开发维护整个软件生存周期的方法学。发维护整个软件生存周期的方法学。(2)确定的软件成分,记录软件生存周期每)确定的软件成分,记录软件生存周期每一步的软件文件资料,按步显示轨迹。一步的软件文件资料,按步显示轨迹。(3
16、)可预测的结果,在生存周期中,每隔一)可预测的结果,在生存周期中,每隔一定时间可以进行复审。定时间可以进行复审。软件工程学的最终目标是以较少投资获得易维软件工程学的最终目标是以较少投资获得易维护、易理解、可靠、高效率的软件产品。护、易理解、可靠、高效率的软件产品。软件工程学是研究软件结构、软件设计与维护软件工程学是研究软件结构、软件设计与维护方法、软件工具与环境、软件工程标准与规范、方法、软件工具与环境、软件工程标准与规范、软件开发技术与管理技术的相关理论。软件开发技术与管理技术的相关理论。软件工程的原则软件工程的原则为了开发出低成本高质量的软件产品,为了开发出低成本高质量的软件产品,软件工程
17、学应遵守以下基本原则:软件工程学应遵守以下基本原则:1分解分解2独立性独立性3一致性一致性4确定性确定性软件生存周期与软件开发模型软件生存周期与软件开发模型软件工程采用的生存周期方法就是从时软件工程采用的生存周期方法就是从时间角度对软件的开发与维护这个复杂问题间角度对软件的开发与维护这个复杂问题进行分解,将软件生存漫长的时期分为若进行分解,将软件生存漫长的时期分为若干阶段,每个阶段都有其相对独立的任务,干阶段,每个阶段都有其相对独立的任务,然后逐步完成各个阶段的任务。然后逐步完成各个阶段的任务。软件生存周期软件生存周期从前面的介绍中可以知道,一个软件从从前面的介绍中可以知道,一个软件从定义到开
18、发、使用和维护,直到最终被废定义到开发、使用和维护,直到最终被废弃,要经历一个漫长的时期,通常把软件弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。软经历的这个漫长的时期称为生存周期。软件生存周期就是从提出软件产品开始,直件生存周期就是从提出软件产品开始,直到该软件产品被淘汰的全过程。到该软件产品被淘汰的全过程。软件生存期软件生存期 问题定义问题定义可行性研究可行性研究需求分析需求分析设计设计编码编码测试测试运行与维护运行与维护软件生存期也可以分为三个大的阶段:计划软件生存期也可以分为三个大的阶段:计划阶段。开发阶段和维护阶段。阶段。开发阶段和维护阶段。(1)计划阶段计划
19、阶段(2)开发阶段开发阶段(3)维护阶段维护阶段1.4 软件生存期模型软件生存期模型 软件生存期模型是从软件项目需求定义软件生存期模型是从软件项目需求定义直至软件经使用后废弃为止,跨越整个直至软件经使用后废弃为止,跨越整个生存期的系统开发、运作和维护所实施生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。的全部过程、活动和任务的结构框架。软件开发模型软件开发模型为了反映软件生存周期内各种工作应如为了反映软件生存周期内各种工作应如何组织及软件生存周期各个阶段应如何衔何组织及软件生存周期各个阶段应如何衔接,需要用软件开发模型给出直观的图示接,需要用软件开发模型给出直观的图示表达。
20、软件开发模型是软件工程思想的具表达。软件开发模型是软件工程思想的具体化,是实施于过程模型中的软件开发方体化,是实施于过程模型中的软件开发方法和工具,是在软件开发实践中总结出来法和工具,是在软件开发实践中总结出来的软件开发方法和步骤。总的说来,软件的软件开发方法和步骤。总的说来,软件开发模型是跨越整个软件生存周期的系统开发模型是跨越整个软件生存周期的系统开发、运行、维护所实施的全部工作和任开发、运行、维护所实施的全部工作和任务的结构框架。务的结构框架。1瀑布模型瀑布模型2螺旋模型螺旋模型3第四代技术模型第四代技术模型4原型模型原型模型5构件组装模型构件组装模型6混合模型混合模型1.5 软件工程的
21、基本目标软件工程的基本目标 软件工程的定义软件工程的定义 开发、运行、维护和修复软件的系统方法。开发、运行、维护和修复软件的系统方法。包括三个要素包括三个要素:方法、工具和过程。方法、工具和过程。软件工程项目的基本目标软件工程项目的基本目标 较低的开发成本较低的开发成本;达到要求的功能达到要求的功能;较好的软件性能较好的软件性能;开发的软件易于移植开发的软件易于移植;需要较低的维护费用需要较低的维护费用;能及时交付使用。能及时交付使用。课后作业课后作业一、填空题(在括号内填入正确答案)1软件工程学的内容可包括()、结构、()、()、环境、管理、规范等。2软件生存周期一般可分为问题定义、()、(
22、)设计、()、测试、运行与维护阶段。二、判断题(正确用表示,错误用表示)1软件工程采用的生存周期方法就是从时间角度对软件的开发和维护这个复杂问题进行分解,将软件生存的时期分为若干阶段。()2螺旋模型是利用笛卡尔坐标的四个象限分别代表四个方面的活动来表示。()3原型模型适用于嵌入式软件。()4面向对象技术是构件组装模型的基础。()三、单项选择题1下列哪个阶段不是软件生存期三个阶段中的内容()。A计划阶段 B开发阶段 C.编码阶段 D维护阶段2下列关于瀑布模型的描述正确的是()。A.瀑布模型的核心是按照软件开发的时间顺序将问题简化。B.瀑布模型具有良好的灵活性。C瀑布模型采用结构化的分析与设计方法,将逻辑实现与物理实现分开。D利用瀑布模型,如果发现问题则修改的代价很低。四、简答题1软件的定义与特点。2什么是软件工程?3.什么是软件生存周期?4什么是软件危机,软件危机有哪几种表现?