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

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

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

摘要:软件开发从汇编语言、过程式语言、面向对象、面向组件发展到面向服务,每一步都体现了不断抽象、更加贴近业务实际的发展趋势。当前软件发展正处于从面向组件思想向面向服务思想的跨越阶段。本文深入分析了面向过程、面向对象、面向组件、面向服务架构,得出相关的优缺点。

关键字:面向过程,面向对象,面向组件,面向服务

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有关面向对象

“面向对象”(Object Oriented,简称OO)是一种以事物为中心的编程思想。在面向对象分析设计方法中,基本的构成是类和对象。对象是封装了描述其属性的数据(对象的状态)以及可以对这些数据实施的操作(方法、行为),对象之间通过发送消息相互协作。类是一组相似对象的描述,描述了该类对象所具有的共同特征。面向对象的程序设计又提供了信息隐蔽、继承、多态和动态绑定等机制。

3.1 面向对象的方法学

3.1.1 软件建模方法碰到的问题和分析

在计算机知识的学习和使用过程中,有很多接触到面向对象的概念,其中最主要的是面向对象的开发语言,使用类的概念对对象进行封装,元素或者实体用类来表示,定义类概念上的数据和操作方法。面向对象对程序的结构,代码功能上的封装和安全性都有很大的提高。但面向对象的概念,最为一种思想,其应用远不止是在计算机程序语言领域,其它的过程和领域中也有着比较广泛的应用。应用于软件开发方法上,面向对象的思想同样有很多好处。实际的软件应用开发中,互联网相关的开发是比较多的一类开发。其中有的系统可以很复杂。进行这类开发是,网页设计过程,经常需要对原有的代码进行编辑修改,但我们最多只能重复使用代码,把原有相近的代码复制一份,用到新的开发工作中去,而不能直接重复的使用原有的组件。

而使用原来的代码有时会牵涉到对复制的代码进行改动,造成代码冗余的同时,可能因为对原来的代码模块不够熟悉,复制代码上的修改不够全面等原因,带来新的代码质量问题,采用面向对象的方法,通过构建和测试基本的对象,可以建立一个经过严格测试的代码库和可靠的组件,从而无需在以后的使用中对每个组件重新测试,而仅需对组件的整体进行测试。

这种方法有助于加快开发的进度,提高代码的质量。

面向对象的软件开发方法是解决软件设计过程中所出现问题的基础性的解决方案,它可以使我们无需做重复的工作,让我们的工作变得更有效率。即进行可重复使用性设计,软件的总体框架中可以设计在一起用同一个功能模块实现的不同部分也可以通过面向对象的设计,和模块的复用来实现重复利用,减少开得重复工作,提高开发效率。比如设计可重复使用的代码,一项功能可以有一段相对独立的代码来完成。如果这项功能在系统中多个位置调用到,这段代码就可以重复利用。

60年代末开始,计算机软件开发领域,出现了“软件危机”,其主要表现是软件质量变差、成本及开发进度变得难以控制,软件产品的维护工作也变得很麻烦。这些变化是随着计算机应用的规模不断变大,领域范围不断广泛,软件应用不断复杂产生的,这一危机的根本原因在于结构化的方法强烈依赖于系统逻辑模型的完整性描述,传统的软件开发模式方法是由最简单和一般的情况出发,建立在系统逻辑模型完整性描述和系统是静态不会变动的基础之上,这样,传统的方法就难以做到适应系统的动态变化与扩展,使系统开发质量和效率都不高、而且容易产生开发到中间的系统由于碰到难以解决的问题而使前面的工作回滚,浪费资源甚至有时被迫取消系统的开发。开发的周期很长,费用也是很高,传统结构化设计方法中主要是是自顶而下的瀑布模式的开发方法,在其设计中,使数据结构的设计仅服从于当前功能实现的要求,为以后的扩充和重用设置了巨大的障碍。

我们都知道,就软件开发而言,面向对象技术,简称的确带来革命性的变化,因为面向对象技术是一种完全崭新的软件开发和程序设计技术,其所开发的程序是面向对象程序,直接描述客观世界的对象及其相互关系。随着技术的飞速发展及计算机大规模的应用和普及,软件的应用范围越来越广,规模也是越来越大,要解决的问题越来越复杂,人们对软件的要求也越来越高,包括纯粹软件功能上的,同时还有软件易用方面上的,既要求实现一项功能,又要使得这项功能在使用上方便好用。传统的软件开发技术根本无法满足现实需要,只能通过引入像面向对象的思想和分析方法以及使用后来的开发方法来实现这样的软件开发。在开发过程中,传统的程序开发方法使用的是面向过程、按顺序进行的机制,其缺点是程序员始终要关心什么时候发生什么事情,要求程序员对开发的很对细节都很清楚,使得开发的设计工作和开发的具体实现没有很好的分离,应用程序的界面都需要程序员编写语句来实现,对于图形界面的应用程序,只有在程序运行时才能看到效果,一旦不满意,还需要修改程序,因而使得开发工作非常繁琐。

3.1.2 建模问题的分解和面向对象的方法学

面向对象设计方法的主要特点是封装性、继承性和多态性。封装是对对象内部的结构而言的,一个对象,在本文后面的部分会具体介绍面向对象开发方法中对象的感念。这里可以简单的把对象理解为构成系统的一个实体元素,该实体元素对应着系统中的某一部分元素,有着自身的一些属性和在这些属性上的一系列方法和行为。面向对象的开发方法同样是以封装的思想对系统作分解。一个复杂的系统在高的设计层次上可以看作是由几个元素组成。系统实现的所有功能都是由这些组成系统的元素来实现的。这些元素有自身的特征和他们的相互作用关系和行为,这些就构成了整个系统。

面向对象框架是构成一类特定领域软件可复用设计的一组相互协作的类。框架将设计分割成一系列的抽象类和具体类,并定义它们各自的责任,用它们之间的协作关系以及控制流程来规定应用程序的体系结构。框架预定义了这些设计参数,以便于应用程序设计者能集中精力于程序本身。框架记录了该特定领域的共同的设计决策,因此,框架更强调设计复用,尽管框架包含具体的立即可用的子类。应用程序的大部分设计和代码将来自于它所使用的框架或受其影响。

使用面向对象的分析方法和分层次的分析设计手段,系统就可以划分为相对独立的很多

模块,每个模块有着自己的设计和实现要求,大部分的开发人员都可以把注意力集中在模块的开发工作上去,有一部分工作人员负责最后模块的组织和集成。这样复杂的系统就可以分解成相对规模较小,结构简单的模块系统,如果有必要,可以在应用这样的方法对模块系统进行分解,使整个系统的结构清晰,而开发工作的进度也容易管理。

3.2 面向对象的思想

3.2.1 基本思想和对象的概念

面向对象的思想是把系统的关系看成是由组成系统的实体对象以及它们之间的关系组成。面向对象是自结构化方法以来对系统开发过程的最重要的变革,在世纪年代,它代替了结构化方法而成为软件开发的主要方法。这种开发策略基于下面的概念,即系统可以由一系列称作对象的可重用组件来构建。对象是面向对象系统的基本思维单位,与结构化方法里分离数据和功能不同,对象包含了它们两者,即面向对象的方法中没有把数据和数据上的方法操作分离开来,相反是把二者结合起来看。

对象的思想是具有一定的属性,在软件系统的设计中表现为数据和行为,即软件开发中定义在这些数据上的操作。它的实质是从系统组成的角度对系统进行分析,利用对象的单位作为基本构造单元,使开发中,设计出的软件系统能够变得模块化、可复用性能好、易于维护,降低开发维护费用,优化软件结构和提高软件质量。面向对象方法的基本思想是,从现实世界中客观存在的事物,即可以映射成软件开发中的对象的系统元素,出发来构造软件系统,并在系统中尽可能运用人类的自然思维方式。开发一个软件是为了解决某些问题。这些问题所涉及的业务范围称作该软件的问题域。面向对象方法强调直接以问题领域,即现实应用领域,中的事物为中心,并根据这些事物的本质特征,把它们抽象地表示为系统中的对象,作为系统的基本构成单位。这可以使系统直接地映射问题应用领域,保持问题域中事物及其相互关系的本来面貌。

现实的世界中,任何一个东西我们都可以看作是一个对象。一辆汽车可以是,一扇门可以看作是对象。汽车本身有颜色,大小,品牌,位置,运动与否,运动的方向,运动的速度等属性。再看一扇门,门有大小,安装在那个房间,门的形状和其它样式,门的状态是开,关了没锁上,还是锁上等属性。软件系统的开发都是针对于一个具体的现实应用问题而言的,只是有些应用情况比较复杂,对应的现实应用实体可能会很抽象,但不管是对应的现实应用的实体是不是具体的,这些实体都可以上述的汽车和门一样看作是对象。也就是说,我们要开发的一个系统可以看成是要用计算机管理一个现实的对象。

现实的对象到计算机软件开发过程中所讲的对象还经过了一个抽象和简化的过程。把一辆汽车放在计算机面前,计算机是很难直接去管理它,所以计算机要用自己可以识别的方式去表示这辆汽车,这个过程也就是把现实对象抽象成计算机软件概念上对象的过程。同时,这个过程也牵涉到对现实对象属性信息的简化。现实中的汽车其本身的属性是不可列举的,我们用再多的信息去记录一辆汽车,只要不是把这辆车拿去收藏,就很难根据记录信息去完全重现一辆完全没差别的汽车。从另外一个角度讲,在软件开发的过程中,软件系统的产品并不需要掌握现实对象的所有信息,也不能去掌握所有的信息。用计算机技术去完全模拟出来一个真人的结构和行为,这些的工作量可能让现在计算能力最强大的机器去做也很难完成。

而如果我们用一个软件来为汽车指路,告诉它在那个路口怎么走,最后到达目的地。这个应用里,汽车的信息之需要知道汽车的位置,也许一些与道路相关的信息,比如某段特殊的道路是否允许这个类型的汽车通过。而对于汽车的颜色,汽车的新旧程度,汽车的购买时间的等信息在这个软件应用中是用不到的,所以在把汽车抽象到软件开发过程中时,后面的信息就可以省略来简化对象。这样我们可以对软件开发过程中的对象有大体上的了解,和现实中的对象实体类似,软件的对象可以是对应着现实中的某个对象,也可以对应着软件过程

中抽象的一些内容,这些内容可以用对待现实中对象实体的方法相同对待。从实际的应用领域抽象和简化后得到软件应用开发中的对象。这些对象包含了软件系统所需要的各方面属性,同时在这些属性上的方法也包含在对象体中。

3.2.2 面向对象的结构和对象定义

面向对象的结构有模块化的特点。框架通过封装多变的实现细节于固定的接口之后,提高了软件的模块性。框架通过设计和实现的变化带来的影响进行局部化来改善应用程序的质量,这有助于理解和维护已有的软件,面向对象中的对象组建可以复用。框架提供的固定接口被定义成为对象相互关系和行为概念上的组件,并可被用来创造新的应用程序,这样就提高了可复用性。框架的可复用性利用了有经验的开发者在该特定领域中的专业知识和开发努力,避免了后继开发人员针对该领域中的同一问题和需求做重复的劳动。框架组件的复用能大幅度地提高后继开发人员的产量,同时还能够改善软件的质量、性能和可靠性。

面向对象的结构有可扩展的特征,框架通过提供显式的钩子方法,允许应用程序来扩展其固定接口,这样就提高了框架的扩展性。钩子方法系统地为框架的固定接口和由于不同的需求而产生的应用程序行为之间进行减少藕合。框架的这种扩展性对于保证及时地定制新的应用程序服务和特征是十分必要的。面向对象的设计。面向对象的设计是对一个具体的实现应用面向对象方法,其中重要的一个步骤是对象的定义和对象的表示和实现开发做出系统的体系结构图。要求首先对系统的流程和运行方式有比较清楚的了解。把系统表示成不同的元素对象和这些对象之间的行为和相互作用。

定义元素对象之间的联系行为,一个对象在外面看来的样子,以及外界可以对之进行的操作。同时联系行为包括对象之间的作用行为集合。什么时候,什么条件下对象对另外的对象发出特定请求。这样,完成了系统对象的定义,系统地开发工作就成为很多个对象的开发工作了。如果定义好的对象还是很复杂,对象的定义可以在对定义好的对象继续进行,直到对象的复杂程度较小,对象可以用较简单和明显的开发方法来实现为止。这样就进入对象的实现和开发过程中了。对象的定义给出了对象的接口和对象的行为,在对象的开发中要做的工作就是实现对象的定义。根据对象的定义设计出对象的属性,然后通过对这些属性的操作来实现对象定义要求的方法。这些完成之后就可以通过一些模拟测试,检查对象自身开发中的质量和实现进度控制。

3.3 面向对象的开发

3.3.1 面向对象的相关概念

面向对象方法从内部结构上模拟客观世界。对象是客观世界对象的直接映射符合人们的思维方式,在面向对象的开发模型中分析、设计和编程阶段是重叠的核心概念“对象”在开发的各个阶段均被使用,相对结构化方法来说可以减少工作量和映射误差。面向对象方法中对象不仅包括数据,还包括对数据的操作方法对象之间的通讯是通过发送消息来完成的,由于采用了继承的概念,有利于软件重用所建模型的稳定性比结构化方法高。它更接近人们的思维习惯,所以容易让人们接受。面向对象的软件开发方法利用这种在思维上和人们习惯的相近的特点,是对系统的分析和设计更容易理解,和对系统的结构设计和模块划分变得容易和自然。面向对象的软件开发方法通过对实际应用系统的对象表示,然后再对用对象表示的系统进行实现,来完成软件开发的设计和实现过程。该方法中涉及到的内容包括,用对象化在软件设计中表示应用系统,对实际系统进行抽象,用对象和对象间的静态相互关系表示系统的框架,用对象间的动作和行为来表示系统的行为。

系统的对象表示,一个实际的应用系统,通过计算机软件方式的抽象和简化之后,映射到一个软件范围下的对象上面。这一过程是软件开发中的系统的对象表示。这一概念是把系统作为整体来进行对象表示的,我们要开发的一个系统,可以看成是一个对象,用对象的概念表示,它有自身的关于系统应用的属性,和相应的这些属性上的操作。这些操作和方法可

能会改变系统对象的属性的状态,而属性状态的改变通过一些操作方法向外提供接口或者是服务。

系统结构的对象化,这个概念的含义是把系统的结构,用一系列对象和这些对象之间的相互关系来表示。系统的整体对象下面可以由多个相互联系的分对象组成。这里的对象之间的关系是指静态的关系,在某一时刻,这些关系可能是处在一定状态,随着时间的变化和系统行为的进行,这些关系也会发生变化。在系统的关系里,组成系统结构的这些对象可以是系统包含的各个子系统,这些是系统结构的组成要素,同时它们之间的关系也是构成系统结构的重要组成部分。对象化系统的结构,就包括结构的对象表示和表示对象静态关系。

系统行为的对象化,这个过程是对系统中对象行为的定义。依据系统的行为,在一定的比例条件下,系统的对象需要对外界的输入和自身的状态采取一定的行为,使得系统的整体行为按照预定的要求进行。这部分内容是系统对象之间关系的动态变化,一个整体行为可能会涉及到很多个相互联系的对象,对象自身的行为以及对象通过的其它对象接口的调用或者是使用其它对象提供的服务来从组成对象级别的动态变化,实现系统的行为。

3.3.2 面向对象的开发过程

采用面向实体视角来设计过程才更符合面向对象思想的特点,并能够建立产品在整个生命周期中的渐进目标,产品的阶段性里程碑。该里程碑是产品向完整内容迈进的一次渐进,渐进的内容能够事先被开发的过程清晰定义,并能够在里程碑点处进行验证。采用阶段来分组活动并基于里程碑来实施进度控制的项目管理技术对面向对象的开发依然有效,只不过面向对象的过程的阶段划分与活动定义要以产品为中心进行设计。阶段不再是时序的概念,而是一组紧密祸合的活动,阶段之间的关系可以是顺序、并行与交错的关系。基于上面的分析,面向对象软件开发过程中,设计的关键是标识逻辑上相对独立且物理上可区分的产品实体,分析实现产品内容演进的活动,建立产品阶段性渐进的里程碑目标。软件开发过程产生的工作产品分两大类管理类和产品类。面向对象的过程产生的产品类产品如下:业务描述:由业务调研与分析获得的业务需求描述。

产品范围描述:以规格化的方式清晰定义产品应实现的业务需求项,客户与开发者双方的期望包含质量要求、承诺和项目约束等。

用例:定义产品的功能需求。

原型:体现界面交互的产品原型。

验收标准体:现产品能够很好支持业务需要的产品验收测试标准。

对象和对象关系视图:定义产品的数据需求与内部结构组成。

交互图:分为系统、对象与对象之间以及单个对象内部三个级别建模和设计。

客户-目标图:刻画对象之间的调用与依赖关系,是架构设计与集成测试设计。的依据源码及其规格——源程序及其内含的规格说明

测试文档:包含集成测试、产品测试以及验收测试的测试用例及其结果,在路径覆盖率上和边缘情况测试上都有一定要求。

最终交付的文档包括维护文档,用户参考手册,安装与管理指南,相关培训资料以及速查手册等。

基于面向对象开发方法的应用过程重点包括系统的对象表示,系统结构的对象化和系统行为的对象化等内容。软件开发的难点在于系统分析与设计,而面向对象的过程的不确定性更加大了该项工作对人员依赖的风险。因此,面向对象的软件开发过程的关键内容在于系统的分析系统结构的对象化设计。面向对象方法的工作流程过程中,根据活动的祸合程度以及要开发软件项目的过程和管理颗粒度的需要,开发的工作可以是由几个相互连接的大的阶段和更多的相对比较独立的小的开发阶段组成。每个开发阶段可以设定用于检验开发结果的历程别。相应的软件过程,软件生命周期过程,其中定义了阶段之间的执行关系以及应交付和

评审的里程碑产品,依据阶段进行项目进度控制是项目管理的常规方法,管理者可依据项目管理的颗粒度要求来选择大阶段或者子阶段作为项目的监视点。面向对象方法中的领域分析是在给定的领域中,通过分析找出对所有应用程序来说都共同的类和对象,建立领域模型,领域模型中包含了该领域中的需求关系,领域中的相关概念及它们之间的关系,该模型应该集中在领域的实体上而不是实现细节。对软件开发需求的分析和确认,最主要的目标是为了捕获所有有效的需求,给出一个能满足这些需求的理想系统并结合领域分析,找出系统的共同点,给出系统需求说明书,文档化的需求和记录需求变更。

面向对象的框架设计包括框架体系结构设计和详细设计。在体系结构设计阶段,结合设计模式,将定义许多抽象类,使得整个系统结构的设计支持更灵活的变化。在详细设计阶段,将描述在体系结构设计中抽象出来的类,并精确地定义它们。面向对象方法中的框架的实现即对框架的抽象类和具体类进行编码,一般采用自顶至下的开发方法。在实现过程中,还必须定义一个完整的实现标准,如编码的统一性。这样做可以使得开发出来的框架更易于被应用程序开发人员所理解和利用。设计后的应用和实现是通过对应用程序进行分析和设计,得到应用程序在该领域的特殊要求,从而扩展框架来实现该应用程序。这一阶段,需要应用程序开发人员对框架进行系统的学习,从而能够有效的使用框架来进行开发。

开发的过程中测试是不可少的一部分,该过程一般分为单元测试和集成测试。其中都可以运用面向对象的方法来设计测试用例和执行测试。一个单元是指某个操作、类或包含多个类的模块、甚至整个框架。单元测试又分为结构测试和功能测试。结构测试需要熟悉该单元的内部结构,对单元的代码和分支结构进行测试,主要是验证单元的可靠性。而功能测试则不关心该单元的内部结构,而主要测试单元对特定输入的响应,检查是否符合该单元的功能需求。集成测试则测试这些软件单元集成在一起时,是否能满足整个程序的功能要求。同其它的软件开发过程一样,以上所述的阶段都是相互重叠、不断反复的过程。

4 面向过程与面向对象的区别

面向过程其实是最为实际的一种思考方式,就是算面向对象的方法也是含有面向过程的思想。可以说面向过程是一种基础的方法。它考虑的是实际的实现。一般的面向过程是从上往下步步求精。所以面向过程最重要的是模块化的思想方法。对比较面向对象,面向对象的方法主要是把事物给对象化,对象包括属性与行为。当程序规模不是很大时,面向过程的方法还会体现出一种优势,因为程序的流程很清楚,按着模块与函数的方法可以很好的组织。比如拿学生早上起来的事情来说说这种面向过程吧。粗略的可以将过程拟为:

(1)起床

(2)穿衣

(3)洗脸刷牙

(4)去学校

而这4步就是一步一步的完成,它的顺序很重要,你只须一个一个的实现就行了。而如果是用面向对象的方法的话,可能就只抽象出一个学生的类,它包括这四个方法,但是具体的顺序就不能体现出来。

5 基于组件的复杂系统开发

基于组件的软件开发方法(Co叩onentBasedDevelopment)被认为是面向对象的软件工程(ooSE,object-orientedsoftwareEngineering)之后的软件开发的标准方法体系。

5.1 基于组件的软件开发方法综述

CBD的基本思想就是“分治”,强调将系统分解成松散藕合的组件并独立开发,然后通过接口及脚本语言将它们连接起来。CBD的过程可以简单描述为寻找组件和使用组件装配系统两个阶段,其中寻找组件有两种途径:开发和重用。开发是指系统设计人员针对本身的特征构造组件并实现之,而重用组件则强调使用以前开发过的组件。

基于组件的软件开发方法以其重要性和复杂性在学术上引起了广泛的研究。自上世纪90年代以来,出现了基于组件的系统分析和设计方法。面向对象技术的创始人之一Jacobson 从理论上进行了探讨,他将CBSE的过程分为Applicationfamilyengineering、Componentsystemengineering和Applieationsystemengineering三步,首先构造完整、分层的体系结构,然后从体系结构中获取一般性和可变性的需求,构造组件系统,最后使用组件系统实现应用系统。

OMT(objeetModelingTechnology)中提出的一种基于UML(UnifiedMOdelingLanguage)的Catalysis分析方法更具有可操作性。该方法使用了用例图、交互图、顺序图和组件图等UML的概念精确地描述系统分析与设计过程中的每一个细节,并引入了框架和模式的概念。这种方法充分利用了UML建模的优点。

Brown也给出了一种基于合作场景的CBD开发方法,通过研究和分析系统中各种对象之间的合作关系构造出具有较低藕合度的场景,并从中提取相关的角色和类型,构造接口,然后将接口分配到不同的组件以形成组件库,使用者就可以利用组件构造应用系统了。

在实际的软件开发过程中,并不是所有的组件都是由系统开发人员自己实现的。开发者可以充分依赖大量已有的通用商业组件(Componen七off一the一Shelf, COTS)作为新系统开发的基础。这方面的研究重点在于对COTS组件的识别、评估、选择、修改和集成,从而达到缩短开发周期、降低开发费用的目的。

大体上,CBD方法可以将一个软件系统的开发分为3个阶段:应用系统的分析与设计、组件的开发、组件的装配。其中,系统分析和设计是一个领域工程,由领域问题专家根据系统需求建立系统模型,再由系统分析及设计人员对该模型进一步完善,刻画出系统的总体结构,按照组件开发规则定义系统所需的所有组件以及组件的接口说明和组件之间的交互协议;组件开发也叫组件生产,可以重新设计组件,可以将现有的软件封装成组件,也可以从外界(市场或互联网)直接获得,通过这些方式得到的组件均装入组件库中统一管理;组件的装配就是按照应用系统设计中提供的结构,从组件库中选取合适的组件,按照组件接口约定,用组装工具完成应用系统的连接与合成,最后对系统进行各种测试(如集成测试和系统测试等)。这种开发过程如图:

基于组件的软件开发技术从根本上改变了软件的生产方式,与传统开发方法相比,它具有很明显的优势:

①提高了软件的重用率,保护了已有的投资。开发者可以将原有软件运用组件技术封装起来,通过标准的组件接口将旧的程序代码进行包装制作成可以重用的组件,从而保护了软件的投资。

②降低了对系统开发者的要求,使他们更好地关注业务系统,可以用业务术语,而不是计算机术语来规划、设计和建造应用系统。

③使开发的系统更加灵活,更加便于维护和升级。组件的模块化程度高,模块藕合度低,开发者在对软件进行改进时,往往只需增加新的接口即可。

④易于学习和使用。组件的开发一般由组件设计、生产和组装等过程组成,不同岗位的开发者分工明确、术业有专攻,大量的开发人员可以快速投入基于组件的开发过程中。

5.2 基于组件的复杂系统的主架构设计

在基于组件的软件开发过程中,主架构设计是承接于需求分析的。主架构是保证面向对象的软件项目成功的一个至关重要的要素,它的主要作用是让团队汇聚思想,化解各人需求的冲突,从而创造出软件的一体性(unity)。尤其是基于组件的软件系统,各组件的设计人员对于组件将派上用场的整体环境 (eontext)的基本假设(assumption)和想象如果不能统一,就非常难以将之组装成为一个完美的整体(thewh01e)。TomLove说“软件项目会失败的原因是其需要许多的创作、许多分开设计的组件、许多人员参与、以及跟现有软硬体系统的许多连接点。”由此我们可以知道,主架构的稳定和灵活是保证软件项目成功的关键。

5.3 主架构概述

关于主架构的定义,一直都没有出现过统一的答案。目前人们最常引用的定义是:

Softwarearehiteeture={Eleoents、Forms、Rational/ConstraintS}

软件主架构={组件元素、元素的合作模式、基本需求及限制}

就是说:将各组件元素以某种理想的合作模式组织起来,以达成系统的基本功能和限制。所以主架构的叙述(architectural descriPtion)必须说明各组件的特性;以什么方式结合在一起,共同支持系统的功能;并说明有关的条件或限制。

Garlan认为:典型的主架构设计是要描述系统如何分解成为许多组件元素,并说明元素之间的沟通方式。其中强调的是要在组件被实际代码实现 (imPlement)之前,首先理清组件的界限(boundary)及其结合方式。所以主架构的叙述包含一个或一组抽象模式,是与组件的实现分开的。Mowbray说:实作是实际去写出一些较细致的组件;而主架构是抽象地定义组件之间的介面,让开发者和维护者知道如何将组件组装在一起。从上述观点可了解到,设计主架构时,将设计一组模式描述系统的分解 (deeomposition)、组件的组合(eomposition),并且有风格(style)及美感。

Mowbray说:实作是实际去写出一些较细致的组件;而主架构是抽象地定义组件之间的介面,让开发者和维护者知道如何将组件组装在一起。

从上述观点可了解到,设计主架构时,将设计一组模式描述系统的分解(deeomposition)、组件的组合(eomposition),并且有风格(style)及美感 (aestheticS)。此外,主架构也必须确保系统能够合乎软件所运行的电脑硬件设施的条件或限制,才能建立出真正可用的系统。主架构必须考虑到软件的静态组织结构,也得同时顾虑到软件如何在电脑系统之中表现出应有的功能。也就是说,主架构必须包含模式来表达各组件元素如何安置在电脑网络上执行,以及实际的沟通情形。

5.4 基于组件系统与多层体系架构

系统架构定义一个应用程序的各个模块之间如何相互作用,以及每个模块负责执行什么样的功能。从纯功能的观点来看,大多数应用系统主要处理以下三种任务:获得用户输入数

据、按预定的规则处理数据、对数据进行存储管理。应用程序体系结构模型主要是根据在用户与数据之间具有的层次来划分的,每一层次一般都运行在不同的进程空间内。

结构模型主要有三种:单层结构、两层结构和多层结构。单层结构较为简单,应用的范围有限,不适合于大型的复杂的企业应用。在这里,从是否适合于建立基于组件的复杂企业系统的角度,我们来讨论两层体系结构和三层体系结构特点。两层体系结构C/S(Client/Server)在很长的一段时间内是信息系统首选的架构,即便在现在,仍被广泛的应用。但是随着基于组件的系统的流行以及系统的复杂度的增加,两层体系结构已经不能胜任艰巨的任务。可以说,构建稳健的基于组件的系统和多层体系架构是密不可分。随着组件的个数,以及客户端数目逐渐增加,两层系统常会崩溃。当系统随着时日而演变成长,其有关的组件数目会逐渐增加,跟服务器的连结(conneCtion)数目迅速上升,对服务器的负荷压力也增大。此外,当同时间上线的客户端的个数增加时,更是雪上加霜,万一有些客户端占住某些cormection不放,就会严重地浪费服务器的资源,也增加网络上的传输负荷。在两层系统里,企业组件如果不属于客户端,就是寄居于数据库服务器之下,无法妥善管理,且对数据库的连结也无法有效管理,在网络上的呼叫 (client对Server的RPCcan或HTTP)次数及对服务器和数据库的连结时间的占用全决定在客户端手中,多重原因促成服务器的负担,造成服务器宝贵资源的浪费,整体系统的性能也就迅速下降。

相对于两层体系架构,三层式架构的最大优点是:弹性。有弹性的信息系统能让企业确实掌握多样化的商机。有弹性的系统能随时吸收企业的新需求,并充分运用企业的电脑设备资源,及时支持企业新的营运所需。三层架构让下述三项新潮的技术能够各自发挥潜能,并互相支援:

1、对象及组件(objeet&component)技术

此技术让企业组件更具有弹性,能更有效的管理,更易于修正及维护。当新的需求呈现时,通过面向对象的分析和设计(OOA&D)的过程,能井然有序地调整组件以支援系统的新需求。

2、Web技术

此技术让企业组件能通过工internet/Intrant而让无限远方的客户端来使用,大大促进组件重用的机会并降低成本。这项技术让我们突破地域空间的限制而无处不及。

3、Transaction技术

此技术让工nternet/ntrant上的客户端能在上千客户端同时使用的情形之下,仍能获得良好的服务。虽然组件技术和Web技术让我们掌握天时和地利,但若在同一时间里只能让少数人同时来使用企业应用,重用的效果仍未尽完美。加上Transacti。npr。Cessing的技术,可让千人甚至更多的客户端来同时使用企业应用,因而创造了人和的境界。

此技术让工nternet八ntrant上的客户端能在上千客户端同时使用的情形之下,仍能获得良好的服务。虽然组件技术和Web技术让我们掌握天时和地利,但若在同一时间里只能让少数人同时来使用企业应用,重用的效果仍未尽完美。加上Transacti。npr。Cessing 的技术,可让千人甚至更多的客户端来同时使用企业应用,因而创造了人和的境界。

在多层体系中,各层次按照以下方式进行划分,实现明确分工。瘦客户提供了简洁的人机交互界面,完成数据的输入/输出;业务服务层完成业务逻辑,实现客户与数据库对话的桥梁。同时,在这一层中,还应该实现分布式管理、负载均衡、Fail/Rec。ver、安全隔离等;数据服务层:提供数据的存储服务,一般就是数据库系统。

多层分布式体系的主要特点总结如下:

1、安全性:中间层隔离了客户直接对数据服务器的访问,保护了数据库的安全;

2、稳定性:对于要求24*7工作的业务系统,多层分布式体系提供了更可靠的稳定性:

a.中间层缓冲客户端与数据库的实际连接。

b.Fail/Recover机制能够在一台服务器当机的情况下,透明地把客户端工作转移到其他具有同样业务功能的服务上。

3、易维护:由于业务逻辑在中间服务器,当业务规则变化后,客户端程序基本不做改动;

4、快速响应:通过负载均衡以及中间层缓存数据能力,可以提高对客户端的响应速度;

5、系统扩展灵活:基于多层分布体系,当业务增大时,可以在中间层部署更多的应用服务器,提高对客户端的响应,而所有变化对客户端透明。

6 面向服务

面向服务体系结构是一个系统架构层次的概念,其中所有的功能或服务都使用描述语言加以定义,并且各自的接口都可以通过网络进行发现。这类接口采用独立方式定义,不受服务实现所在的硬件平台、操作系统和编程语言的影响。

6.1 面向服务体系结构的定义

顾能公司最早提出了的思想:“面向服务的架构是一种基于客户机服务器模式的软件设计方法,其中的应用由服务提供者和服务使用者也称为客户机或服务请求者双方组成”。为描述的远景目标是:使企业信息系统变得更有弹性,以更快地响应业务部门的需求,实现实时企业模式。

而对的定义为:面向服务的体系结构是一个组件模型,它将应用程序的不同功能单元称为服务通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。

6.2 SOA简介

面向服务架构(SOA)自 2000 年之后,受到越来越多大型企业的关和追捧,成为企业 IT 处理领域中一个具有特殊地位的角色。

企业界之所以如此青睐 SOA,有个重要原因就是——在过去的数十年间,大型企业在 IT 领域逐渐累积了大量各式各样的软件应用。这些应用往往随着 IT 技术的变迁,使用不同的语言开发,运行在不同的平台,并且还可能经过数次不同目的的结构性修整,由此加大了对这些应用调用的难度。

而反观今天的 IT 技术,网络技术渗透到世界的各个角落,连接起了各色的信息。商业领域的外部项目,供应链与销售链的协同工作和不断增加的竞争压力,使得企业加速了信息数据的交换,以换取更有效的产品生产。然而,前述的大量遗留软件应用以及其带来的高额接口制造花费,大大阻碍了这种要求高效的信息交流。

正是在这种背景下 SOA 孕育而生。相对于其他的软件架构,它能够非常简单有效地使企业在技术层面做出快速反应,保证信息交换的安全性与正确性。

6.2.1 SOA定义

关于软件架构的定义,在各种文献中有不同的定义。例如,“软件架构是对于系统构件的横向和纵向结构的整理,以及构件关系的描述”,“软件架构是一个软件系统的结构,描述了其中各个构件、构件的对外属性以及构件之间的关系”。从中可以看到,软件架构最重要的定义核心是构件结构、构件属性以及构件之间的关系。

软件架构的选择在软件开发过程中扮演了至关重要的角色。它决定了软件的可修改性、可管理型、可靠性以及运行性能。一个不出色的软件架构,可能导致在之后的开发过程中大量的金钱花费和时间开销。

面向服务架构的核心是对于服务的使用,以满足开发者对于软件结构不断增加的要求。按照之前对于软件架构的定义,面向服务架构可以由以下几个关键构件组成:

1) 前端应用

这里主要指服务的调用者,可以类比于客户端-服务器架构中的客户端。

2) 服务

服务是 SOA 的核心,其表示了一组封装好了的应用逻辑,提供对外规范一致的接口,能够互相通讯,并且互相关联。

3) 服务供应平台

服务供应平台保障了服务之间的通讯通道,提供了服务调用的底层技术保障。严格地说,它是 SOA 中的一层,可能由多个构件组成,例如企业服务总线(ESB)、服务仓库等。

4) 服务管理平台

管理平台构建在供应平台之上,在基本 SOA 中,并没有被明确定义。但是随着服务数量的快速增加、对于服务质量要求的提高,管理平台成为SOA 初期部署之后,下一个最急需解决的技术问题。

6.2.2 服务的核心概念与特征

SOA 中,服务被定义为:“一个封SOA 中,服务被定义为:“一个封装的无状态的功能,它能够接受来自于前端或者其他服务的请求,并返回一个或多个回应。其中,请求和回应的形式应该以某种形式定义。”[31]由此,我们可以总结出,服务的定义由以下几点核心内容:

1) 服务是封装的逻辑

服务作为一个个体概念,需要保持其独立性。服务是针对某一业务任务、业务实体或一些其他逻辑或大或小的逻辑功能所进行的封装,同时服务可以代表的语义范围和颗粒度也是可变的。其中,粗颗粒度的服务逻辑往往包含其他服务提供的逻辑。对于封装逻辑的服务而言,他们可以参与各个级别的企业业务活动。在一种清晰的关系下,这些服务被其使用者所调用。

2) 服务是交互的

在 SOA 内,服务可以用于其他服务或程序。作为调用服务的基础,服务之间必须通过特定的服务合同(服务描述)相互知晓,并且达成理解上的一致。最基本的服务合同描述了服务的名称和服务的位置,以及要求交互的数据。服务用服务描述的方式导致了松散耦合的分类关系。

3) 服务有特定的通信方式服务为了相互作用并完成一些有意义的任务而必须交互信息。因此需要一个可以保留其松散耦合关系的通信框架。在这个框架下,服务进行消息传递。

服务以自己的方式发送一个消息后,他对消息此后发生的一切都将失去控制。这意味着,消息和服务一样有自治性——其中要具备足够的智能以自控其处理逻辑部分。在现有的实现中,服务通信采用和过去分布式系统类似的架构,即由消息和处理其逻辑的接口所构成。

以上定义,总结了服务的三个核心概念:设计实现、描述和消息。服务将其控制的逻辑进行封装,对外遵循一个通信协议,只保持了最少服务特定信息的接口。使其即维护了最小的依赖关系,又能够反复地被使用,以形成组合服务。正是这三点,决定了 SOA 的总体特征:松散耦合、复用性强、灵活度高。

1) 松耦合性

构建松耦合服务的技术架构的最大优势在于他所形成的服务逻辑的独立性和自主性。服务只是在其接口上互相知晓,而在内部却是独立发展。这给企业带来的好处主要体现在,使得业务建模和技术设计分离。其影响已远远超出于技术领域,而是将整个企业部门职能划分的更为清晰,减少了部门间的互相干扰,提高了整体的运行效率。

2) 组织敏捷性

松耦合带来的是企业各单元的快速应变能力的提高。企业组织适应变化的能力决定了其应对突发事件的效率。组织业务逻辑的变化会影响其底层基本的技术实现,而反之,底层技

术基础的变化同样会影响使用其的上层业务逻辑。企业的这两部分之间存在的依赖越多,变化导致的消耗和代价就越大。SOA 通过标准化接口使其依赖最小化,并增强对变化的整体反应力。

3) 复用性

服务间使用统一接口互相交互调用,使得企业 IT 组件呈现高度的复用性。其表现为:对于根植于不同平台、采用不同技术开发的企业遗留应用,不需要重新开发就能被再次使用;对于企业没有能力开发完成的功能,可以以最小的代价“外包”第三方的应用,但同时又不存在强依赖关系;在面向服务设计的指导下,企业将来的应用开发也将遵循高复用性标准。这些都将直接地减少企业成本,避免发重复性的工作。

6.2.3 Web服务的定义与体系技术

Web 服务是由 URI 标识的软件系统,W3C 对 Web 服务的定义是:由URI 标识的软件应用,其接口和绑定可以用 XML 来定义和描述并且可以被发现,与其他软件通过基于 Internet 的协议以 XML 消息交换的方式直接交互。

Web 服务作为一种特殊的服务实现继承了服务的自治性、开放性、自描述性和实现无关性,同时 Web 服务是通过 Internet 实现远程访问的。理论上将,SOA 只是一种软件结构风格,以服务为中心,其中的服务并没有特指是 Web 服务。然而由于 Internet 网络的迅速发展,

的发展。

由定义可以看出,Web 服务主要包含了三项核心技术:

(1)通信:Web 服务之间的通信是通过互相传递符合 SOAP 协议的XML 消息实现的,其包含一个真正的数据负载,和一个附件任意控制信息的头信息。

(2)描述:Web 服务的接口和绑定由 WSDL 来描述和定义,其中定义了 Web 服务的功能以及其访问方式;

(3)发布和发现:Web 服务消费者可以通过中介发现 Web 服务,而Web 服务的元信息要发布到中介上,UDDI 是目前主流的 Web 服务注册中心规范。

Web 服务技术体系的最下层的传输协议是被 Internet 或者其他分布式计算平台广泛使用的标准,这表明 Web 服务技术可以构架在多种分布式平台之上。其上的部分,包括 SOAP、WSDL 和 UDDI,构成了 Web 服务的核心技术规范,其他规范是在它们的基础上扩展形成的。消息扩展规范的主要作用是提供服务实例寻址以及在消息层提供可靠、安全、事务等质量保证。最上层是服务组合规范和服务协作规范。服务组合规范提供了一种服务编程语言,用该语言可以组合基本服务形成支持业务过程的复合服务。服务协作规范提供了定义服务之间协

作协议的语言。另外,安全和管理规范也是 Web 服务技术不可或缺的重要部分,它们是所有层次都需要的。

6.3 面向服务体系结构的优点

采用面向服务体系结构将为企业带来几方面的好处:

1)充分利用现有的信息系统

面向服务体系结构提供了一个抽象层,通过这个抽象层,企业可以继续利用它在现有信息系统方面的投资,方法是将这些现有的资产包装成提供各种功能的服务。企业可以继续从现有的资源中获取价值,而不必从头开始构建。

2)更易于集成和管理

在面向服务体系结构中,集成点是服务而不是具体实现。这为服务的使用者提供了透明性,并将基础设施和实现所发生的改变带来的影响降到最低限度。通过提供基于现有资源和资产构建的服务,集成变得更加易于管理,因为复杂性被隔离了。当更多的企业一起协作提供价值链时,这就变得更加重要。

3)更快的响应和部署速度

从现有服务中组合新服务的能力为企业灵活地响应多变的业务需求提供了独特的优势。通过利用现有的组件和服务,可以减少完成软件开发生命周期包括收集需求、进行设计、开发和测试所需的时间。这使得企业可以快速地开发新的业务服务,并允许信息系统迅速地对改变做出响应。

4)增加重用减少成本

通过以松散耦合的方式公开业务服务,企业可以根据业务要求更轻松地使用和组合服务。这意味着企业对信息系统资源的重用和信息成本的降低。

5)更易于用户使用

面向服务体系结构的业务流程是由一系列业务服务组成的,可以更轻松地创建、修改和管理它来满足不同时期的需要。面向服务体系结构为企业提供了灵活性和响应能力,这对于企业的生存和发展来说是十分重要的。

6.4 SOA与Web服务的不足

尽管 SOA 提供了良好的技术手段,但是要完全满足动态业务协同的需求,依旧还有许多需要深入研究和扩展的地方,例如:

1)Web 服务缺乏语义表达的能力,查询和集成服务以构造各种协同业务应用依旧需要人工去做不少的开发工作;

2)Web 服务缺乏自主性和相互协同的能力: Web 服务只能被外界调用,无法依据各种变化主动发出通知或者请求;Web 服务之间无法直接协同,而必须通过流程方式进行组合,从而影响了服务系统的响应能力和柔性;

3)服务过程模型不能满足动态业务环境要求:通过流程定义语言如BPEL4WS,BPML 等将服务聚合在一起,作为一个复合服务提供给用户是实现协同业务应用开发的有效手段,也是 Web 服务的一大优点。然而,现代企业环境中,支持 ad-hoc 过程和动态过程模型对一个成功的企业而言是必不可少的,目前的服务流程在这一方面是不够的;

4)支持用户进行个性化协同业务开发的能力不足:单个服务的业务逻辑封装在代码中,无法提供个性化业务定制能力;复合服务通过依附在服务之间逻辑流上的控制条件在各个实例运行时可以表现出某些区别,但是这种区别非常有限,也称不上可以支持个性化业务开发,目前缺乏方便而有效的支持用户直接进行协同业务应用开发的机制。上述不足不仅仅影响协同管理平台的开发,也制约着该技术在其它领域的应用。其核心问题是:缺乏数据、过程和消息语义描述的 SOA 无法满足灵活和动态的要求。服务组合基本还是基于 WSDL,但其并不提供足够的语义描述,自动处理的能力也大大受限。因此,学术界和工业界目前正在开展大

量的研究工作,以增强 Web 服务的功能:例如,通过 OWL-S扩展 Web 服务的语义表达能力;引入 Agent 来进行服务匹配、选择和复合;通过在运行时为各个活动动态选择服务的服务过程,提高过程模型的适应性;利用人工智能和规划的方法进行自动服务复合等等。随着研究的深入,业界逐渐将目光转移到了事件驱动架构(EDA)上,试图将 SOA 与 EDA 整合以获得最为有效的解决方案。

7 总结:

本文对面向过程、面向对象、面向组件、面向服务的分析与总结,深入分析了面对象,以及与面向过程的区别,对面向组件、面向服务展开了深入的讨论,得出相应的优点与缺点。同时阐述了面向服务体系结构与web服务的理论基础。

8 参考文献:

[1] 徐远.基于面向服务体系结构的企业服务总线研究与实现:[硕士论文]。

[2] 李明.面向对象开发方法中可重用组件技术的研究:[硕士论文]

[3] 邵维忠杨芙清,面向对象的系统分析,清华大学出版社,1998

[4] 张彬彬面向服务架构的应用迁移方法及其应用研究:[硕士论文]

面向服务的软件体系架构总体设计分析

面向服务的软件体系架构总体设计分析 计算机技术更新换代较为迅速,软件开发也发生较多改变,传统软件开发体系已经无法满足当前对软件生产的需求。随着计算机不断普及,软件行业必须由传统体系向面向服务架构转变。随着软件应用范围不断增大,难度逐渐上升,需要通过成本手段,提高现有资源利用率。通过面向服务体系结构可提高软件行业应对敏捷性,实现软件生产的规模化、产业化、流水线化。 1 软件危机的表现 1.1 软件成本越来越高 计算机最初主要用作军事领域,其软件开发主要由国家相关部分扶持,因此无需考虑软件开发成本。随着计算机日益普及,计算机已经深入到人们生活中,软件开发大多面向民用,因此软件开发过程中必须考虑其开发成本,且计算机硬件成本出现跳水现象,由此导致软件开发成本比例不断提升。 1.2 开发进度难以控制 软件属于一种智力虚拟产品,软件与其他产品最大不同是其存在前提为内在逻辑关系。相较于计算机硬件粗生产情况,传统工作中的加班及倒班无法应用到软件开发中,提升软件开发进度无法通过传统生产方法实现。且在软件开发过程中会出现一些意料不到的因素,影响软件开发流程,导致软件开发未按照预期计划展开。由此可见不仅软件项目开发难度不断增加,软件系统复杂复杂性也不断提升,即使增加

开发人手也未必能取得良好效果。 1.3 软件质量难以令人满意 软件开发另一常见问题就是在软件开发周期内将产品开发出来,但软件本身表现出的性能却未达到预期目标,难以满足用户多方位需求。该问题属于软件行业开发通病,当软件程序出现故障时会导致巨大损失。在此过程中软件开发缺乏有效引导,开发人员在开发过程中往往立足于自身想法展开软件开发,因此软件开发具有较强主观性,与客户想法不一致,因此导致软件产品质量难以让客户满意。 1.4 软件维护成本较高 与硬件设施一样,软件在使用过程中需要对其进行维护。软件被开发出来后首先进行公测,发现其软件存在的问题,并对其重新编辑提升软件性能,从而为客户提供更好服务。其次软件需要定时更新,若程序员在开发过程中并未按照相关标准执行会导致其缺乏技术性文档,提升软件使用过程中的维护难度。另外在新增或更新软件过程中可能导致出现新的问题,影响软件正常使用,并可能造成新的问题。由此可见软件开发成功后仍旧需要花费较高成本进行软件维护。 2 面向服务体系架构原理 2.1 面向服务体系架构定义 面向服务体系构架从本质上是一种应用体系架构,体系所有功能均是一种独立服务,所有服务均通过自己的可调用接口与程序相连,因此可通过服务理论实现相关服务的调动。面向服务体系构架从本质上来说就是为一种服务,是服务方通过一系列操作后满足被服务方需求的

面向对象分析与设计简答题

1、什么面向对象? 面向对象不仅是以些具体的软件开发技术与策略,而且以一套关于如何看待软件系统与现实世界的关系,以什么观点来研究问题并进行求解,以及如何进行系统构造的软件方法学。 2、软件开发方法学的基本方法有哪些? 1)软件工程和瀑布方法学2)新方法学:螺旋式、迭代式、递增式、合并式3)面向对象方法学:UML、RUP、XP 3、为什么需要OOA、OOD。 OOA就是运用面向对象的方法进行需求分析,OOA加强了对问题域和系统责任的理解,有利于人员之间的交流,对需求变化的适应性较强,很好的支持软件复用。 OOD就是运用面向对象的方法进行系统设计,OOD.符合人们习惯的思维方法,便于分解大型的复杂多变的问题;易于软件的维护和功能的增减;可重用性好;与可视化技术相结合,改善了工作界面。 4、从概念层次、规格层次、实现层次三个角度如何理解对象的概念? 从概念层次来看,一个对象就是一系列的责任; 从规格层次来看,一个对象是一系列可以被其他对象或该对象自己调用的方法;从实现层次来看,一个对象是一些代码和数据。 5、如何绘制类图和对象图?简述其步骤。 类图绘制:1发现类,找到备选类,确定候选类2关联分析,确定关联关系,多重性分析3职责分析4限定与修改,导航性分析,约束,限定符; 对象图绘制:1发现类和对象2对其细化,分析,确定关系。 6、简述重定义方法与重载的区别。 重定义:1参数列表必须完全与被重写的方法相同2返回类型必须一直域被重写的方法的类型相同3访问修饰符的限制一定要大于被重写方法的访问修饰符4重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查性异常:重载:1必须有不同参数列表2可以有不同的返回类型,只要参数列表不同即可3可有不同访问修饰符4可抛出不同的异常。 7.简述抽象方法与虚方法的联系与区别 虚方法有一个实现部分可以为子类实现有共同的方法,并为派生提供了覆盖该方法的选,抽象方法只是强制派生覆盖方法;抽象方法只能在抽象类中声明,而虚方法不是;抽象方法不能声明方法实体,虚方法可以;包含抽象方法的类不能实例化,但虚方法可以。 8、简述使用继承的规则。 1)、不要过度使用;2)、子类应是超类的一个类型;3)、子类应是超类的扩展; 4)、尽量少从具体类继承,最好继承接或抽象类。

面向对象的分析方法_软件工程实验_1245713131

面向对象的分析方法 专业:计算机科学与技术专业学号:1245713131 班级:计科1班 姓名:

一、概述 随着现代科学技术的发展和社会的进步,各大高校的图书馆规模也不断扩大,与此同时,图书的种类和数量以及有关图书的各种信息也迅速的增加,这一庞大的信息量也对图书馆的信息管理技术提出了更高的要求。为了避免图书管理上的混乱,降低管理费用,提高工作效率,给读者提供更方便、快捷的服务,图书管理系统必须引入信息化和自动化的管理方式,对图书资料进行集中、统一、高效率的管理。 二、问题的提出 随着Internet技术的飞速发展,现在各高校已经把计算机引入了图书馆,开始了信息化的管理方式,这给予了学生极大的便利,学生可通过图书馆可以获得丰富的文献资料。和传统的图书管理方式相比,计算机和 Internet的使用也大大提高了图书馆对书籍的管理效率,为读者提供了更方便、更快捷的服务。与此同时服务理念也由以书籍为中心变为以广大师生的信息需求为中心,但是图书馆的网络信息服务还远远没有跟上网络建设的步伐,所提供的服务也远远不能满足高校师生的信息需求。高校图书馆应当有着先进的现代信息设备,完善的管理和服务,并且有稳定和特定的高素质读者用户群,更应该深入开展图书馆多元化信息服务,以更好地满足高校师生不同的信息需求。 目前高校图书馆网络信息服务内容都是浅层次的,主要还是集中在资料的“提供”上,比如动态信息和催还信息的发布只是停留在计算机上,没有充分利用现在飞速发展的通讯技术,使借阅者不能及时得到相应的信息。高校图书馆存在的诸多问题,已经不能满足广大师生群体对信息的需求,因此使得资源的共享性受到相当大的限制。 三、需求分析 (一)用户提出的需求包括下列内容: ①这是一个图书馆支持系统。 ②图书馆将图书和杂志借给借书者。借书者已经预先注册,图书和杂志也预先 注册。 ③图书馆负责新书的购买。每一本图书都购进多本书。当旧书超期或破旧不堪 时,从图书馆中去掉。 ④图书管理员是图书馆的员工。他们的工作就是和读者打交道并在软件系统的 支持下工作。 ⑤借阅人可以预定当前没有的图书和杂志。这样,当他所预定的图书和杂志归 还回来或购进时,就通知预定人。当预定了某书的借书者借阅了该书后,预定就取消。或者通过显式的取消过程强行取消预定。 ⑥图书馆能够容易地建立、修改和删除标题、借书者、借阅信息和预定信息。 ⑦系统能够运行在所有流行的技术环境中,包括Unix, Windows和Linux,并应 有一个良好的人机交互图形用户界面(GUI)。

面向对象系统分析与设计试卷与答案

面向对象分析与设计试题B卷 一、单项选择题( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号。每小题1 分,共20 分) 3.下列不属于面向对象技术的基本特征的是()。 A. 封装性 B. 模块性 C. 多态性 D. 继承性 4. 面向对象程序设计将描述事物的数据与( ) 封装在一起,作为一个相互依存、不可分割的整体来处理。 A. 信息 B. 数据隐藏 C. 对数据的操作 D. 数据抽象 5. 关于面向对象方法的优点,下列不正确的叙述是()。 A. 与人类习惯的思维方法比较一致 B. 可重用性好 C. 以数据操作为中心 D.可维护性好 8. 下列不属于类的成员函数的是( )。 A. 构造函数 B. 析构函数 C. 友元函数 D. 拷贝构造函数 9. 继承机制的作用是( )。 A. 信息隐藏 B. 数据封装 C. 派生新类 D. 数据抽象 14. ()是从用户使用系统的角度描述系统功能的图形表达方法。 A. 类图 B. 对象图 C. 序列图 D. 用例图 15. ( ) 是表达系统类及其相互联系的图示,它是面向对象设计的核心,建立状态图、协作图 和其他图的基础。 A.对象图 B. 组件图 C. 类图 D. 配置图 16.()描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象 之间传递消息的时间顺序。 A.对象图 B. 协作图 C. 状态图 D. 序列图 17.()就是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示系 统中软件和硬件的物理架构。 A. 组件图 B. 协作图 C. 状态图 D. 配置图 18. 在用UML进行数据库的分析与设计过程中,( ) 就是进行数据库的需求分析,使用用 例图、类图、顺序图、活动图等建立业务模型。 A. 逻辑数据模型设计 B 业务Use Case模型设计 C. 物理数据模型设计 D. 物理实现设计 19. 使用UML进行关系数据库的()时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。 A. 业务Use Case模型设计 B. 逻辑数据模型设计 .

uml《面向对象的分析与设计》考题与答案

《面向对象的分析与设计》练习题 一、选择题 1.UML 语言不支持的建模方式有(D )。 A. 静态建模 B.动态建模 C. 模块化建模 D. 功能建模 2.一个设计得好的OO系统具有( B )。 A. 低内聚、低耦合的特征 B.高内聚、低耦合的特征 C. 高内聚、高耦合的特征 D.低内聚、高耦合的特征 3.下列不属于面向对象技术的基本特征的是(B)。 A. 封装性 B. 模块性 C. 多态性 D. 继承性 4. 面向对象程序设计将描述事物的数据与( C ) 封装在一起,作为一个相互依存、不可分割的整体来处理。 A. 信息 B. 数据隐藏 C. 对数据的操作 D. 数据抽象 5. 关于面向对象方法的优点,下列不正确的叙述是(C )。 A. 与人类习惯的思维方法比较一致 B. 可重用性好 C. 以数据操作为中心 D.可维护性好 6.用例之间的关系不包括以下哪种关系?D A.泛化 B.包含 C. 扩展 D. 聚集和组合 7.顺序图中不包括以下哪种元素?(A) A.用例 B. 对象 C. 生命线 D. 消息 8. 用例图中不包括以下哪种元素?(B) A. 用例 B. 类 C. 参与者 D. 关联 9. 继承机制的作用是( C )。 A. 信息隐藏 B. 数据封装 C. 派生新类 D. 数据抽象 10. 面向对象方法学中,对象之间仅能通过(C)相联系。 A. 类 B.抽象 C. 消息 D. 封装 11. 脚本与用例之间的关系类似与(A)之间的关系。

A. 对象与类 B. 参与者与用例 C. 顺序图和抽象类 D. 消息和对象 12. 下列元素中,(D )不属于消息的组成。 A. 提供服务的对象 B. 服务 C. 输入信息 D. 事件 13. (D )描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象之间传递消息的时间顺序。 A.对象图 B. 协作图 C. 状态图 D. 顺序图 14. (D)是从用户使用系统的角度描述系统功能的图形表达方法。 A. 类图 B. 对象图 C. 序列图 D. 用例图 15. ( C ) 是表达系统的类及其相互联系的图示,它是面向对象设计的核心,建立状态图、协作图和其他图的基础。 A.对象图 B. 组件图 C. 类图 D. 配置图 二、简答题 1.简答控制软件复杂性的基本方法,面向对象技术如何体现这些方法的。 基本方法:分解,抽象,模块化,信息隐蔽。面向对象的软件开放方法在描述和理解问题域时采用的方法是:对问题域进行自然分割,以更接近人类的思维方式建立问题域模型,从而使设计出的软件尽可能直接地描述现实世界,具有更好的可维护性,能适应用户需求的变化。 2.举例说明类中覆盖和重载的区别。 public class A{ String name; public String getValue();{ return”getValue is”+name;} } public class B extend A { String address; public String getValue();{

最新面向对象分析与设计课程总结

面向对象分析与设计 课程总结 0923010208 指导老师:庄育飞 这学期学院开设了面向对象分析与设计(UML)这门课,通过老师的讲解,自己一些相关书籍的阅读和实践作业的完成,逐步对课程有了由浅及深的认识。我觉得学习这门课还是受益匪浅的。 面向对象(Object Oriented,OO)是一门以实践为主课程,课程中可以分开两块OOA(面向对象系统分析)和OOD(面向对象系统设计)。 OOA(面向对象系统分析)主要内容: 研究问题域和用户需求,运用面向对象的观点和原则发现问题域中与系统责任有关的对象,以及对象的特征和相互关系.OOA不涉及针对具体实现采取的设计决策和有关细节,独立于具体实现的系统模型。是一个完整确切反映问题域和用户需求的系统模型。OOA的优势:复

用、可扩展、可维护性、弹性。 OOD(面向对象系统设计):以OOA模型为基础,按照实现的要求进行设计决策,包括全局性的决策和局部细节的设计,与具体的实现条件相关。OOD的步骤:细化重组类→细化和实现类之间的关系,明确其可见性→增加属性,指定属性的类型和可见性→分配职责,定义执行每个职责的方法→对消息驱动的系统,明确消息传递的方式→利用设计模式进行局部设计→画出详细的类图和时序图。 面向对象的分析与设计方法将致力于解决传统软件研发过程中由于软件模块化结构化程度不高带来的软件重用性差、软件可维护性差、开发出的软件不能满足用户需要等方面问题。面向对象的概念包括:对象、对象的状态和行为、类、类的结构、消息和方法。对象概念将包含对象唯一性、抽象性、继承性、多态性的重要特征。面向对象的要素包含:抽象、封装性、共享性三方面。 在设计模式的研究过程中,我们组选择的是迭代器(Iterator)的设计模式研究。完成设计研究后,我对迭代器的设计模式有了更为深刻的理解。迭代器(Iterator)提供一个方法顺序访问一个聚合对象的各个元素,而又不暴露该对象的内部表示。并了解到迭代器设计模式一般在以下三类场合使用较多。 ●访问一个聚合对象的内容而无需暴露它的内部表示。 ●支持对聚合对象的多种遍历。因为遍历状态是保存在每一个迭代器对象 中的。

面向对象分析与设计

面向对象提纲 需求分析:了解用户的需求,对现实问题进行分析,确定用户需求 一、用例模型:业务用例、业务场景、系统用例、用例规约(用例描述) 根据不同的情况,用例描述可以有三个级别:1)简单描述2)中间描述3)完全展开描述系统分析:将需求分析的结果确定系统的范围和主要功能。 二、分析模型 1)静态视图(类图) 2)动态视图(系统顺序图) 1.1建立静态视图(问题域建模) 定义这些系统需求而建立的类图称为域模型类图或简称域模型 类之间的关系:依赖、泛化、关联(聚合、组合) 2.1动态视图(系统顺序图)

三、OO模型的集成 OO需求模型中的关系 依赖性通常从顶部流到底部,双向箭头表示在两个方向都产生影响。 四、面向对象分析步骤: 第一步域模型 A、分析域模型得到静态视图(类图) B、画出实体对应的类及其之间的关系,注意此阶段强调的是静态关系 第二步基于用例的需求分析 通过对需求的调查,业务用例的构建和活动图的绘制,最终得到系统用例图 在用例图的下方,应附上每个用例的用例描述 第三步输入和输出:系统顺序图 域模型类图:

用例图:系统顺序图: 从分析到设计

五、面向对象设计 OO程序是由一系列协同完成某一任务的程序对象组成 OO设计目标:识别并确定所有对象,并生成每个用例,比如用户界面对象、问题域对象及DB访问对象 六、OO设计过程和模型 设计步骤:⑴创建设计类图的基础版本,或初步模型 ⑵开发交互图 ⑶根据开发交互图时得到的信息,返回设计类图并开发方法名称 ⑷用包图将设计类图分割成相关的功能 输入的模型: 交互图:用例图、用例描述、活动图、系统顺序图、设计类图 设计类图:域模型类图、交互图 包图:设计类图 七、设计类和设计类图 7.1 设计类图符号:1. 构造型 2. 标准的构造型 构造型:按照模型元素的特征进行归类的一种方式,用《》符号描述 2. 标准的构造型 (0)设计模型中的标准构造型 ⑴实体类 ⑵边界类 ⑶控制类 ⑷数据访问类 设计模型中的标准构造型:

面向对象的分析过程

面向对象的分析过程 摘要 分析了面向对象技术应用于仿真领域的种种优点,亦即我们选择采用面向对 象的方法进行改造的原因。一些面向对象方法存在的不足。 关键词:仿真,面向对象,岸边集装箱起重机,训练器 面向对象的开发方法是以对象作为最基本的元素,它是分析问题、解决问题的核心。 面向对象=对象(Object) +分类(classification) +继承(inheritance) +通过消息的通信(communication with messages) 从下图中我们可以看出,面向对象的开发方法明显不同。 面向对象的仿真为仿真人员提供了开发模块化可重用的仿真模型的工具,它把系统看成由相互作用的对象所组成,而对象则往往表示现实系统中的真实实体。从而提高了仿真模型的可理解性、可扩充性和模块性,并且便于实现仿真与计算机图形和人工智能的结合。采用面向对象的方法,原因如下: 1.可理解性 面向对象仿真对设计者、实现者,以及最终用户来说都改进了仿真的可理解性。因为仿真系统中的对象往往直接表示现实系统中的真实实体,这些实体在面向对象的仿真系统中可以用外观上类似于人们熟悉的实际系统的对象的图形或图像来表示,用户可以通过图形界面与仿真模型进行交互,利用图形或图像来直接建立仿真模型,这对于熟悉实际系统的用户来说是很容易理解的。 2.可重用性和可扩充性 在面向对象的仿真中,可以建立起一个模型库用以保存以前建立的模型,模型库中的模型可以作为建立新模型的可重用构件,通过面向对象技术内在的继承机制可以容易地和系统地修改现有的对象(类)以创建新的对象。并且可以加入现有的类库中。类库提供了仿真建模所需要的一般设施。通过修改现有的类,可以建立各种应用中所需要的特殊对象。 3.模块性 面向对象的仿真是模块化,特殊的过程来寻找相应的信息,不会影响其它的对象。 4.图形用户界面

面向对象的分析与设计大作业文档

面向对象的分析与设计课程结课大作业 学号______________ 学生姓名___________ 专业______________ 班级______________ 塔里木大学教务处制

《面向对象的分析与设计》课程结课作业\ 题 分\号 值\—— 一 二三四五六七总结总分 总分5 020100 得分 提示:1、请将答案写在此文档的相应位置,图形需在Rational Rose下绘制,大小可以根据个人需求定制(宽不超过页面1/3);2、请将相关的文档,包括程序的相关文档进行压缩,并将压缩文档上传到“大作业电子版文档”文件夹下命名为“班级-学号-姓名”,纸质版于2015年6月12日上午10:00 —13:00交到逸夫楼109。 一、选题(此题5分) 请根据你抽中的题号,请将其所对应的题目写到下方,并将你要描述的界面进行截图。 题目:照相(即手机的“相机”软件) XPERIA Z系列手机的自带相机软件。图中第五行第 该相机软件为SONY 二列 的软件。 相机

用例图用到的界面:A D E F 类图用到的界面:B C D E F 序列图和协作图用到的界面:A C 状态图用到的界面:A C 活动图用到的界面:AB C D E F 部署图用到的界面:A DEF ./ * 1SVf 九—X IJ .鈕 EuH o StiilE 拍 untflimhwiiBMiiriifn Qi -A 1 i a口X nt^tt帕.9* 自怕 笑Kt*n 关闻寸慎毛连拍JI 人■注册 O Q ? O■□Q :9 c口X 快走总谕 填理杯记? ?D 将害?瞳用朴 isn^g C? 内序科11诬? 4k a C3 Q)gv> W BF \j o Q ! A ◎ a o X 白拘Jt 笑隘快门(鞭牆)X nn-:? nt窒恙 (>o ■ U K>Qi A B 手动 创息啟 JR

面向对象分析与设计_期末复习_2017-2018-2

《面向对象分析与设计》期末复习 2017-2018学年-第2学期 1、题型介绍: 选择题20 * 1分= 20分 填空题5* 2分= 10分 简答题 4 * 7分= 28分 建模分析论述题4题(第1题10分,第2题8分,第3题8分,第4题16分,共42分)= 40分 2、选择题 1、()不是对象具有的特性。 A.标识 B.继承 C.顺序 D.多态性 2、封装是把对象的()结合在一起,组成一个独立的对象。 A.属性和操作 B.信息流 C.消息和事件 D.数据的集合 3、()不是面向对象的典型方法。 A.Coad& Yourdon 方法 B.维也纳方法 C.OMT方法 D.Booch方法 4、UML中有4种关系,分别是依赖、泛化、关联和() A.集成 B.合作 C.实现 D 抽象 5、下列关于状态图的说法中,正确的是() A.状态图是UML中对系统的静态方面进行建模的5种图之一。 B.状态图是活动图的一个特例,状态图中的多数状态是活动状态。 C.状态图是对一个对象的生命周期进行建模,描述对象在其生存期间的动态行为。 D.状态图强调对有几个对象参与的活动过程建模,而活动图更强调对单个反应型对象建模。 6、UML的()模型图由类图、对象图、包图、组件图、和部署图组成。 A.用例 B.静态 C.动态 D.系统。 7、UML的()模型图活动图、顺序图、状态图、写协作图组成。 A.用例 B.静态 C.动态 D.系统。 8、UML的最终产物就是最后提交的可执行的软件系统和() A.用户手册 B.类图 C.动态图 D.相应的软件文档资料

9、在UML的需求分析建模中,()模型图必须与用户反复交流并加以确认。 A.配置 B.用例 C.包 D.动态 10、下面不是用例之间主要关系的是() A.扩展 B.包含 C.依赖 D.泛化 11、对于一个电子商务网站而言,以下不适合作为用例的选项是() A.登录 B.预定商品 C.购物车 D.结账 12、UML的客户需求分析模型包括()模型、类图、对象图和活动图。 A.用例 B.静态 C.动态 D.系统 13、UML客户需求分析产生的用例模型描述了系统的() A.状态 B.体系结构 C.静态模型 D.功能要求 14、在UML的需求分析模型中,用例建模必须与()反复交流并加以确认。 A.软件生产商 B.用户 C.软件开发人员 D.问题领域的专家 15、在UML的需求分析建模中,对用例模型中的用例进行细化说明应使用() A.活动图 B.状态图 C.配置图 D.组件图 16、类图应该画在Rational Rose的()视图中。 A、Use Case View B、Login View C、Component View D、Deployment View 17、类通常可以分为实体类、()和边界类。 A 、父类B、子类C、控制类D、祖先类 18、对象特征的要素是()。 A、状态 B、行为 C、标识 D、属性 19、下列关于接口的关系说法不正确的是()。 A、接口是一种特殊的类 B、所有接口都是有构造型<>的类 C、一个类可以通过实现接口从而支持接口所指定的行为 D、在程序运行的时候,其他对象不仅需要依赖于此接口,还需要知道该类对接口实现的其他信息 20、下列关于类方法的声明,不正确的是()。 A、方法定义了类所许可的行动 B、从一个类创建的所有对象可以使用同一组属性和方法 C、每个方法应该有一个参数 D、如果在同一个类中定义了类似的操作,则它们的行为应该是类似的 21、UML的系统分析进一步要确立的3个系统模型是()、对象动态模型和系统功能模型。 A、数据模型 B、对象静态模型 C、对象关系模型 D、体系结构模型 22、UML的客户需求分析、系统分析和系统设计阶段产生的模型,其描述图符()。 A、完全相同 B、完全不同 C、不可以通用 D、稍有差异 23、类和对象都有属性,它们的差别是:类描述了属性的类型,而对象的属性必有()。 A、正负号 B、动作 C、具体值 D、私有成员 24、UML系统设计的一般步骤包括系统对象设计、系统体系结构设计和系统设计的()和审查等 A、建模 B、完善 C、优化 D、迭代 25、顺序图和协作图主要用于对用例图中()的建模,用它们来描述用例图的行为。

面向对象分析方法

https://www.360docs.net/doc/a1542737.html,面向对象分析方法1/2 面向对象分析方法(Object-Oriented Analysis,OOA),是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。OOA与结构化分析有较大的区别。OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。 OOA(面向对象的分析)模型由5个层次(主题层、对象类层、结构层、属性层和服务层)和5个活动(标识对象类、标识结构、定义主题、定义属性和定义服务)组成。在这种方法中定义了两种对象类之间的结构,一种称为分类结构,一种称为组装结构。分类结构就是所谓的一般与特殊的关系。组装结构则反映了对象之间的整体与部分的关系。 OOA在定义属性的同时,要识别实例连接。实例连接是一个实例与另一个实例的映射关系。 OOA在定义服务的同时要识别消息连接。当一个对象需要向另一对象发送消息时,它们之间就存在消息连接。 OOA 中的5个层次和5个活动继续贯穿在OOD(画向对象的设计)过程中。OOD模型由4个部分组成。它们分别是设计问题域部分、设计人机交互部分、设计任务管理部分和设计数据管理部分。 一、OOA的主要原则。 (1)抽象:从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性的特征,就叫作抽象。抽象是形成概念的必须手段。 抽象原则有两方面的意义:第一,尽管问题域中的事物是很复杂的,但是分析员并不需要了解和描述它们的一切,只需要分析研究其中与系统目标有关的事物及其本质性特征。第二,通过舍弃个体事物在细节上的差异,抽取其共同特征而得到一批事物的抽象概念。 抽象是面向对象方法中使用最为广泛的原则。抽象原则包括过程抽象和数据抽象两个方面。 过程抽象是指,任何一个完成确定功能的操作序列,其使用者都可以把它看作一个单一的实体,尽管实际上它可能是由一系列更低级的操作完成的。 数据抽象是根据施加于数据之上的操作来定义数据类型,并限定数据的值只能由这些操作来修改和观察。数据抽象是OOA的核心原则。它强调把数据(属性)和操作(服务)结合为一个不可分的系统单位(即对象),对象的外部只需要知道它做什么,而不必知道它如何做。 (2)封装就是把对象的属性和服务结合为一个不可分的系统单位,并尽可能隐蔽对象的内部细节。 (3)继承:特殊类的对象拥有的其一般类的全部属性与服务,称作特殊类对一般类的继承。 在OOA中运用继承原则,就是在每个由一般类和特殊类形成的一般—特殊结构中,把一般类的对象实例和所有特殊类的对象实例都共同具有的属性和服务,一次性地在一般类中进行显式的定义。在特殊类中不再重复地定义一般类中已定义的东西,但是在语义上,特殊类却自动地、隐含地拥有它的一般类(以及所有更上层的一般类)中定义的全部属性和服务。继承原则的好处是:使系统模型比较简练也比较清晰。 (4)分类:就是把具有相同属性和服务的对象划分为一类,用类作为这些对象的抽象描述。分类原则实际上是抽象原则运用于对象描述时的一种表现形式。 (5)聚合:又称组装,其原则是:把一个复杂的事物看成若干比较简单的事物的组装体,从而简化对复杂事物的描述。 (6)关联:是人类思考问题时经常运用的思想方法:通过一个事物联想到另外的事物。能使人发生联想的原因是事物之间确实存在着某些联系。

面向服务的架构标准SOA

面向服务的架构标准领先技术不意味厂商锁定XML和Web服务正在作为面向服务的架构(SOA)的平台来出现,它既可用于企业内部通信,也可用于企业间通信。作为第一个既支持SOA编写,也支持SOA 利用的Java集成开发环境(IDE),WebLogic Workshop天生就带上了专有创新的印记。从那时起,BEA通过多种机制,从开放标准到开放源代码,已经实现了对这些创新进行投资保护的承诺,使得开发人员可以充分利用BEA的尖端生产率和集成特性,而不必担心锁定在某一厂商。下面,让我们一起来看看在Workshop中基于SOA的关键创新,以及在每种情况下是如何保护投资的。 什么是SOA? XML和Web服务是当今的热门技术,因为它们在实现面向服务的架构(SOA)上担当了重要的角色。目前独立的、而且通常是相互孤立的应用程序,制约了业务服务的共享,SOA则正在解决这一问题。通过给单个业务操作进行定义或在表层加上“服务访问点”,IT组织能够: ?使IT资源与其业务功能更密切地结合在一起 ?通过以下方法的最佳组合和匹配,建立更加动态、更有效地利用成本的系统 ?购买和自建 ?自制和外包

?更迅速地发布“组合”应用程序(想想“Web流(Web flows)”和“工作流(work flows)”),提供统一的、面向任务的跨业务视图 ?通过更加细致的增量管理需求和变化,在应用程序生命周期上获得更高的灵活性 ?用提供“业务透明性”的基础架构替换不透明的、“黑盒子”系统更容易—这种基础架构根据流经应用程序的总体信息,提供实时的业务智能。 对象和组件已经成功地在应用内提供了重用性(应用程序的定义是:以单元形式开发和部署的代码)。但是,SOA依赖的是在应用程序之间实现重用。用SOA把不同的应用程序互连起来,这根本不是什么新东西—想想以前定义分布式的、应用间通信架构的一些努力(不用费力想什么新的首字母缩略词):?同步的(面向RPC):CICS分布式程序链接(DPL)、分布式计算环境(DCE)、分布式组件对象模型(DCOM)、公共对象请求代理体系结构(CORBA)IIOP、Java 远程方法调用(RMI)、关系数据库管理系统(RDBMS)存储过程,等等。 ?异步的(面向消息的):CICS临时数据队列(TDQ)、Tuxedo ATM、IBM MQSeries、Tibco Rendezvous、Microsoft消息队列(MSMQ)、Java消息服务(JMS),等等。 是什么使得应用的集成如何困难呢(而且,由此推出,为什么我们作为一个行业,还必须要实现一个统一的SOA)?这是因为,应用程序是由不同的人们,在不同的地点建立的,而且根据不同的计划部署的。任何方法,只要它

结构化方法与面向对象方法的比较分析

结构化方法与面向对象方法的比较分析 吴松娇 (凯里学院信息工程学院,09本(1)班,2009406012) 摘要:剖析了结构化方法和面向对象方法这两种软件开发方法具体的分析设计过程,讨论 了各自在不同软件开发中的应用及局限性,提出了在选用面向对象方法开发大型软件系统的同时可结合结构化方法.通过对具体实例的剖析,揭示DFD 与UML 之间的对应关系,从而提 出结构化软件分析方法与面向对象软件分析方法存在的对应关系,在软件需求分析方法上实现了二者的相互转换,这种对应与转换关系对现有结构化软件的维护及再工程具有指导意义。 关键词:软件开发; 结构化方法; 面向对象方法; 问题域 20 世纪60 年代以来,软件的发展一直受到开发综合症“软件危机”的影响. 为了提高软件质量,软件开发方法不断推陈出新,其中结构化方法[1 ,2 ]经过30 多年的研究及应用,最为成熟且影响最大,直到现在仍有许多系统是用它开发的. 而面向对象方法[1 ,3 ]是在结构化方法、信息建模方法等基础上发展起来的,近10 年来发展较快,现已呈现出取代结构化方法的趋势. 本文具体分析两者在软件开发中的差别以及面向对象方法的优越性. 1 结构化方法 结构化方法基于功能分解设计系统结构,通过不断把复杂的处理逐层分解来简化问题,它 从内部功能上模拟客观世界. 用结构化开发的软件运行效率较高, 且能够增加软件系统的 可 靠性. 1. 1 结构化分析 它是面向数据流进行需求分析的方法,在该阶段力求寻找功能及功能之间的说明. 它主要 采用的工具是数据流图DFD(Data Flow Diagram) ,利用DFD 描述边界和数据处理过程的关系. 1. 2 结构化设计 结构化设计是将数据流图表示的信息转换成程序结构的设计描述,在该阶段力求寻找功 能的实现方法,采用系统结构图表示系统所具有的功能和功能之间的关系. 设计过程分两步完成,第一步以需求分析的结果作为出发点,构造出一个具体的系统设计方案,决定系统的模块结构(包括决定模块的划分、模块间的数据传递及调用关系) . 第二步详细设计即过程设计,在总体设计的基础上,确定每个模块的内部结构和算法,最终产生每个模块的程序流程图. 因此,结构化方法比较适合于像操作系统、实时处理系统等这样的以功能为主的系统. 1. 3 结构化方法的局限 (1) 结构化方法在需求分析中对问题域的认识和描述不是以问题域中固有的事物作为基本 单位,而是打破了各项事物之间的界限,在全局范围内以数据流为中心进行分析,所以分析 结果不能直接反映问题域. 同时,当系统较复杂时,很难检验分析的正确性. 因此,结构化分析 方法容易隐蔽一些对问题域的理解偏差,与后续开发阶段的衔接也比较困难; (2) 结构化方法 中设计文档很难与分析文档对应,因为二者的表示体系不一致. 结构化方法的结果2数据流 图

uml面向对象的分析与设计考题与答案

u m l面向对象的分析与设计考题与答案 集团文件版本号:(M928-T898-M248-WU2669-I2896-

《面向对象的分析与设计》练习题 一、选择题 1.UML 语言不支持的建模方式有(D )。 A. 静态建模 B.动态建模 C. 模块化建模 D. 功能建模 2.一个设计得好的OO系统具有( B )。 A. 低内聚、低耦合的特征 B.高内聚、低耦合的特征 C. 高内聚、高耦合的特征 D.低内聚、高耦合的特征 3.下列不属于面向对象技术的基本特征的是( B)。 A. 封装性 B. 模块性 C. 多态性 D. 继承性 4. 面向对象程序设计将描述事物的数据与 ( C ) 封装在一起,作为一个相互依存、不可分割的整体来处理。 A. 信息 B. 数据隐藏 C. 对数据的操作 D. 数据抽象 5. 关于面向对象方法的优点,下列不正确的叙述是(C )。 A. 与人类习惯的思维方法比较一致 B. 可重用性好 C. 以数据操作为中心 D.可维护性好 6.用例之间的关系不包括以下哪种关系?D A.泛化 B.包含 C. 扩展 D. 聚集和组合 7.顺序图中不包括以下哪种元素?(A) A.用例 B. 对象 C. 生命线 D. 消息

8. 用例图中不包括以下哪种元素?(B) A. 用例 B. 类 C. 参与者 D. 关联 9. 继承机制的作用是 ( C )。 A. 信息隐藏 B. 数据封装 C. 派生新类 D. 数据抽象 10. 面向对象方法学中,对象之间仅能通过(C )相联系。 A. 类 B.抽象 C. 消息 D. 封装 11. 脚本与用例之间的关系类似与(A)之间的关系。 A. 对象与类 B. 参与者与用例 C. 顺序图和抽象类 D. 消息和对象 12. 下列元素中,(D )不属于消息的组成。 A. 提供服务的对象 B. 服务 C. 输入信息 D. 事件 13. ( D )描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象之间传递消息的时间顺序。 A.对象图 B. 协作图 C. 状态图 D. 顺序图 14. ( D)是从用户使用系统的角度描述系统功能的图形表达方法。 A. 类图 B. 对象图 C. 序列图 D. 用例图 15. ( C ) 是表达系统的类及其相互联系的图示,它是面向对象设计的核心,建立状态图、协作图和其他图的基础。

面向对象分析与设计试卷(A)及答案

华南农业大学期末考试试卷(A卷)-答案 2007学年第1学期考试科目:面向对象分析与设计考试类型:(闭卷)考试时间:120 分钟 学号姓名年级专业 一、判断题(每题1分,共10分。对的标“T”,错的标“F”,将答案写入下表) 1. 一个状态图最多只能由一个初态和一个终态。(F) 2. 协作图中的消息必须要有消息顺序号。(T)

3. 两个参与者(actor)之间可以有包含(include)关系、扩展(extend)关系或泛化(generalization)关系,而包含关系和扩展关系是依赖(dependency)关系的版型。(F) 4. 参与者(actor)和用例(use case)之间的关系是关联(association)关系。(T) 5. 类A和类B之间的关系如图1所示,则称类B中的getName()方法是对类A中的 getName()方法的重载(overload)。(F) 图2 活动图 图1 getName()方法之间的关 系 6. 如图2所示,活动Gesture和Stream audio可以并发进行。(T) 7. 一个软件系统,如果只有源代码,缺乏其他相应的辅助文档,如缺乏顺序图和类图,则可以利用Rose进行逆向工程得到顺序图和类图,但得到的顺序图和类图会比较简单。(F) 8. CMM描述了五个级别的软件过程成熟度,即初始级、可重复级、

已定义、已管理级、优化级。(T) 9. UML由用例视图、物理视图、组件视图、进度视图和配置视图组成。(F) 10. 在设计类图时,可以不用对类图中的每个关联进行命名,但如果需要命名的话,最好用一个“动词”给关联命名。(T) 二、单项选择题(每题2分,共30分。将正确答案填入下表) 1. 一个设计得好的OO系统具有(B) A. 低内聚、低耦合的特征 B. 高内聚、低耦合的特征 C. 高内聚、高耦合的特征 D. 低内聚、高耦合的特征 2.下面()不是UML的基本构成元素。(A) A. 控制语言 B. 基本构造块 C. 规则 D. 公共机制 3. 面向对象的特点主要概括为(C)。 A. 可分解性、可组合性、可分类性 B. 继承性、封装性、多 态性

面向对象分析与设计试题A卷及答案

面向对象分析与设计试题A卷及答案 一、单项选择题 ( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题 1 分,共 20 分 ) 1. 到20世纪末,面向对象软件工程已经逐渐发展成熟,特别是( D )的 出现和广泛使用,使面向对象方法成为了软件开发的主流方法。 A. OMT B. OOSE C. C++ D. UML 2.( D )为编程人员提供了重复利用程序资源的一种途径,使编程人员可以扩充和完善旧的程序以适用新的需求。 A. 封装机制 B. 抽象机制 C. 多态机制 D. 继承机制 3. 面向对象程序设计中用( C ) 来描述具有相同属性和行为的对象集合。 A. 实体 B. 对象 C. 类 D. 类模板 4. 下列语言中, ( D ) 是一种混合型面向对象编程语言。 A. C语言 B. Java语言 C. Basic语言 D. C++语言 5. 下列不属于类的成员函数的是 (D )。 A. 构造函数 B. 析构函数 C. 缺省构造函数 D. 友元函数 6. 多态机制的作用是 ( B )。 A. 信息隐藏 B. 实现“一种接口,多种方法” C. 派生新类 D. 数据抽象 7. 合理地利用( B ), 既可以实现部分成员隐蔽,又能方便部分成员的继承,实现代 码的高效重用和扩充。 A.公有继承 B.保护继承 C.友员函数 D.私有继承 8. ( C )经过实例化而生成具体的类。 A.抽象类 B.函数模板 C.类模板 D.对象 9. 类的析构造函数是在 ( C ) 时调用的。 A.不自动调用 B.创建对象 C.删除对象 D.创建派生类对象 10.在公有继承的情况下,基类的( C)成员无法继承到派生类中。 A. 公有成员 B. 保护成员 C. 私有成员 D. 静态成员

第07章 面向对象的分析和设计

软件工程 第7章面向对象的分析和设计

内容摘要 ?面向对象的基本概念 ?面向对象的分析和设计过程?UML概述 ?用例建模 ?静态建模 ?动态建模 ?物理体系结构建模

面向对象方法 ?面向对象软件开发方法(Object-Oriented Software Development)即OOSD,它是一种运用对象、类、继承、封装、聚合、消息传递、多态性等概念来构造系统的软件开发方法。?其组成部分如下: –面向对象分析(OOA) –面向对象设计(OOD) –面向对象程序设计(OOP) 即:OOSD = OOA + OOD + OOP。

Peter Coad和Edward Yourdon提出用下列等式识认面向对象方法: 面向对象=对象(object) +分类(classification) +继承(inheritance) +通过消息的通信(communication with messages) 可以说,采用这四个概念开发的软件系统是面向对象的

?面向对象并非是一个新的概念,实际上它已有30多年的历史。寻其根源可追溯到60年代的挪威,当时挪威计算中心的Kristen Nygaard和Ole-Johan Dahl开发了一种称作Simula67的语言。Simula67首次引入了类、协同程序、子类(虽然 没有继承)和虚过程等概念,这很象今天的面向对象语言。 ?70年代中期,Xerox Palo Alto研究中心的研究人员Alan Kay团队设计了Smalltalk语言,该语言的每个元素都被当作一个对象来实现,其程序设计环境及相关的各个方面都是面向对象的。

面向服务(SOA)技术架构规范

ICS 备案号: Q/CSG 中国南方电网责任有限公司企业标准 面向服务的信息技术架构(SOA )框架规范 中国南方电网责任有限公司 发 布

目次 前言............................................................................ III 1范围. (1) 2规范性引用文件 (1) 3术语与定义 (1) 3.1面向服务的体系结构 (1) 3.2服务 (1) 3.3企业服务总线 (1) 3.4企业资源规划 (1) 3.5企业应用集成 (1) 3.6企业信息门户 (1) 3.7SOA项目 (1) 4总则 (1) 4.1持续发展原则 (1) 4.2先进性原则 (2) 4.3实用性原则 (2) 4.4操作性原则 (2) 5SOA架构模型 (2) 5.1服务体系 (2) 5.1.1服务体系设计依据 (2) 5.1.2服务体系图 (2) 5.1.3服务体系各层定义 (3) 5.2应用体系 (4) 5.3服务部署体系 (5) 5.4技术标准规范体系 (6) 5.4.1技术标准规范体系图 (6) 5.4.2服务开发技术标准规范 (9) 5.4.3服务集成技术标准规范 (13) 5.5SOA架构模型特征 (14) 6SOA服务设计与开发 (14) 6.1服务识别 (14) 6.2服务定义 (14) 6.3服务设计 (16) 6.3.1总体设计原则 (16) 6.3.2访问服务 (16) 6.3.3数据服务 (17) 6.3.4业务服务 (17) 6.3.5流程服务 (17) 6.3.6综合服务 (17) 6.3.7展现服务 (17) 6.4服务实现 (18) 6.4.1服务封装原则 (18) 6.4.2服务封装方式 (18) 7SOA服务集成 (18) I

相关文档
最新文档