一般认为,构件是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统;结构上,它是语义描述、通信接口和实现代码的复合体。
有的可以独立工作,有的需要与其他配合工作;使用和开发生产无关,只要按照标准来生产;
构件模型是对构件本质的抽象描述,主要是为构件的制作与构件的重用提供依据。
青鸟构件模型由外部接口和内部结构两部分组成;
外部接口说明了构件所提供的服务(消息、操作、变量);
内部结构分为内部成员以及内部成员之间的关系。其中内部成员包括具体成员与虚拟成员;而成员关系包括内部成员之间的互联,以及内部成员与外部接口之间的互联
从管理角度出发,也需要对构件进行描述,例如:实现方式、实现体、注释、生产者、生产日期、大小、价格、版本和关联构件等信息,它们与构件模型共同组成了对构件的完整描述。
为了给用户在查询构件时提供方便,同时也为了更好地重用组件,必须对收集和开发的构件进行分类并置于构件库的适当位置。构件库的组织应方便构件的存储和检索;
可重用技术对构件库组织方法的要求:
有必要对不同使用者的访问权限进行限制,保证数据安全;
构件库系统可包括5类用户,即注册用户、公共用户、构件提交者、一般系统管理员、超级系统管理员。
理解构件的另一种重要手段:逆向工程,试图通过对构件的分析,结合领域知识,半自动地生成相应的设计信息,然后借助设计信息完成对构件的理解和修改。
对构件可重用的评价:是通过收集并分析构件的用户在实际重用该构件的历史过程中的各种反馈信息来完成的。这些信息包括:重用成功的次数,对构件的修改量,构件的健壮性度量,性能度量等等。
软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。
软件体系结构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。
两大类方法:过程驱动方法和问题列表驱动方法。
过程驱动方法又分为:
基于过程驱动的体系结构设计方法适用范围广, 易于裁剪, 具备动态特点, 通用性与实践性强。
问题列表驱动法适用于特定领域, 是静态的, 可以实现量化体系结构设计空间。其基本思想是枚举设计空间, 并考虑设计维的相关性, 以此来选择体系结构的风格。
4指的是逻辑、开发、进程、物理视图,1指的是场景视图。每一个视图只关心系统的一个侧面,5个视图结合在一起才能反映系统的软件体系结构的全部内容。
逻辑视图:是从最终用户的角度来看的,关注点是功能需求;
逻辑视图主要支持系统的功能需求,即系统提供给最终用户的服务。
在逻辑视图中,系统分解成一系列的功能抽象,这些抽象主要来自问题领域。这种分解不但可以用来进行功能分析,而且可用作标识在整个系统的各个不同部分的通用机制和设计元素。
在面向对象技术中,通过抽象、封装和继承,可以用对象模型来代表逻辑视图,用类图来描述逻辑视图。
开发视图(也叫模块视图):是从程序员的角度来看的,主要侧重软件模块的组织和管理;
开发视图也称模块视图,主要侧重于软件模块的组织和管理。
开发视图要考虑软件内部的需求,如软件开发的容易性、软件的重用和软件的通用性,要充分考虑由于具体开发工具的不同而带来的局限性。
开发视图通过系统输入输出关系的模型图和子系统图来描述。
进程视图(也叫并发视图):是从系统集成人员的角度来看的,主要侧重系统的运行特性(非功能型的),性能和可用性、吞吐量,性能可扩充性。
进程视图侧重于系统的运行特性,主要关注一些非功能性的需求。
进程视图强调并发性、分布性、系统集成性和容错能力,以及从逻辑视图中的主要抽象如何适合进程结构。它也定义逻辑视图中的各个类的操作具体是在哪一个线程中被执行的。
进程视图可以描述成多层抽象,每个级别分别关注不同的方面。在最高层抽象中,进程结构可以看作是构成一个执行单元的一组任务。
它可看成一系列独立的,通过逻辑网络相互通信的程序。它们是分布的,通过总线或局域网、广域网等硬件资源连接起来。
物理视图:是从系统工程人员的角度来看的,主要考虑系统拓扑结构、设备安装、通信等
物理视图主要考虑如何把软件映射到硬件上,它通常要考虑到系统性能、规模、可靠性等。解决系统拓扑结构、系统安装、通讯等问题。
当软件运行于不同的节点上时,各视图中的构件都直接或间接地对应于系统的不同节点上。因此,从软件到节点的映射要有较高的灵活性,当环境改变时,对系统其他视图的影响最小。
场景可以看作是那些重要系统活动的抽象,它使四个视图有机联系起来,从某种意义上说场景是最重要的需求抽象。在开发体系结构时,它可以帮助设计者找到体系结构的构件和它们之间的作用关系。
同时,也可以用场景来分析一个特定的视图,或描述不同视图构件间是如何相互作用的。
场景可以用文本表示,也可以用图形表示。
5个元素构成,配置、连接件、构件、端口、角色。
其中,配置、构件、连接件是最基本的元素。
构件是具有某种功能的可重用的软件模板单元,表示了系统中主要的计算元素和数据存储。构件有两种:复合构件和原子构件。复合构件由其他复合构件和原子构件通过连接组成。
连接件表示了构件之间的交互,简单的连接件如管道、过程调用、事件广播等,更为复杂的交互如客户-服务器通信协议,数据库和应用之间的SQL连接等。
配置表示构件和连接件的拓扑逻辑和约束;
构件的接口由1组端口组成;每个端口表示了构件和外部环境的交互点。
连接件作为建模软件体系结构的主要实体,同样也有接口,连接件的接口由1组角色构成;每一个角色定义了该连接件表示的交互的参与者。
这种风格的主要特点是事件的触发者并不知道哪些构件会被哪些事件影响。
这样不能假定构件的处理顺序,甚至不知道哪些过程会被调用,因此,许多隐式调用的系统也包含显式调用作为构件交互的补充形式。
什么是层?层是一个具有相同属性的集合;
分层是理解问题的一种方法论,可以把复杂软件从大问题分为小问题,从视图的角度看可以降低问题复杂度。
在仓库(repository)风格中,有两种不同的构件:中央数据结构说明当前状态,独立构件在中央数据存储上执行,仓库与外构件间的相互作用在系统中会有大的变化。
控制原则的选取产生两个主要的子类。若输入流中某类时间触发进程执行的选择,则仓库是一传统型数据库;另外,若中央数据结构的当前状态触发进程执行的选择,则仓库是一黑板系统。
黑板系统的传统应用是信号处理领域,如语音和模式识别,另一应用是松藕合代理数据共享存取。
黑板系统主要由三部分组成:
C2体系结构风格可以概括为:通过连接件绑定在一起的按照一组规则运作的并行构件网络。C2风格中的系统组织规则如下:
C/S软件体系结构是基于资源不对等,且为实现共享而提出来的,是20世纪90年代成熟起来的技术,C/S体系结构定义了工作站如何与服务器相连,以实现数据和应用分布到多个处理机上。
C/S体系结构有三个主要组成部分:数据库服务器、客户应用程序和网络。
前台主要是数据的显示和分析,完成与用户的交互,后台主要是数据的管理。
后台主要是数据的管理。要有数据库以及相应的操作;
主要在于,客户应用程序和服务器构件分别运行在不同的计算机上,系统中每台服务器都可以适合各构件的要求,这对于硬件和软件的变化显示出极大的适应性和灵活性,而且易于对系统进行扩充和缩小。
系统中的功能构件充分隔离,客户应用程序的开发集中于数据的显示和分析;而数据库服务器的开发则集中于数据的管理,不必在每一个新的应用程序都要对一个DBMS进行编码。将大的应用处理任务分布到许多通过网络连接的低成本计算机上,以节约大量费用。
与二层的区别就是在中间加了一个应用服务器(功能层),而不是和数据库服务器直接相连;
这样,降低了客户机的负担,把数据的计算任务交给了中间的功能层,现在,客户机的表示层只是作为数据的显示了。
根据三层C/S的概念及使用实例可以看出,与两层C/S结构相比,三层C/S结构具有以下优点:
是从三层C/S体系结构变化而来,但不是C/S的加强版,而是一种新的体系结构。
组成:浏览器/Web服务器/数据库服务器
B/S体系结构主要是利用不断成熟的WWW浏览器技术,结合浏览器的多种脚本语言,用通用浏览器就实现了原来需要复杂的专用软件才能实现的强大功能,并节约了开发成本。从某种程度上来说,B/S结构是一种全新的软件体系结构。
在B/S结构中, 除了数据库服务器外,应用程序以网页形式存放于Web服务器上,用户运行某个应用程序时只须在客户端上的浏览器中输人相应的网址,调用Web服务器上的应用程序并对数据库进行操作完成相应的数据处理工作,最后将结果通过浏览器显示给用户。可以说,在B/S模式的计算机应用系统中,应用(程序)在一定程度上具有集中特征基于B/S体系结构的软件,系统安装、修改和维护全在服务器端解决。用户在使用系统时,仅需要一个浏览器就可运行全部的模块,真正达到了“零客户端”的功能,很容易在运行时自动升级。B/S体系结构还提供了异种机、异种网、异种应用服务的联机、联网、统一服务的最现实的开放性基础。
与C/S体系结构相比,B/S体系结构也有许多不足之处,例如:
因此,虽然B/S结构的计算机应用系统有如此多的优越性,但由于C/S结构的成熟性且C/S结构的计算机应用系统网络负载较小,因此,未来一段时间内,将是B/S结构和C/S结构共存的情况。但是,很显然,计算机应用系统计算模式的发展趋势是向B/S结构转变。
什么是正交?在线性代数中表示内积为0。在软件中表示的是两者独立性高,相互的影响最小。相比于低耦合的概念,更加低耦合,甚至于零耦合。
正交软件体系结构由组织层和线索的构件构成。层是由一组具有相同抽象级别的构件构成。线索是子系统的特例,它是由完成不同层次功能的构件组成(通过相互调用来关联),每一条线索完成整个系统中相对独立的一部分功能。每一条线索的实现与其他线索的实现无关或关联很少,在同一层中的构件之间是不存在相互调用的。
如果线索是相互独立的,即不同线索中的构件之间没有相互调用,那么这个结构就是完全正交的。
是个复合体系结构,用到了前面的6种经典体系结构风格,进行了一个组合。
首先,它是个分层系统。
其次,它用到了C2风格。通过连接件把若干构件绑定在一起,按照一组规则运行,是一组并行的构件网络。
系统里的构件和连接件,都有一个顶部和底部。构件和构件之间的直接连接是不允许的,只能是构件的顶部连接到连接件的底部,或构件的底部连接到连接件的顶部。连接件可以和任何数目的其他构件连接。
第三,用到了数据抽象/面向对象。连接的构件都是通过接口去进行连接的,构件的内部对于外部是不可见的。外部只能看到接口而看不到内部。
一句话:多采用了不同体系风格的优点,淡化了这些体系风格的缺点。
内外有别:外网使用B/S,内网使用C/S。外部提供给用户B/S,适合处理简单的显示输出、交互少场景,而且软件升级时直接在web服务器升级即可。在内部多是对数据库进行修改,直接用二层C/S执行速度快。
查改有别:维护和修改 - C/S结构;查询和浏览 - B/S结构。
SOA是一种架构模型和一套设计方法学,其目的是最大限度地重用应用程序中立型的服务以提高IT适应性和效率。它可以根据需求通过网络对松散耦合的粗粒度应用组件(细粒度对应的是类、函数)进行分布式部署、组合和使用。
服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。
W3C将服务定义为: “服务提供者完成一组工作, 为服务使用者交付所需的最终结果。最终结果通常会使使用者的状态发生变化, 但也可能使提供者的状态改变, 或者双方都产生变化”。
SOA不是一种语言, 也不是一种具体的技术而是种软件系统架构, 它尝试给出在特定环境下推荐采
用的一种架构, 从这个角度上来说, 它更像一种模式。
SOA是面向服务的体系结构,他实际上是组件的模型,把应用程序不同的功能单元可称作服务,可以通过定义服务与服务之间良好的接口和契约,很好地把它们联系起来。因为是一种松耦合的理念,是一种可以替代传统的面向对象模型的模型。但不是说没有面向对象了,单个服务内部仍需要用面向对象来设计。
W3C:SOA是一种应用程序体系结构,在这种体系结构中,所有功能都定义为独立的服务,这些服务带有定义明确的可调用接口,能够以定义好的顺序调用这些服务来形成业务流程。
Service-architecture.com:服务是精确定义、封装完整、独立于其它服务所处环境和状态的函数。SO A本质上是服务的集合, 服务之间彼此通信,这种通信可能是简单的数据传送,也可能是两个或更多的服务协调进行某些活动。服务之间需要某些方法进行连接。
Gartner:SOA是一种C/S体系结构的软件设计方法,应用由服务和服务使用者组成, SO A与大多数通用的C/S体系结构模型不同之处, 在于它着重强调构件的松散耦合,并使用独立的标准接口。
能够在一个分布式的计算环境中动态地描述、发布、发现和调用服务Web上的对象访问技术。
在WebService的解决方案中,一共有三种工作角色,其中服务提供者和服务请求者是必需的,服务注册中心是一个可选的角色。它们之间的交互和操作构成了SOA的一种实现体系结构。
Web Service模型中的操作包括发布、查找和绑定,这些操作可以单次或反复出现。
在采用Web Service作为SOA的实现技术时,应用系统大致可以分为6个层次,分别是底层传输层、服务通信协议层、服务描述层、服务层、业务流程层和服务注册层。
服务注册表(service registry)虽然也具有运行时的功能,但主要在SOA设计时使用。
它提供一个策略执行点(Policy Enforcement Point,PEP),在这个点上,服务可以在SOA中注册,从而可以被发现和使用。服务注册表可以包括有关服务和相关构件的配置、依从性和约束文件。从理论上来说,任何帮助服务注册、发现和查找服务合约、元数据和策略的信息库、数据库、目录或其他结点都可以被认为是一个注册表。大多数商用服务注册产品支持服务注册、服务位置和服务绑定功能。
ESB的概念是从SOA发展而来的,它是一种为进行连接服务提供的标准化的通信基础结构,基于开放的标准,为应用提供了一个可靠的、可度量的和高度安全的环境,并可帮助企业对业务流程进行设计和模拟,对每个业务流程实施控制和跟踪、分析并改进流程和性能。
企业服务总线(Enterprise Service Bus,ESB) 它使用许多可能的消息传递协议来负责适当的控制、流甚至还可能是服务之间所有消息的传输。
ESB本身可以是单个引擎,甚至还可以是由许多同级和下级ESB组成分布式系统,这些ESB一起工作,以保持SOA系统的运行。
WSDL是对服务进行描述的语言,它有一套基于XML的语法定义。WSDL描述的重点是服务, 它包含 Service Implementation Definition(服务实现定义)和 Service interface Definition(服务接口定义)
UDDI是一种用于描述、发现、集成Web服务的技术,它是Web服务协议栈的一个重要部分。通过UDDI,企业可以根据自己的需要动态查找并使用Web服务,也可以将自己的Web服务动态地发布到UDDI注册中心,供其他用户使用。
SOAP是在分散或分布环境中以XML形式提供的一个简单、轻量的交换结构化和类型信息的机制。
SOAP本身并没有定义任何应用程序语义(如编程模型或特定语义的实现),实际上,它通过提供一个有标准构件的包模型和在模块中编码数据的机制,定义了一个简单的表示应用程序语义的机制。这使SOAP能够被用于从消息传递到RPC的各种系统。