当前位置:   article > 正文

软件应用架构

软件应用架构

1.概述

有许多不同类型的应用程序,并且每种都有各自独立的体系结构。格雷迪布奇(Grady Booch)在他的网站上列出了大量不同系统的体系结构。但是,许多这些单独的体系结构都是更通用的,特定于应用程序的体系结构模式的实例。其中的一些已在第6章中进行了讨论,但我在此处给出了3种其他应用程序架构模式的示例:

2.批处理系统


企业依靠数据处理系统来支持其业务的许多方面,例如支付薪水,计算和打印发票,维护帐户以及为保险单签发续签。顾名思义,这些系统专注于数据,它们所依赖的数据库通常比系统本身大几个数量级。数据处理系统是批处理系统,其中从文件或数据库中批量输入和输出数据,而不是从用户终端输入和输出数据。这些系统从输入记录中选择数据,并根据记录中字段的值执行程序中指定的某些操作。然后,他们可以将计算结果写回到数据库,并格式化输入和计算出的输出以进行打印。

 

1 数据处理系统的输入过程输出模型

 

批处理系统的体系结构具有三个主要组件,如图1所示。输入组件收集来自一个或多个源的输入;输入组件从一个或多个源收集输入。处理组件使用这些输入进行计算;输出组件生成输出,将其写回到数据库并打印。例如,电话计费系统从交换交换机获取客户记录和电话仪表读数(输入),计算每个客户的成本(过程),然后为每个客户打印账单(输出)。

输入,处理和输出组件本身可以进一步分解为输入过程输出结构。例如:

  1. 输入组件可以从文件或数据库中读取一些数据(输入),检查该数据的有效性并更正某些错误(过程),然后将有效数据排队以进行处理(输出)。
  2. 处理组件可以从队列中进行事务处理(输入),对数据执行一些计算,并创建一个记录计算结果的新数据记录(过程),然后将该新记录排队以进行打印(输出)。有时,处理是在系统数据库中完成的,有时是一个单独的程序。
  3. 输出组件可以从队列(输入)读取记录,根据输出形式(过程)格式化记录,然后将它们发送到打印机或将新记录写回到数据库(输出)。

数据处理系统的性质是,记录或事务被串行处理,而无需维护事务之间的状态,这意味着这些系统自然是面向功能的,而不是面向对象的。函数是不维护一次调用到另一次调用的内部状态信息的组件。数据流程图是描述业务数据处理系统的体系结构的好方法。

数据流图是表示面向功能的系统的一种方式,其中数据流中的每个圆角矩形表示一个实现某些数据转换的函数,每个箭头表示一个由该函数处理的数据项文件或数据存储区表示为矩形。数据流程图的优点是它们显示了端到端处理。也就是说,您可以看到在数据通过系统各个阶段时对数据起作用的所有功能。基本的数据流结构包括一个输入函数,该函数将数据传递给处理函数,然后传递给输出函数。

 

2 薪资系统的数据流程图

 

2说明了如何使用数据流程图来显示数据处理系统的体系结构的更详细的视图。该图显示了工资支付系统的设计。在此系统中,有关组织中员工的信息被读入系统,计算月薪和扣除额,并进行付款。您可以看到该系统如何遵循基本的输入过程输出结构:

  1. 图表左侧的“读取员工记录”,“读取月薪数据”和“验证员工数据”的功能输入每个员工的数据并检查该数据。
  2. 计算薪资功能计算出每位员工的总薪资以及从该薪资中扣除的各种费用。然后计算净月薪。
  3. 输出函数编写了一系列文件,其中包含扣除额和要支付的薪金的详细信息。一旦计算了所有员工的详细信息,这些文件就会由其他程序处理。系统会打印出员工的工资单,其中记录了净工资和扣除额。

数据处理程序的体系结构模型相对简单。但是,在那些系统中,应用程序的复杂性通常反映在正在处理的数据中。因此,设计系统架构需要考虑数据架构(Bracket1994)以及程序架构。数据体系结构的设计超出了本书的范围。

 

3.资源分配系统


资源分配系统是一种信息系统,具有与第6章中讨论的相同的四层通用结构资源分配系统管理一定数量的某些给定资源,例如音乐会或橄榄球赛的门票,必须分配这些资源向要求供应商提供该资源的用户票务系统是资源分配系统的一个明显示例,但是实际上许多不同的程序实际上也是资源分配系统。此类系统的一些示例是:

  1. 将类分配到时间表插槽的时间表系统。此处分配的资源是一个时间段,通常对每个资源需求都有大量约束。
  2. 图书馆系统,用于管理书籍或其他物品的出借。在这种情况下,分配的资源是可以借用的项目。在这种类型的系统中,资源不是简单分配的,而是有时必须从资源用户处重新分配。
  3. 空中交通管理系统,其中分配的资源是空域的一部分,以便在系统所管理的飞机之间保持间隔。同样,这涉及资源的动态分配和重新分配,但是资源是虚拟资源,而不是物理资源。
  4. 任务分配系统。。。。。。

 

 

1. 资源分配系统的分层模型

 

            资源分配系统是应用非常广泛的一类。如果我们详细研究它们的体系结构,我们可以看到它如何与图6.X所示的信息系统模型保持一致。资源分配系统的组件(如图1所示)包括:

  1. 资源数据库,其中包含要分配的资源的详细信息。可以在此数据库中添加或删除资源。例如,在图书馆系统中,资源数据库包括图书馆用户可能借用的所有项目的详细信息。通常,这是使用包含事务处理系统的数据库管理系统来实现的。数据库管理系统还包括资源锁定功能,因此不能将相同的资源分配给同时发出请求的用户。
  2. 描述资源分配规则的规则集。例如,图书馆系统通常会限制可以分配资源的人(注册图书馆的用户),可以借用书籍或其他物品的时间长度,可以借用的最大书籍数量等等。这封装在资源策略控制组件中。
  3. 资源管理组件,允许资源提供者从系统中添加,编辑或删除资源
  4. 资源分配组件,在分配资源时更新资源数据库,并将这些资源与资源请求者的详细信息相关联
  5. 用户身份验证模块,允许系统检查资源是否已分配给授权用户。在图书馆系统中,这可能是机器可读的图书馆卡;在票务分配系统中,它可能是信用卡,用于验证用户是否能够支付资源。
  6. 查询管理模块,允许用户发现可用的资源。在图书馆系统中,这通常是基于对特定项目的查询。在票务系统中,它可能涉及图形显示,以显示在特定日期有哪些票证。
  7. 资源交付组件准备要交付给请求者的资源。在票务系统中,这可能涉及准备电子邮件确认并向票证打印机发送请求以打印票证以及应将这些票证张贴在何处的详细信息
  8. 系统外部的用户界面组件(通常是Web浏览器),它允许资源的请求者发出查询和对要分配的资源的请求。

这种分层架构可以通过多种方式实现。可以:

    1. 组织信息系统软件,以便每个层都是在单独服务器上运行的大型组件。每一层定义其外部接口,并且所有通信都通过这些接口进行。
    2. 或者,如果整个信息系统在单台计算机上执行,则通常将中间层实现为通过其API与数据库通信的单个程序
    3. 第三种选择是将细粒度的组件实现为单独的Web服务(在第19章中进行了讨论),并根据用户的请求动态地组合它们

 

4.事件处理系统


事件处理系统响应系统环境或用户界面中的事件。事件处理系统的关键特征是事件的时间安排是不可预测的,并且当这些事件发生时,系统必须能够应对这些事件

我们所有人都在自己的计算机上使用了此类基于事件的系统-文字处理器演示系统和游戏都由用户界面中的事件驱动。系统检测并解释事件。用户界面事件表示系统的隐式命令,系统将采取一些措施来遵守该命令。例如,如果您使用文字处理程序,并且双击一个单词,则双击事件表示选择该单词

响应某些外部刺激而实时采取行动的实时系统也是基于事件的处理系统。但是,对于实时系统,事件通常不是用户界面事件,而是与系统中的服务器或执行器相关的事件。由于需要对不可预测的事件进行实时响应,因此通常将这些实时系统组织为一组协作过程。我将在第20介绍实时系统的通用体系结构。

在本节中,我将重点介绍编辑系统的通用体系结构。编辑系统是在PC或工作站上运行的程序,允许用户编辑文档,例如文本文档,图表或图像。

  1. 一些编辑器专注于编辑单一类型的文档,例如数码相机或扫描仪中的图像。
  2. 其他(包括大多数文字处理程序)是多编辑器,并支持编辑不同类型的文本和图表。您甚至可以将电子表格视为一个编辑系统,您可以在其中编辑工作表上的框。当然,电子表格还具有执行计算的其他功能。

编辑系统具有许多与其他类型的系统区分开来并影响其体系结构设计的特征:

  1. 编辑系统主要是单用户系统。因此,与基于事务的系统相比,它们不必处理多个并发访问数据的问题,并且具有更简单的数据管理。即使在共享数据的地方,也通常不使用事务管理,因为事务需要很长时间,并且使用了其他方法来维护数据完整性。
  2. 他们必须提供有关用户操作(例如选择删除)的快速反馈。这意味着它们必须对保存在计算机内存而不是磁盘中的数据表示进行操作。由于数据位于易失性内存中,因此如果出现系统故障,数据可能会丢失,因此编辑系统应为错误恢复提供一些准备
  3. 编辑会话通常比涉及订购商品或进行其他交易的会话要长得多。这再次意味着如果出现问题,损失的风险更大。因此,许多编辑系统都包括恢复工具,这些工具可以自动保存进行中的工作,并在系统出现故障时为用户恢复工作。

编辑系统的通用体系结构在图1中显示为一组交互对象。系统中的对象是活动对象,可以同时并自主运行。本质上,屏幕事件被处理并解释为命令。这将更新数据结构,然后将其重新显示在屏幕上。

 

 

1 编辑系统的体系结构模型

 

1所示的体系结构组件的职责是:

  1. 屏幕此对象监视屏幕内存段并检测发生的事件。这些事件然后与它们的屏幕坐标一起传递到事件处理对象。
  2. 事件该对象由屏幕到达的事件触发。它使用所显示内容的知识来解释此事件并将其转换为适当的编辑命令。然后将此命令传递给负责命令解释的对象。对于非常常见的事件,例如鼠标单击或按键,事件对象可以直接与数据结构通信。这样可以更快地更新该结构。
  3. 命令此对象处理事件对象中的命令,并在编辑器数据对象中调用适当的方法以执行命令。
  4. 编辑器数据调用编辑器数据对象中的适当命令方法时,它将更新数据结构,并在“显示”中调用Update方法以显示修改后的数据。
  5. 辅助数据除了数据结构本身,编辑器还管理其他数据,例如样式和首选项。在这个简单的架构模型中,我将其捆绑在辅助数据下。一些编辑器命令(例如,启动拼写检查的命令)是通过此对象中的方法实现的。
  6. 文件系统此对象处理所有文件的打开和保存。这些可以是编辑器数据或辅助数据文件。为了避免数据丢失,许多编辑器都具有自动保存功能,可以自动保存数据结构。然后可以在系统故障的情况下进行检索。
  7. 显示此对象跟踪屏幕显示的组织。更改显示后,它将在“屏幕”中调用Refresh方法。

由于需要快速响应用户命令,因此编辑系统没有用于调用组件以执行操作的中央控制器。而是,系统中的关键组件可以同时执行并可以直接通信(例如,事件处理器可以与编辑器数据结构直接通信),从而可以实现更快的性能。

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/913756
推荐阅读
相关标签
  

闽ICP备14008679号