软件工程第七讲教案.doc
- 文档编号:342326
- 上传时间:2022-10-09
- 格式:DOC
- 页数:39
- 大小:273KB
软件工程第七讲教案.doc
《软件工程第七讲教案.doc》由会员分享,可在线阅读,更多相关《软件工程第七讲教案.doc(39页珍藏版)》请在冰豆网上搜索。
教案首页
周次日期课时序
课题
面向对象的分析与设计方法
教学目的
要求
了解面向对象相关概念;理解面向对象的分析与设计方法
重点
面向对象的分析
难点
面向对象的分析
教学过程
设计
及
时间分配
第七章面向对象的分析与设计方法(2*45‘)
第一节面向对象方法的基本概念与特征(45‘)
第二节面向对象的分析(45‘)
教学场所
或教学方法
使用
教具
作业
课后记
授课教师
第七章面向对象的分析与设计方法
在软件开发与设计中,对一个系统的认识是一个渐进过程,是在继承了以往的有关知识的基础上、多次迭代往复并逐步深化而形成的。
在这种认识的深化过程中,既包括了从一般到特殊的演绎,也包括了从特殊到一般的归纳。
而目前用于分析、设计和实现一个系统的过程和方法大部分是瀑布型的,即后一步是实现前一步所提出的需求,或者是进一步发展前一步所得出的结果。
因此,当越接近系统设计或实现的后期时,对系统设计或实现的前期的结果作修改就越困难。
同时也只有在系统设计的后期才能发现在前期所形成的一些差错。
而且当这个系统越大、问题越复杂时,由于这种对系统的认识过程和对系统的设计或实现过程不一致所引起的困扰也就越大。
为了解决上述这个问题,就应使分析、设计和实现一个系统的方法尽可能地接近认识一个系统的方法,换言之,就是应使描述问题的问题空间和解决问题的方法空间在结构上尽可能地—致,也就是使分析、设计和实现系统的方法学原理与认识客观世界的过程尽可能地一致。
这就是面向对象方法学的出发点和所追求的基本原则。
7.1面向对象方法的基本概念和特征
面向对象方法已经深入到计算机科学技术的许多领域,由于它所涉及的领域非常广泛,很难确切而清晰地界定它的作用范围、严格而准确地对它进行定义。
在20世纪80年代初期以前人们认为:
面向对象是一种新兴的程序设计方法,或者说它是一种新的程序设计范型,其基本思想是使用对象、类、继承、封装、消息等基本概念来进行程序设计。
自80年代以来,面向对象方法已深入到计算机软件领域的几乎所有分支,远远超出了程序设计语言和编程技术的范畴。
同时,面向对象方法也深入到计算机软件以外的一些领域。
因而,说它是一种软件开发方法也不够全面。
不过从目前看,面向对象方法最主要的应用范围仍是软件开发,对软件生命周期的各个阶段(包括分析、设计、编程、测试与维护),以及它所涉及的各个领域(如人机界面、数据库、软件复用、形式化方法、CASE工具等等),都已形成或正在形成面向对象的理论与技术体系。
7.1.1面向对象方法概述
面向对象不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,以什么观点来研究问题并进行求解,以及如何进行系统构造的软件方法学。
而面向对象方法是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系统的软件开发方法。
面向对象方法的基本思想是从现实世界中客观存在的事物出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式。
开发一个软件是为了解决某些问题,这些问题所涉及的业务范围称作该软件的问题域。
面向对象方法强调直接以问题域(现实世界)中的事物为中心来思考问题、认识问题,并根据这些事物的本质特征,把它们抽象地表示为系统中的对象,作为系统的基本构成单位,而不是用一些与现实世界中的事物相差较远,并且没有对应关系的其它概念来构造系统。
可以使系统直接地映射问题域,保持问题域中事物及其相互关系的本来面貌。
另外,软件开发方法应该是与人类在长期进化过程中形成的各种行之有效的思想方法相适应的思想理论体系。
但是,在某些历史阶段出现的软件开发方法没有从人类的思想宝库中吸取较多的营养,只是建立在自身独有的概念、符号、规则、策略的基础之上,这说明当时的软件技术尚处于比较幼稚的时期。
结构化方法采用了许多符合人类思维习惯的原则与策略(如自顶向下、逐步求精)。
面向对象方法更加强调运用人类在日常的逻辑思维中经常采用的思想方法与原则,例如抽象、分类、继承、聚合、封装等等,这就使得软件开发者能更有效地思考问题,并以其他人也能看得懂的方式把自己的认识表达出来。
(1)面向对象方法有如下一些主要特点:
·从问题域中客观存在的事物出发来构造软件系统,用对象作为对这些事物的抽象表示,并以此作为系统的基本构成单位。
·事物的静态特征(即可以用一些数据来表达的特征)用对象的属性表示,事物的动态特征(即事物的行为)用对象的服务(或操作)表示。
·对象的属性与服务结合为一个独立的实体,对外屏蔽其内部细节,称作封装。
·把具有相同属性和相同服务的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个实例。
·通过在不同程度上运用抽象的原则,可以得到较一般的类和较特殊的类。
特殊类继承一般类的属性与服务,面向对象方法支持对这种继承关系的描述与实现,从而简化系统的构造过程及其文档。
·复杂的对象可以用简单的对象作为其构成部分,称作聚合。
·对象之间通过消息进行通信,以实现对象之间的动态联系。
·通过关联表达对象之间的静态关系。
总结以上几点可以看出,在用面向对象方法开发的系统中,以类的形式进行描述并通过对类的引用而创建的对象是系统的基本构成单位。
这些对象对应着问题域中的各个事物,它们属性与服务刻画了事物的静态特征和动态特征。
对象类之间的继承关系、聚合关系、消息和关联如实地表达了问题域中事物之间实际存在的各种关系。
因此,无论是系统的构成成分,还是通过这些成分之间的关系而体现的系统结构,都可直接地映射成问题域。
(2)对于面向对象的定义如下:
•一种使用对象(它将属性与操作封装为一体)、消息传送、类、继承、多态和动态绑定来开发问题域模型之解的范型。
•一种基于对象、类、实例和继承等概念的技术。
•用对象作为建模的原子。
7.1.2面向对象的软件工程(OOSE)
1.采用软件工程学的必要
随着编程语言由低级向高级的发展,它与自然语言之间的鸿沟在逐渐变窄。
开发人员从对问题域产生正确的认识,到用一种编程语言把这些认识描述出来所付出的劳动,由机器代替人完成的工作则增多,如图7-1所示。
图7-1计算机语言发展趋势
在图7-1中,编程语言到计算机之间的深色阴影表示这部分工作是由机器自动完成的,基本不需要开发人员花费精力。
自然语言和编程语言中间的空白区域表示语言的鸿沟,它表明从人们借助自然语言对问题域有一个正确认识,到用一种编程语言正确地表达出来,其间所存在的差距。
开发人员需要在这区域做大量的工作,并且容易发生错误。
而面向对象的语言使这条鸿沟变窄,但仍有一些距离。
自然语言与问题域之间的浅色阴影表明:
虽然人们借助自然语言来认识和理解问题域属于人类的日常思维活动,不存在语言的鸿沟,但是不能说这一区域已经不存在问题。
问题主要表现在:
(1)虽然几乎人人都会运用自然语言,但不一定都能正确地认识客观世界,因为需要具有正确的思维方法。
(2)在软件开发过程中,要求人们对问题域的理解,比人们日常生活中对它的理解更深刻、更准确,这需要许多以软件专业知识为背景的思维方法。
这些问题正是软件工程学所要解决的。
软件开发是对问题域的认识和描述,软件工程学的作用从认识事物方面看,它在分析阶段提供了一些对问题域的分析、认识方法。
从描述事物方面看,它在分析和设计阶段提供了一些从问题域逐步过渡到编程语言的描述手段。
这如同在语言的鸿沟上铺设了一些平坦的路段。
但是在传统的软件工程方法中,并没有完全填平语言之间的鸿沟,见图7-2。
而在面向对象的软件工程方法中,从面向对象的分析到面向对象的设计,再到面向对象的编程、面向对象的测试都是紧密衔接的,填平了语言之间的鸿沟,如图7-3所示。
图7-2传统的软件工程方法 图7-3面向对象的软件工程方法
2.传统的软件工程学
传统的软件工程方法指面向对象方法出现之前的各种软件工程方法,这里主要讨论结构化软件工程方法。
(1)需求分析
软件工程学中的需求分析具有两方面的意义。
在认识事物方面,它具有一整套分析、认识问题域的方法、原则和策略。
这些方法、原则和策略使开发人员(系统分析员)对问题域的理解比不遵循软件工程方法更为全面、深刻和有效。
在描述事物方面,它具有一套表示体系和文档规范,这比仅用自然语言来表达更为准确,也更接近于后期的开发阶段。
但是,传统的软件工程学中的需求分析在上述两方面都存在不足。
它对问题的描述不是以问题域中的固有的事物作为基本单位,并保持它们的原貌,而是打破了各项事物之间的界限,在全局范围内以功能、数据或数据流为中心来进行分析。
例如功能分解法,把整个问题域看作一些功能和子功能;数据流法则把它看作一些数据流和加工。
所以这些方法的分析结果不能直接地映射问题域,而是经过了不同程度的转化和重新组合。
因此,传统的分析方法容易隐蔽一些对问题域的理解偏差,给后续开发阶段的衔接带来了困难。
(2)概要设计和详细设计
在概要设计阶段,以需求分析的结果作为出发点构造出一个具体的系统设计方案。
主要是决定系统的模块结构,包括决定模块的划分,模块间的数据传送及调用关系。
详细设计是在概要设计的基础上考虑每个模块的内部结构及算法,最终将产生每个模块的程序流程图。
经过概要设计和详细设计,开发人员对问题域的认识和描述越来越接近于系统的具体实现——编程。
但是传统的软件工程方法中设计文档很难与分析文档对应,原因是二者的表示体系不一致。
结构化分析的结果——数据流图(DFD)和结构化设计的结果——模块结构图(MSD)是两种不同的表示体系。
DFD中的一个数据流,既不能对应MSD中的模块的数据,也不能对应模块间的调用关系,DFD中的加工也未必对应MSD中的一个模块。
分析与设计之间在表示体系上的不一致被称作分析与设计的鸿沟。
它为从分析到设计的过渡带来了较大的困难,所谓从分析到设计的转换,实际上并不存在可靠的转换规则,而是带有人为的随意性,从而很容易因理解上的错误而埋藏下隐患。
分析与设计的鸿沟带来的另一个后果是,设计文档与问题域的本来面貌相差更远了,因为其中经过了两次扭曲。
当程序员手持设计文档进行编程工作时,难以透过这些文档看到问题域的本来面貌。
(3)编程和测试
编程阶段完成的任务是利用一种编程语言产生一个能够被机器理解和执行的系统,这方面技术最为成熟。
测试是发现和排除程序中的错误,最终产生一个正确的系统。
但所谓正确是相对的,因为至今还没有哪种测试方法能保证找到程序中的全部错误。
从理论上讲,从设计到编程、从编程到测试应能较好地衔接。
但是,由于分析方法的缺陷很容易产生对问题域的错误理解,而分析与设计的鸿沟很容易造成设计人员对分析结果的错误转换,所以在编程时程序员往往需要对分析员和设计人员已经认识过的事物重新进行认识,并产生与他们不同的理解。
在实际开发过程中常常看到,后期开发阶段的人员不断地发现前期阶段的错误,并按照他们的新的理解进行工作,所以每两个阶段之间都会出现不少变化,其文档不能很好的衔接。
(4)软件维护
软件维护阶段的工作有两种情况:
一是对使用中发现的错误进行修改,二是因需求发生了变化而进行修改。
前一种情况需要从程序逆向追溯到发生错误的开发阶段。
由于程序不能映射问题域以及各个阶段的文档不能对应,每一步追溯都存在许多理解障碍。
第二种情况是一个从需求到程序的顺向过程,它也存在初次开发时的那些困难,并且又增加了理解每个阶段原有文档的困难。
3.面向对象的软件工程方法
面向对象的软件工程方法是面向对象方法在软件工程领域的全面运用。
它包括面向对象的分析、面向对象
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 第七 教案