软件工程课程详解

上传人:kms****20 文档编号:56774567 上传时间:2018-10-15 格式:PPT 页数:88 大小:377.50KB
返回 下载 相关 举报
软件工程课程详解_第1页
第1页 / 共88页
软件工程课程详解_第2页
第2页 / 共88页
软件工程课程详解_第3页
第3页 / 共88页
软件工程课程详解_第4页
第4页 / 共88页
软件工程课程详解_第5页
第5页 / 共88页
点击查看更多>>
资源描述

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

16、程序员,他们在不同的开发时期担负不同的角色。系统分析员在软件定义时期起主要作用,软件工程师和程序员是软件开发和维护时期的核心力量。,2018年10月15日星期一,47,(1) 问题定义:在问题定义阶段,软件开发人员应该清楚:“要解决什么问题”。(2) 可行性研究:知道了要解决的问题,在这个阶段应该清楚“用什么办法解决这个问题”,保证在技术上、实效上、法律上都是行得通的。,2018年10月15日星期一,48,(3) 需求分析:确定软件的功能和性能。用户要要清楚开发出的软件系统能够做什么;软件开发人员也应该清楚用户的具体要求是什么。(4) 总体设计:设计软件的总体结构,将一个大系统按照功能设计成小模块,每个模块完成一个相对独立的小功能。总体设计有时也称概要设计。,2018年10月15日星期一,49,(5) 详细设计:这个阶段还不是编写程序,是对每个模块设计具体的算法和数据结构,可以包括具体细节,类似于工程设计中的施工图纸。详细设计有时也称模块设计。,

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

当前位置:首页 > 生活休闲 > 科普知识

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