软件开发中有多少“层”类型?

时间:2014-05-28 13:49:18

标签: logic software-design

我有一个概念性问题,并且相信Stack Overflow可能是一个很好的地方。通常在我的阅读和学习中,我会听到“层”的对话 - 以及松散定义的层,在这看来。太多了,在描述这些层时使用了很多软件术语(因此,对于入门级人或者gal(像我一样),他们每个人都很难掌握)。

到目前为止,我已经听说三(3)层互相交互并使程序“运行”:

  1. 业务逻辑层(BLL) - 维基百科有一个很好的介绍article到此/
  2. 应用程序逻辑层 - 负责使业务逻辑层与边界技术交互的
  3. 演示文稿图层(我刚学到的图层,今天)。
  4. 这是我的问题(可能无法回答):这些“类型”中有多少存在,而且 - 简要地说 - 它们是什么?

    我还鼓励通过人们可以咨询的超链接发布资源,特别是因为这些图层确实如此松散地定义。

2 个答案:

答案 0 :(得分:1)

在这种特殊情况下,这些层基本上是Model View Controller系统架构的概括。简而言之,它们是:

  1. BLL :'胆量'如果你愿意的话。这是适用于您自己的内部数据类型的逻辑,顾名思义,它就是“业务逻辑”。这使您的应用程序实际工作。它应尽可能独立于用户如何与业务逻辑交互的任何特定实现。例如,如果你正在构建一个Tic Tac Toe游戏,那么BLL将成为规则引擎,可以跟踪人们的行​​动,确定谁赢了等等。

  2. 所有:'界面'在 BLL 和将数据输入 BLL 的所有内容之间。对于 BLL 的特定应用,这将更加具体。例如,如果您的Tic Tac Toe引擎能够保存游戏结果, ALL 可能会提供存储结果的数据库引擎的接口。对于 BLL 与您选择使用的 PL (基于文本,GUI等)的接口也是负责任的。

  3. PL :这是'前端'用户与之交互的应用程序。这可以从像 Qt 这样的复杂框架构建,或者像文本界面那样简单。无论哪种方式,它在实现方面通常完全独立于它试图公开的应用程序。要继续Tic Tac Toe类比,您可以通过 ALL 构建一个相对通用的 3x3网格,其中包含形状和消息输出,以便最终显示Tic Tac Toe游戏。现在在实践中他们很少会解耦,但重点是你应该尝试将任何实际的逻辑保留在 PL 之外,以便你可以改变只要界面保持不变,就无需触摸 PL 代码即可实施 BLL ALL

  4. 这些层是松散定义的,因为它们只是用于使可视化复杂系统设计更容易推理的概括,并自然地指导开发朝向功能的适当划分,以实现最大程度的代码重用和组件可交换性,以及允许更容易地执行正式的验证和验证以及其他QA任务。有许多方法可以将软件设计分成“层”,但这三种方法通常在软件英语课程材料中正式描述。因此,实际上并没有任何特定的层数和#3;你可以谈谈。特定设计的细分方式实际上取决于特定的域名和流行语'在当时的行业。然而,你几乎总能找到类似于这三层的东西,有时会分成几个较小的块。

答案 1 :(得分:0)

我很奇怪你列出的三个概念应该被称为“层”。它们可能是软件系统的三个组成部分,但除了粗略的PowerPoint框图外,它们似乎并不相互叠加。

分层的想法与代码开发中的抽象级别有关,其中较低层提供用于构建较高层的组件。 OSI model是范例。

特定软件系统中可以有任意数量的层,具体取决于存在多少依赖级别。也许正在开发的直接应用程序中只有一个或两个层,尽管该应用程序可能依赖于更大的stack假定子结构。