软件工程课件教案1-软件工程学概论.ppt
《软件工程课件教案1-软件工程学概论.ppt》由会员分享,可在线阅读,更多相关《软件工程课件教案1-软件工程学概论.ppt(81页珍藏版)》请在三一办公上搜索。
1、教学目标 了解软件危机的产生以及解决办法软件工程的重要性;了解软件生命周期以及常用软件开发模型。教学重点 软件工程的基本原理。教学难点 软件过程中各种模型的特点、使用范围的了解。,第一章软件工程学概述,第一章软件工程学概述,1.1 软件危机1.2 软件工程1.3 软件生命周期1.4 软件工程过程,IBM公司的 OS/360,共约100万条指令,花费了5000个人年;经费达数亿美元,而结果却令人沮丧,错误多达2000个以上,系统根本无法正常运行。OS/360系统的负责人Brooks这样描述开发过程的困难和混乱:“像巨兽在泥潭中作垂死挣扎,挣扎得越猛,泥浆就沾得越多,最后没有一个野兽能够逃脱淹没在
2、泥潭中的命运。”,1.1 软件危机,先看几个例子:,1.1 软件危机,1963年美国飞往火星的火箭爆炸,造成1000万美元的损失。原因是FORTRAN程序:DO 5 I=1,3 误写为:DO 5 I=1.3,1967年苏联“联盟一号”载人宇宙飞船在返航时,由于软件忽略一个小数点,在进入大气层时因打不开降落伞而烧毁。,1.1.1 软件危机的介绍,“软件危机”(Software crisis)的出现是由于软件的规模越来越大,复杂度不断增加,软件需求量增大。而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术不能适应软件发展的需要。致使大量质量低劣的软件涌向市场,有的花费大量人力财力,而在开
3、发过程中就夭折。1968年北大西洋公约组织的计算机科学家为了解决“软件危机”正式提出“软件工程”。,1.1.1 软件危机的介绍,软件危机的主要表现对软件开发成本和进度的估计常常很不准确;用户对“已完成的”软件系统不满意的现象经常发生;软件产品的质量往往靠不住;软件常常是不可维护的;软件通常没有适当的文档资料;软件成本在计算机系统总成本中所占的比例逐年上升;软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。,1.1.2 产生软件危机的原因,软件危机源于:软件本身:与软件的特点有关人为因素:软件开发与维护的方法不正确有关,1.1.2 产生软件危机的原因,软件的特点1、软件是一种逻辑
4、实体,不是具体的物理实体。2、软件产品的生产主要是研制。3、软件具有“复杂性”,其开发和运行常受到计算机系统的限制。4、软件成本昂贵,其开发方式目前尚未完全摆脱手工生产方式。5、软件不存在磨损和老化问题,但存在退化问题。,1.1.2 产生软件危机的原因,人为因素 软件专业人员对软件开发和维护有不少糊涂观念,导致在实践过程中或多或少地采用了错误的方法和技术。错误的认识和作法主要表现为忽视软件需求分析的重要性,认为软件开发就是写程序并设法使之运行,轻视软件维护等。,1.1.2 产生软件危机的原因,软件生命周期理论:几个阶段编写程序所占的工作量:10%20%软件不同生命周期引入变化的代价:如图所示软
5、件维护的代价:55%70%的费用,1.1.3 消除软件危机的途径,应该彻底消除“软件就是程序”的错误观念。1983年IEEE为软件下的定义是:计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必需的数据。为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。,1.2 软件工程,1.2.1 软件工程的介绍,软件工程的两个定义 1968年在第一届NATO(北大西洋公约组织)会议上曾经给出了软件工程的一个早期定义:“软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立
6、和使用完善的工程原理。”这个定义不仅指出了软件工程的目标是经济地开发出高质量的软件,而且强调了软件工程是一门工程学科,它应该建立并使用完善的工程原理。,1993年IEEE进一步给出了一个更全面更具体的定义:“软件工程是:把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;研究中提到的途径。”,1.2.1 软件工程的介绍,1.2.1 软件工程的介绍,软件工程的发展已经历了四个重要阶段:1、第一代软件工程 传统的软件工程2、第二代软件工程 对象工程3、第三代软件工程 过程工程4、第四代软件工程 构件工程,软件工程的发展已经历了四个重要阶段:1、第一代软件工程 传统
7、的软件工程,1.2.1 软件工程的介绍,60年代末到70年代为了克服“软件危机”(Software crisis)提出“软件工程”的名词,将软件开发纳入工程化的轨道,基本形成软件工程的概念、框架、技术和方法。称为传统的软件工程。,软件工程的发展已经历了四个重要阶段:2、第二代软件工程 对象工程,80年代中到90年代,面向对象的方法与技术得到发展,研究的重点转移到面向对象的分析与设计,演化为一种完整的软件开发方法和系统的技术体系,称为对象工程。,1.2.1 软件工程的介绍,80年代中开始,人们在软件开发的实践过程中认识到:提高软件生产率,保证软件质量的关键是“软件过程”,是软件开发和维护中的管理
8、和支持能力,逐步形成软件过程工程。,软件工程的发展已经历了四个重要阶段:3、第三代软件工程 过程工程,1.2.1 软件工程的介绍,90起年代,基于构件(Component)的开发方法取得重要进展,软件系统的开发可通过使用现成的可复用构件组装完成,而无需从头开始构造,以此达到提高效率和质量,降低成本的目的。称为构件工程。,软件工程的发展已经历了四个重要阶段:4、第四代软件工程 构件工程,1.2.1 软件工程的介绍,90起年代,基于构件(Component)的开发方法取得重要进展,软件系统的开发可通过使用现成的可复用构件组装完成,而无需从头开始构造,以此达到提高效率和质量,降低成本的目的。称为构件
9、工程。,软件工程的发展已经历了四个重要阶段:4、第四代软件工程 构件工程,1.2.1 软件工程的介绍,1.2.1 软件工程的介绍,软件工程的本质特征:1.软件工程关注于大型程序的构造2.软件工程的中心课题是控制复杂性3.软件经常变化4.开发软件的效率非常重要5.和谐地合作是开发软件的关键6.软件必须有效地支持它的用户7.在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人,软件工程的7条基本原理:用分阶段的生命周期计划严格管理 实践证明,一半以上的不成功的软件是由于计划不周造成的。应按软件的不同周期,划分阶段有计划进行开发,不受干扰地按计划进行。2.坚持进行阶段评审大部分错误是在编
10、码之前;错误发现越晚,改正错误付出的代价越多;,1.2.2 软件工程的基本原理,软件工程的7条基本原理:3.实行严格的产品控制 不得已修改需求时,为了保持软件各个配置成分的一致性,要实行严格产品控制实施基准配置管理。基准配置管理(变动控制):一切有关修改软件的建议,特别是涉及到对基准配置的修改建议,都必须按照严格的规程进行评审,获得批准以后才能实施修改。,1.2.2 软件工程的基本原理,软件工程的7条基本原理:4.采用现代程序设计技术 实践表明,采用先进的技术不仅可以提高软件开发和维护的效率,而且可以提高软件产品的质量。5.结果应能清楚地审查 软件产品的开发过程比一般产品的开发过程更难于评价和
11、管理。为提高软件开发过程的可见性,更好地进行管理,应该根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使得所得到的结果能够清楚地审查。,1.2.2 软件工程的基本原理,软件工程的7条基本原理:6.开发小组的人员应该少而精 素质高的人员的开发效率比素质低的人员的开发效率可能高几倍至几十倍,而且素质高的人员所开发的软件中的错误明显少于素质低的人员所开发的软件中的错误。此外,因为交流情况讨论问题而造成的通信开销也急剧增加。当开发小组人员数为N时,可能的通信路径有N(N-1)/2条,可见随着人数N的增大,通信开销将急剧增加。,1.2.2 软件工程的基本原理,软件工程的7条基本原理
12、:7.承认不断改进软件工程实践的必要性承认不断改进软件工程实践的必要性,1.2.2 软件工程的基本原理,软件工程包括是技术与管理紧密结合所形成的工程学科。管理:13章项目管理将有介绍,即通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达到既定目标的过程。技术:在软件生命周期全过程中使用的一整套技术,称谓方法学方法学(methodology),也称为范型(paradigm)。软件工程方法学:包括内容(3个要素):方法、工具和过程。,1.2.3 软件工程方法学,方法:技术方法工具:软件工程支撑环境过程:一系列任务框架,以保证质量。当前使用得最广泛的软件工程方法学,分别是传统方法学和面
13、向对象方法学。,1.2.3 软件工程方法学,1、传统方法学 也称为生命周期方法学或结构化范型。它采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。这种方法学把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务。问题简单化、便于阶段性审查、有一定应用、便于区别面相对象方法学。,1.2.3 软件工程方法学,2、面向对象方法学 当软件规模庞大,或者对软件的需求是模糊的或会随时间而变化的时候,使用传统方法学开发软件往往不成功,此外,使用传统方法学开发出的软件,维护起来仍然很困难,原因是这种技术要么
14、面向行为(即对数据的操作),要么面向数据,还没有既面向数据又面向行为的结构化技术。面向对象方法把数据和行为看成同等重要,它是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。,1.2.3 软件工程方法学,2、面向对象方法学 面向对象方法学具有下述4个要点:(1)把对象(object)作为融合了数据及在数据上的操作行为的统一的软件构件。(2)把所有对象都划分成类(class)。(3)按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。(4)对象彼此间仅能通过发送消息互相联系。,1.2.3 软件工程方法学,2、面向对象方法学 面向对象
15、方法学的出发点和基本原则:模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,从而使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能一致。,1.2.3 软件工程方法学,1.3 软件生命周期,软件生命周期包括:软件定义、软件开发和软件维护期。软件定义期问题定义、可行性研究、需求分析(定义期也成为系统分析)。主要目的:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。,软件开发期总体设计、详细设计、编码和单元测试,其中前
16、两个阶段又称为系统设计,后两个阶段又称为系统实现。软件维护期使软件持久地满足用户的需要。当软件在使用过程中发现错误时应该加以改正;当环境改变时应该修改软件以适应新的环境;当用户有新要求时应及时改进,满足用户新需要。,1.3 软件生命周期,1.问题定义 问题定义阶段必须回答的关键问题是:“要解决的问题是什么?”尽管确切地定义问题的必要性是十分明显的,但是在实践中它却可能是最容易被忽视的一个步骤。通过对客户的访问调查,系统分析员扼要地写出关于问题性质、工程目标和工程规模的书面报告,经过讨论和必要的修改之后这份报告应该得到客户的确认。,1.3 软件生命周期,2.可行性研究 这个阶段要回答的关键问题是
17、:“对于上一个阶段所确定的问题有行得通的解决办法吗?”系统分析员需要进行一次大大压缩和简化了的系统分析和设计过程,也就是在较抽象的高层次上进行的分析和设计过程。可行性研究不是具体解决问题,而是研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法。,1.3 软件生命周期,可行性研究的结果是用户部门负责人作出是否继续进行这项工程的决定的重要依据。可行性研究以后的各个阶段,将需要投入多少相应的人力物力。及时终止不值得投资的工程项目,可以避免更大的浪费。,1.3 软件生命周期,3.需求分析 这个阶段的任务仍然不是具体地解决问题,而是准确地确定“为了解决这个问题,目标系统必须做什么”,主要是确
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 课件 教案 软件 工程学 概论

链接地址:https://www.31ppt.com/p-6063542.html