收藏 分享(赏)

软件工程课程详解.ppt

上传人:gnk289057 文档编号:10202952 上传时间:2019-10-19 格式:PPT 页数:88 大小:377.50KB
下载 相关 举报
软件工程课程详解.ppt_第1页
第1页 / 共88页
软件工程课程详解.ppt_第2页
第2页 / 共88页
软件工程课程详解.ppt_第3页
第3页 / 共88页
软件工程课程详解.ppt_第4页
第4页 / 共88页
软件工程课程详解.ppt_第5页
第5页 / 共88页
点击查看更多>>
资源描述

1、软件工程,2019年10月19日星期六,2,课程名称(软件工程实践UML)先行课程 (程序设计语言,数据库、数据结构 ) 开课对象(IT类专业第5学期)理论+实践,课程简介,2019年10月19日星期六,3,1.1 软件危机 1.1.1 软件发展历程 1.1.2 什么是软件 1.1.3 软件的分类 1.2 软件危机 1.3 软件工程,第1章 软件工程概述,2019年10月19日星期六,4,1.1 软件危机,1.1.1 软件的发展过程 (1) 从1946年到60年代初,是计算机软件发展的初期,一般称为程序设计时期,其主要特征是程序生产方式为个体手工方式。 主要采用批处理技术,没有任何其它形式的文

2、档资料保留下来,开发出的程序根本无法维护。,2019年10月19日星期六,5,(2) 从20世纪60年代初到70年代初,是计算机软件发展的第二个时期,这个时期一般称为程序系统时期。程序的规模已经很大,需要多人分工协作,软件的开发方式由“个体生产”发展到了“软件作坊”。可是“软件作坊”基本上沿用了软件发展早期所形成的个体化的开发方式,软件的开发与维护费用以惊人的速度增加。许多软件产品根本不能维护,最终导致出现了严重的“软件危机”.,2019年10月19日星期六,6,(3) 从20世纪70年代中期至80年代中期,是计算机软件发展的第三个时期,一般称为软件工程时期。软件的开发以工程化的思想为指导,用

3、工程化的原则、方法和标准来开发和维护软件。,2019年10月19日星期六,7,(4) 从20世纪80年代中期至今,面向对象方法学日益受到人们的重视,给软件产业带来了新的飞跃。这个时期一般称为面向对象时期,面向对象软件开发技术在迅速取代传统软件工程开发方法。,2019年10月19日星期六,8,1.1.2 什么是软件软件是计算机程序、程序使用的数据以及说明程序的各种文档的集合。,2019年10月19日星期六,9,软件(software)由三部分组成:(1) 可以在计算机上运行的程序(program)。 (2) 运行程序需要的数据(data)。 (3) 软件开发、维护、使用需要的各种文档(docum

4、ent)。,2019年10月19日星期六,10,软件的基本组成如图1.1所示。,2019年10月19日星期六,11,软件是一种特殊的产品,下面我们分析软件的一些特点: (1) 软件是物理产品还是逻辑产品?(2) 软件有没有明显的制造过程?,逻辑产品,没有,2019年10月19日星期六,12,(3) 软件在运行使用期间,有没有像硬件那样的机械磨损、老化问题。 (4) 软件的开发和运行受计算机系统的限制吗? 对计算机系统环境有着不同程度的依赖性。,没有,答案是肯定的,2019年10月19日星期六,13,(5) 软件产品生产的成本主要是脑力劳动还是体力劳动?在还未完全摆脱手工开发方式的情况下,大部分

5、产品是“定做”的。 (6) 你认为软件本身是复杂还是简单?,脑力劳动,复杂,2019年10月19日星期六,14,(7) 软件成本昂贵还是廉价?(8) 软件的推广应用是否涉及社会因素?,昂贵,当然涉及,2019年10月19日星期六,15,1.1.3 软件的分类1.1.3.1 根据软件的功能进行分类(1) 系统软件:是与计算机硬件紧密配合,使计算机各个部件与相关软件及数据协调、高效工作的软件。,2019年10月19日星期六,16,(2) 支撑软件:它是协助用户开发软件的工具性软件,包括帮助程序员开发软件产品的工具和帮助系统管理员控制开发进程的工具。可分为以下几类。 一般类型 支持需求分析 支持设计

6、 支持实现 支持测试 支持管理 集成支撑软件,2019年10月19日星期六,17,(3) 应用软件,2019年10月19日星期六,18,1.1.3.2 根据软件的工作方式进行分类 (1) 实时处理软件 (2) 分时处理软件 (3) 交互式软件 (4) 批处理软件,2019年10月19日星期六,19,1.1.3.3 根据软件的规模进行分类根据开发软件所需的人力、时间以及完成的源程序大小,可划分为下述六种不同规模的软件。,2019年10月19日星期六,20,(1) 微型软件:指一个人在几天之内完成的、自己编写的程序不超过500行语句的软件。 (2) 小型软件:指一个人在半年之内完成的、自己编写2千

7、行以内的程序。 (3) 中型软件:5个人以内在一年左右时间里完成的,编写5千到5万行的程序。,2019年10月19日星期六,21,(4) 大型软件:指10到20个人年(一个人年为一个人工作一年的工作量)完成,编写5万到10万行的程序。 (5) 甚大型软件:100至1000人参加,用4到5年时间完成,编写l00万行程序的软件项目。 (6) 特大型软件:2000人到5000人参加,10年左右时间,编写1000万行以内的程序。弹道导弹防御系统能达到这个规模。,2019年10月19日星期六,22,1.1.3.4 根据软件的服务对象进行分类 提供给用户的计算机软件有两种情况:(1) 定制软件 (2) 产

8、品软件,2019年10月19日星期六,23,1.2 软件危机,1968年北大西洋公约组织的计算机科学家在德国召开国际会议,把计算机软件的开发和维护过程中出现的一系列严重问题称为“软件危机”。,2019年10月19日星期六,24,软件危机包括两个方面的问题:如何开发软件以满足用户对软件日益增长的需求; 如何维护数量迅速增长的已有软件。,1.2.1 软件危机的表现,2019年10月19日星期六,25,软件危机出现了。软件危机主要有下述一些表现。(1) 软件功能与实际需求不符。 (2) 软件开发生产率提高的速度远远不能满足用户需要。,2019年10月19日星期六,26,(3) 软件价格昂贵。(4)

9、软件产品的质量差。,2019年10月19日星期六,27,(5) 对软件开发成本和进度的估计常常不准确。 (6) 软件文档资料通常既不完整也不合格。 (7) 软件的维护费用急剧上升。,2019年10月19日星期六,28,1.2.2 产生软件危机的原因(1) 软件缺乏“可见性”,在写出程序代码并在计算机上运行之前,软件开发过程的进展质量较难衡量,很难检验开发的正确性。,2019年10月19日星期六,29,(2) 软件规模庞大,逻辑结构复杂。 (3) 开发和管理人员只重视设计程序而轻视用户的需求分析,导致最后研制出的软件产品无法满足用户的需求。,2019年10月19日星期六,30,(4) 软件设计技

10、术和管理技术落后,没有统一的软件质量管理规范。(5) 在软件的开发与维护关系问题上存在错误的概念,重视开发,而轻视维护。,2019年10月19日星期六,31,1.2.3 解决软件危机的方法20世纪60年代后期出现了软件危机,北大两洋公约组织在德国提出了“软件工程”的概念,运用其它工程学的基本原理和方法,设计和管理软件生产。诞生了软件工程学,这是目前发现的解决软件危机唯有效的方法。,2019年10月19日星期六,32,1.3 软件工程,1.3.1 什么是软件工程软件工程有多种定义,概括地说:软件工程是用科学知识和技术原理来定义、开发、维护软件的一门学科。它应用工程的概念、原理、技术和方法,应用科

11、学的开发技术和管理方法来开发软件。,2019年10月19日星期六,33,软件工程学的三个基本要素是:软件定义、开发、维护的方法;软件定义、开发、维护的工具;软件定义、开发、维护中的管理措施。,2019年10月19日星期六,34,1.3.2 软件工程的目标软件工程的目标是:提高软件产品的质量和软件开发效率,减少软件维护的难度。,2019年10月19日星期六,35,要达到这个目标,必须注重考虑下面几个方面的问题:(1) 可修改性:允许对系统进行修改,而不增加系统的复杂性。 (2) 有效性:软件系统能在一定的时间资源和空间资源环境下,完成规定的任务。,2019年10月19日星期六,36,(3) 正确

12、性:软件能够准确无误地执行用户需求的各种功能,满足用户要求的各种性能指标。 (4) 可靠性:有时也称为健壮性,就是在硬件、操作系统出现小故障,或者人为操作不当的情况下,不会导致软件系统失效。如对卫星导航系统,可靠性要求就特别高。,2019年10月19日星期六,37,(5) 可理解性:包括两个方面的内容,一是软件系统结构清晰、容易理解,二是程序算法功能清晰,容易读懂。可理解性有助于控制软件系统的复杂性,提高软件的可维护性。(6) 可重用性:软件中的某个部分可以在系统的多处重复使用,或者在多个系统中使用。,2019年10月19日星期六,38,(7) 可适应性:体现软件在不同的硬件和操作系统环境下的

13、适应程度。(8) 可移植性:体现了软件从一种计算机软件移动到另一种计算机环境下的难易程度。,2019年10月19日星期六,39,(9) 可跟踪性:包括两个方面,一是可以根据软件开发的文档对设计过程进行正向跟踪或逆向跟踪;二是软件测试和维护过程中,对程序的执行进行跟踪,根据跟踪情况,分析程序执行的因果关系。 (10) 互操作性:多个软件相互通信,协作完成任务的能力。,2019年10月19日星期六,40,1.3.3 软件工程的基本原理,1.用分阶段的生命周期计划严格管理2.坚持进行阶段评审(越早发现问题越好)3.实行严格的产品控制(在不得不更改需求时),2019年10月19日星期六,41,4.采用

14、现代程序设计技术5.结果应能清楚地审查6.开发小组的人员应该少而精7.承认不断改进软件工程实践的必要性,2019年10月19日星期六,42,1.4 软件工程方法学,软件工程方法学包括方法、工具和过程三个方面。方法是完成软件开发的技术方法;工具是开发软件的支撑环境;过程是完成开发软件各项任务的工作步骤。具体来说,软件工程方法学包括软件生命周期方法学与面向对象方法学。,2019年10月19日星期六,43,软件生命周期方法学是传统的软件工程方法学,也称结构化方法学或数据流建模方法学。,1.4.1 软件生命周期方法学,2019年10月19日星期六,44,软件生命周期方法学把软件开发和维护分成软件定义、

15、软件开发和软件维护三个时期,每个时期又分成若干个阶段。 (1) 软件定义时期:确定软件开发必须完成的任务;论证软件的可行性;确定用户需求的详细功能和性能。这个时期可以划分为三个阶段:问题定义、可行性研究和需求分析。,2019年10月19日星期六,45,(2) 软件开发时期:设计和实现软件的定义。软件开发时期包括四个阶段:总体设计、详细设计、编码及单元测试、综合测试。 (3) 软件维护时期:软件维护是对投入使用的软件的修改,实际上是对软件的一次重新定义和开发过程。,2019年10月19日星期六,46,软件生命周期方法学把软件开发人员分为三个层次,高级开发人员是系统分析员,其次是软件工程师,最后是

16、程序员,他们在不同的开发时期担负不同的角色。系统分析员在软件定义时期起主要作用,软件工程师和程序员是软件开发和维护时期的核心力量。,2019年10月19日星期六,47,(1) 问题定义:在问题定义阶段,软件开发人员应该清楚:“要解决什么问题”。(2) 可行性研究:知道了要解决的问题,在这个阶段应该清楚“用什么办法解决这个问题”,保证在技术上、实效上、法律上都是行得通的。,2019年10月19日星期六,48,(3) 需求分析:确定软件的功能和性能。用户要要清楚开发出的软件系统能够做什么;软件开发人员也应该清楚用户的具体要求是什么。(4) 总体设计:设计软件的总体结构,将一个大系统按照功能设计成小

17、模块,每个模块完成一个相对独立的小功能。总体设计有时也称概要设计。,2019年10月19日星期六,49,(5) 详细设计:这个阶段还不是编写程序,是对每个模块设计具体的算法和数据结构,可以包括具体细节,类似于工程设计中的施工图纸。详细设计有时也称模块设计。,2019年10月19日星期六,50,(6) 编码及单元测试:这个阶段的主要任务是根据详细设计的结果,用一种程序设计语言,编写正确的源程序,并且对每段程序进行严格测试。要求源程序容易理解、容易维护。,2019年10月19日星期六,51,(7) 综合测试:通过测试使软件系统达到用户的要求。最基本的测试集成测试和验收测试。集成测试是在把模块联结成

18、系统的过程中,每联结若干个模块都进行必要的测试。验收测试是根据用户使用说明书,在用户的参与下对软件系统进行测试。,2019年10月19日星期六,52,(8) 软件维护:软件投入运行后,通常有四类维护活动:改正性维护、适应性维护、完善性维护、预防性维护。改正性维护是纠正软件中的错误;适应性维护是修改软件让其适应计算机硬件(或操作系统)环境的变化;完善性维护是根据用户的要求改善或扩充功能;预防性维护是为将来的维护做准备。,2019年10月19日星期六,53,1.4.2 面向对象方法学 面向对象技术是20世纪90年代计算机研究领域开始广泛应用的软件开发技术,它把数据和处理数据的算法封装在一起,称为对

19、象。对象有是一种建立软件系统的基础结构。,2019年10月19日星期六,54,面向对象方法学认为:一切事物都是对象,任何软件都是由对象构成的,对象之间可以相互协作。,2019年10月19日星期六,55,面向对象方法学具有下列特点:(1) 把数据和处理数据的操作封装在一起称为对象,对象是软件的基本模块。 (2) 把属性相同的对象划分成类(class),类是对数据结构一致、操作一致的对象的定义。,2019年10月19日星期六,56,(3) 按照父类(或称基类)与子类(或称派生类)的关系,组成层次结构。在类层次结构中子类可以继承父类中的数据和操作。(4) 对象之间通过发送消息和接收消息互相联系。对象

20、之间通过接口互相传递信息。,2019年10月19日星期六,57,小结,计算机系统中软件共经历几个阶段?软件危机何时出现? 软件危机的表现? 软件生命周期方法学把软件开发与维护分成几个时期? 维护过程分为几种? 面向对象软件开发的特点?,2019年10月19日星期六,58,1.5 软件过程,1.5.1 瀑布模型瀑布模型是基于软件生存周期的模型,它是传统软件工程的基础模型。其核心思想是按软件生命周期的8个阶段将问题化简,采用结构化的分析与设计方法,将逻辑实现与物理实现分开。,2019年10月19日星期六,59,2019年10月19日星期六,60,每项开发活动均应具有下述特征: (1) 上一项工作的

21、结束条件是下一项工作的开始条件; (2) 上一项任务的输出文档是下一项任务的输入文档; (3) 每个阶段都要进行严格的测评和审查; (4) 下一阶段发现问题可以返回上一阶段进行重新设计。,2019年10月19日星期六,61,瀑布模型的优点是:约束软件开发人员采用规范的开发方法;严格规定每个阶段必须提交的文档;要求每个阶段的产品都要经过严格的质量审查。,2019年10月19日星期六,62,缺点是该模型缺乏灵活性。凡后一阶段出现的问题需要通过前阶段的重新确认来解决,由此要付出高昂的代价。,2019年10月19日星期六,63,图1.2 实际的瀑布模型,2019年10月19日星期六,64,1.5.2

22、快速原型模型 快速原形过程如图1.3所示,软件开发人员与用户一起进行需求分析,进行快速设计,建造原型,原型由用户评估,进步修改原型,再次进行设计。迭代这个过程,逐步使原型满足用户需要。,2019年10月19日星期六,65,2019年10月19日星期六,66,快速原型模型的主要优点有:(1) 原型模型法可以得到良好的需求定义,能够有效处理用户的模糊需求,开发者和用户得到充分的协作。 (2) 原型模型系统可作为培训环境,有利于用户培训和开发同步,用户参与开发的过程也是学习的过程。,2019年10月19日星期六,67,(3) 原型模型给用户更改最初设想的机会,使最终产品更为合理。 (4) 原型模型可

23、以低风险开发变化较大的计算机系统。 (5) 原型模型使系统更易维护、对用户更友好。 (6) 原型模型使总的开发费用降低,开发时间缩短。,2019年10月19日星期六,68,快速原型模型的主要缺点有:,(1) 容易主次颠倒。开发者往往不熟悉应用领域,常常把次要部分当作主要部分,做出不符合用户要求的原型。 (2) 原型迭代不收敛于开发者最初的目标。增加了更改的次数。 (3) 原型过快收敛于用户的最初需求集合,而忽略了其它方面的问题。 (4) 资源规划和管理较为困难,更新文档工作量繁重。 (5) 在原型环境上开发,只注意得到满意的原型,容易忽视用户环境和原型环境的差异。,2019年10月19日星期六

24、,69,1.5.3 增量模型,增量模型也称为渐增模型,如图1.4所示。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。,2019年10月19日星期六,70,每个构件由多个相互作用的模块构成,并且能够完成特定的功能。使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能。,2019年10月19日星期六,71,图1.4 增量模型,2019年10月19日星期六,72,图1.5 风险更大的增量模型,2019年10月19日星期六,73,为了克服瀑布模型的不足,在软件开发中引入了风险分析。 风险是软件开发不可忽视的不利因素,它影响软件开发过程或软件产品的质量

25、。软件风险分析的目标是在造成危害之前及时分析风险,制定对策,减少风险造成的危害。,1.5.4 螺旋模型,2019年10月19日星期六,74,图1.6 螺旋模型,2019年10月19日星期六,75,螺旋模型沿着螺线旋转,如图1.6,在坐标的四个象限上分别表达了四个方面的活动,螺旋模型的每一周期都包括需求定义、风险分析、工程实现和评审四个阶段。,2019年10月19日星期六,76,螺旋模型优点是: (1) 强调约束条件和可选方案,注重软件质量和软件重用; (2) 减少过多测试或者测试不足带来的风险; (3) 维护与开发过程完全一致,每次维护可以看作螺旋模型的又一个周期。,2019年10月19日星期

26、六,77,螺旋模型的缺点是很难正确评估软件开发风险。,2019年10月19日星期六,78,1.5.5 喷泉模型,迭代是软件开发过程中普遍存在的一种内在属性。经验表明,软件过程各个阶段之间的迭代或一个阶段内各个工作步骤之间的迭代,在面向对象范型中比在结构化范型中更常见。图1.7所示的喷泉模型是典型的面向对象生命周期模型。,2019年10月19日星期六,79,图1.7 喷泉模型,2019年10月19日星期六,80,1.6 小结,计算机软件经历了四个时期,程序设计时期的主要特征是程序生产方式为个体手工方式;程序系统时期软件的开发方式由“个体生产”发展到了“软件作坊”;软件工程时期以工程化的思想为指导

27、,用工程化的原则、方法和标准来开发和维护软件;面向对象时期的基本特征是软件的一切基本元素都是对象。,2019年10月19日星期六,81,软件由三个部分组成:程序+数据+文档。根据软件的功能可以将软件分为系统软件、支撑软件和应用软件三类;根据工作方式可以分为实时处理软件、分时处理软件、交互式软件、批处理软件四类;根据规模大小可以分为微型软件、小型软件、中型软件、大型软件、甚大型软件、特大型软件六类;根据软件的服务对象可以分为定制软件和产品软件两类。,2019年10月19日星期六,82,20世纪60年代后期出现了软件危机,产生软件危机的原因为:软件是计算机系统中的逻辑部件,缺乏“可见性”;软件规模

28、庞大,逻辑结构复杂;开发和管理人员只重视设计程序而轻视用户的需求分析,导致最后研制出的软件产品无法满足用户的需求;软件设计技术和管理技术落后,没有统一的软件质量管理规范;重视开发,轻视维护。运用其它工程学的基本原理和方法,设计和管理软件生产,是目前发现的解决软件危机惟有效的方法。,2019年10月19日星期六,83,软件工程是用科学知识和技术原理来定义、开发、维护软件的一门学科。软件工程学的三个基本要素是:软件定义、开发、维护的方法;软件定义、开发、维护的工具;软件定义、开发、维护中的管理措施。软件工程的目标是提高软件产品的质量和软开发效率,减少软件维护的难度。软件开发过程中必须遵循抽象、信息

29、隐蔽、模块化、局部化、一致性、完备性、可验证性等软件工程原则。,2019年10月19日星期六,84,软件生命周期方法学是传统的软件工程方法学,也称结构化方法学或数据流建模方法学,这种方法学把从计划开发软件到软件开发成功使用软件,最后一直到软件报废,分成软件定义时期、软件开发时期和软件维护时期,进一步分为问题定义、可行性研究、需求分析、总体设计、详细设计、编码及单元测试、综合测试、软件维护八个阶段,前一阶段任务完成后,后一阶段才能开始。每一个阶段都有严格的开始条件和结束标准,任何相邻的两个阶段,前一个阶段的结束标准就是后一个阶段的开始条件。每个阶段都有严格的技术审查和管理复审。,2019年10月

30、19日星期六,85,面向对象方法学认为一切事物都是对象,任何软件都是由对象构成的,对象之间可以相互协作。面向对象方法学把数据和处理数据的操作封装在一起称为对象,对象是软件的基本模块;所有的对象被划分成类,类是对数据结构一致、操作一致的对象的定义;按照父类与子类的关系,组成层次结构;对象之间通过发送消息和接收消息互相联系。,2019年10月19日星期六,86,为了解决软件危机,提高软件质量和开发效率,在软件开发过程中,必须遵循各项任务的工作步骤要求。瀑布模型是基于软件生存周期的模型,它是传统软件工程的基础模型。快速原形过程要求软件开发人员与用户一起进行需求分析,进行快速设计,建造原型,原型由用户

31、评估,进步修改原型,再次进行设计,直到用户满意。螺旋模型引入软件风险分析,开发过程周期性循环,每一周期包括需求定义、风险分析、工程实现和评审四个阶段。,2019年10月19日星期六,87,总结题,软件工程方法学包括的三个要素是( )。 A方法、工具和过程 B对象、过程和方法 C分析、设计和编程 D开发、维护和工程 软件生命周期由( ) 三个时期组成。 A概要设计、详细设计和系统实现 B可行性分析、系统设计和编码 C定义、开发和运行维护 D分析、设计和测试 在软件生命周期模型中,属于文档驱动的是( ) 。 A瀑布模型 B快速原型模型 C增量模型 D喷泉模型,2019年10月19日星期六,88,软件工程是指导计算机软件( )和( )的工程科学。 在软件生命周期中, ( )的任务是准确回答“目标系统必须做什么”这个问题。 快速原型所能完成的功能往往是最终产品能完成的功能的一个( ) 。 分析阶段的最终成果是( ) 。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报