从结构化到面向对象程序设计的模型转换

上传人:ji****72 文档编号:46537536 上传时间:2018-06-27 格式:PDF 页数:6 大小:307.03KB
返回 下载 相关 举报
从结构化到面向对象程序设计的模型转换_第1页
第1页 / 共6页
从结构化到面向对象程序设计的模型转换_第2页
第2页 / 共6页
从结构化到面向对象程序设计的模型转换_第3页
第3页 / 共6页
从结构化到面向对象程序设计的模型转换_第4页
第4页 / 共6页
从结构化到面向对象程序设计的模型转换_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《从结构化到面向对象程序设计的模型转换》由会员分享,可在线阅读,更多相关《从结构化到面向对象程序设计的模型转换(6页珍藏版)》请在金锄头文库上搜索。

1、电脑应用技术 二零零六总第六十七期 从结构化到面向对象程序设计的模型转换从结构化到面向对象程序设计的模型转换 袁胜忠 山东大学威海分校现代教育技术部 威海 264209 摘 要:随着软件系统内在复杂性的不断提高,面向对象技术已经取代结构化设计技术成 为产业化软件开发的主流技术。本文剖析对象模型与结构化设计瀑布模型队程序设计风格 的影响,探讨导致面向对象软件工程失败的主要原因,论证了成功实施面向对象软件工程 的关键技术,帮助软件工程师完成从结构化设计实践向面向对象分析和设计实践的进化。 关键词:对象模型 瀑布模型 迭代和增量式开发 面向对象软件工程 Model Changing From Str

2、uctured Design Style to Object-Oriented Programming YUAN Shengzhong Department of Modern Education Technology of Shandong University at Weihai, Weihai, 264209 Abstract: In the past several years, with enhance of inherent complex of various systems, the object-oriented technology have actually become

3、 the main stream of industrial software development. Compared with traditional structured design style and the waterfall model, in this paper, we strength the correct understand to object model and discuss the main reasons for the failure of object-oriented development in order to promote the softwa

4、re engineers evolution from structured design to object-oriented analysis and design. Keywords: object model; waterfall model; iterative and incremental development; object-oriented software engineering 1 引 言 1 引 言 面向对象的技术可以分为:面向对象的程序设计语言,面向对象的数据库技术,面向 对象的分析和设计方法。 对应用软件开发组而言,面向对象的分析和设计方法是一种新的方法,它比面向

5、对象 的程序设计语言和面向对象的数据库技术更加难以掌握。因为它与开发组熟悉的结构化设 计方法是两种完全不同的设计风格,在建立系统时,结构化设计方法利用算法作为基本构 件,而面向对象方法利用类和对象作为基本构件。二者要求开发组用不同的思考方法对待 问题的分解,而且面向对象设计方法创造出来的软件体系结构大大超出了 1 作者简介作者简介:袁胜忠:男,1965 年出生,软件工程师,主要研究方向为应用软件开发,网络管理与优化。 电脑应用技术 二零零六总第六十七期 结构化设计文化的领域。 在应用软件开发中,面向对象方法至今没有得到应有的使用。正如Rentsch曾经准确地 预料到的1, “我猜想面向对象的编

6、程将出现在 20 世纪的 80 年代, 就像结构化编程出现在 20 世纪的 70 年代一样。每一个人都会喜欢上它。每个制造商都会改进自己的产品以支持 它。每个管理者都会在口头上承诺它。每个编程人员都会(以不同方式)实践它。但是没 有一个人会知道它是什么” 。遗憾的是,在我们的开发过程中,Rentsch的预测至今仍然是 正确的。 现在多数程序员都仅在结构化设计原则方面受过正规或非正规的训练,并利用这些结 构化设计技术开发和实施了无数有用的软件系统。他们即使认识到只使用算法分解可以应 对的复杂性是有限的,必须转向面向对象的分解;他们即使想早日使用面向对象的技术, 反复学习了 C+或 JAVA,但是

7、,他们发现面向对象技术很难应用,面对问题领域的时候, 设计一开始就不自觉地转换到结构化程序设计上了。这一切都是因为他们还没有真正掌握 面向对象的分析与设计方法,没有深刻认识面向对象的分析和设计方法与结构化设计方法 的根本区别。没有正确的方法指导,只学习面向对象的程序设计语言是远不足以成功实施 面向对象应用软件开发的。如果把 C+和 JAVA 这样的语言作为传统的面向算法的语言来 使用,就不仅不能利用它们所赋予的功能,而且结果比使用更早的语言如 C 或 PASCAL 还差。如果给一个根本不懂电的木匠一把电钻,他有可能把电钻当成锤子来用并在砸弯无 数个钉子后认为电钻不如锤子好用。 本文在第二部分分

8、析如何全面理解面向对象分析的模型,在分析的开始阶段,模型提 供了一种组织大量信息的机制,这些信息起初使分析者无从下手。此外,模型的规范化和 系统化会暴露出系统种的不一致性和缺陷,从而指导后续的开发工作,所以,模型对于正 确掌握面向对象的方法是很重要的。在第三部分,作者结合自己的实践经验总结了导致面 向对象开发失败的主要原因,用反证法论述了成功实施面向对象软件开发的关键概念和技 术,希望帮助那些熟悉结构化设计方法的同行避开这些陷阱,顺利进化到面向对象的分析 与设计开发。第四部分是结论,阐述了什么情况下应该采用面向对象技术。 论述中经常用到的概念有2: (1) 面向对象分析(object-orie

9、nted analysis,有时称作 OOA) 。OOA 是一种分析方法, 它以可在问题域的词汇表中找到的类和对象的观点来审视需求,强调利用面向对象的观点 建立真实世界的模型。 (2) 面向对象设计(object-oriented design,有时称作 OOD) 。OOD 是一种设计方法, 它包含面向对象分解的过程,以及一种表示方法,用来描写设计中的系统的逻辑模型与物 理模型和静态模型与动态模型。正是对面向对象分解的支持使得 OOD 与结构化设计大不 一样:OOD 使用类和对象抽象在逻辑上构建系统,而结构化设计使用的却是算法抽象。 上述两个概念的关系是:OOA 的结果可以作为 OOD 开始的

10、模型,接着利用面向对象 编程实现。OOD 的结果可以作为完整实现一个系统的蓝图。 (3) 面向对象的开发(object-oriented development) 。面向对象的开发是一个迭代和增 量式的开发过程。其宏观过程为2: 建立核心需求(概念化) 开发要求的行为的模式(分析) 创立体系结构(设计) 演化实现(演化) 管理后续的演化(维护) 微观过程为2: 识别一个给定的抽象层次上的类和对象 2 电脑应用技术 二零零六总第六十七期 识别类和对象的语义 识别类和对象之间的关系 规定这些类和对象之间的接口,然后说明这些类和对象的实现。 2 深刻理解面向对象分析的模型 2 深刻理解面向对象分析的

11、模型 面向对象的分析,其目的在于有效地描述与刻画问题领域的信息和行为。实现这样一 种描述, 必须以一种全局的观点来考虑系统中的各种联系, 系统的完整性和一致性。 同时, 这种描述能够说明系统中各种操作的细节。 为达到面向对象分析的目的,面向对象的分析提供了有足够表达力的模型:逻辑模型 (类结构、对象结构)和物理模型(模块体系结构、进程体系结构) 。对于一个给定的项 目,分析和设计的结果都是通过这些模型表示出来。 其中,类结构的静态语义用类图表示、动态语义用状态转换图表示;对象结构的静态 语义用对象图表示、动态语义用交互图表示;模块体系结构的静态语义用模块图表示、动 态语义用子系统图表示;进程体

12、系结构用进程图表示。 由此可见。面向对象开发的表示法包括四个基本图:类图、对象图、模块图和进程图, 以及两个补充图:状态转换图和交互图。 类图用来显示类和它们的关系在系统的逻辑设计中的存在。类图代表系统的类结构 视图。 对象图用来显示在系统的逻辑设计中存在的对象和它们的关系。对象图通常用来表 示场景。 模块图用来显示在系统物理设计中分配给模块的类和对象。模块图代表系统的模块 体系结构的视图。 进程图用来显示在系统物理设计中分配给处理器的进程。进程图代表系统的进程体 系结构的视图。 状态转换图用来显示给定类的实例的状态空间,引起由一个状态向另一个状态转换 的事件,以及由状态变化引起的动作。 交互

13、图用来跟踪与对象图同一个语境中的场景的执行。 在应用软件开发过程中, 设计行为不是一种画图的行为, 图只是被用来描绘一个设计。 面向对象方法从以上多个视图来观察设计是很重要的。在面向对象的分析方法中,建立数 据流图的作用,不如其它面向功能的方法明显。因为数据流图中并没有添加任何新的信息 5,但是,建立动态模型可以使系统分析者对系统设计进行精化,把相同或相似的处理操作进行调整,使系统结构更加完善。 注意,面向对象的系统分析提供了一种独特的方法,它反映了软件问题的本质所在。 软件问题的本质在于数据处理,数据和处理是两件显然的事情,是我们进行软件设计要做 的最基本的工作,在分析数据和信息的过程中分析

14、其处理过程是我们本来应该这样做的。 将数据和处理人为地分离,可能会人为地制造系统分析的障碍。面向对象的分析是一种以 数据或信息为主线,数据和处理紧密结合的方法,这种方法是以建立对象模型为基础的。 3 导致面向对象开发失败的主要原因 3 导致面向对象开发失败的主要原因 3.1 原因之一 在面向对象开发过程之上叠加瀑布型思维 3.1 原因之一 在面向对象开发过程之上叠加瀑布型思维 如果您的开发过程基本遵循(1)企图定义和稳定绝大部分的需求,然后签署开发协 议; (2)基于需求,进行详细设计; (3)基于设计进行实现; (4)进行集成、系统测试和 部署。这是一个线性的、串行的瀑布型生命周期的典型例子

15、,而且是一个最优先的导致面3 电脑应用技术 二零零六总第六十七期 向对象开发完全失败的策略。 虽然我们接受了瀑布式模型教育,但是瀑布式开发模型没有得到任何统计意义上的证 据支持。更加重要的是,当前的软件项目失败研究结论性地表明3,瀑布模型是风险最高、 极易失败、低生产率以及高缺陷率的软件构建方法。尽管它与 20 世纪 60 年代开发软件的 随心所欲方式相比是相对合理的策略,但几代师生不假思索地学习和照搬它已经导致了很 多软件开发的失败。有些东西必须像建筑那样被建造,但是软件通常不属于这一类。瀑布 模型导致软件失败的最具有说服力的是一个错误的假定,即可以在项目的第一个阶段中定 义绝大部分的需求。

16、Capers Jones等人的研究粉碎了这一神话,蔓延的需求(在项目开始时 没有预见到)是软件开发中非常显著的事实,在普通项目中它大概占到 25,在大型项目 中则占到 50。 瀑布模型竭力回避需求变化的现实,它假定需求和设计能够正确地被指明和冻结,这 与项目的现实严重不符。软件开发在设计和实现之前无法固定需求有许多原因,但不管什 么原因,高明的应对方法不是去“对抗变化” ,竭力固定需求,而正相反,应该像 Ken Beck 积极主张的那样“拥抱变化” ,并把这当作软件过程的一个核心驱动力。 OOA 和 OOD 使用迭代的、增量式的过程,并考虑它的不同阶段的目的、产品、活动 和度量标准。开发的行进表现为一系列的迭代,迭代过程不断地对面向对象体系结构进行 细化,并将以往的经验以及每次发布的结果用于下一个迭代阶段的分析和设计中。增量式 的开发过程要经过一个分析、 设计、 演化的生命周期。 以便不断精化战略决策和策

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

当前位置:首页 > 行业资料 > 其它行业文档

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