博客
关于我
文档驱动开发模式在 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/

    你可能感兴趣的文章
    python+selenium进行cnblog的自动化登录测试
    查看>>
    Python函数只返回第一个值而不是数据框
    查看>>
    Python+SQL实战:京东用户行为数据分析案例解析(上)
    查看>>
    Python+SQL实战:京东用户行为数据分析案例解析(下)
    查看>>
    PYTHON+Twisted+sqlanydb=ABORT()
    查看>>
    Python函数之返回值、作用域和局部变量
    查看>>
    Python+统计学 | 探索常用的数据分析统计分布
    查看>>
    python, selenium中用于切换帧的函数
    查看>>
    python函数
    查看>>
    python----线程、进程、协程的区别及多线程详解
    查看>>
    python---5
    查看>>
    python---使用celery分布式系统异步发送短信(云通讯)来验证登录
    查看>>
    python--003--百分号字符串拼接、format
    查看>>
    Python--10、线程
    查看>>
    Python--Redis实战:第四章:数据安全与性能保障:第4节:复制
    查看>>
    python--基本代码规范
    查看>>
    Python--抽象类接口类
    查看>>
    PYTHON--欧拉习题二
    查看>>
    python--高级应用总结
    查看>>
    python-520表白代码,我看谁说程序员不懂浪漫,送你几套表白代码,一步到位
    查看>>