您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 面向过程、面向对象、面向组件、面向服务软件架构的分析与比较
面向过程、面向对象、面向组件、面向服务软件架构的分析与比较摘要:软件开发从汇编语言、过程式语言、面向对象、面向组件发展到面向服务,每一步都体现了不断抽象、更加贴近业务实际的发展趋势。当前软件发展正处于从面向组件思想向面向服务思想的跨越阶段。本文深入分析了面向过程、面向对象、面向组件、面向服务架构,得出相关的优缺点。关键字:面向过程,面向对象,面向组件,面向服务1背景当前,信息系统的发展越来越明显地呈现出以下特征:软件系统越来越庞大,但是软件系统内部组成模块的规模却越来越小;软件系统的功能越来越复杂,但是系统的开放性却越来越好。信息系统软件正向着不依赖于特定的硬件和操作系统以及具有高度可重用性的方向发展。在这种情况下,人们对这种大型复杂软件产品的质量和开发速度都有了更严格的要求,传统的开发方法已经难以满足这种需求。首先,我们来分析一下几种传统的系统开发方法。1)自底向上法自底向上法出现于早期的计算机管理应用系统,即在进行系统分析和设计时自下而上,先从底层模块做起,然后逐步完成整个系统。自底向上法使得系统的开发易于适应组织机构真正的需要;有助于发现系统的增长需要,所获得的经验有助于下一阶段的开发,易于控制和管理。但由于方法的演变性质,自底向上法使系统难以实现其整体性;同时由于系统未进行全局规划,数据一致性和完整性难以保证;而且为了保证系统性能的需求,往往要重新调整,甚至重新设计系统。2)自顶向下法随着信息系统规划的扩大和对开发经验的总结与归纳,自顶向下的系统分析方法论逐步得到了发展和完善。自顶向下法要求开发者首先制定系统的总体规划,然后逐步分离出高度结构化的子系统,从上至下实现整个系统。运用这类方法可以为企业或机构MIS的中期或长期发展规划奠定基础,同时支持信息系统的整体性,为系统的总体规划、子系统的协调和通信提供保证。但它同样也存在缺点:对系统分析、设计人员要求较高,在大系统中,对下层系统的实施往往缺乏约束力,开发的周期长,系统复杂,成本较高。3)快速原型法原型法的核心是原型,即模型,是系统的早期可运行版本。随着用户或开发者对系统理解的加深,不断地对原型进行补充和细化。系统的定义是在逐步发现的过程中进行,这就是快速原型法的基本出发点。快速原型法的开发过程体现了不断迭代的快速修改过程,是一种动态定义技术。快速原型法的最大优点是能够大大减少软件系统的后期维护费用,使系统功能正确反映用户的需求。原型本身及这种方法的不足之处在于,如果原型本身功能设置不齐全、性能不好,会导致原型的设计和使用超出预期的花费和时间。另一个关键不足是原型法需要一个合适的软件开发环境,以便原型能直接转换成现实的系统。以上方法各有其优缺点。“自底向上”法只重局部而忽视了对整体的把握;“自顶向下”法开发周期长、见效慢、缺乏灵活性和适应性;快速原型法虽然具有很明显的优越性,但因其依赖于快速开发工具的支持,又不能不令许多系统开发者望而却步。因此通过对软件构建技术的研究,人们提出一种新的开发方法—基于组件的开发方法(eomponent一basedDevelopment,CBD)。采用CBD法开发系统的过程与搭积木的过程很类似,一般是先构筑系统的总体框架,然后构造各个组件,并依次把组件安装到系统中去。大部分的信息系统,在功能上有类似之处,因而利用软件的重用技术就可以把开发过程大大简化,CBD法的提出正是基于这种设想。通过这种方法,人们就把一个庞大的应用程序分成多个模块,每个模块保持一定的功能独立性,在协同工作时,通过相互之间的接口完成实际的任务。我们把每一个这样的模块称为组件,一个设计良好的应用系统往往被切分成一些组件,这些组件可以单独开发,单独编译,甚至单独调试和测试。当所有的组件开发完成后,把它们组合在一起就得到了完整的应用系统。当系统的软硬件环境发生变化或者用户的需求有所更改时,并不需要对所有的组件进行修改,而只需对受影响的组件进行修改,然后重新组合得到新的升级软件。组件技术是在模块化系统、结构化设计和面向对象技术的基础上发展起来的,被认为是面向对象技术之后的软件开发的标准方法体系。基于组件的软件工程(eomponent一basedSoftwareEngineering,CBsE)可提高软件的可重用性,使软件开发摆脱小作坊的工作模式,按照大规模的工业化方式进行,是软件开发方法发展的必然结果。从目前的技术发展趋势来看,基于复用的软件构造技术受到广泛关注;大规模应用系统集成技术成为主要技术热点;开放化、标准化成为主要潮流。随着信息技术的日益发展,现代企业对生产管理信息化的需求和依赖越来越明显,不断加大投入进行企业信息系统的建设。与此同时,随着硬件系统、操作系统平台的不断增加以及企业网络的飞速蔓延,软件系统间的异构度和复杂度也不断增加,这就使得如何整合彼此分散的自治信息系统以提高其利用效率成为企业信息化建设中必须面对的重要课题。在最初的信息化建设过程中,企业应用大多是用来替代重复性劳动的一些简单设计。当时并没有考虑到企业数据的集成,惟一的目标就是用计算机代替一些孤立的、体力性质的工作环节。然而,使用传统开发方法所形成的软件系统是刚性的,也就是说系统严格按照预先设定的目标进行设计,各功能模块按照确定的顺序执行,一旦开发完成并投入运行,就是固定不变的,不能在使用过程中进行调整和改变。如果数据结构或者业务逻辑发生了改变,就必须对所有相关的软件模块、数据源和消息逐个进行修改。为了应对这种局面,上世纪年代末兴起了企业应用集成的技术潮流,即通过定义企业私有的数据结构、通讯协议以及适配器接口,来联系横贯整个企业的异构系统、应用、数据源等,完成在企业内部的数据库、数据仓库以及其他重要的内部系统之间无缝地共享和交换数据的需要,从而消除信息孤岛。然而,随着这种方法的广泛实施和应用,被证实缺乏必要的灵活性和适应性,扩展性较差,从而无法取得与大量投入相匹配的收益效果。随着对信息整合的需求和认识的深入,近年来面向服务体系结构的概念逐渐走入人们的视野并被广泛接受。面向服务体系结构采用服务请求的方式,通过将业务应用功能以服务的形式提供给最终用户应用或其他服务,使软件系统向“柔性化”迈进了一大步。回顾软件开发的演化过程,我们可以看出面向服务体系结构的出现有其必然性:从最初面向机器语言的开发模式到面向过程的开发模式,软件开发通过独立于机器的程序语言如等不再依赖于不同平台的机器语言,实现了代码的重用;随后面向对象开发模式的出现使人们可以通过等语言以更接近现实的对象来表述完整的事物,即进行对象的重用;此后随着软件开发规模的扩大,在涉及分布式、异构等复杂特征的环境中,出现了基于等技术的面向组件模式,软件开发的重用也上升到组件的级别;进入世纪,当软件的开发面对更加复杂的环境和更加灵活多变的需求时,人们开始将应用程序以服务的形式公布出来供别人使用,而完全不需要去考虑这些业务服务运行在哪一个架构体系上,这就是面向服务的体系结构。相对于传统的代码重用,对象重用,和组件重用,面向服务体系结构更加着重于业务级的应用,即服务的重用。2面向过程的分析概述“面向过程”是一种以事件为中心的编程思想。就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。2.1面向过程的程序设计思想:程序=算法+数据结构。编写一个程序,算法是核心,算法是千变万化的,但是重点掌握其中一些基本的典型的算法以及算法思考的方法从而能推及一些其他的算法。2.1.1算法:算法就是为解题而编写程序的方法和步骤(1)解决问题的方法千变万化,也是思考的重点,需要掌握一些基本的方法及推导原理,具有推及其他方法的能力;(2)根据Qb的结构化特点,解决问题的基本步骤是顺序结构,即根据题目或问题要求顺序思考,在顺序解决问题过程中结合使用循环结构和条件(选择)结构,这可以看成是算法的程序结构;(3)具有将算法转换为程序模型的能力。2.1.2数据结构:在程序结构和方法中需要使用不同的数据结构:变量数组记录等。基本结构较简单,但是要具有根据问题,使用不同数据结构将解决问题的算法模型转换为程序模型的能力。比如一个单个的量我们设计一个不同类型的变量,具有一定联系和顺序的变量我们设计成一维数组,具有表结构我们可以设计成二位数组,或是具有两个相关的属性也使用二维数组,而三个属性或是多个二维数组构成三维数组。一般程序分为三大块,输入数据部分、处理数据部分,输出数据部分。每一块可以进行细分,采取模块化的设计思想。其中处理数据部分是核心。以上的解决问题的算法主要指处理数据部分。3有关面向对象“面向对象”(ObjectOriented,简称OO)是一种以事物为中心的编程思想。在面向对象分析设计方法中,基本的构成是类和对象。对象是封装了描述其属性的数据(对象的状态)以及可以对这些数据实施的操作(方法、行为),对象之间通过发送消息相互协作。类是一组相似对象的描述,描述了该类对象所具有的共同特征。面向对象的程序设计又提供了信息隐蔽、继承、多态和动态绑定等机制。3.1面向对象的方法学3.1.1软件建模方法碰到的问题和分析在计算机知识的学习和使用过程中,有很多接触到面向对象的概念,其中最主要的是面向对象的开发语言,使用类的概念对对象进行封装,元素或者实体用类来表示,定义类概念上的数据和操作方法。面向对象对程序的结构,代码功能上的封装和安全性都有很大的提高。但面向对象的概念,最为一种思想,其应用远不止是在计算机程序语言领域,其它的过程和领域中也有着比较广泛的应用。应用于软件开发方法上,面向对象的思想同样有很多好处。实际的软件应用开发中,互联网相关的开发是比较多的一类开发。其中有的系统可以很复杂。进行这类开发是,网页设计过程,经常需要对原有的代码进行编辑修改,但我们最多只能重复使用代码,把原有相近的代码复制一份,用到新的开发工作中去,而不能直接重复的使用原有的组件。而使用原来的代码有时会牵涉到对复制的代码进行改动,造成代码冗余的同时,可能因为对原来的代码模块不够熟悉,复制代码上的修改不够全面等原因,带来新的代码质量问题,采用面向对象的方法,通过构建和测试基本的对象,可以建立一个经过严格测试的代码库和可靠的组件,从而无需在以后的使用中对每个组件重新测试,而仅需对组件的整体进行测试。这种方法有助于加快开发的进度,提高代码的质量。面向对象的软件开发方法是解决软件设计过程中所出现问题的基础性的解决方案,它可以使我们无需做重复的工作,让我们的工作变得更有效率。即进行可重复使用性设计,软件的总体框架中可以设计在一起用同一个功能模块实现的不同部分也可以通过面向对象的设计,和模块的复用来实现重复利用,减少开得重复工作,提高开发效率。比如设计可重复使用的代码,一项功能可以有一段相对独立的代码来完成。如果这项功能在系统中多个位置调用到,这段代码就可以重复利用。60年代末开始,计算机软件开发领域,出现了“软件危机”,其主要表现是软件质量变差、成本及开发进度变得难以控制,软件产品的维护工作也变得很麻烦。这些变化是随着计算机应用的规模不断变大,领域范围不断广泛,软件应用不断复杂产生的,这一危机的根本原因在于结构化的方法强烈依赖于系统逻辑模型的完整性描述,传统的软件开发模式方法是由最简单和一般的情况出发,建立在系统逻辑模型完整性描述和系统是静态不会变动的基础之上,这样,传统的方法就难以做到适应系统的动态变化与扩展,使系统开发质量和效率都不高、而且容易产生开发到中间的系统由于碰到难以解决的问题而使前面的工作回滚,浪费资源甚至有时被迫取消系统的开发。开发的周期很长,费用也是很高,传统结构化设计方法中主要是是自顶而下的瀑布模式的开发方法,在其设计中,使数据结构的设计仅服从于当前功能实现的要求,为以后的扩充和重用设置了巨大的障碍。我们都知道,就软件开发而言,面向对象技术,简称的确带来革命性的变化,因为面向对象技术是一种完全崭新的软件开发和程序设计技术,其所开发的程序是面向对象程序,直接描述客观世界的对象及其相互关系。随着技术的飞速发展及计算机大规模的应用和普及,软件的应用范围越来越广
本文标题:面向过程、面向对象、面向组件、面向服务软件架构的分析与比较
链接地址:https://www.777doc.com/doc-4541094 .html