博客
关于我
文档驱动开发模式在 AIMS 中的应用与实践
阅读量:549 次
发布时间:2019-03-06

本文共 1383 字,大约阅读时间需要 4 分钟。

文档驱动开发模式在 AIMS 中的应用与实践

程序员常说:“我最讨厌别人写的代码没有文档,我也最讨厌自己需要写文档。”这句话道出了开发者对文档的复杂情感。对于大多数程序员来说,文档的价值不言而喻,但在实际开发中,如何平衡文档与代码的维护却是一个永恒的难题。

在大规模或超大规模项目中,尤其是需要大量协同开发的项目中,文档的缺失往往会带来严重的后果。项目交接、接口对齐往往靠口口相传,接口定义的准确度难以保证,进而影响整体开发效率。然而,文档往往不被计入考核指标,开发者缺乏动机去撰写高质量的文档,这种情况在AI项目中尤为明显。

作为文档爱好者,撰写和维护文档是日常工作的一部分。然而,面对快速变化的需求和繁重的代码维护任务,如何有效管理文档与代码的同步始终是一个难题。更何况,在AI研发中,开发者不得不面对大量重复性的网络编程工作,这不仅降低了代码质量,也严重压缩了AI专家在核心领域的时间投入,导致企业投入大量人力却难以获得好的效果。

AI接口开发的特点

AI接口开发与传统API有显著不同。其开发流程通常包括以下步骤:

  • 数据清洗
  • 模型训练
  • 参数调优
  • API上线
  • 前三项是我们团队的核心优势,但API上线却消耗了大部分开发时间。由于大多数开发人员对API相关库(如 Flask、Tornado)的熟悉度较低,且生成的代码质量往往不高,接口开发成为一项繁重的任务。

    文档驱动开发模式

    为了解决上述问题,我们引入了文档驱动的开发模式。核心思想是:API接口文档包含了实现接口的所有信息,因此我们只需完成文档或代码中的一项,另一项可以通过框架自动生成。

    我们参考了 OpenAPI Specification 3.0.1 标准和 JSON Schema,开发了一套API描述语言。基于此描述语言撰写API文档即可完成接口开发工作。初步估计,文档驱动模式可以将API开发工作量减少40%-70%。

    AIMS框架介绍

    为了实现文档驱动开发模式,AIMS 基于 Tornado 开发了一套高效的Web后端框架。框架的核心组件包括:

  • Application Router 组件

    • 接收请求并根据 URI 在路由表中查找匹配项。
    • 匹配成功后,转发请求给相应的 Request Handler。
    • 未匹配则返回 404 错误。
  • Request Handler 组件

    • 处理来自 Application Router 的请求。
    • Document(函数文档)是 Request Handler 的核心,仅需维护 Document 即可。
  • Watchman 组件

    • 记录接口异常并触发 Exception Handler。
    • 自动生成可复现的问题测试用例,方便定位问题。
  • Recorder 组件

    • 采集请求细节信息,包括请求参数、响应时间等。
    • 数据可用于系统维护和训练数据收集系统。
  • Logger 组件

    • 提供日志模块,降低开发者学习成本。
  • 优势总结

    在 AIMS 架构中,Document 是唯一需手动维护的组件,其余组件均由框架自动生成。这样既降低了开发工作量,又解决了接口一致性问题。自动生成的组件质量优于手动开发,提升了整体服务质量和稳定性。

    通过文档驱动模式,开发者只需关注核心功能,减少了重复性工作,提升了开发效率。这一模式在 AI项目中尤为有效,帮助我们高效完成接口开发并保持接口一致性。

    转载地址:http://zmquz.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现复数类+-x%(附完整源码)
    查看>>
    Objective-C实现外观模式(附完整源码)
    查看>>
    Objective-C实现多启发式a star A*算法(附完整源码)
    查看>>
    Objective-C实现多尺度MSR算法(附完整源码)
    查看>>
    Objective-C实现多种方法求解定积分(附完整源码)
    查看>>
    Objective-C实现多组输入(附完整源码)
    查看>>
    Objective-C实现多行输入(附完整源码)
    查看>>
    Objective-C实现多项式函数在某个点的评估算法(附完整源码)
    查看>>
    Objective-C实现多项式哈希算法(附完整源码)
    查看>>
    Objective-C实现大位数乘法(附完整源码)
    查看>>
    Objective-C实现大小端数转换(附完整源码)
    查看>>
    Objective-C实现大根堆(附完整源码)
    查看>>
    Objective-C实现奇偶检验码(附完整源码)
    查看>>
    Objective-C实现奇偶转置排序算法(附完整源码)
    查看>>
    Objective-C实现奇异值分解SVD(附完整源码)
    查看>>