认识基于中间件的软件开发方法

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介:
与传统的软件开发方式相比,基于中间件的软件开发方法有什么突破呢?
一、体系结构
软件体系结构代表了系统公共的高层次的抽象,它是系统设计成败的关键。其设计的核心是能否使用重复的体系模式。传统的应用系统体系结构从基于主机的集中式框架,到在网络的客户端上通过网络访问服务器的框架,都不能适应目前企业所处的商业环境,原因是:
企业过分地依赖于某个供应商的软件和硬件产品。这种单一供应商使得企业难以利用计算供应商的免费市场,将计算基础设施的重要决定交给第三方处理,这显然不利于企业在合作伙伴之间共享信息。 
不能适应远程访问的分布式、多层次异构系统。 
封装的应用系统在出现某种组织需要时,难以用定制来维护系统,从而难以满足多变的需求。 
不能实现分析、设计核心功能重用,最多只能实现代码重用。 
如今,应用系统已经发展成为在Intranet和Internet上的各种客户端可远程访问的分布式、多层次异构系统。CBSD为开发这样的应用系统提供了新的系统体系结构。它是标准定义的、分布式、模块化结构,使应用系统可分成几个独立部分开发,可用增量方式开发。
这样的体系结构实现了CBSD的以下几点目标:
能够通过内部开发的、第三方提供的或市场上购买的现有中间件,来集成和定制应用软件系统。 
鼓励在各种应用系统中重用核心功能,努力实现分析、设计的重用。 
系统都应具有灵活方便的升级和系统模块的更新维护能力。 
封装最好的实践案例,并使其在商业条件改变的情况下,还能够被采用,并能保留已有资源。 
由此看出,CDSD从系统高层次的抽象上解决了复用性与异构互操作性,这正是分布式网络系统所希望解决的难题。
二、开发过程
传统的软件开发过程在重用元素、开发方法上都与CBSD有很大的不同。虽然面向对象技术促进了软件重用,但是,只实现了类和类继承的重用。在整个系统和类之间还存在很大的缺口。为填补这个缺口,人们曾想了许多方法,如系统体系结构、框架、设计模式等。
自从中间件出现以来,软件的重用才得到了根本改变。CBSD实现了分析、设计、类等多层次上的重用。图1显示了它的重用元素分层实现。在分析抽象层上,重用元素有子系统、类;在设计层上重用元素有系统体系结构、子系统体系结构、设计模式、框架、容器、中间件、类库、模板、抽象类等。
在软件开发方法上,CBSD引导软件开发从应用系统开发转变为应用系统集成。建立一个应用系统需要重用很多已有的中间件模块,这些中间件模块可能是在不同的时间、由不同的人员开发的,并有各种不同的用途。在这种情况下,应用系统的开发过程就变成对中间件接口、中间件上下文以及框架环境一致性的逐渐探索过程。例如,在J2EE平台上,用EJB框架开发应用系统,主要工作是将应用逻辑,按session Bean、entity Bean设计开发,并利用JTS事务处理的服务实现应用系统。其主要难点是事务划分、中间件的部署与开发环境配置。概括地说,传统的软件开发过程是串行瀑布式、流水线的过程;而CBSD是并发进化式,不断升级完善的过程。图2显示了它们的不同。
 
三、软件方法学
软件方法学是从各种不同角度、不同思路去认识软件的本质。传统的软件方法学是从面向机器、面向数据、面向过程、面向功能、面向数据流、面向对象等不断创新的观点反映问题的本质。整个软件的发展历程使人们越来越认识到应按客观世界规律去解决软件方法学问题。直到面向对象方法的出现,才使软件方法学迈进了一大步。但是,高层次上的重用、分布式异构互操作的难点还没有解决。CBSD发展到今天,才在软件方法学上为解决这个难题提供了机会。它把应用业务和实现分离,即逻辑与数据的分离,提供标准接口和框架,使软件开发方法变成中间件的组合。因此,软件方法学是以接口为中心,面向行为的设计。图3是其开发过程。
归纳起来,CBSD的软件开发方法学应包括下面几方面:
对中间件有明确的定义。 
基于中间件的概念需要有中间件的描述技术和规范,如UML、JavaBean、EJB、Servlet规范等。 
开发应用系统必须按中间件裁剪划分组织,包括分配不同的角色。 
有支持检验中间件特性和生成文档的工具,确保中间件规范的实现和质量测试。 
总之,传统的软件方法学从草稿自顶向下进行,对重用没有提供更多的辅助。CBSD的软件方法学要丰富得多,它是即插即用,基于体系结构,以接口为中心,将中间件有机组合,它把自顶向下和自底向上方法结合起来进行开发。
四、开发组织机构
传统软件的开发组织一般由分析员、设计员、程序员和测试员组成。对一个小的应用系统来说,一个熟练的开发人员,可能兼顾以上多个角色。但对CBSD来说,因为中间件开发与应用系统集成往往是分开进行的,因此整个开发过程由六个角色来完成,他们是:
中间件开发者 也是中间件供货商,这些大多数是中间件中间件提供者。 
应用中间件集成者 针对某应用领域将已有中间件组合成更大的中间件模块或容器, 作为系统部署的基本单元。 
应用系统部署者 将系统部署基本单元放入选定的平台环境或基本框架中,完成软件定制的要求。 
开发平台服务器供应商 提供服务器、操作系统和数据库等基本软件。 
应用系统开发工具供应商 提供中间件公共设施服务。 
系统管理员 配置硬件、网络和操作系统,监督和维护应用系统者。 
这六个角色的工作专业性很强,要兼顾成为多面手很不容易。目前已形成中间件开放市场,而且还很火红。这也是当今软件人才大战所遇的一个困惑。因此,在CBSD中,如何组织好开发队伍尤为重要,必须按本企业所具备人才来组织。特别重要的是:开发初期必须选好标准框架,以及统一的开发指导方针,保证在整个开发过程中,各角色能随时互相沟通。一般来说,CBSD的人员素质决定了中间件的重用率。
五、构造方法
传统应用软件的构造是用白盒子方法,应用系统的实现全在代码中,应用逻辑和数据粘结在一起。而CBSD 的构造是用白盒子和黑盒子相结合的方法。基于中间件的框架是用两个概念来支持演变:第一个概念是中间件有很强的性能接口,使中间件逻辑功能和中间件模型的实现都隐藏起来。这样,只要接口相同,中间件就可以被替换。
第二个概念是隐式调用,即在基于中间件的框架中,从来不直接给中间件的接口分配地址,只在识别中间件用户后才分配地址。因此,中间件用户只要了解接口要求和为中间件接口提供的引用后的返回信息 (该引用可能是一个中间件,也可能是一个中间件代理。对中间件用户来说,中间件代理就是中间件,不用区分) 。中间件接口的信息并不存入中间件内,而是存入中间件仓库或注册处。这样才能保证中间件替换灵活,并很容易利用隐式调用去重新部署中间件。由于中间件的实现对用户透明,因此也使中间件能适应各种不同的个性化要求。为此,中间件提供自检和规范化两个机制。自检保证在不了解中间件的具体实现时,就能获得中间件接口信息。例如, JavaBean提供的自检机制是Reflection和BeanInfo, 通过Reflection 可直接获得Bean中间件的全部方法,通过BeanInfo可直接获得中间件的许多复杂信息。
规范化允许不访问中间件就可以修改它,如JavaBean提供的规范化是property sheet和customizer(定制器)。 通过property sheet提供一组简单参数,修改Bean的属性。复杂的修改由用户通过定制器设置参数完成。
 
 
 
 
本文转自dotfun 51CTO博客,原文链接:http://blog.51cto.com/dotfun/286039

相关文章
|
9月前
|
开发框架 中间件 .NET
go-micro集成链路跟踪的方法和中间件原理
go-micro集成链路跟踪的方法和中间件原理
100 0
|
开发框架 前端开发 安全
ASP.NET Core Startup类Config gure()方法|ASP.NET Core 中间件详细说明
目录 Startup 类 Configure() 方法 中间件 使用中间件 Configure 方法 的参数 IApplicationBuilder Extension Methods(拓展方法)--微软提供的中间件
146 0
ASP.NET Core Startup类Config gure()方法|ASP.NET Core 中间件详细说明
|
8月前
|
NoSQL Java Redis
阿里Java高级岗中间件二面:GC+IO+JVM+多线程+Redis+数据库+源码
虽然“钱多、事少、离家近”的工作可能离技术人比较远,但是找到一份合适的工作,其实并不像想象中那么难。但是,有些技术人确实是认真努力工作,但在面试时表现出的能力水平却不足以通过面试,或拿到高薪,其实不外乎以下 2 个原因:
|
8月前
|
算法 NoSQL Java
2023年阿里高频Java面试题:分布式+中间件+高并发+算法+数据库
又到了一年一度的金九银十,互联网行业竞争是一年比一年严峻,作为工程师的我们唯有不停地学习,不断的提升自己才能保证自己的核心竞争力从而拿到更好的薪水,进入心仪的企业(阿里、字节、美团、腾讯.....)
|
8月前
|
算法 NoSQL Java
2021年阿里高频Java面试题:分布式+中间件+高并发+算法+数据库
又到了一年一度的金九银十,互联网行业竞争是一年比一年严峻,作为工程师的我们唯有不停地学习,不断的提升自己才能保证自己的核心竞争力从而拿到更好的薪水,进入心仪的企业(阿里、字节、美团、腾讯.....)
|
9月前
|
消息中间件 数据采集 Java
开发神技!阿里消息中间件进阶手册限时开源,请接住我的下巴
相信大家在实际工作中都用过消息中间件进行系统间数据交换,解决应用解耦、异步消息、流量削峰等问题,由此消息中间件的强大功能想必也不用我多说了!目前业界上关于消息中间件的实现多达好几十种,可谓百花齐放,所用的实现语言同样也五花八门。不管使用哪一个消息中间件,我们的目的都是实现高性能、高可用、可伸缩和最终一致性架构。
|
11月前
|
缓存 NoSQL 容灾
《Java应用提速(速度与激情)》——六、阿里中间件提速
《Java应用提速(速度与激情)》——六、阿里中间件提速
|
11月前
|
消息中间件 NoSQL Dubbo
阿里Java高级岗中间件二面:GC+IO+JVM+多线程+Redis+数据库+源码
一转眼,都2023年了,你是否在满意的公司?拿着理想的薪水? 虽然“钱多、事少、离家近”的工作可能离技术人比较远,但是找到一份合适的工作,其实并不像想象中那么难。但是,有些技术人确实是认真努力工作,但在面试时表现出的能力水平却不足以通过面试,或拿到高薪,其实不外乎以下 2 个原因: 第一,“知其然不知其所以然”。做了多年技术,开发了很多业务应用,但似乎并未思考过种种技术选择背后的逻辑。所以,他无法向面试官展现出自己未来技术能力的成长潜力。面试官也不会放心把具有一定深度的任务交给他。 第二,知识碎片化,不成系统。在面试中,面试者似乎无法完整、清晰地描述自己所开发的系统,或者使用的相关技术。
|
11月前
|
SQL 算法 NoSQL
2023年阿里高频Java面试题:分布式+中间件+高并发+算法+数据库
又到了一年一度的金九银十,互联网行业竞争是一年比一年严峻,作为工程师的我们唯有不停地学习,不断的提升自己才能保证自己的核心竞争力从而拿到更好的薪水,进入心仪的企业(阿里、字节、美团、腾讯.....)
|
12月前
|
存储 缓存 人工智能
2022互联网寒冬,看看阿里中间件团队如何降本提效?(2)
2022互联网寒冬,看看阿里中间件团队如何降本提效?
196 1