首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

系统集成项目管理工程师:信息系统集成专业技术知识--软件架构

1.软件架构定义

在软件工程发展的初期,通常将软件设计的重点放在数据结构和算法的选择上。随着软件系统规模越来越大、越来越复杂,整个系统的结构设计和规范说明越来越重要,软件架构的重要性日益凸显。

软件总是有架构的。将软件系统划分成多个模块,明确各模块之间的相互作用,组合起来实现系统的全部特性,就是系统架构。通常将一些经过实践证明的、可重复使用的软件架构设计策略总结成架构模式,以便交流和学习。软件架构中借鉴了许多计算机架构和网络架构等其他领域的思想和方法。

2.软件架构模式

软件架构设计的一个核心问题是能否使用架构模式,即能否达到架构级的软件重用。软件架构模式描述了某一特定应用领域中系统的组织方式,反映了领域中众多系统所共有的结构和特性,描述了将各个模块和子系统有效地组织成一个完整系统的解决方案。

常见的典型架构模式如下。

(1)管道/过滤器模式。此模式中,每个组件(过滤器)都有一组输入/输出,组件读取输入的数据流,经过内部处理后,产生输出的数据流,该过程主要完成输入流的变换及增量计算。其典型应用包括批处理系统。

管道/过滤器模式体现了各功能模块高内聚、低耦合的“黑盒”特性,支持软件功能模块的重用,便于系统维护;同时,每个过滤器自己完成数据解析和合成工作(如加密和解密),易导致系统性能下降,并增加了过滤器具体实现的复杂性。

(2)面向对象模式:在面向对象的基础上,将模块数据的表示方法及其相应操作封装在更高抽象层次的数据类型或对象中。其典型应用是基于组件的软件开发(Component-Based Development, CBD)。

(3)事件驱动模式:其基本原理是组件并不直接调用操作,而是触发一个或多个事件。系统中的其他组件可以注册相关的事件,触发一个事件时,系统会自动调用注册了该事件的组件,即触发事件会导致另一组件中操作的调用。其典型应用包括各种图形界面应用。

(4)分层模式:采用层次化的组织方式,每一层都为上一层提供服务,并使用下一层提供的功能。该模式允许将一个复杂问题逐步分层实现。其中的每一层最多只影响相邻两层,只要给相邻层提供相同的接口,就允许每层用不同的方法实现,可以充分支持软件复用。其典型应用是分层通信协议,如ISO/OSL的七层网络模型。此模式也是通用应用架构的基础模式。

(5)客户/服务器模式(Client/Server,C/S):基于资源不对等,为实现共享而提出的模式。C/S 模式将应用一分为二,服务器(后台)负责数据操作和事务处理,客户(前台)完成与用户的交互任务。

C/S 模式中客户与服务器分离,允许网络分布操作,适用于分布式系统。为了解决C/S模式中客户端的问题,发展形成了浏览器/服务器(Browser/Server,B/S)模式;为了解决C/S 模式中服务器端的问题,发展形成了三层(多层)C/S 模式,即多层应用架构。软件架构模式为粗粒度的软件重用提供了可能。但是,由于考虑问题的角度不同,对于架构模式的选择会有很大的不同。为系统选择或设计架构时,需要根据特定项目的具体特点,进行分析比较后再确定。同时应注意,各种架构模式并不是互斥的,某些应用系统中可以综合使用多种架构模式。

3.软件架构分析与评估

针对目前广泛使用的分布式应用,其软件架构设计需要考虑如下问题。

(1)数据库的选择问题:目前主流的数据库系统是关系数据库。

(2)用户界面选择问题:HTML/HTTP(S)协议是实现 Internet 应用的重要技术。

(3)灵活性和性能问题:权衡独立于厂商的抽象定义(标准)所提供的灵活性和特定厂商产品晶带来的性能。

(4)技术选择的问题:选择成熟的技术可以规避项目风险。不仅需要了解技术的优势,还需要了解技术的适用范围和局限性。

(5)人员的问题:聘请经验丰富的架构设计师,可以有效地保证项目的成功。

4.软件中间件

中间件(Middleware)是位于硬件、操作系统等平台和应用之间的通用服务。借由中间件,解决了分布系统的异构问题。

中间件服务且有标准的程序接口和协议。不同的应用、硬件及操作系统平台,可以提供符合接口和协议规范的多种实现,其主要目的是实现应用与平台的无关性。借助中间件,屏蔽操作系统和网络协议的差异,为应用程序提供多种通讯机制,满足不同领域的应用需要。

中间件包括的范围十分广泛,针对不同的应用需求有各种不同的中间件产品。从不同角度对中间件的分类也会有所不同。通常将中间件分为数据库访问中间件、远程过程调用中间件、面向消息中间件、事务中间件、分布式对象中间件等。

(1)数据库访问中间件通过一个抽象层访问数据库,从而允许使用相同或相似的代码访间不同的数据库资源。曲型技术如Windows平台的ODBC和Java平台的JDBC等。

(2)远程过程调用中间件(Remote Procedure Call,RPC):是一种分布式应用程序的处理方法。一个应用程序可以使用RPC来“远程”执行一个位于不同地址空间内的过程,从效果上看和执行本地调用相同。

一个RPC应用分为服务器和客户两个部分。服务器提供一个或多个远程操作过程;客户向服务器发出远程调用。服务器和客户可以位于同一台计算机,也可以位于不同的计算机,甚至可以运行在不同的操作系统之上。客户和服务器之间的网络通讯和数据转换通过代理程序(Stub与 Skeleton)完成,从而屏蔽了不同的操作系统和网络协议。

(3)面向消息中间件(Message-Oriented Middleware,MOM):利用高效可靠的消息传递机制进行平台无关的数据传递,并可基于数据通信进行分布系统的集成。通过提供消息传递和消息队列模型,可在分布环境下扩展进程间的通信,并支持多种通讯协议、语言、应用程序、硬件和软件平台。典型产品如IBM的 MQSeries.

(4)分布式对象中间件:是建立对象之间客户/服务器关系的中间件,结合了对象技术与分布式计算技术。该技术提供了一个通信框架,可以在异构分布计算环境中透明地传递对象请求。典型产品如OMG 的 CORBA、Java的 RMI/EJB、Microsoft的 DCOM等。

(5)事务中间件:也称事务处理监控器(Transaction Processing Monitor,TPM),提供支持大规模事务处理的可靠运行环境。TPM位于客户和服务器之间,完成事务管理上协调、负载平衡、失效恢复等任务,以提高系统的整体性能。典型产品如IBM/BEA的 Tuxedo。结合对象技术的对象事务监控器(Object Transaction Monitor,OTM)如支持EJB的 JavaEE 应用服务器等。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OflxJliLBy22URrKLDzt7xWw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券