gpt4 book ai didi

architecture - 如何学习正式的自上而下的软件架构方法?

转载 作者:行者123 更新时间:2023-12-04 05:07:57 25 4
gpt4 key购买 nike

我是一名对信息检索感兴趣的软件开发人员。目前,我正在从事我的第三个搜索引擎项目,并且对一次又一次编写的样板代码数量感到非常沮丧,并且具有相同的错误等。

基本搜索引擎是一个非常简单的野兽,可以用由两个“层”组成的形式语言来描述:

  • “原语层”(或公理,内核语言 - 不知道如何命名它们)。它们由多个集合(作为一组资源 - 文件、网站)、集合上的关系(作为“站点 A 链接到站点 B”)和“打开资源 A 的流”、“从流中读取记录”等简单操作组成, “合并 N 个流”、“按字段 F 索引记录集”等。此外,还有很多数据转换,如“以 YAML 格式保存流”、“从 XML 格式加载流”等。
  • “应用层”——形成搜索引擎生命周期的几个非常高级的操作,如“收获新资源”、“抓取收获的资源”、“将抓取的资源合并到数据库”、“索引抓取的资源”、“合并索引”等等。这些高级操作中的每一个都可以用从 1 开始的“原语”来表达。

  • 这种高级表示可以很容易地测试,甚至可以正式证明,并在选择的编程语言中实现(或代码生成)。

    所以,问题是:有没有人以这种方式设计系统 - 正式地,严格地(甚至可能在代数/群论的层面),在严格的自上而下的方法中?我可以阅读哪些内容?

    最佳答案

    关键系统(核电站、飞机、列车控制系统等)采用自上而下的方法开发,类似于您正在寻找的方法。但上层甚至根本不是程序化的。它不是关于内核层和应用程序层,而是关于将高级设计细化为组件、子组件,并在每个级别都有精确的规范。

    规范可以是正式的(旨在在指定组件可用时自动验证)或不正式(旨在通过测试、代码审查或任何适当的方法进行验证)。坦率地说,在 2009 年,他们大部分时间都不是正式的,尽管趋势显然是朝着这个方向发展。

    由于您在问题标签中提到了正式方法,因此您必须对该主题感兴趣,但目前它是一个小众市场。我尤其不明白如何将这些方法经济地应用于搜索引擎项目。无论如何,如果您想了解更多关于这些方法如何应用于它们工作的领域,这里有几个链接:

    有人提到Z:Z是规范语言,你在其中细化和细化规范直到它们成为可执行的框架叫做B .您可能还对 Alloy 感兴趣.最后,现有编程语言有正式的规范语言。趋势始于JML用于 Java,并启发了许多其他人。我在一群为 C 定义了这样一种规范语言的人工作,ACSL .

    关于architecture - 如何学习正式的自上而下的软件架构方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1796481/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com