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

    你可能感兴趣的文章
    Oracle面试题:Oracle中truncate和delete的区别
    查看>>
    TCP基本入门-简单认识一下什么是TCP
    查看>>
    org.apache.poi.hssf.util.Region
    查看>>
    org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /
    查看>>
    org.hibernate.HibernateException: Unable to get the default Bean Validation factory
    查看>>
    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
    查看>>
    org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded
    查看>>
    org.tinygroup.serviceprocessor-服务处理器
    查看>>
    org/eclipse/jetty/server/Connector : Unsupported major.minor version 52.0
    查看>>
    org/hibernate/validator/internal/engine
    查看>>
    orm总结
    查看>>
    os.system 在 Python 中不起作用
    查看>>
    SQL--合计函数(Aggregate functions):avg,count,first,last,max,min,sum
    查看>>
    OSError: no library called “cairo-2“ was foundno library called “cairo“ was foundno library called
    查看>>
    OSG学习:几何体的操作(二)——交互事件、Delaunay三角网绘制
    查看>>
    OSG学习:几何对象的绘制(三)——几何元素的存储和几何体的绘制方法
    查看>>
    OSG学习:场景图形管理(三)——多视图相机渲染
    查看>>
    OSG学习:场景图形管理(四)——多视图多窗口渲染
    查看>>
    Sql 随机更新一条数据返回更新数据的ID编号
    查看>>
    OSG学习:空间变换节点和开关节点示例
    查看>>