软件架构设计之五:基于构件的开发

2024-01-09 18:18

本文主要是介绍软件架构设计之五:基于构件的开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、本章要点

1)信息系统综合知识。包括构件与软件复用;构件的概念与分类;中间件技术;典型应用架构(J2EE、.NET)。

2)系统架构设计案例分析。包括中间件、应用服务器。


二、构件与软件重用

构件(component,组件)是一个功能相对独立的具有可重用价值的软件单元。

1、软件重用

1)可重用性(可复用性)是指系统和(或)其组成部分能在其他系统中重复使用的程度。

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

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

4)水平式重用是重用不同应用领域中的软件元素,如标准函数库。

5)垂直式重用是在一类具有较多公共性的应用领域之间重用软件构件。

6)Caper Jones定义了10种可能重用的软件要素,分别是项目计划、成本估计、架构、需求模型和规格说明、设计、源程序代码、用户文档和技术文档、用户界面、数据结构和测试用例。

7)系统的软件重用包括可重用的资产(构件)的开发、管理、支持和重用4个过程。

2、构件标准

1)构件是软件系统可替换的、物理的组成部分,它封装了实现体(实现某个职能),并提供了一组接口的实现方法。

2)构件应向重用者提供一些公共特性,另一方面还要提供可变的特性。

3)CORBA是由OMG制定的一个工业标准,其主要目标是提供一种机制,使得对象可以透明地发出请求和获得应答,从而建立起一个异质的分布式应用环境。

4)EJB是用于开发和部署多层结构的、分布式的、面向对象的Java应用系统的跨平台的构建架构。三种类型的EJB,会话Bean、实体Bean和消息驱动Bean。

5)Microsoft的分布式DCOM扩展了COM,使其能够支持在局域网、广域网甚至Internet上不同计算机对象之间的通信。

3、构件获取

1)可重用信息具有领域特定性,即可重用性不是信息的一种孤立的属性,它依赖于特定的问题和特定的问题解决方法。

2)领域具有内聚性和稳定性,即关于领域的解决方法是充分内聚和充分稳定的。

3)领域是一组具有相似或相近软件需求的应用系统所覆盖的功能区域,领域工程是一组相似或相近系统的应用工程建立基本能力和必备基础的过程。

4)构件获取的不同途径:

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

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

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

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

4、构件管理

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

2)可重用技术对构件库组织方法要求如下:

  (1)支持构件库的各种维护动作,如增加、删除以及修改构件,尽量不要影响构件库的结构。

  (2)不仅要支持精确匹配,还要支持相似构件的查找。

  (3)不仅能进行简单的语法匹配,而且能够查找在功能或行为方面等价或相似的构件。

  (4)对应用领域具有较强的描述能力和较好的描述精度。

  (5)库管理员和用户容易使用。

3)构件分类方法:

  (1)关键字分类法(2)刻面分类法(3)超文本组织方法

4、构件分类

构成一个软件系统的构件可分为以下5类:

  (1)独立而成熟的构件

  (2)有限制的构件

  (3)适应性的构件

  (4)装配的构件

  (5)可修改的构件

5、人员及权限管理

构件库系统可包括5类用户,即注册用户、公共用户、构件提供者、一般系统管理员和超级系统管理员。

6、构件重用

构件库的使用者必须完成以下工作:检索与提取构件,理解与评价构件、修改构件,最后将构件组装到新的软件产品中。

1)检索与提取构件

  (1)基于关键字的检索(2)刻面检索法(3)超文本检索法(4)上述方法都基于语法匹配,理论的检索方法是语义匹配。

2)理解与评价构件

  (1)在构件库的文档中,全面、准确地说明以下内容:构件的功能与行为;相关的领知域识;可适应性约束条件和例外情形;可以预见的修改部分及修改方法。

  (2)逆向工程是理解构件的另一种重要手段。

  (3)对构件可重用的评价,是通过收集并分析构件的用户在实际重用该构件的历史过程中的各种反馈信息来完成的。包括重用成功的次数,对构件的修改量,构件的健壮性度量和性能度量。

3)修改构件

与构件相关的文档和抽象层次更高的设计信息对于构件的修改至关重要。

4)构件组装

是指将库中的构件经适当修改后互相连接,或者将它们与当前开发项目中的软件元素相连接,最终构成新的目标软件。

构件组装技术大致可分为基于功能的组装技术、基于数据的组装技术和面向对象的组装技术。


三、中间件技术

为解决分布异构问题,人们提出了中间件的概念。

被业界比较认可的两种定义如下:

  (1)在一个分布式系统环境下处于操作系统和应用程序之间的软件。

  (2)中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户端服务器的操作系统之上,管理计算资源和网络通信。

1、中间件的功能

1)基本功能如下:

  (1)负责客户端和服务器间的连接和通信。

  (2)提供客户端与应用层的高效率通信机制。

  (3)提供应用层与数据库之间的互操作机制。

  (4)提供应用层与数据库之间的连接和控制机制。

  (5)提供一个多层结构应用开发和运行的平台。

  (6)提供一个应用开发框架,支持模块化的应用开发。

  (7)屏蔽硬件、操作系统、网络和数据库。

  (8)提供交易管理机制,保证交易的一致性。

  (9)提供应用的安全机制与管理功能。

  (10)提供应用的负载均衡和高可用性。

  (11)提供一组通用的服务去执行不同的功能,为的是避免重复的工作和是应用之间可以协作。

2)中间件作为一大类系统软件,与操作系统、数据库管理系统并称为“三驾马车”。

3)它的优越性体现在:缩短应用的开发周期、节约应用的开发成本、减少系统初期的建设成本、降低应用开发的失败率、保护已有的投资、简化应用集成、减少维护费用、提高应用的开发质量、保证技术进步的连续性、增强应用的生命力。

2、中间件的分类

1)中间件的任务是使应用程序开发变得更容易,通过提供统一的程序抽象,隐藏异构系统和分布式系统下低级别编程的复杂度。

2)从层次上划分,可分为底层型中间件、通用型中间件和集成型中间件。

3)底层型中间件主流技术:JVM、CLR、ACE、JDBC和ODBC等。

4)通用型中间件主流技术:CORBA、EJB和COM/DCOM等。

5)集成型中间件主流技术:WorkFlow和EAI等。

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

7)平台分为远程过程调用(Remote Procedure Call,RPC)、面向消息的中间件(Message-Oriented Middleware,MOM)和对象请求代理(Object Request Brokers,ORB)三类。

8)RPC,一个应用程序使用RPC来远程执行一个位于不同地址空间里的过程。

9)MOM,利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。消息传递和排队技术有以下三个主要特点:

  (1)通信程序可在不同的时间运行(2)对应用程序的结构没有约束(3)程序与网络复杂性相隔离

10)ORB是OMG退出的对象管理结构(Object Management Architecture,OMA)模型的核心组件,它的作用在于提供一个通信框架,透明地在异构的分布计算环境中传递对象请求。


四、应用服务器

可以把应用服务器看作是一种构件服务器,它为层架构的中间层提供服务。例如,在应用服务器中运行中间层的商业逻辑组件、开发者使用应用服务器提供的中间件简化开发过程,同时大多数应用服务器还提供了内容管理、负载均衡、容错、连接池和对象持久性等功能。

1、应用服务器的作用

1)应用服务器可以解决传统的两层客户端/服务器计算中的其他不足,并且能够提供许多新的优点:

  (1)可升级性(2)分布式处理(3)可重用的业务对象(4)业务规则(5)跨平台集成

2)在具体应用中,应用服务器能够解决一下问题:

  (1)集成遗留系统和数据库(2)为Web站点提供支持(3)开发Web集成系统(4)个人计算机的部署(5)电子商务(6)性能管理

2、应用服务器的类型

1)根据技术实现的不同分为:

  (1)操作系统型(2)集成型(3)插件型(4)独立型

2)根据具体产品类型分为:

  (1)事务服务器(2)知识服务器(3)带集成开发工具的应用服务器(4)协作服务器(5)瘦服务器(6)主机访问服务器

3、应用服务器产品

1)BEA WebLogic

2)IBM WebSphere Application Server

3)Microsoft Transaction Server

4)Oracle Application Server

5)SilverStream

6)Sybase Enterprise Application Server


五、J2EE与.NET平台

1、J2EE的核心技术

J2EE平台提供了一个多层结构的分布式的应用程序模型,该模型具有重用构件的能力、基于XML的数据交换、统一的安全模式和灵活的事务控制。

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

2)JDBC是Java语言连接数据库的标准。

3)Java Servlet(Java 服务端小程序)。

4)JSP(Java Server Page,Java服务器页面)。可以认为是一种高层的Servlet,在服务端,JSP总是首先被编译成Servlet运行的。

5)JMS(Java Message Service,Java消息服务)。JMS是一个消息标准。

6)JNDI(Java Naming and Directory Interface, Java命名目录接口)。

7)JTA(Java Transaction APID,Java事务API)。

8)Java Mail API(Java 邮件API)

9)JAXP(Java XML解析API)

10)JCA(J2EE Connector Architecture,J2EE连接架构),三个关键元素:资源适配器、系统界面和通用客户界面。

11)JAAS(Java Authentication Authorization Service,Java认证和授权服务)

2、.NET平台

平台包括5个部分:

1)操作系统是.NET平台的基础。

2).NET Enterprise Servers提供了包括Application Center 2000、BizTalk Server 2000和Commerce Server 2000等一系列服务器产品。

3).NET Building Block Services指的是一些成型的服务。

4).NET Framework位于整个.NET平台的中央,为开发.NET应用提供低层的支持。

5)Visual Studio.NET是.NET应用程序的集成开发环境,它位于.NET平台的顶端。

3、比较分析

它们的目标都是为了解决构建企业计算等大型平台而出现的。

1)在开发语言的选择范围中,.NET的语言选择范围相当大;而构建J2EE应用,在语言选择方面,则只能使用Java语言。

2).NET的标准与J2EE不同,没有完全开放。

3).NET唯一可不选用Microsoft产品的就是数据库,且ADO.NET仅支持MS SQL和Access,其他数据库必须使用OLE DB访问。J2EE的选择余地则很大。

4)虽然.NET中的技术标准可以构造完整的分布式应用,但J2EE的选择范围更多。



这篇关于软件架构设计之五:基于构件的开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/588001

相关文章

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

基于Java开发一个极简版敏感词检测工具

《基于Java开发一个极简版敏感词检测工具》这篇文章主要为大家详细介绍了如何基于Java开发一个极简版敏感词检测工具,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录你是否还在为敏感词检测头疼一、极简版Java敏感词检测工具的3大核心优势1.1 优势1:DFA算法驱动,效率提升10

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块