论软件架构风格及其应用

在准备架构师考试过程中发现可供参考的论文范围非常少且内容陈旧给学习带来很大烦恼,通过考试后把我准备的论文共享出来水平有限但内容格式迎合考试,希望给大家一个参考。范文以“论软件架构风格及其应用”为题书写,希望对大家有所帮助。

【摘要】

【背景】

质量技术监督在生产领域、市场流通领域等方面都起到至关重要的作用,关乎到企业生产和人民日常生活。某省质量技术监督局在信息化方面起步较早,先后建设了数套专项系统,但缺乏对业务的统一监管,为贯彻落实国家市场监督总局《关于加快推进质量体系监管信息化建设要求》,一体化平台的建设工作受到各级领导的关注。项目建设目标覆盖省、市、县区三级质量监管部门及全省三十多万家企业,为工业生产、 审、送检、勘验、巡检和执法工作提供支持。我所在公司长期从事相关行业的软件开发,对质量监督领域有着丰富经验,因此顺利中标承建了该项目,初期投入15名技术人员和5名测试人员,由我担任架构师职务,负责软件架构设计和中间件选型。

项目启动后通过对业务的梳理,初步将一体化平台划分为四大模块,其中政务服务模块针对的是通过互联 访问系统的企业用户,在功能上主要包括 审、送检、公示和政策法规宣传等功能;而其它三个模块针对的是通过电子政务外 访问系统的监管部门和事业单位用户,其中运行管理模块主要功能包括审批、勘验、颁证、建档;企业监管模块主要功能包括巡检、执法;电子监察模块主要功能包括实时监控、预警纠错和效能评估。

【论点】

在架构设计开始阶段,我意识到选择合适的架构风格对架构设计的重要性,因此在基本需求确定后,首先对常用的经典架构风格进行了分析。

1.数据流风格:数据以流的形式进行处理,构件之间相对独立,包括管道过滤器和批处理程序两种架构风格。其中管道/过滤器架构风格是本次重点考虑的架构风格,它的特点是每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,产生输出数据流。优点是构件具有良好的隐蔽性、高内聚低耦合、维护简单支持重用;缺点是不适合处理交互的应用、性能下降。

2.独立构件风格:每个构件都是独立的个体,构件之间不能直接通信,有效降低耦合。包括进程通信和事件驱动系统两种架构风格,其中事件驱动系统是本次重点考虑的架构风格,它的特点是构件不直接调用过程,而是触发一个或多个事件后自动调用。优点是支持并发执行和实时/增量响应;缺点是放弃了对系统计算的控制。

3.数据仓储风格,由中央共享数据结构和独立构件构成。包括数据库系统、黑板风格和超文本系统三种架构风格,其中数据库系统是本次重点考虑的架构风格,它的特点由中央数据源来保持当前数据状态,由独立构件对数据进行操作,优点是支持多种数据格式、扩展方便。缺点是测试困难

4.调用返回风格:利用分治法思想,将大问题拆分为小问题解决。包括主程序/子程序、面向对象和层次结构三种架构风格。其中层次结构风格是本次重点考虑的架构风格,它的特点是划分多个层组成一个层次结构,每一层为上层服务,并作为下层客户,优点是支持功能增强和软件重用,缺点是分层困难。

结合一体化平台本身业务特点以及对常用架构风格的分析,我意识到单个架构风格的应用只能解决某一类问题,对于大型复杂业务系统往往需要多种架构风格混合并用,因此在本项目中我选择了层次结构、管道过滤器风格、事件驱动系统和数据库系统四种架构混合使用来满足系统要求。下面说明采用各架构风格的原因和具体应用。

分层架构风格,本项目系统采用J2EE技术开发,其本身就具有N层架构的特点,且业务本身需要覆盖省、市、县区三个级别的监督部门和全省企业,考虑到安装部署和用户使用,分析后决定采用三层B/S架构风格来构建系统,其层次划分为表现层、功能层和数据层。表现层,运行在客户机浏览器上,是应用的用户接口担负着用户与应用间的对话功能。为了保障浏览兼容性,在前端使用了技术成熟的JQuery框架开发页面。功能层,运行在Web服务器上,负责响表示层的用户请求,执行业务逻辑并调用数据层持久化数据。考虑到系统需要长期在高并发、大负载环境下运行,因此在部署策略上使用了Nginx做反响代理集群解决负载均衡问题。数据层,就是数据库管理系统,它运行在数据库服务器上负责管理数据读写和执行事务。在数据层我使用Oracle RAC集群,来保障并发性和稳定性。

管道过滤器架构风格,由于运行管理模块核心功能是审批企业办件,每一个审批活动均有一个开始点和结束点,办件在审批活动中顺序流转,只有上一个环节结束下一环节才能开始,每一步的处理结果会带入到下一环节中,经过分析以上业务符合管道过滤器架构风格。在此基础上客户又提出可以根据不同 审类型,可以通过可视化界面预先定义处理流程,并在运行中基于角色分配待办任务。因此在具体实现上,我决定采用Activity开源工作流组件做二次开发来满足架构需求。

事件驱动系统,由于绩效监察模块核心功能是监督审批过程,一旦出现违规事件,将给予对应的处分。经过分析以上业务符合事件驱动系统架构,在具体实现上该架构由事件、事件消费者、事件产生者和注册中心组成。事件消费者向注册中心订阅事件,事件产生者向注册中心发布事件。根据业务在系统中预先定义了不予受理、办理超时和作废办结三种异常事件。在运行时一旦产生异常注册中心会通知事件消费者进行处理(黄牌、红牌)。

数据库系统,由于各模块( 审、送检、巡检、决策)为了保证业务处理的准确和及时彼此需要共享数据,中央数据结构维护当前状态,独立构件在存储上执行操作,经过分析以上业务符合数据库系统风格。因该系统中各模块间数据存在大量的逻辑关系,因此在具体实现上我使用了关系型数据库,考虑到该层I/O负载,我使用了三台Oracle数据库服务器和一台磁盘存储阵列搭建RAC集群作为中央库,在满足业务需求基础上,还可保证系统的负载和高可用。

【结尾】

实践证明多种架构风格的成功应用,使系统模块间耦合度降低,提升了程序的稳定性和可靠性。但开发过程中也遇到过问题,因客户单位部分用户派驻到办事大厅工作,窗口办公需要配合高拍仪、读卡器等硬件设备,而浏览器出于安全考虑隔离了web程序调取本地资源仅提供有限支持,给系统推广带来了困难。对此我采用了富客户端技术,使用Electron框架封装了一个客户端专门负责调取硬件资源及时解决了该问题,没有对项目造成实质影响。通过项目组全体成员的共同努力,一体化平台于2018年10月完成验收工作正式上线,截至目前系统运行稳定运维工作量可控,得到了用户的一致认可和好评。在今后的工作中我将不断总结和提升专业技术能力,争取为我国信息化事业贡献一份力量。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年6月1日
下一篇 2020年6月1日

相关推荐