您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 软件工程 第1章电子教案
1软件工程——原理、方法与应用肖孟强曲秀清主编中国水利水电出版社2第1章软件工程概论学习目标掌握软件的概念及特点了解软件危机的产生掌握软件工程的概念及其研究内容掌握软件生存周期的定义及其模型3第1章软件工程概论教学内容1.1引言1.2软件与软件危机1.3软件工程的概念1.4软件生存周期及软件开发模型本章小结返回总目录41.1引言尽管软件的发展非常迅速,但软件的开发尚没有摆脱手工制作的过程,开发人员对软件开发的认识存在一些偏差,严重影响了软件的发展。于是,许多计算机和软件科学家进行了一些尝试,把其他工程领域中行之有效的方法运用到软件开发中来,形成了软件工程。本书以大家都比较熟知的学生成绩管理系统为案例,进行软件工程的讲解与学习。本软件规模比较小,通过可行性论证,形成相关文档,并同用户进行协商。在同用户达成共识的基础上对系统进行需求分析的调研与设计。通过广泛的调研与分析,并与用户达成了一致。51.1引言学生成绩管理系统总体框图如下:61.1引言系统模块功能确定以后,下一步就要对模块的功能和性能、数据结构、用户界面等进行必要的设计;然后进入程序编码、软件测试等阶段,而后方可交付用户使用;在用户使用的过程中,还要对程序进行不断的完善与修改,以满足用户的实际需要。返回目录71.2软件与软件危机主要教学内容:1.2.1软件的定义1.2.2软件的特点1.2.3软件的分类1.2.4软件危机返回目录81.2软件与软件危机1.2.1软件的定义软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档组成的完整集合。可以写作为:软件=程序+数据+文档。程序:程序是按事先设计好的功能和性能要求执行的指令序列。数据:数据是指程序能正常处理信息的数据和数据结构。文档:文档是与程序运行和维护有关的图文资料。返回目录91.2软件与软件危机1.2.2软件的特点(1)软件具有抽象特征。(2)软件具有无明显制造过程特征。(3)软件无备件的特征。(4)手工制作特征。(5)成本昂贵特征。返回目录101.2软件与软件危机1.2.3软件的分类1.按软件功能进行划分(1)系统软件(2)支撑软件(3)应用软件2.按软件规模进行划分按开发软件所需的人力、时间以及完成的源程序行数,可确定六种不同规模的软件。如表1.1所示。111.2软件与软件危机表1.1软件规模的分类类别参加人员数研制期限产品规模(源程序行数)微型11~4周0.5k小型11~6月1k~2k中型2~51~2年5k~50k大型5~202~3年50k~100k甚大型100~10004~5年1M(=1000k)极大型2000~50005~10年1M~10M返回目录121.2软件与软件危机1.2.4软件危机1.软件危机的产生20世纪60年代中期以后,一些开发大型软件系统的要求提了出来。然而软件技术的进步一直未能满足形势发展的需要,在大型软件的开发过程中出现了复杂程度高、研制周期长、正确性难以保证的三大难题。遇到的问题找不到解决办法,致使问题堆积起来,形成了人们难以控制的局面,出现了所谓的“软件危机”。1963年,美国用于控制火星探测器的计算机软件中的一个“,”号被误写为“。”,而致使飞往火星的探测器发生爆炸,造成高达数亿美元的损失。131.2软件与软件危机2.软件危机的定义及其表现形式软件危机是指在软件开发和维护中所产生的一系列严重的问题。一是如何开发软件,满足用户对软件的需求,二是如何维护数量众多的已有软件。其主要表现如下:(1)用户需求不明确、变更过多(2)软件成本日益增长(3)开发进度难以控制(4)软件质量差(5)软件维护困难141.2软件与软件危机3.软件危机产生的原因(1)软件开发无计划性(2)软件需求不充分(3)软件开发过程无规范(4)软件产品无评测手段4.解决软件危机的途径(1)应该加强软件开发过程的管理。(2)推广使用开发软件的成功技术与方法(3)开发和使用好的软件工具返回目录151.3软件工程的概念主要教学内容:1.3.1软件工程的产生及发展1.3.2软件工程的定义及目标1.3.3软件工程学的范畴返回目录161.3软件工程的概念1.3.1软件工程的产生及发展为了解决软件危机,人们在软件开发中也不断改进和发展,在50多年中计算机软件开发经历了三个发展阶段:程序设计阶段:约为50至60年代程序系统阶段:约为60至70年代软件工程阶段:约为70年代以后从表1.2中可以看到软件开发三个发展阶段的主要特点。171.3软件工程的概念几十年来最根本的变化体现在:(1)人们改变了对软件的看法。(2)软件的需求是软件发展的动力。(3)软件工作的范围从只考虑程序的编写扩展到涉及整个软件生存周期。返回目录181.3软件工程的概念1.3.2软件工程的定义及目标FritzBauer曾经为软件工程下了定义:“软件工程是为了经济地获得能够在实际机器上有效运行的可靠软件而建立和使用的一系列完善的工程化原则。”1983年IEEE给出的定义为:“软件工程是开发、运行、维护和修复软件的系统方法”,其中,“软件”的定义为:计算机程序、方法、规则、相关的文档资料以及在计算机上运行时所必需的数据。191.3软件工程的概念软件工程的方法、工具、过程构成了软件工程的三要素。软件工程的目标可概括为:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满足用户要求的软件产品。图1.2软件工程目标之间的关系返回目录201.3软件工程的概念1.3.3软件工程学的范畴软件工程学所研究的主要内容包括:软件开发技术和软件工程管理两个方面。其中:软件开发技术包含:1、软件开发方法学2、软件工具3、软件工程环境4、软件工程管理返回目录211.4软件生存周期及软件开发模型主要教学内容:1.4.1软件生存周期1.4.2软件生存周期模型1.4.3瀑布模型(Waterfallmodel)1.4.4演化模型(evolutionalmodel)1.4.5螺旋模型(spiralmodel)1.4.6智能模型(intelligencemodel)返回目录221.4软件生存周期及软件开发模型1.4.1软件生存周期软件也有一个孕育、诞生、成长、成熟、衰亡的生存过程。我们称其为计算机软件的生存周期。软件生存周期可划分为若干个阶段。各阶段都包括计划、开发、运行与维护三个时期,而每个时期又划分为若干个阶段。1.计划时期计划时期的主要任务是调查和分析。计划时期有问题定义和可行性研究两个阶段。231.4软件生存周期及软件开发模型2.开发时期开发时期要完成设计和实现两大任务。设计任务包括需求分析和软件设计两个阶段;实现任务包括编码和测试。(1)需求分析该阶段主要解决的问题是“目标系统必须做什么”,也就是要深入描述软件的功能和性能;确定软件设计的限制和软件与其他系统元素的接口;定义软件的其他有效性需求,并用“需求规格说明书”的形式准确地表达出来,提交管理机构评审。241.4软件生存周期及软件开发模型(2)软件设计是软件工程的技术核心,主要任务是把已确定了的各项需求转换成一个相应的体系结构,通常细分成总体设计和详细设计两个阶段。(3)编码该阶段的主要任务就是按照选定的语言把软件设计转换成计算机可以接受的程序代码,即写成“源程序清单”。(4)测试测试是保证软件质量的重要手段,其主要方式是在设计测试用例的基础上检验软件的各个组成部分。251.4软件生存周期及软件开发模型3.运行时期已交付的软件投入正式使用,便进入运行时期。这是软件生存期的最后一个时期,可能要持续若干年甚至几十年。在运行过程中,可能由于多方面的原因,需要对它进行修改。因此,软件人员在这一时期的主要工作,就是做好软件维护。返回目录261.4软件生存周期及软件开发模型1.4.2软件生存周期模型软件生存周期模型是从软件项目需求定义直至软件经使用后废弃为止,跨越整个生存周期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。有多种软件生存期模型。例如:瀑布模型、演化模型、螺旋模型、智能模型等。它们各有特色,但一般都包含“定义(或计划)”、“开发”和“维护”3类活动。定义活动主要弄清软件“做什么”;开发活动集中解决让软件“怎么做”;维护活动则聚集于软件的“修改”,即“What-How-Change”。返回目录271.4软件生存周期及软件开发模型1.4.3瀑布模型(Waterfallmodel)瀑布模型(也称线性顺序模型或软件生存周期模型),是W.Royce在1970年提出的。瀑布模型遵循软件生存期的划分,明确规定各个阶段的任务,各个阶段的工作自上而下、顺序展开,如同瀑布流水,逐级下落。瀑布模型把软件生存周期划分为计划时期(或定义时期)、开发时期和运行时期。这三个时期又分别细分为若干个阶段。参看图1.3。281.4软件生存周期及软件开发模型图1.3软件生存周期的瀑布模型291.4软件生存周期及软件开发模型瀑布模型软件开发具有以下几个特征:1.阶段间的顺序性和依赖性顺序性是指:只有等前一阶段的工作完成以后,后一阶段的工作才能开始;前一阶段的输出文档,就是后一阶段的输入文档。依赖性又同时表明了,只有前一阶段有正确的输出时,后一阶段才可能有正确的结果。301.4软件生存周期及软件开发模型2.推迟实现的观点过早地考虑程序的实现,常常导致大量返工,有时甚至给开发人员带来灾难性的后果。瀑布模型在编码以前安排了分析阶段和设计阶段,并且明确宣布,这两个阶段都只考虑目标系统的逻辑模型,不涉及软件的物理实现。把逻辑设计与物理设计清楚地划分开来,尽可能推迟程序的物理实现,这是瀑布型软件开发的一条重要的指导思想。311.4软件生存周期及软件开发模型3.质量保证的观点为了保证质量,瀑布型软件开发在各个阶段坚持了两个重要的做法:(1)每一阶段都要完成规定的文档。没有完成文档,就认为没有完成该阶段的任务。(2)每一阶段都要对完成的文档进行复审,以便尽早发现问题,消除隐患。返回目录321.4软件生存周期及软件开发模型1.4.4演化模型(evolutionalmodel)先做试验开发,其目标只是在于探索可行性,弄清软件需求;然后在此基础上获得较为满意的软件产品。通常把第一次得到的试验性产品称为“原型”。显然,演化模型在克服瀑布模型缺点、减少由于软件需求不明确而给开发工作带来风险方面,确有显著的效果。返回目录331.4软件生存周期及软件开发模型1.4.5螺旋模型(spiralmodel)螺旋模型将瀑布模型与演化模型结合起来,并且加入两种模型均忽略了的风险分析,弥补了两者的不足。螺旋模型沿着螺线旋转,如图1.4所示,在笛卡尔坐标的四个象限上分别表达了四个方面的活动,即:(1)制定计划──确定软件目标,选定实施方案,弄清项目开发的限制条件;(2)风险分析──分析所选方案,考虑如何识别和消除风险;(3)实施工程──实施软件开发;(4)客户评估──评价开发工作,提出修正建议。341.4软件生存周期及软件开发模型图1.4螺旋模型351.4软件生存周期及软件开发模型沿螺线自内向外每旋转一圈便开发出更为完善的一个新的软件版本。如果软件开发人员对项目的需求已有较好的理解,则无需开发原型,第一圈就可以直接采用瀑布模型,这在瀑布模型中认为是单圈螺线。反之,若对项目的需求没有把握,就需要经过多圈螺线,并通过开发一个或多个原型来弄清软件的需求。对于高风险的大型软件,螺旋模型是一个理想的开发方法。风险分析是螺旋模型的一项重要活动。返回目录361.4软件生存周期及软件开发模型1.4.6智能模型(intelligencemodel)智能模型是基于知识的软件开发模型,它综合了上述若干模型,并把专家系统结合在一起。该模型应用基于规则的系统,采用归约和推理机制,帮助软件人员完成开发工作,并使维护在系统规格说明一级进行。为此,建立了知识库,将模型本身、软件工程知识与特定领域的知识分别存入数据库。以软件工程知识为基础的生成规则构成的专家系统与含有应用领域知识规则的其它专家系统相结合,构成了这一
本文标题:软件工程 第1章电子教案
链接地址:https://www.777doc.com/doc-79516 .html