您好,欢迎访问三七文档
面向对象技术引论陈苗第一章绪论一、学习面向对象技术的重要性二、面向对象的一些焦点问题三、课程的主要内容四、对象技术的发展过程五、对象技术对软件制造业的支持一、学习面向对象技术的重要性“‘面向对象’是一种风范,是观察问题、分析问题的一种方法论。基于这种全新的方法论,人们可以用自然的方式认识和模拟现实世界,并由此带来软件制造方式的根本变化”。对象技术已发展成为系统软件和应用软件开发的核心技术,这一提法应该说是恰如其分的,而且越来越被一些成功的系统及其开发经验所证实。面向对象方法真正意义深远的目标是它适合于解决分析与设计期间的复杂性并实现分析与设计结果的复用。二、一些焦点问题什么叫“面向对象”?为什么要“面向对象”?对象建模技术构件和组件技术、软件复用技术面向对象软件系统的集成技术设计模式及其应用软件体系结构标准化问题三、课程的主要内容对象技术的基本概念包括:面向对象的含义、本质、特征;面向对象方法对软件制造的支持;对象、类的概念、特征和基本要素等;面向对象系统分析与设计技术OMT、VMT、UML等面向对象编程技术,回顾与总结、补充C#对象总线技术(选)面向对象的软件系统集成(选)。组件编程标准和技术,例如CORBA、COM等软件系统结构、软件包装技术等。主要讨论前三大问题,其余的内容仅作简单的介绍,要深入研究的话,可以自行参考有关文献、资料。CORBA(CommonObjectrequestBrokerArchitectureandSpecifications),公共对象请求代理结构和规范。COM(ComponentObjectModel),组件对象模型。四、对象技术的发展过程当某种方法和技术无法有效地解决更多、更复杂的问题时,人类便会寻找和研究新的方法和新的技术,这是科学技术不断进步的动因之一。面向对象方法和技术也是遵循这种规律,在人类开始迈入信息化社会的门槛时“应运而生”的。面向对象方法和技术起源于面向对象的编程语言(OOPL);从八十年代中期开始,面向对象技术的焦点、热点就逐渐转移到OOA和OOD上,逐步形成新的方法论和开发技术。近年来又出现新的高级技术,例如面向对象数据库、分布式对象技术、对象总线技术、面向对象的系统框架构造以及面向对象的系统集成等。五、对象技术对软件制造业的支持对象技术的应用为软件开发从“人工集约生产方式”到“资源集约生产方式”的转化带来希望。面向对象方法、技术对软件制造的各种潜在的支持,具体体现在方法论的革新、模块化(构件化、组件化)、软件重用、软件维护等几个方面。对象技术为计算提供了惟一一个可以同时获得灵活性和(提高)生产率的方法。1.模块化技术(1)模块化技术的发展过程简而言之:由功能模块到对象模块。功能模块:将软件分成若干个可以独立命名和编码的部分,这些相对独立的部分称为模块,它们可以按功能结构相互连接,组成满足应用需求的软件系统。功能模块存在的突出问题有以下两点:a.模块的分割是以功能为单位的,其设计总是围绕功能结构和特征展开的,忽视了数据这一本质特征。b.没有充分考虑数据隐蔽和模块间接口的标准化。对象模块:对象模块是以主体数据(事物的属性)为中心进行设计,以对数据的操作作为模块界面(功能),对象模块可以包括一个到多个对象类。对象模块有以下两个特点:这主要得益于对客观事物的抽象分析。a.对象模块的稳定性和适应外界因素变化的能力强过功能模块。b.围绕对象的数据特性设计的模块,界面接口简单,模块独立性强。(2)模块化设计的基本准则当模块内部实现发生变化而导致代码修改时,只要其接口功能不变,就不会给整个软件系统带来影响。对象模块的基本特征是抽象和实现信息隐蔽(封装)。可分解性、可组合性、可理解性、连续性、保护性。(P38)①可分解性所谓可分解性是指软件系统从应用需求出发的模块分解,目的在于“分而治之”。注意:通常的做法是:按某种方法(例如自顶向下方法),将一个复杂的系统分解成若干个子系统,子系统还可以再分解成若干更简单的部分,直至分解到足够简单的部分,这些部分就可以作为模块交由开发人员去理解和实现。分解工作是在数据(对象)的抽象层次上进行的,而不是在功能结构层次上进行的,这就是面向对象方法与结构化方法的区别之一。对足够简单的部分这样一个非量化的概念,我们可以限制为:每一模块包含有限个对象(主体),同时必须是开发人员可以理解与处理的。②可组合性所谓可组合性就是各个相对独立的模块能够按系统需求和接口标准组装成系统。组合是模块分解的反过程。显然在对象技术中,模块的可组合性应该具备软件重用的基本特征。③可理解性对于可理解性的要求是:一个模块只包含系统的一个足够简单的部分,而且每一部分都相对独立,界面简单、清晰。注意:模块的可理解性,其意义不仅在于系统实现的简单化,而且对于系统维护也是非常重要的(易读)。④连续性连续性有两个含义:其一、对一个系统而言,作用于系统的小变动将仅仅导致行为上的小变化;其二、规格说明的小变化也仅影响到一小部分模块。继承和简单接口(类的封装原则所强调的),强有利地支持了连续性,尤其支持含义二所表述的观点。⑤保护性该准则要求,异常及错误状况要么被限制在发生这些异常或错误的模块内,要么其影响只波及到很少的几个其他相关模块。2.软件重用技术软件重用也称为软件复用,包括分析模型、设计模型以及代码等等的复用。采用软件重用技术有助于大幅度地提高软件生产率。(1)软件重用技术的进化软件重用的概念源自于子程序技术,这是典型的代码重用,也就是在程序内部或程序之间进行子程序的重复调用(一次定义,多次调用)。在结构化程序设计语言中,子程序被函数化或过程化,子程序的过程化实际上就是一种简陋的封装。各种计算机语言(例如C/C++)的库函数一直在支持着代码重用。但是我们也看到,由于常用的自顶向下的直观的功能分解法导致产生大量不能重用的专用模块,所以采用结构化开发方法一直制约着重用技术的发展。而面向对象方法所推崇的抽象、封装、继承等技术则可以使得重用的可能最大化。面向对象技术使软件重用更臻于完善和规范,对象的三个重要特性,即抽象、继承和封装都从不同的角度支持软件重用:继承使得基于类的抽象层次上(泛化结构)的代码重用成为可能,也即特殊类可以共享一般类的性质。抽象使得对象组件更具一般化,也即充分考虑到对象自身的性质、性能和应用环境的复杂性等多方面的要求,以此获得通用化和标准化方面的保证。对象的统一语义模型,可以使用诸如对象总线、应用系统程序框架(例如CORBA等)之类的组装机制,将各种对象组件组装在一起,在运行阶段可以采用类似于动态链接技术的“延迟绑定的动态连接方式”运行。封装允许开发人员将对象视为“黑匣子”,只需通过界面去理解、引用和操作对象,而不必关心其实现细节。(2)软件重用的基本形式分为结构重用和代码重用两种形式结构重用:是对先前的软件系统结构的重用,包括分析模型和设计模型的重用,这是最高级别的重用;代码重用:分为系统内部代码重用和系统外部代码重用。内部代码复用可以采用继承和包容两种方法来实现:继承主要发生在类的泛化结构上,由特殊类(子类)继承一般类(父类)的属性和操作;包容则体现一种由部分到整体的聚合关系,将一个对象作为另一个对象的一部分(例如OLE技术)。(3)重用粒度划分系统外部代码的重用则更多地利用组件的组装技术实现组件级的重用。如果考虑复用的时效性,还可以分为“即时重用”和“未来目标的重用”。即时重用一般发生在系统内部,未来目标的重用则发生在不同的应用系统之间。重用的级别可以用粒度来衡量,一般分为三种粒度,即:小粒度、中粒度和大粒度。小粒度重用:指代码一级的重用;中粒度重用:指设计重用;大粒度重用:指系统重用,包括分析模型重用和设计模型重用。(4)可重用组件的管理和使用现在通行的办法是建立一个组件库,例如java.bean包,并提供非常实用的浏览机制,便于开发人员从中查找所需的可复用组件。更重要的一点是,必须给出一种自然的描述文法,用来描述软件对象的语义约束,这种约束必须要明确到不至于误用对象。(5)几种软件组件标准简介*Javabean:Javabean标准是剪裁Java语言的低级组件模型,Javabean是可重用的平台中立(与平台无关)的软件组件,可以在软件开发工具中被直观地操作(“工具感知”)。CORBA:CommandObjectionRequestBrokerArchitecture,是一个面向全球分布的、独立于语言、平台和网络对象的系统级框架。它提供以下主要的公共对象服务:命名(Naming)、外部化(Externalization)、持续(Persistence)、事件(Events)、生命周期(LifeCycle)、业务(Transactions)、属性(Properties)、查询(Query)、并发性(Concurrency)、关系(relationships)、集合(Collections)、时间(Time)、安全性(Security)、改变管理(ChangeManagement)、贸易者(Trader)和版权(Licensing)等。COM、DCOM:ComponentObjectModel(组件对象模型),是Microsoft公司提出的关于对象交互作用和相互连接的二进制标准。其基本目标是使开发人员能够通过组装现有的组件来创建应用程序。DCOM是分布式组件对象模型。3.软件维护自从70年代以来,软件维护便成为IT组织面临的最大的成本花费。很多专家估计,维护费用高达数据处理预算的95%。软件维护的主要工作可以概括为:(1)对系统潜在的错误进行检测和改正(2)为满足需求变化以及为适应新环境所进行的改进与增强。据统计,“在人们请求改变的事情中,大约有43%是需求的改变,这是自然的和不可避免的”。因此,应对需求的改变就成了软件维护的最主要的工作,其重要性也就不言而喻。(1)传统软件工程方法在系统维护上存在的问题问题一、在开发的不同阶段,由于使用的系统模型不统一,可能会导致不同阶段之间信息转移的正确性得不到保证。其结果是物理系统和软件需求分析的要求不吻合;再则各个阶段文档的一致性、准确性也无法保证,这就给维护阶段留下许多隐患。问题二、采用功能法构造系统,很难建立高度抽象的、一般化的分析模型,也就难以适应软件维护期出现的需求的改变,开发人员不得不直接修改代码。这不仅是工作量和系统开销增大的问题,更严重的结果是导致软件设计不能准确地与代码相一致,给其后的维护增添困难。(2)面向对象技术有效地支持软件维护我们从对象结构的稳定性和统一模型的一致性这两个方面来论述这个问题:对象结构的稳定性面向对象方法支持“围绕对象”来构造系统,强调对象结构而不是功能结构,这样的系统其稳定性和适应性都比较强,可以大大减少维护阶段的工作量。统一模型的一致性面向对象技术支持软件系统在分析、设计、实现等阶段都采用统一模型,采用螺旋式循环往复的工作方式。因为模型的统一,各阶段只是对模型的深化和细化,这就可以保证不同阶段之间信息可以完全转移。
本文标题:1第一章绪论
链接地址:https://www.777doc.com/doc-4051585 .html