适应 AI 时代的软件开发流程:用 AI + TDD 构建可维护项目

🧠 适应 AI 时代的软件开发流程:用 AI + TDD 构建可维护项目

本文面向有系统开发经验的工程师,分享如何结合 Git 管理、AI 协作、YAML 驱动与 TDD 开发方式,高效构建一个可维护、可协作、可交付的嵌入式或通用工程项目。适合 BLE 模块、协议栈组件、物联网控制系统等项目落地。


在这里插入图片描述

🚀 为什么要适应 AI 时代的开发方式?

在 AI 工具(如 ChatGPT、Copilot)不断成熟的今天,软件开发方式也在发生根本性变化:

传统模式AI 驱动模式
人脑主导结构设计人+AI 共建结构、模块拆分
手写测试用例YAML 描述 + AI 生成测试代码
自己实现所有逻辑借助 AI 快速生成原型、重构、优化
文档和代码割裂统一用 YAML/Markdown 管理,AI 可读可写

因此,构建一个“适配 AI 协作”的工程项目结构,是未来软件工程的必然趋势。


✅ 项目开发流程(总览)

这套流程融合了 Git 工程管理、YAML 配置驱动、AI 协作、TDD 编码四大思路:

1. 创建 Git 仓库结构,规范模块分布
2. 明确项目边界(输入/输出/非职责)
3. 将功能结构拆解为可读 YAML
4. 使用 YAML 驱动自动生成测试用例
5. TDD 开发 + 自动验证(AI/人共同推进)
6. 版本打包 + Changelog 记录,实现交付

每个阶段都有配套模板和落地示例,便于复用和团队协作。


📁 Git 项目结构设计

project-root/
├── code/               # 模块源码
│   └── module_x/
├── test/               # 测试代码 + 框架
│   └── test_x/
├── yaml/               # AI 识别的结构定义(FSM、AT 命令、模块等)
│   ├── fsm.yaml
│   ├── commands.yaml
│   ├── modules.yaml
│   ├── project.yaml       # 输入输出/边界说明
│   └── schema/            # 每类 YAML 的字段定义(schema)
├── docs/               # 项目说明 + 开发记录
│   ├── README.md
│   ├── CHANGELOG.md
│   └── design/
├── build/              # 构建产物(加入 .gitignore)
├── Makefile            # 构建入口
├── .gitignore
└── README.md           # 项目介绍

📌 目录划分清晰、职责明确,是 AI 和人共同协作的基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/77076.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 chromedriver 实现网络爬虫【手抄】

1、引用 selenium 包 <dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>4.29.0</version> </dependency> <dependency><groupId>org.seleniumhq.seleniu…

Python项目--基于Python的自然语言处理文本摘要系统

1. 项目概述 自然语言处理(NLP)是人工智能领域中一个重要的研究方向&#xff0c;而文本摘要作为NLP的一个重要应用&#xff0c;在信息爆炸的时代具有重要意义。本项目旨在开发一个基于Python的文本摘要系统&#xff0c;能够自动从长文本中提取关键信息&#xff0c;生成简洁而全…

【Vue #3】指令补充样式绑定

一、指令修饰符 Vue 的指令修饰符&#xff08;Directive Modifiers&#xff09;是 Vue 模板语法中的重要特性&#xff0c;它们以半角句号 . 开头&#xff0c;用于对指令的绑定行为进行特殊处理 修饰符作用如下&#xff1a; 简化事件处理&#xff08;如阻止默认行为、停止冒泡…

Reinforcement Learning强化学习--李宏毅机器学习笔记

个人学习笔记&#xff0c;如有错误欢迎指正&#xff0c;也欢迎交流&#xff0c;其他笔记见个人空间 强化学习 vs 监督学习 监督学习&#xff08;Supervised Learning&#xff09;&#xff1a;你有输入和明确的输出标签&#xff0c;例如图像分类。 强化学习&#xff08;Rein…

Windows VsCode Terminal窗口使用Linux命令

背景描述&#xff1a; 平时开发环境以Linux系统为主&#xff0c;有时又需要使用Windows系统下开发环境&#xff0c;为了能像Linux系统那样用Windows VsCode&#xff0c;Terminal命令行是必不可少内容。 注&#xff1a;Windows11 VsCode 1.99.2 下面介绍&#xff0c;如何在V…

软件测试之测试数据生成(Excel版)

这是Excel生成测试数据的函数使用 1.时间 1.1.时间 例生成2022-05-01之前一年内任意时间点: =TEXT("2022-05-01"-RAND()-RANDBETWEEN(1,365),"yyyy-mm-dd hh:mm:ss")1.2.年月日 yyyy-mm-dd 以当前时间生成10年的日期 =TEXT(NOW()-RAND()-RANDBETWE…

libwebsocket建立服务器需要编写LWS_CALLBACK_ADD_HEADERS事件处理

最近在使用libwebsocket&#xff0c;感觉它搭建Http与websocket服务器比较简单&#xff0c;不像poco库那么庞大&#xff0c;但当我使用它建立websocket服务器后&#xff0c;发现websocket客户端连接一直没有连接成功&#xff0c;不知道什么原因&#xff0c;经过一天的调试&…

从 PyTorch 到 ONNX:深度学习模型导出全解析

在模型训练完毕后&#xff0c;我们通常希望将其部署到推理平台中&#xff0c;比如 TensorRT、ONNX Runtime 或移动端框架。而 ONNX&#xff08;Open Neural Network Exchange&#xff09;正是 PyTorch 与这些平台之间的桥梁。 本文将以一个图像去噪模型 SimpleDenoiser 为例&a…

Hadoop集群部署教程-P6

Hadoop集群部署教程-P6 Hadoop集群部署教程&#xff08;续&#xff09; 第二十一章&#xff1a;监控与告警系统集成 21.1 Prometheus监控体系搭建 Exporter部署&#xff1a; # 部署HDFS Exporter wget https://github.com/prometheus/hdfs_exporter/releases/download/v1.1.…

【Altium】AD-生成PDF文件图纸包含太多的空白怎么解决

1、 文档目标 AD设计文件导出PDF时&#xff0c;图纸模板方向设置问题 2、 问题场景 AD使用Smart PDF导出PDF时&#xff0c;不管你怎么设置页面尺寸&#xff0c;只要从横向转为纵向输出&#xff0c;输出的始终是横向纸张&#xff08;中间保留纵向图纸&#xff0c;两边大量留白…

大厂面试:六大排序

前言 本篇博客集中了冒泡&#xff0c;选择&#xff0c;二分插入&#xff0c;快排&#xff0c;归并&#xff0c;堆排&#xff0c;六大排序算法 如果觉得对你有帮助&#xff0c;可以点点关注&#xff0c;点点赞&#xff0c;谢谢你&#xff01; 1.冒泡排序 //冒泡排序&#xff…

大模型开发:源码分析 Qwen 2.5-VL 视频抽帧模块(附加FFmpeg 性能对比测试)

目录 qwen 视频理解能力 messages 构建 demo qwen 抽帧代码分析 验证两个实际 case 官网介绍图 性能对比&#xff1a;ffmpeg 抽帧、decord 库抽帧 介绍 联系 对比 测试结果 测试明细 ffmpeg 100 qps 测试&#xff08;CPU&#xff09; decord 100 qps 测试&#x…

git的上传流程

好久没使用git 命令上传远程仓库了。。。。。温习了一遍&#xff1b; 几个注意点--单个文件大小不能超过100M~~~ 一步步运行下面的命令&#xff1a; 进入要上传的文件夹内&#xff0c;点击git bash 最终 hbu的小伙伴~有需要nndl实验的可以自形下载哦

驱动学习专栏--字符设备驱动篇--2_字符设备注册与注销

对于字符设备驱动而言&#xff0c;当驱动模块加载成功以后需要注册字符设备&#xff0c;同样&#xff0c;卸载驱动模 块的时候也需要注销掉字符设备。字符设备的注册和注销函数原型如下所示 : static inline int register_chrdev(unsigned int major, const char *name, const…

redis 放置序列化的对象,如果修改对象,需要修改版本号吗?

在 Redis 中存储序列化对象时,如果修改了对象的类结构(例如增删字段、修改字段类型或顺序),是否需要修改版本号取决于序列化协议的兼容性策略和业务场景的容错需求。以下是详细分析: 1. 为什么需要考虑版本号? 序列化兼容性问题: 当对象的类结构发生变化时,旧版本的序列…

WPF ObjectDataProvider

在 WPF(Windows Presentation Foundation)中,ObjectDataProvider 是一个非常有用的类,用于将非 UI 数据对象(如业务逻辑类或服务类)与 XAML 绑定集成。它允许在 XAML 中直接调用方法、访问属性或实例化对象,而无需编写额外的代码。以下是关于 ObjectDataProvider 的详细…

深度学习-损失函数 python opencv源码(史上最全)

目录 定义 种类 如何选择损失函数&#xff1f; 平方&#xff08;均方&#xff09;损失函数&#xff08;Mean Squared Error, MSE&#xff09; 均方根误差 交叉熵 对数损失 笔记回馈 逻辑回归中一些注意事项&#xff1a; 定义 损失函数又叫误差函数、成本函数、代价函数…

poll为什么使用poll_list链表结构而不是数组 - 深入内核源码分析

一&#xff1a;引言 在Linux内核中,poll机制是一个非常重要的I/O多路复用机制。它允许进程监视多个文件描述符,等待其中任何一个进入就绪状态。poll的内部实现使用了poll_list链表结构而不是数组,这个设计选择背后有其深层的技术考量。本文将从内核源码层面深入分析这个设计决…

使用 Azure AKS 保护 Kubernetes 部署的综合指南

企业不断寻求增强其软件开发和部署流程的方法。DevOps 一直是这一转型的基石,弥合了开发与运营之间的差距。然而,随着安全威胁日益复杂,将安全性集成到 DevOps 流水线(通常称为 DevSecOps)已变得势在必行。本指南深入探讨了如何使用 Azure Kubernetes 服务 (AKS) 来利用 D…

2025年常见渗透测试面试题-webshell免杀思路(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 webshell免杀思路 PHP免杀原理 webshell免杀测试&#xff1a; webshell免杀绕过方法&#xff1a; 编…