《软件架构理论与实践》 —1.4.2 软件架构的应用研究
1.4.2 软件架构的应用研究
(1)软件架构风格的应用
软件架构风格是在实践中被多次应用,综合若干设计思想得出的,具有已经被熟知的特性,并且可以实现有效复用,在实际设计和开发中具有指导性作用。不同的架构风格具有各自的优缺点和应用场景。例如管道-过滤器风格适用于将系统分成几个独立的处理步骤;主程序/子程序和面向对象的架构风格可用来对组件内部进行设计;虚拟机风格经常用于构造解释器或专家系统;C/S和B/S风格适合于数据和处理分布在一定范围、通过网络连接构成的系统;平台/插件风格适用于具有插件扩展功能的应用程序;MVC风格被广泛地应用于用户交互程序的设计;SOA风格应用在企业集成等方面;JB/HMB风格的典型应用是青鸟软件生产线;C2风格适用于GUI软件开发,用以构建灵活和可扩展的应用系统,等等。
现代大型软件很少采用单一架构风格进行设计和开发,而是混合多种风格。了解“纯”的架构风格有助于在设计时选择更为合理的架构并对各种架构进行有效组合,同时,理解背离此种风格所带来的结果和影响对保障软件的可靠性、可扩展性、可维护性等也有所帮助。
(2)软件架构在开发过程中的应用
软件架构是软件生命周期中的重要产物,它影响软件开发的各个阶段[36,56]。
需求阶段:把SA的概念引入需求分析阶段,有助于保证需求规约和系统设计之间的可追踪性和一致性。该阶段主要是根据需求来决定系统的功能,在此阶段,设计者应对目标对象和环境进行细致深入的调查,收集目标对象的基本信息,从中找出有用信息,这是一个抽象思维、逻辑推理的过程,结果是软件规格说明。
从需求模型向软件架构模型的转换:该阶段主要关注两个问题,一是如何根据需求模型构建SA模型,二是如何保证模型转换的可追踪性。这两个问题的解决方案因所采用的需求模型的不同而各异。在需求阶段研究SA,有助于将SA的概念贯穿整个软件生命周期,从而保证软件开发过程的概念完整性,有利于各阶段参与者的交流,也易于维护各阶段的可追踪性。
设计阶段:设计阶段是SA研究关注得最早和最多的阶段,这一阶段的SA研究主要包括SA模型的描述、SA模型的设计与分析方法,以及对SA设计经验的总结与复用等。该阶段需要细化至对系统进行模块化并选定描述各个部件间的详细接口、算法和数据类型,对上支持建立架构阶段形成的框架,对下提供实现基础。
实现阶段:将设计阶段设计的算法及数据类型用程序设计语言进行表示,满足设计、架构和需求分析要求,从而得到满足设计需求的目标系统。软件架构在系统开发的全过程中起着基础作用,是设计的起点和依据,同时也是装配和维护的指南。
维护阶段:为了保证软件具有良好的维护性,在软件架构中针对维护性目标进行分析时,需要对一些有关维护性的属性(如可扩展性、可替换性等)进行规定,当架构经过一定的开发过程实现和形成软件系统时,这些属性也相应地反映了软件的维护性。
(3)常见软件产品的架构
1)人人网采用JavaEE技术作为主要的业务解决方案,基本按照通用的JavaEE模型进行架构设计:①Web层基于REST风格和MVC风格,为用户提供基于Web的访问接口,人人网采用的是自己开发的Web框架Rose,该框架基于Spring Framework,类似RoR框架,增强了对Controller编码部分的默认约定和REST风格URL的支持;②业务层封装业务逻辑,为Web层提供业务接口,操作由数据访问层提供的数据。人人网开发了自己的SOA框架XOA以支持业务层抽象,该框架结合Rose框架,以REST风格对业务进行分类、消息格式封装和路由。XOA支持远程调用,并可以通过简单添加服务器的方式进行横向扩展。③数据访问层提供对数据库访问的封装。人人网使用Java语言开发了自己的Object-Relation Mapping 框架JADE(Java Database Engine),并支持数据库的水平横向切分。④数据持久层实现数据的持久存储,人人网主要采用MySQL数据库,并且开发了自己的海量存储系统Nuclear。
2)金蝶EAS(Enterprise Application Suite)是金蝶国际软件集团推出的新一代企业应用套件。金蝶EAS构建于金蝶自主研发的业务操作系统—金蝶BOS(Business Operating System)之上,提供了集成的集团财务管理、集团人力资源管理、集团采购管理、集团分销管理、供应链管理、协同平台等50多个应用模块,并为企业提供行业及个性化解决方案、移动商务解决方案,实现企业间的业务协作和电子商务的应用集成。基于金蝶BOS构建的金蝶EAS系统在架构模型上遵循SOA架构体系,由四部分构成:①信息门户。将企业不同角色的相关人员通过Internet紧密地结合在一起协同工作,并能有效整合第三方系统。
②业务流程。涉及可灵活配置的流程引擎。其中业务流程和工作流都是可视的,企业可以随时查阅每一项业务的流程规则、路线、处理状态及参与者,用户的操作也变得更加简单和直观。③业务服务。提供统一的接口标准,使所有业务都作为功能插件连接在业务流程上,这些服务可以根据用户的需要来决定是否使用甚至更换。④基础平台。将包含各种底层存储、计算和传输的技术细节通过封装进行屏蔽,有效降低系统集成、应用部署的复杂度。
3)Lucene作为一个优秀的全文检索引擎,其系统架构具有强烈的面向对象特征。首先其定义了一个与平台无关的索引文件格式,其次通过抽象将系统的核心组成部分设计为抽象类,具体的平台实现部分设计为抽象类的实现,此外与具体平台相关的部分比如文件存储也封装为类,经过层层的面向对象式的处理,最终实现一个低耦合高效率、容易二次开发的检索引擎系统。Lucene的一大优势在于其开源。这样我们对于Lucene的架构分析可以直接从它的包以及云代码入手。
4)OpenStack实际上是由众多服务组合而成的,服务之间的关联或多或少,而且具有一定的层次关系,每个服务就像积木块一样,可以根据实际需要进行取舍并组合搭建,因此良好的运营架构整合能力是应用OpenStack的前提。实际上,OpenStack既是一个社区,也是一个项目和一个开源软件,它提供了一个部署云的操作平台或工具集。其宗旨在于帮助组织为虚拟计算或存储服务的云,为公有云、私有云,也为大云、小云提供可扩展的、灵活的云计算。
5)12306网站或系统采用的是两地三中心混合云架构。12306的后端架构由阿里巴巴的技术团队提供支持,从阿里自己的业务上来看,这套架构可以承载“双十一”和“双十二”这样的大型抢购活动。这种软件架构需要很好地支撑并发业务,支持高可靠、高性能业务的需求。该系统的架构设计应该能够面对系统数据、用户数增长10倍以上的情况,并且能够提供一个稳定的响应时间,不能出现剧烈的波动等。
6)大数据时代,移动互联、社交网络、数据分析、云服务等应用的迅速普及,对数据中心提出革命性需求,存储基础架构已经成为IT核心之一。数据的价值日益突显,数据已经成为不可或缺的资产。作为数据的载体和驱动力量,存储系统成为大数据基础架构中最为关键的核心。数据驱动的软件架构(Data-Driven Software Architecture,DDSA)目前在各行各业得到研究开发和推广应用。
- 点赞
- 收藏
- 关注作者
评论(0)