wzl-learn

         (论软件系统架构风格论文)2018年3月我公司承接了某网省电力公司的电力物资仓储管理系统建设,系统主要功能有仓储管理、主数据管理、业务查询等。我在项目中担任架构师一职,负责项目整体架构设计、架构文档编写、架构实现等工作。本文以该项目为例,主要论述了软件架构风格在该项目的具体应用。本系统使用三层B/S的架构风格,降低系统耦合度,简化了业务开发,使视图可以更灵活的实现的同时简化了系统部署方式。使用隐式调用的架构风格,提高软件的可重用性,为构件的演化和维护提供方便,提升了系统的可扩展性和业务安全性,简化了用户操作。使用管道/过滤器架构风格,提高业务处理效率,简化业务流程数据的处理,降低了系统测试复杂度。经过将近一年的建设,于2019年3月所有功能全部上线,系统运行平稳,得到用户一致好评。

         随着企业信息化进程的加剧以及国家信息化战略的推进,越来越多的国有企业在逐步推进和完善企业信息化应用。因此网省电力公司为响应国家号召委托我公司为其承建电力物资仓储管理系统以下简称本系统。

  本系统于2018年3月开始,组建包括开发、设计、测试在内的38人的开发小组。我在项目中担任架构师一职,负责项目整体架构设计、架构文档编写、架构实现等工作。本系统以主数据管理模块为基础,包括物料主数据管理、仓库主数据管理等功能;以仓储管理模块为核心,包括收货管理、发货管理、仓储作业管理、盘点管理等功能;以业务查询和统计报表为提升点,包括业务查询和报表查询功能;基于以上功能分析搭建了由一台应用服务器和一台数据库服务器构成的测试服务系统。同时随着系统开发进程搭建了由三台应用服务器和两台数据库服务器构成的生产服务系统。在以上人力、服务器资源的基础上,本系统经过设计、开发、测试等将近一年的工作,于2019年3月顺利上线,上线后所有功能的实现符合用户的预期,并且运行平稳受到用户的一致好评。

         在上述系统背景下我成功将系统架构风格运用到实际项目中并借此保证了系统顺利上线。系统架构风格是描述某一特定应用领域中系统组织方式的惯用模式。软件架构风格反映了领域中众多软件系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效的组织成一个完整的系统。目前大家公认的有五大类架构风格,分别为数据流风格,调用返回风格,独立构件风格,虚拟机风格,仓库风格。其中数据流风格以数据处理为中心,典型的是批处理和管道/过滤器架构风格;调用返回风格适合于业务层次清晰的应用,主要代表为主程序子程序、面向对象、层次化结构;独立构件风格包括进程通信和事件驱动架构风格;虚拟机风格的主要特点为支持各平台运行,主要用于解释器和规则系统;仓库风格代表子分类为数据库系统,黑板系统。其优点为可更改性和可维护性,具备可重用的知识源,容错性和健壮性较好,但是开发难度也较大。

  基于以上我对架构风格的理解以及风格特点的评估,本系统分别于系统集成处使用了隐式调用架构风格;于业务流转处使用了管道\过滤器架构风格;于整体架构层面使用了三层B/S架构。下文将详细介绍以上三种架构风格在本系统中具体实现方案。

  (一)系统集成处隐式调用架构风格的实现及效果

  由于隐式调用架构风格以事件驱动为主,构件不直接调用一个过程而是触发或广播一个或多个事件,同时系统中其他构件的过程在一个或多个事件中注册。所以在实际架构设计中我将本系统与ERP系统集成处将每种数据交互进行构件封装,将每个数据交互封装成一个小的构件,一个构件仅处理一种数据交互。在最小化业务构件的基础上将多个数据交互构件进行组合由此形成一个个大的业务构件。在业务构件的基础上将业务构件组合封装成事务码,当一个事务码被触发时,事务码调用对应业务构件,业务构件自动执行在业务构件中封装好的一个或多个数据交互构件。通过此类架构风格开发人员只用关注最小化的数据交互封装以及构件组合,而在数据交互构件完成后业务数据就能自动按照封装好的业务构件进行数据流转交互,大大降低了开发的工作量,同时降低了系统的耦合度,提升了系统的扩展性,为软件重用提供强大的支持,为构件的维护和演化带来了方便。

  (二)业务流转处管道\过滤器架构风格的实现及效果

  管道/过滤器架构风格中每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流,经过处理,产生输出数据流。本系统中物资从采购、配送、交接、验收、入库、调拨、领料、出库以及后续盘点业务的数据流转都有明显的数据处理流程且数据处理规律及关系明显。因此在架构设计中我们将不同类型的物资业务数据封装成一个个构件,每个构件都根据业务固化一组输入和输出,将构件中数据处理封装为一个个数据处理的子构件,将一个构件加一个数据处理构件进行组合形成一个独立业务处理管道\过滤器组合。将多个管道\过滤器的组合连接起来构成整个业务数据流转体系,再将数据集成处事务码引用到每一段业务处理组合中形成整体的基于事务码加管道\过滤器的整体数据流转机制。在此机制的基础上开发人员只需关注组合构件中输入数据、输出数据、事务码。大大简化了开发的流程,同时也简化了系统的测试任务,使所有业务流程变更做到一次开发永久使用,大大提高了系统的稳定性和可重用性。

  (三)整体架构上采用了三层B/S架构风格的实现

  三层B/S架构风格中将系统整体分为三层进行系统开发及部署,三层分别为展现层、业务层、持久层。这样进行拆分后使系统耦合度大大降低,由于展现层和持久层分离,使系统可以在持久层不变的情况下支撑更复杂的视图展现效果;由于业务层和持久层分离,是系统可以灵活的扩展新业务而无需改变数据库模型;同时本系统持久层在实际开发中使用了工厂设计模式将数据库连接和数据访问进行隔离,提高了系统对异构数据的支撑,另外基于浏览器进行系统访问的模式,符合用户日常使用习惯,减少了培训成本。依托客户端浏览器进行产品呈现,简化了推广难度,三层架构使业务的实现更加清晰,代码的耦合度更低,扩展性更好。

         基于以上三种软件架构风格在系统中使用,经过团队人员将近一年的努力,本系统于2019年3月顺利上线。本系统提升了各电力物资仓库的物资流转效率,切实减轻了仓库业务人员的工作压力,更好的支撑了业务的回溯及仓库业务开展,获得了物资公司的嘉奖。通过本项目的研发我对软件架构风格的理解更加深入,为后续的发展打下了更坚实的技术基础。

  本项目在实际的研发过程中使用了数据流中管道/过滤器、独立构件中隐式调用的架构风格,在管道/过滤器风格中数据过滤中间件的抽象及定义遇到了各业务规则不一致,数据封装效果不一致的难题,由于仓储作业中收货、发货、转储等不同业务的业务规则不一致,但是数据一致性高,偏差较小,在实际构件的封装中开发人员需要针对每种业务进行单独编写,工作量大且重复度高。经过协商用适配器的设计模式为各种不同的业务规则编写了通用的数据封装接口,使得最终业务规则和数据封装可以进行灵活转换和适配,解决了数据处理规则不一致的问题。系统通过以上两种架构风格的引入,简化了系统开发模式,提高了开发效率,同时系统的可扩展性,可维护性引都有所提升。

分类:

技术点:

相关文章: