资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2020/2/7,#,2025/5/31 周六,1,软件工程,刘永利,河南理工大学,2025年5月31日,2025/5/31 周六,2,参考资料,张海藩,,软件工程导论,,清华大学出版社,,1998,第三版,郑人杰,殷仁昆,陶永雷,,实用软件工程,,清华大学出版社,,1997,第二版,2025/5/31 周六,3,考核要求,平时成绩,30%,考勤,课堂笔记,少量习题,考试成绩,70%,2025/5/31 周六,4,第一篇软件工程与软件过程,2025/5/31 周六,5,第,1,章 软件工程,软件危机,1.1,软件工程,1.2,小结,1.3,2025/5/31 周六,6,1.1,软件危机,1.1.1,计算机系统的发展历程,所谓计算机系统就是指适当地组织在一起的一系列系统元素的集合。,这些系统元素互相配合、相互协作,通过对信息的处理而完成预先定义的目标。,迄今为止,计算机系统已经经历了四个不同的发展阶段。,2025/5/31 周六,7,从,60,年代中期到,70,年代中期,是计算机系统发展的第二代。,计算机系统发展的第三代从,20,世纪,70,年代中期开始,并且跨越了整整,10,年。,在计算机系统发展的第四代已经不再看重单台计算机和程序,人们感受到的是硬件和软件的综合效果。,2025/5/31 周六,8,1.1.2,软件危机的含义,软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题绝不仅仅是不能正常运行的软件才具有的,实际上,几乎所有软件都不同程度地存在这些问题。,2025/5/31 周六,9,软件危机典型表现,对软件开发成本和进度的估计常常很不准确。,用户对“已完成的”软件系统不满意的现象经常发生。,软件产品的质量往往靠不住,软件常常是不可维护的。,软件通常没有适当的文档资料。,软件成本在计算机系统总成本中所占的比例逐年上升。,软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅速普及深入的趋势。,2025/5/31 周六,10,以上列举的仅仅是软件危机的一些明显的表现,与软件开发和维护有关的问题远远不止这些。,2025/5/31 周六,11,1.1.3,产生软件危机的原因,在软件开发和维护的过程中存在这么多严重问题,一方面与,软件本身的特点,有关,另一方面也和,软件开发与维护的方法不正确,有关。,与软件开发和维护有关的许多错误认识和作法的形成,可以归因于在计算机系统发展的早期阶段软件开发的个体化特点。,错误的认识和作法主要表现,为忽视软件需求分析的重要性,认为软件开发就是写程序并设法使之运行,轻视软件维护等,。,2025/5/31 周六,12,图,1.1,引入同一变动付出的代价随时间变化的趋势,2025/5/31 周六,13,了解产生软件危机的原因,澄清错误认识,建立起关于软件开发和维护的正确概念,还仅仅是解决软件危机的开始,全面解决软件危机需要一系列综合措施。,2025/5/31 周六,14,1.1.4,消除软件危机的途径,为了消除软件危机,首先应该对计算机软件有一个正确的认识。,应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法。,2025/5/31 周六,15,应该开发和使用更好的软件工具。,总之,为了消除软件危机,既要有技术措施,(,方法和工具,),,又要有必要的组织管理措施。软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。,1.1.4,消除软件危机的途径(,cont.,),2025/5/31 周六,16,第,1,章 软件工程,软件危机,1.1,软件工程,1.2,小结,1.3,2025/5/31 周六,17,1.2,软件工程,1.2.1,什么是软件工程 ,概括地说,软件工程是指导计算机软件开发和维护的工程学科。,采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。,2025/5/31 周六,18,1.2.2,软件工程的基本原理,1.,用分阶段的生命周期计划严格管理,2.,坚持进行阶段评审,3.,实行严格的产品控制,4.,采用现代程序设计技术,5.,结果应能清楚地审查,6.,开发小组的人员应该少而精,7.,承认不断改进软件工程实践的必要性,2025/5/31 周六,19,1.2.3,软件工程方法学,通常把在软件生命周期全过程中使用的一整套技术的集合称为方法学,(methodology),,也称为范型,(paradigm),。在软件工程范畴中,这两个词的含义基本相同。,2025/5/31 周六,20,软件工程方法学包括三个要素,方法,方法是完成软件开发的各项任务的技术方法,回答“如何做”的问题,工具,工具是为方法的运用提供自动的或半自动的软件支撑环境,过程,过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。,2025/5/31 周六,21,目前使用得最广泛的软件工程方法学,分别是,传统方法学,和,面向对象方法学,。,2025/5/31 周六,22,传统方法学,传统方法学也称为生命周期方法学或结构化范型。,当软件规模较大,或者对软件的需求是模糊的或随时间变化的时候,使用结构化范型开发软件往往不成功;此外,使用传统方法学开发出的软件,维护起来通常都很困难。,2025/5/31 周六,23,面向对象方法,学,概括地说,面向对象方法具有,四个要点,:,把,对象,(Object),作为融合了数据及在数据上的操作行为的统一的软件构件。面向对象程序是由对象组成的,程序中任何元素都是对象,复杂对象由比较简单的对象组合而成。,把所有对象都划分成,类,(Class),。每个类都定义了一组数据和一组操作,类是对具有相同数据和相同操作的一组相似对象的定义。数据用于表示对象的静态属性,是对象的状态信息,而施加于数据之上的操作用于实现对象的动态行为。,2025/5/31 周六,24,面向对象方法,学,(cont.),按照父类,(,或称为基类,),与子类,(,或称为派生类,),的关系,把若干个相关类组成一个层次结构的系统,(,也称为类等级,),。在类等级中,下层派生类自动拥有上层基类中定义的数据和操作,这种现象称为,继承,。,对象彼此之间仅能通过发送,消息,互相联系。对象与传统数据有本质区别,它不是被动地等待外界对它施加操作,相反,它是进行处理的主体,必须向它发消息请求它执行它的某个操作以处理它的数据,而不能从外界直接对它的数据进行处理。,2025/5/31 周六,25,面向对象方法学,面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程。,从而使描述问题的问题空间,(,也称为问题域,),与实现解法的解空间,(,也称为求解域,),在结构上尽可能一致。,2025/5/31 周六,26,正确运用面向对象方法学开发软件,则最终的软件产品由许多较小的基本上独立的对象组成,而且大多数对象都与现实世界中的实体相对应。,因此,降低了软件产品的复杂性,提高了软件产品的可理解性,简化了软件的开发和维护工作。,2025/5/31 周六,27,由于对象是相对独立的实体,容易在以后的软件产品中重复使用,因此,面向对象范型的另一个重要优点是促进了,软件重用,。,面用对象方法特有的,继承,性,进一步提高了面向对象软件的可重用性。,2025/5/31 周六,28,1.3,小 结,本章对计算机软件工程学作了一个简短的概述。首先通过回顾计算机系统发展简史,说明开发软件的一些错误方法和观念是怎样形成的。,2025/5/31 周六,29,然后列举了这些错误方法带来的严重弊病,(,软件危机,),,澄清了一些糊涂观念。为了计算机系统的进一步发展,需要认真研究开发和维护软件的科学技术。,2025/5/31 周六,30,应总结计算机软件的历史经验教训,借鉴其他工程领域的管理技术,逐步使软件工程这门新学科发展和完善起来。,2025/5/31 周六,31,本章力求对软件工程的基本原理和方法学有概括的本质的认识。,生命周期方法学把软件生命周期划分为若干个相对独立的阶段。,2025/5/31 周六,32,每个阶段完成一些确定的任务,交出最终的软件配置的一个或几个成分;,基本上按顺序完成各阶段任务,在完成每个阶段的任务时采用行之有效的结构化技术和适当的辅助工具;,在每个阶段结束时都进行严格的技术审查和管理复审。,2025/5/31 周六,33,当软件规模较大或对软件的需求模糊易变时,采用生命周期方法学开发往往不能成功,近年来在许多应用领域面向对象方法学已经迅速地取代了传统方法学。,面向对象方法有四个要点,可以用下列方程式概括:,2025/5/31 周六,34,面向对象方法学,=,对象,+,类,+,继承,+,用消息通信,也就是说,面向对象方法就是既使用对象又使用类和继承等机制,而且对象之间仅能通过传递消息实现彼此通信。,2025/5/31 周六,35,如果仅使用对象和消息,则这种方法可以称为基于对象的,(Object-based),方法,而不能称为面向对象的方法;,如果进一步要求把所有对象都划分为类。则这种方法可称为基于类的,(Class-based),方法,但仍然不是面向对象的方法。,只有同时使用对象、类、继承和消息的方法,才是真正面向对象的方法。,2025/5/31 周六,36,面向对象方法简化了软件的开发和维护工作,提高了软件的可重用性。,
展开阅读全文