软考架构师(15)——基于构件的开发

一:构件与软件的重用

1:软件重用

软件重用(软件复用)是使用已有的软件产品(如设计、代码、文档等)来开发新的软件系统的过程。

软件重用的形式大体可分为垂直式重用和水平式重用。

水平式重用是重用不同应用领域中的软件元素,例如数据结构、排序算法、人机界面构件等。标准函数库是一种典型的原始的水平式重用机制。

垂直式重用是在一类具有较多公共性的应用领域之间重用软件构件。垂直式重用活动的主要关键点在于领域分析:根据应用领域的特征和相似性,预测软件构件的可重用性。

2:构件标准

  构件是软件系统可替换的、物理的组成部分,它封装了实现体(实现某个职能),并提供了一组接口的实现方法。可以认为构件是一个封装的代码模块或大粒度的运行时模块,也可以将构件理解为具有一定功能、能够独立工作或与其它构件组合起来协调工作的对象。

  构件应当是内聚的,并具有相当稳定的、公开的接口。

3:构件的获取

在建立基于构件的软件开发中,构件获取可以有多种不同的途径:

(1)从现有构件中获得符合要求的构件,直接使用或作适应性(flexibility)修改,得到可重用的构件。

(2)通过遗留工程(legacy engineering),将具有潜在重用价值的构件提取出来,得到可重用的构件。

(3)从市场上购买现成的商业构件,即COTS(Commercial Off-The-Shell)构件。

(4)开发新的符合要求的构件。

4:构件管理

 构件管理的内容包括构件描述、构件分类、构件库组织、人员及权限管理和用户意见反馈等。

1. 构件的组织

对已有的构件分类方法可以归纳为三大类,分别是关键字分类法、刻面分类法和超文本组织方法。

(1)关键字分类法(keyword classification):根据领域分析的结果将应用领域的概念按照从抽象到具体的顺序逐次分解为树形或有向无回路图结构。每个概念用一个描述性的关键字表示。

(2)刻面分类法(faceted classification):定义若干用于刻画构件特征的“面”(facet),每个面包含若干概念,这些概念描述构件在面上的特征。刻面可以描述构件执行的功能、被操作的数据、构件应用的语境或任意其他特征。描述构件的刻面的集合称为刻面描述符(facet descriptor),通常,刻面描述被限定不超过7或8个刻面。

关键字分类法和刻面分类法都是以数据库系统作为实现背景的。尽管关系数据库可供选用,但面向对象数据库更适于实现构件库,因为其中的复合对象、多重继承等机制与表格相比更适合描述构件及其相互关系。

(3)超文本方法(hypertext classification):与基于数据库系统的构件库组织方法不同,它基于全文检索技术。其主要思想是:所有构件必须辅以详尽的功能或行为说明文档;说明中出现的重要概念或构件以网状链接方式相互连接;检索者在阅读文档的过程中可按照人类的联想思维方式任意跳转到包含相关概念或构件的文档;全文检索系统将用户给出的关键字与说明文档中的文字进行匹配,实现构件的浏览式检索。超文本是一种非线性的网状信息组织方法,它以结点为基本单位,链作为结点之间的联想式关联。超文本组织方法为构造构件和重用构件提供了友好、直观的多媒体方式。由于网状结构比较自由、松散,因此,超文本方法比前两种方法更易于修改构件库的结构。

2. 构件分类

如果把软件系统看成是构件的集合,那么从构件的外部形态来看,构成一个系统的构件可分为5类:

(1)独立而成熟的构件。独立而成熟的构件得到了实际运行环境的多次检验,该类构件隐藏了所有接口,用户只需用规定好的命令进行使用。例如,数据库管理系统和操作系统等。

(2)有限制的构件。有限制的构件提供了接口,指出了使用的条件和前提,这种构件在装配时,会产生资源冲突、覆盖等影响,在使用时需要加以测试。例如,各种面向对象程序设计语言中的基础类库等。

(3)适应性构件。适应性构件进行了包装或使用了接口技术,把不兼容性、资源冲突等进行了处理,可以直接使用。这种构件可以不加修改地使用在各种环境中。例如ActiveX等。

(4)装配的构件。装配的构件在安装时,已经装配在操作系统、数据库管理系统或信息系统不同层次上,使用胶水代码(glue code)就可以进行连接使用。目前一些软件商提供的大多数软件产品都属这一类。

(5)可修改的构件。可修改的构件可以进行版本替换。如果对原构件修改错误、增加新功能,可以利用重新“包装”或写接口来实现构件的替换。这种构件在应用系统开发中使用得比较多。

3:人员权限管理

  一般来讲,构件库系统可包括五类用户,即注册用户、公共用户、构件提交者、一般系统管理员和超级系统管理员。他们对构件库分别有不同的职责和权限,这些人员相互协作,共同维护着构件库系统的正常运作。同时,系统为每一种操作定义一个权限,包括提交构件、管理构件、查询构件及下载构件。每一用户可被赋予一项或多项操作权限,这些操作权限组合形成该人员的权限,从而支持对操作的分工,为权限分配提供了灵活性。

5:构件重用

1. 检索与提取构件

2. 理解与评价构件

3. 修改构件

4. 构件组装

二:中间件技术

为解决分布异构问题,人们提出了中间件的概念。中间件是位于平台(硬件和操作系统)和应用之间的通用服务,这些服务具有标准的程序接口和协议。

优势:

 中间件作为一大类系统软件,与操作系统、数据库管理系统并称“三驾马车”,它的优越性体现在以下几个方面:

缩短应用的开发周期、节约应用的开发成本、减少系统初期的建设成本、降低应用开发的失败率、保护已有的投资、

简化应用集成、减少维护费用、提高应用的开发质量、保证技术进步的连续性、增强应用的生命力。

具体地说,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。

中间件为上层应用屏蔽了异构平台的差异,而其上的框架又定义了相应领域内的应用的系统结构、标准的服务组件等,用户只需告诉框架所关心的事件,然后提供处理这些事件的代码。当事件发生时,框架则会调用用户的代码。用户代码不用调用框架,用户程序也不必关心框架结构、执行流程、对系统级API的调用等,所有这些由框架负责完成。

因此,基于中间件开发的应用具有良好的可扩充性、易管理性、高可用性和可移植性。

层次:

从中间件的层次上来划分,可分为底层型中间件、通用型中间件和集成型中间件三个大的层次。

  底层型中间件的主流技术有JVM(Java Virtual Machine,Java虚拟机)、CLR(Common Language Runtime,公用语言运行时)、ACE(Adaptive Communication Environment,自适应通信环境)、JDBC和ODBC等,代表产品有Sun JVM和Microsoft的CLR;

  通用型中间件的主流技术有CORBA、EJB、COM/DCOM等,代表产品主要有IONA Orbix、BEA WebLogic和IBM MQSeries等;集成型中间件的主流技术有WorkFlow和EAI等,代表产品主要有BEA WebLogic和IBM WebSphere等。

由于中间件需要屏蔽分布环境中异构的操作系统和网络协议,它必须能够提供分布环境下的通讯服务,我们将这种通讯服务称之为平台。

基于目的和实现机制的不同,我们将平台分为

远程过程调用(Remote Procedure Call,RPC)、

面向消息的中间件(Message-Oriented Middleware,MOM)、

对象请求代理(Object Request Brokers,ORB)

它们可向上提供不同形式的通讯服务,包括同步、排队、订阅发布、广播等,在这些基本的通讯平台之上,可构筑各种框架,为应用程序提供不同领域内的服务。

 

三:应用服务器

就具体的产品类型来看,目前市场中主要有6种类型,分别是事务服务器、知识服务器、带有集成开发工具的应用服务器、协作服务器、瘦服务器和主机访问服务器。不过,具体的服务器产品并不一定会是某种特点功能,往往是兼而有之。

 

 
 

 

 

 

 

 

四:J2EE与.NET平台

J2EE

(1)EJB。EJB是Java服务器端的构件模型。EJB容器作为EJB构件的执行环境,提供服务器端的系统级功能,包括线程管理、状态管理和安全管理等。

  EJB定义了访问构件服务的分布式客户接口模型,通过RMI-IIOP(Java Remote Method Invocation-Internet Inter-ORB Protocol),EJB可以同COBRA对象进行互操作。使用Java开发的EJB具有一次编写到处运行的优点,按照标准开发的EJB构件可以部署到任何一个支持EJB标准的应用服务器中。使用EJB开发企业应用,可以缩短开发周期,开发人员只需要将注意力集中在业务逻辑的实现上,底层服务完全由EJB容器提供。使用EJB开发的业务逻辑部分具有很好的移植性,不需要更改EJB的代码,开发人员能够将EJB从一种操作环境移植到另一种操作环境。

(2)JDBC。JDBC是Java语言连接数据库的标准,从免费的Mysql到企业级的DB2和Oracle,JDBC都提供了很好的接口。

  JDBC API有两个部分,一个用来访问数据库的应用程序级的接口,另一个用来将JDBC驱动整合到J2EE平台中的服务提供商接口。

(3)Java Servlet(Java服务器端小程序)。在Servlet技术中封装了HTTP协议,开发者不需要处理复杂的网络连接和数据包,就可以扩展Web服务器的功能。类似于其他的服务器端程序,Servlet完全运行于Web服务器中,具有不错的效率和更好的移植性。

(4)JSP(Java Server Page,Java服务器页面)。可以认为是一种高层的Servlet,在服务器端,JSP总是首先被编译成Servlet运行的。如同在ASP(Active Server Page,动态服务器页面)中直接使用VBScript一样,使用JSP可以直接在HTML代码中嵌入Java代码,并提交给服务器运行。使用JSP便于逻辑和表现形式的分离。

(5)JMS(Java Message Service,Java消息服务)。JMS是一个消息标准,它允许J2EE应用程序建立、发送、接收和阅读消息。它使得建立连接简单的、可靠的和异步的分布式通信成为可能。

(6)JNDI(Java Naming and Directory Interface,Java命名目录接口)。JNDI提供命名的目录功能,为应用程序提供标准的目录操作的方法,

  例如,获得对象的关联属性、根据它们的属性搜寻对象等。使用JNDI,一个J2EE应用程序可以存储和重新得到任何类型的命名Java对象。因为JNDI不依赖于任何特定的执行,应用程序可以使用JNDI访问各种命名目录服务,这使得J2EE应用程序可以和传统的应用程序和系统共存。

(7)JTA(Java Transaction API,Java事务API)。JTA提供事务处理的标准接口,EJB使用JTA与事务处理服务器通信。JTA提供启动事务、加入现有的事务、执行事务处理和恢复事务的编程接口。

(8)Java Mail API(Java邮件API)。J2EE应用程序可以使用Java Mail API来发送电子邮件。Java Mail API包含两部分,分别是应用程序级接口和服务接口。

(9)JAXP(Java XML解析API)。JAXP支持DOM、SAX(Simple API for XML,简单应用程序接口)、XSLT(eXtensible Stylesheet Language for Transformation)转换引擎。JAXP使得应用程序可以更简单的处理XML。

(10)JCA(J2EE Connector Architecture,J2EE连接架构)。JCA是对J2EE标准集的重要的补充,它注重的是用于将Java程序连接到非Java程序和软件包的中间件的开发。JCA包括三个关键的元素,分别是资源适配器、系统界面、通用客户界面。JCA在功能上比Web服务要丰富,但是它发布起来更难,而且限制了只能从Java环境访问它们。

(11)JAAS(Java Authentication Authorization Service,Java认证和授权服务)。JAAS提供灵活和可伸缩的机制来保证客户端或服务器端的Java程序,它让开发者能够将一些标准的安全机制通过一种通用的,可配置的方式集成到系统中。

VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。
DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对象。
DO(Domain Object):领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。
PO(PersistentObject):持久化对象,它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个字段(或若干个)就对应PO的一个(或若干个)属性。

 

 

.NET平台

(1)操作系统是.NET平台的基础,在操作系统方面,Microsoft有着强大的开发能力,目前的.NET平台可以运行在多个由Microsoft提供的操作系统中。

(2).NET Enterprise Servers提供了包括Application Center、BizTalk Server、CommerceServer等一系列服务器产品,通过这些产品可以缩短构建大型企业应用系统的周期。

(3).NET Building Block Services指的是一些成型的服务,例如,由Microsoft提供的NET Passport服务等。.NET的开发者可以以付费的方式直接将这些服务集成在自己的应用程序中。

(4).NET Framework位于整个.NET平台的中央,为开发.NET应用提供低层的支持。.NET Framework的核心部分是CLR。CLR是.NET程序的执行引擎,.NET的众多优点也是由CLR所赋予的。CLR同JVM的功能类似,提供了单一的运行环境。任何.NET应用程序都会被最终编译成为IL(Intermediate Language,中间语言),并在这个统一的环境中运行。也就是说,CLR可以用于任何针对它的编程语言,这也就是.NET的多语言支持功能。CLR还负责.NET应用程序的内存管理、对象生命期的管理、线程管理、安全等一系列的服务。

(5)Visual Studio.NET是.NET应用程序的集成开发环境,它位于.NET平台的顶端。Visual Studio.NET是一个强大的开发工具集合,里面集成了一系列.NET开发工具,如:C#.NET、VB.NET、XML Schema Editor等。

 

posted @ 2018-11-11 15:53  阿苍老师  阅读(2844)  评论(0编辑  收藏  举报