第一章软件工程概述

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

软件工程导论信息工程大学计算机教研室2008年9月一、教学目标1了解“软件工程”这门学科的形成和发展。2掌握与大型软件系统相关的规划、分析、设计、实现、测试、维护等概念、原理、方法、技术与工具;。3掌握“软件工程”的基本管理方法;4培养实际软件工程动手的能力。二、课程的重要性与特点1是一门重要的专业课程,为今后从事软件研究及开发打下理论基础;2是一门重要的与实践相结合的课程,有关的方法和技术实用性很强;3注重实践是学好这门课程的关键。三、教学与考查方法1使用计算机辅助教学,减少传统的板书时间,集中精力于讲解;2理论联系实际,结合实际软件工程的例子教学;3强调实际软件工程能力的培养.4考勤20%,课程设计80%四、教材与参考资料1《软件工程导论》,张海藩编著。2《软件工程方法学及应用》,汤庸编著。3《实用面向对象软件工程教程》,殷人昆等译。4《现代软件工程》(上、中、下),周之英编著。5《软件工程实践者的研究方法》,黄柏素梅宏译。6《软件工程》姚淑珍杨文龙编著第一篇软件工程与软件过程第1章软件工程1.1软件危机1.2软件工程1.3小结1.1软件危机1.1.1计算机系统的发展历程所谓计算机系统就是指适当地组织在一起的一系列系统元素的集合,这些系统元素互相配合、相互协作,通过对信息的处理而完成预先定义的目标。迄今为止,计算机系统已经经历了四个不同的发展阶段。60年代中期以前,是计算机系统发展的早期时代。从60年代中期到70年代中期,是计算机系统发展的第二代。计算机系统发展的第三代从20世纪70年代中期开始,并且跨越了整整10年。在计算机系统发展的第四代已经不再看重单台计算机和程序,人们感受到的是硬件和软件的综合效果。1.1.2软件危机的含义软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题绝不仅仅是不能正常运行的软件才具有具体来说,软件危机主要有以下一些典型表现。·对软件开发成本和进度的估计常常很不准确。·用户对“已完成的”软件系统不满意的现象经常发生。·软件产品的质量往往靠不住。·软件常常是不可维护的。·软件通常没有适当的文档资料。·软件成本在计算机系统总成本中所占的比例逐年上升。·软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅速普及深入的趋势。以上列举的仅仅是软件危机的一些明显的表现,与软件开发和维护有关的问题远远不止这些。1.1.3产生软件危机的原因在软件开发和维护的过程中存在这么多严重问题,一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。软件的特点:(1)软件是一种逻辑实体,而不是具体的物理实体。(2)软件的生产与硬件不同,它没有明显的制造过程。对软件的质量控制,必须立足于软件开发方面。(3)在软件的运行和使用期间,没有像硬件那样的磨损、老化问题。(4)软件的开发和运行往往受到计算机系统的限制,对计算机系统有着不同程度的依赖性。(5)迄今为止,软件开发尚未完全摆脱手工艺的方式。(6)软件本身是复杂的。(7)软件的成本相当昂贵。(8)相当多的软件工作涉及到社会因素。软件的特点给开发和维护带来了一些客观的困难,另外,与软件开发和维护有关的许多错误认识和作法的形成,可以归因于在计算机系统发展的早期阶段软件开发的个体化特点。错误的认识和作法主要表现为忽视软件需求分析的重要性,认为软件开发就是写程序图1.1引入同一变动付出的代价随时间变化的趋势了解产生软件危机的原因,澄清错误认识,建立起关于软件开发和维护的正确概念,还仅仅是解决软件危机的开始,全面解决软件危机需要一系列综合措施。1.1.4消除软件危机的途径为了消除软件危机,首先应该对计算机软件有一个正确的认识。应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算应该开发和使用更好的软件工具。总之,为了消除软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。软件工程正是从管理和技术两方面1.2软件工程1.2.1什么是软件工程概括地说,软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。1.2.2软件工程的基本原理1234567承认不断改进软件工程实践的必要性这是B.W.BOEHM提出的确保软件产品质量和开发效率的原理的最小集合。1.2.3软件工程方法学通常把在软件生命周期全过程中使用的一整套技术的集合称为方法学(methodology),也称为范型(paradigm)。在软件工程软件工程方法学包括三个要素,这就是方法、工具和过程。其中,方法是完成软件开发的各项任务的技术方法,回答“如何做”的问题;工具是为方法的运用提供自动的或半自动的软件支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务目前使用得最广泛的软件工程方法学,分别是传统方法学和传统方法学也称为生命周期方法学或结构化范型。传统方法学常常是把上一阶段的结果作为下一阶段的前提和基础。当软件规模较大,或者对软件的需求是模糊的或随时间变化的时候,使用结构化范型开发软件往往不成功;此外,使用传统方法学开发出的软件,维护起来通常都很困难。概括地说,面向对象方法具有下述四个要点。·把对象(Object)作为融合了数据及在数据上的操作行为的统一的软件构件。面向对象程序是由对象组成的,程序中任何元·把所有对象都划分成类(Class)。每个类都定义了一组数据和一组操作,类是对具有相同数据和相同操作的一组相似对象的定义。数据用于表示对象的静态属性,是对象的状态信息,而施加于数据之上的操作用于实现对象的动态行为。·按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。在类等级中,下层派生类自动拥有上层基类中定义的数据和操作,这种·对象彼此之间仅能通过发送消息互相联系。对象与传统数据有本质区别,它不是被动地等待外界对它施加操作,相反,它是进行处理的主体,必须向它发消息请求它执行它的某个操作以处理它的数据,而不能从外界直接对它的数据进行处理。也就是说,对象的所有私有信息都被封装在该对象内,不能从外界直接基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,从而使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)用面向对象方法学开发软件的过程,是一个主动地多次反复迭代的演化过程。面向对象方法在概念和表示方法上的一致性,保证了在各项开发活动之间的平滑(无缝)过渡。面向对象方法普遍进行的对象分类过程,支持从特殊到一般的归纳思维过程;通过建立类等级而获得的继承性,支持从一般到特殊的演绎思维过程。正确运用面向对象方法学开发软件,则最终的软件产品由许多较小的基本上独立的对象组成,而且大多数对象都与现实世界中的实体相对应,因此,降低了软件产品的复杂性,提高了软件产品的可理解性,简化了软件的开发和维护工作。由于对象是相对独立的实体,容易在以后的软件产品中重复使用,因此,面向对象范型的另一个重要优点是促进了软件重用。面用对象方法特有的继承性,进一步提高了面向对象软件的可重用性。1.3小结本章对计算机软件工程学作了一个简短的概述。首先通过回顾计算机系统发展简史,说明开发软件的一些错误方法和观念是怎样形成的。然后列举了这些错误方法带来的严重弊病(软件危机),澄清了一些糊涂观念。为了计算机系统的进一步发展,需要认真研究开发和维护软件的科学技术。应总结计算机软件的历史经验教训,借鉴其他工程领域的管理技术,逐步本章力求使读者对软件工程的基本原理和方法学有概括的本质的认识。生命周期方法学把软件生命周期划分为若干个相对独立的阶段,每个阶段完成一些确定的任务,交出最终的软件配置的一个或几个成分;基本上按顺序完成各阶段任务,在完成每个阶段的任务时采用行之有效的结构化技术和适当的辅助工具;在当软件规模较大或对软件的需求模糊易变时,采用生命周期方法学开发往往不能成功,近年来在许多应用领域面向对象方法学已经迅速地取代了传统方法学。面向对象方法有四个要点,可以用下列面向对象方法=对象+类+继承+也就是说,面向对象方法就是既使用对象又使用类和继承等机如果仅使用对象和消息,则这种方法可以称为基于对象的(Object-based)方法,而不能称为面向对象的方法;如果进一步要求把所有对象都划分为类,则这种方法可称为基于类的(Class-based)方法,但仍然不是面向对象的方法。只有同时使面向对象方法简化了软件的开发和维护工作,提高了软件的

1 / 28
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功