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

【摘要】

2017年5月,我参加了某省质量技术监督局“生产制造一体化监管平台”项目(以下简称一体化平台),担任架构师职务负责整体架构设计与中间件选型。该系统以监管企业生产制造为主线,旨在帮助各级监督部门解决监管企业生产、报审、送检、勘验、巡检和执法等问题。本文以一体化平台为例,论述了软件架构风格在项目中的应用,并阐述了选择层次结构、独立构件、管道/过滤器和数据库系统四种架构风格在项目中组合应用的原因和效果。最后总结了在开发过程中遇到的问题及解决方式。实践证明通过适当的架构风格选择和组合应用使开发工作取得了成功,一体化平台于2018年10月验收上线,目前已稳定运行1年时间得到了监管部门和企业的一致认可和好评。

【背景】

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

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

【论点】

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

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

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

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

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

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

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

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

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

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

【结尾】

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

论软件架构风格及其应用相关推荐

  1. 笔记-信息系统开发基础-架构设计-软件架构风格

    参考<信息系统项目管理师教材(第3版)>P45,软件架构风格,Garlan和Shaw对通用软件架构风格进行了分类,他们将软件架构分为数据流风格.调用/返回风格.独立构件风格.虚拟机风格和仓 ...

  2. python3-开发进阶-RESTful 软件架构风格

    一. 什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为"表征状态转移" ...

  3. 系统架构设计师 - 软件架构设计 - 软件架构风格

    文章目录 软件架构风格描述 数据流风格 批处理风格 管道过滤器风格 调用返回风格 主子程序风格 面向对象(显式调用风格) `层次结构`风格 独立构件风格 调用返回风格(隐式调用) 虚拟机风格 基于规则 ...

  4. 【系统架构设计师】软考高级职称,一次通过,2017年下半年系统架构设计师考试论文真题(论软件架构风格)

    [系统架构设计师]软考高级职称,一次通过,倾尽所有,看完这篇就够了,学习方法和技巧这里全都有. 2017年下半年系统架构设计师考试论文真题(论软件架构风格) 论文:2017年第2题(论文题)论软件架构 ...

  5. 软件架构设计——软件架构风格

    软件架构风格 软件架构设计的一个核心问题是能否使用重复的软件架构模式,即能否达到架构级别的软件重用.也就是说,能否在不同的软件系统中,使用同一架构.基于这个目的,学者们开始研究和实践软件架构的风格和类 ...

  6. API接口设计之RESTful软件架构风格

    说到API接口设计有的喜欢用Web Service,有的喜欢用WCF,当然也有还在用最原始的ashx,aspx页面的.无论采用什么方式能很好的满足业务需求就ok,但是不同的方式在扩展性.易用性,可维护 ...

  7. 信息系统项目管理师核心考点(七)软件架构风格

    科科过为您带来软考信息系统项目管理师核心重点考点(七)软件架构风格,内含思维导图+真题.本资料由科科过整理. [信息系统项目管理师核心考点]软件架构风格 软件架构设计的一个核心问题是能否达到架构级的软 ...

  8. 软件架构设计---软件架构风格

    软件架构风格 软件架构设计的一个核心问题是能否使用重复的软件架构模式,即能否达到架构级别的软件重用.也就是说,能否在不同的软件系统中,使用同一架构.基于这个目的,学者们开始研究和实践软件架构的风格和类 ...

  9. 软件架构设计师:软件架构风格

    软件架构设计的一个核心问题是能否使用重复的软件架构模式,即能否达到架构级别的软件重用.--基于这个目的,学者们开始研究和实践软件架构的风格和类型问题. 软件架构风格是描述某一特定应用领域中系统组织方式 ...

  10. 软件架构设计(一)——软件架构风格

    目录 一.软件架构概念 二.软件架构建模概念 三.软件架构的风格 1.数据流风格 (1)管道-过滤器 (2)批处理序列 2. 调用/返回风格 3.独立构件风格 (1).进程通信 和 事件驱动系统(隐式 ...

最新文章

  1. 1039 到底买不买
  2. Android事件总线还能怎么玩?
  3. python【蓝桥杯vip练习题库】BASIC-6杨辉三角形
  4. hdu4503 概率
  5. “病毒防治”页面中“社区热帖”版块不显示
  6. 2014\Province_C_C++_B\2 切面条
  7. MVC PartialView
  8. canvas文本居中对齐_如何使用文本对齐来居中图像:居中
  9. Android性能优化(31)---虚拟机调优
  10. 微信抢红包代码 python_python实现红包裂变算法
  11. Windows10更改电脑用户名
  12. Mysql 导出导入
  13. Spring Boot整合mybatis报错Invalid bound statement (not found)
  14. 在 LaTeX 中插入图片
  15. 微信小助手WeChatExtension中文版安装教程
  16. 附加类型”XXXX“的实体失败,因为相同类型的其他实体已具有相同的主键值。在使用 “Attach“ 方法或者将实体的状态设置为 “Unchanged“ 或 “Modified“
  17. 最强计算机游戏,这可能是市面上体积最小性能最强的游戏主机了
  18. ❤️Hello Programmer❤️
  19. 【C语言】猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想……
  20. CNN经典网络:LeNet、AlexNet、NIN、VGG

热门文章

  1. 计算机专业知识和水文工作相结合,水文水资源论文
  2. 盘点 | 全球关键信息基础设施网络安全大事件
  3. gollum安装教程
  4. linux中more命令的意思,linux中的more命令的详细解释
  5. 轧机是用计算机操作的吗,轧机生产操作流程及安全规程
  6. Scrapy 提示错误 DEBUG: Crawled (403) <GET https://book.douban.com/top250> (referer: None)
  7. 线程状态,BLOCKED和WAITING有什么区别
  8. 宾馆房间管理系统(C++)
  9. 亚马逊运营思路是什么?新手卖家应该注意些什么问题?
  10. 第十一届中国创新创业大赛浙江赛区暨第九届浙江省“火炬杯”创新创业大赛-新一代信息技术行业总决赛