`
roruby
  • 浏览: 342153 次
  • 来自: ...
社区版块
存档分类
最新评论

软件架构之面向对象技术

阅读更多
  面向对象编程语言包括Smalltalk、 C++、 Java编程语言和C#(微软.Net开发环境中提供的一种语言)。这些语言按照抽象数据类型(通常称为类)的要求支持数据和操作代码的封装。在面向对象编程语言中,封装能力对于适度大小的程序是足够的。只要软件模块由单独的程序员维护,封装对于提供一些内在的优点就是完全足够的。但是,特定语言的封装不足以支持软件的重复使用和分布式系统。

  在面向对象技术中,基本范例被改变为允许关系的分离。图1显示了面向对象技术的范式,在它里面程序被分成叫做对象(object)的更小的片段。每个对象都包含了系统的一些数据,并且程序封装了这些数据。换句话说,只有通过使用与该数据直接相关的程序才能访问这些数据。通过这种方法,系统被分离成独立改变的模块。数据表现的任何改变仅仅影响封装该数据的直接的对象。

  对象使用消息彼此通讯。消息可能影响状态——换句话说就是改变数据——但是只能通过与本地数据密切相关的封装了的过程来改变它。对于小程序,对象范式对于隔离改变来说是有效的。但是,这个范式对于所有可能的使用情形来说并不是完美的。

  现在面向对象技术已经被广泛地使用了。一般来说程序上的技术来自于学术界,但是面向对象技术事实上来自于商业组织。实际上面向对象技术有很多有趣的渊源,甚至于可以追溯到计算机科学的开端。现在对象技术是占有统治地位的商业软件范式。事实上每个软件生产商都提供了对象技术的解决方案,并一起提供了组件的下部构造,允许不同软件环境中的软件厂商之间交互操作。

  面向对象的架构

  对于主要的软件开发从业者来说,面向对象是缺乏软件架构方法的。在面向对象的方法和文化中,这种缺乏在很多方面都有表现。从通常被当作原始来源的OO(面向对象)思考、设计面向对象软件【Wirfs-Brock 1990】开始,已经有了软件架构的概念,包括通过观察协作图(collaboration diagram,它需要一个章节才能讲清楚)发现子系统(subsystem)。在接下来的十年中,在面向对象方法学社团中几乎没有写出什么有关架构的东西。主要的OO方法学的书本中关于架构的章节都很少,它们都是Wirfs-Brock的架构概念的一些模糊的反映。

  由于实际上几乎没有关于架构的专著,大多数OO从业者都只有最基础的架构指导。他们没有理由认为架构很重要。这种态度导致OO项目中很大的混乱,因为小组成员必须尽全力去管理那些并非为他们设计的OO方法的复杂性和可伸缩性。

  一般而言,OO方法包含了成功的对象模型技巧,在这些模型中大多数分解对象最终被转换为编程对象。这种方法叫做基于模型(model-based)的方法。为了了解架构,认为每个分解对象都不可避免地成为编程对象是所有OO开发人员都需要克服的一个主要障碍。在架构模型中,特定对象表现约束而不是编程对象。它们可能会,也可能不会被转换成编程对象,这是由开发人员的自行的决定。

   OO也在其它一些微小的地方与架构矛盾,这与项目文化相关。OO鼓励项目小组平等,这样所有的决定都是民主的。在这样的项目中就没有架构的角色了,因为在开发小组的成员之间作出的决定的差别是很小的。

   OO鼓励开发中的“bad-is-better”思考方式,实际上这是一种与架构思想背离的哲学。使用bad-is-better思想的时候,任务实现的外部表现远远超过了可以维护的的内部结构的任何需求。换句话说,快速迭代的原型处理,以及对架构原理的无情的漠视对于OO开发来说是一种正常的、健康的环境。

  架构的话题只在最近的OO专著中与新发现的组件技术一起被重新提到的。现在大多数方法学的书本都习惯性地包含一个关于架构的象征性的章节,但是在OO的全盛时期,架构实际上是禁止使用的。从感觉上讲,组件是OO的缺点的反映。组件的强调较大“颗粒”的软件接口和模块,是向架构想法方向的改进步骤。

  数据库和对象


  数据库技术也朝对象的方向演化。数据库技术源于几个不同的模型。近些年,数据库的关系模型是最有影响力的。到最近,面向对象的数据库已经成为重要的技术市场,而联合了面向对象和关系概念的数据库也很平常。大多数主要的行业数据库,例如Oracle 9i和IBM的DB2数据库都包含了对象-关系能力。

  数据库查询语言,例如结构化查询语言(SQL),都在标准的工作方面进行了扩展以支持面向对象的概念。发生这种情况的原因之一是人们正在建立的这类应用程序需要充分的、更多的适合显示需要的数据表现类型和查询算法类型以搜索和维护信息。

  对象在主流技术中的地位


  目前对象技术应用于大多数应用程序范围和垂直的市场中。政府组织和工商企业正在用对象技术运作大量的项目。对象技术的主要优点是它允许为组织提供竞争优势的新业务流程的实现。社会正在朝不断依赖信息技术的方向转变。对象技术的使用通过软件重复使用机制允许快速的系统实现和各种形式的劳动力的节省。尽管大量的软件代码仍然存在于面向过程的语言(例如COBOL)中,但是很清楚这种范式正在改变。

  脚本语言


  脚本语言的支持者声称使用脚本语言的编程人数比使用其它类型语言的编程人数都要多【Ousterhout 1998】。脚本语言,例如JavaScript语言、TCL shell编程语言和Visual Basic语序可以把先前存在的软件(例如组件)轻易地集成到应用程序构造中去。
分享到:
评论

相关推荐

    面向对象软件架构设计

    第二单元:技术架构视图─面向对象程序设计原则与模式 59 用GRASP模式指导设计 62 领域模型 96 面向对象设计的基本原则 132 第三单元:用UML辅助系统分析与设计 177 UML简介及常见疑难问题辨析 178 借鉴RUP的UML建模...

    面向过程、面向对象、面向组件、面向服务软件架构的分析与比较

    面向过程、面向对象、面向组件、面向服务软件架构的分析与比较 软件开发历程与架构演进 软件开发从汇编语言、过程式语言、面向对象、面向组件发展到面向服务,这一进程不仅反映了编程技术的不断进步,更是软件工程...

    视频2018 07第3章 面向对象方法、软件架构、应用集成技术

    面向对象方法、软件架构和应用集成技术是现代软件开发中的核心概念,对于系统集成项目管理工程师来说,理解和掌握这些知识至关重要。本章内容主要涵盖了这三个关键领域的基础理论、实践应用以及它们之间的相互关系。...

    面向对象软件构造(内含57个参考文献)

    面向对象软件构造是软件开发领域中的一个重要概念,它基于面向对象编程(Object-Oriented Programming,简称OOP)的理念,通过模拟现实世界中的实体和它们之间的关系来构建复杂的软件系统。这种方法使得代码更加模块...

    软件工程面向对象分析实验报告

    面向对象分析(Object-Oriented Analysis,OOA)是软件工程中的一种重要方法,它着重于从实际问题出发,抽象出问题域内的对象及其相互关系,以构建问题域模型。在“软件工程-张海藩编著--面向对象分析实验报告”中,...

    北大面向对象技术

    如今,几乎所有现代编程语言都支持面向对象编程,从Web开发到移动应用,面向对象技术的应用无处不在,是软件工程师必须掌握的核心技能之一。 #### 结论 北京大学信息科学技术学院的面向对象技术教程不仅回顾了传统...

    面向对象软件架构设计.ppt

    第二单元:技术架构视图─面向对象程序设计原则与模式 59 用GRASP模式指导设计 62 领域模型 96 面向对象设计的基本原则 132 第三单元:用UML辅助系统分析与设计 177 UML简介及常见疑难问题辨析 ...

    Android面向对象技术

    教程名称: Android面向对象技术课程描述:因为有些Android架构师的对象技术(OOP: Object-Oriented Programming)的底子并不足以应付以应用框架(Application Framework)为基础的新型软件开发模式。因此,高焕堂老师...

    面向对象软件测试方法综述

    然而,这些方法侧重于线性、功能驱动的软件架构,可能无法充分捕捉面向对象软件的特有属性。 #### 面向对象软件测试技术 面向对象软件测试则进一步细分,涵盖: 1. **方法测试**:针对单个方法的功能进行验证,...

    面向对象技术UML教程

    面向对象技术(Object-Oriented Technology,OOT)是一种软件开发方法,它基于“对象”的概念,将现实世界的问题映射到计算机程序中。UML(Unified Modeling Language),统一建模语言,是面向对象设计和分析的一种...

    高级软件架构设计(软件架构师参考)

    软件架构设计有多种分类,包括面向对象程序设计原则、领域模型、GRASP模式、UML建模、设计模式等。每种分类都有其特点和适用场景,软件架构师需要根据具体情况选择合适的设计模式和架构风格。 四、设计模式和软件...

    IBM面向对象软件开发和过程

    IBM作为一家全球知名的科技公司,提供了丰富的资源和教程来帮助开发者理解和应用面向对象技术。在这个IBM developerworks的教程系列中,我们可以期待深入探讨面向对象软件开发的核心概念和实践过程。 首先,面向...

    面向对象的软件开发过程.

    ### 面向对象的软件开发过程 #### 5.1 软件开发过程 **软件开发过程**指的是为了创建或更新软件产品而执行的一系列有序活动。这些活动包括但不限于软件描述、软件开发、软件有效性验证以及软件演进。不同软件开发...

    面向对象软件工程概述

    1. **软件架构设计**:通过将系统分解成多个相互协作的对象,可以构建更为灵活、易于维护的软件架构。 2. **组件化开发**:利用面向对象的继承和封装特性,可以构建可复用的软件组件,提高开发效率。 3. **分布式...

    面向对象软件工程方法学实践

    综上所述,面向对象软件工程方法学不仅包含编程技术,更涉及系统设计、需求分析和软件生命周期管理等多个方面。理解和掌握这些知识,对于软件开发人员来说,意味着能够更有效地处理复杂项目,提高软件的可靠性和可...

    面向对象技术和可视化建模

    面向对象技术的核心在于封装、继承和多态三大特性,它们为软件开发提供了强大的抽象机制,使得代码更易于管理和扩展。 - **封装**:指将对象的状态信息(数据)和行为(方法)结合在一起作为一个整体,并对外界隐藏...

    面向过程、面向对象、面向组件、面向服务软件架构的分析与比较.pdf

    随着技术的不断发展,软件架构经历了从面向过程到面向对象,再到面向组件和服务的演进,每一步都是对软件开发模式的抽象和优化。 1. 面向过程(Procedural Programming) 面向过程编程是一种以过程为中心的编程...

    UML软件工程组织面向对象实例文档

    1. **N层设计基础**:N层设计是一种常见的软件架构模式,通常包括表现层、业务逻辑层、数据访问层等。这种设计模式有助于提高系统的可维护性、可扩展性和解耦性。文档中的"**N层设计基础**"和其续篇,可能详细解释了...

    面向对象需求规格说明书

    该软件系统的架构是基于面向对象的方法,旨在提高软件系统的质量和可维护性。 4.2 硬件运行环境 该软件系统的硬件运行环境包括服务器、存储设备、网络设备等。 4.3 软件运行环境 该软件系统的软件运行环境包括...

Global site tag (gtag.js) - Google Analytics