【问题标题】:Looking for the right term: audit? traceability? logging?寻找合适的术语:审计?可追溯性?记录?
【发布时间】:2021-06-09 11:16:16
【问题描述】:

我有问题。我确定人们已经解决了它,但我不知道要搜索的正确术语。我想在这里描述一下这个问题,也许你可以帮我解释一下术语。

我们正在构建以批处理方式处理数据的软件,并且我们希望让用户能够在事后了解为什么以特定方式处理数据。在一个非常基本的层面上,我们处理记录,然后我们有很多条件,并且根据条件我们做一些事情。用户希望看到类似“因为满足条件 X,所以我们做了 Y”之类的内容。

让我尝试提供一个示例,而不是我们正在处理的实际问题:假设我们正在构建一个新闻网站,并且我们从新闻机构导入文章和图像。现在可能发生的事情有:

  • 我们跳过了一篇文章,因为标题以“META:”开头,表明这是新闻机构发给编辑的信息,而不是实际读者。
  • 我们将一篇文章归入 X 类,因为该通讯社属于 Y 类。
  • 我们将一篇文章归入 X 类,因为通讯社没有提供类别,但它确实提供了标签 Y。
  • 我们将文章 X 与图片 Y 相关联,因为两者都有相同的主题标签 Z。

用户可能会问的问题:

  • 第 X 条发生了什么? (它来自新闻社文章 Y,以下是我们对此做出的所有决定。)
  • 有多少文章因为是元而被跳过?
  • 昨天导入的文章中,有多少与图片相关联?
  • 昨天导入的图片中,有多少与文章相关联?

同样,这个问题域只是一个例子,我只是在寻找正确的搜索词来查找文献中的信息。

我想到了“可追溯性”,但这似乎是特定于作为特定构建一部分的软件工件。

我想到了“审计日志”,但不知道审计日志是否支持回答这类问题。

我想到了“决策制定”,但这似乎是人类在组织软件开发时所做的事情。还有决策支持软件,用于编纂规则。但我们正试图针对我们拥有的特定输入处理此类规则的结果。

【问题讨论】:

    标签: design-patterns architecture


    【解决方案1】:

    这听起来像是某种记录,虽然instrumentationtracing等可能是其他术语。我不确定是否有一个行业公认的术语,但从技术上讲,这些在实现上都非常相似。

    说到日志,我推荐distinguishing between pure functions and impure actions,然后只记录不纯的动作。结果是repeatable execution。在这种情况下,这意味着您可以随时重播发生的所有事情。由此,您可以根据需要生成报告。

    这种架构的另一种选择是为您想要报告的那些决策定义一种内部特定领域的语言。例如,您可以采用separate decisions from effects 的方式使核心引擎返回一个包含所有决策的数据结构。然后,您可以(至少)在同一个数据结构上运行两个不同的解释器:一个执行实际工作,一个创建决策报告。

    您也可以考虑查看现有的(可能是商业的)rules-based systems。如果您能找到与您的问题足够接近的解决方案,您也许可以省去很多工作。

    【讨论】:

      猜你喜欢
      • 2012-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-20
      相关资源
      最近更新 更多