SDD驱动开发

news/2025/11/9 22:26:44/文章来源:https://www.cnblogs.com/wasp520/p/19205456

基于 SDD 驱动的开发方法实践测试

记录基于 AI 设计与开发工程,实践总结一套方法

程序员使用 AI 开发 Top 5 常见问题

    1. 需求描述不清导致 AI 理解偏差
      程序员在给 AI 描述需求时,常常因为表达不准确或缺乏上下文,导致 AI 生成的方案与预期不符。
    1. AI 生成结果不确定且难以复现
      AI 辅助生成代码常有一定的随机性,调试和二次复用时重复性较差,影响开发效率。
    1. 生成代码质量参差不齐
      AI 生成的代码有时存在性能低下、结构混乱或安全隐患,需要更多人工复查与优化。
    1. 缺乏领域知识导致误用 AI 建议
      开发人员如果不了解某些技术细节,容易对 AI 给出的错误或过时建议照单全收,造成隐患。
    1. 隐私与安全合规问题
      部分 AI 产品或基础模型涉及数据上传和外部请求,可能存在泄漏敏感代码和数据的风险。

基于 SDD 驱动的开发方法

AI 设计与开发过程中,如何确保 AI 生成的代码结构化、可控,成为关键难题。目前业内普遍认识到,仅靠 prompt 驱动往往结果不可预测,因此逐步转向“设计驱动开发(Specification/SDD Driven Development, 简称 SDD)”模式。
“SDD 驱动开发”是当前业界最具前瞻性的解决思路。它强调以结构化设计文档为源头,驱动 AI 实现,而非直接代码生成,让整个开发过程主动可控、可复查。这也是 AI 工程化的核心趋势之一。

SDD 定义

SDD(Specification Driven Development,规范驱动开发)是一种以明确规范(Specification/Design Document)为基础,驱动 AI 自动生成设计方案、接口定义和代码实现的工程方法。其核心思想是:

    1. 设计先行​:开发过程从结构化的需求和设计文档出发,文档包括领域模型、接口规范、数据结构、业务流程等;
    1. AI 辅助理解规范​:将规范(如 OpenAPI、PlantUML、DSL 模型等)作为 AI 提示及约束输入,要求 AI 严格按照文档约定生成设计与代码;
    1. 全过程可追踪​:每步的规范与设计可溯源、可回溯,AI 生成过程有据可查,便于人工审查与优化。

业界研究与应用现状

  • OpenSpecOpenAPI 标准逐步成为 AI 开发辅助主流输入之一,通过结构化规范描述接口和领域对象,AI 可据此自动生成高质量代码及测试用例。
  • 领域专用语言(DSL)​、PlantUML 等形式化建模工具广泛用于规范业务流程、数据库结构、微服务依赖等,AI 可以直接解析、还原为系统设计。
  • Microsoft、Google 等大型厂商在 Copilot、Duet AI 等工具中内置“规范优先”开发理念:例如先生成 Swagger/OpenAPI/JSON Schema,再让 AI 据此生成实现和文档。
  • 社区趋势​:如 LLMOps、AI 辅助软件工程领域,在研究如何提升 AI 对设计文档的理解准确率,以及规范驱动下的代码一致性问题。
  • 典型方法流程包括:
    1. 起草详细的 SDD 文档;
    2. 自动校验(linting/validation)规范与已生成代码是否一致;
    3. 人工与 AI 共同审阅、迭代设计文档,再输出最终代码。

优点

  • 极大降低 AI 生成内容的不确定性和随意性,提高开发可控性与一致性
  • 整个过程标准化、自动化,便于团队协作和质量管理
  • 简化知识转移,方便新成员理解项目结构、编码规范

参考资料:

  • OpenSpec 官方文档
  • 微软 Copilot 官方博客
  • LLMOps 社区论文

使用 OpenSpec

在 Cursor 中安装 OpenSpec

  1. 打开你的项目文件夹,并打开终端(Terminal)。

  2. 使用 pnpm 进行安装(如未安装 pnpm,请先全局安装:npm i -g pnpm):

    pnpm add @fission-ai/openspec
    

    或者,也可以直接按照 OpenSpec 官方仓库 的说明:

    pnpm add openspec
    
  3. 安装完成后,即可在代码中引入并使用。

OpenSpec 的基本使用方法

进入项目目录

cd \design\aitest

初始化 OpenSpec

openspec init

初始化后目录变化
├── AGENTS.md              # AI助手指令
└── openspec/├── AGENTS.md          # OpenSpec工作流说明├── project.md         # 项目信息├── specs/             # 规范文档(当前真实状态)└── changes/           # 变更提案(进行中的修改)

填充项目,在对话框输入:
请使用中文完成,后续描述都使用中文
Please read openspec/project.md and help me fill it out
with details about my project, tech stack, and conventions

/openspec:proposal 需求描述

AI 生成提案,会在 OpenSpec 下生成 changes 文件,以本次需求命名。

如图所示,AI 工程过程以需求(Task)为驱动,每一项任务都会明确其业务目标、技术要点与影响范围。OpenSpec 具体分为 proposal、design、tasks 三个阶段文件——

  • proposal.md​:聚焦需求背景、改动点、兼容性等讨论;
  • design.md​:记录技术方案选型与关键设计解释;
  • tasks.md​:明确可执行的拆分任务。
    AI 协作各环节紧密衔接,如图“AI 驱动的任务分解”所示,支持需求快速迭代与高效协作。
    以下为分解的具体任务

/openspec:apply 需求 id,实现需求

由 Ai 开始开发需求,在此过程中等待

/openspec:archive 需求 id,完成归档

其他说明

更多高级用法与扩展

  • 详见:OpenSpec 官方文档和 Github

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

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

相关文章

Redis 缓存 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

动态规划:使用最小花费爬楼梯

题目力扣链接 代码随想录链接dp数组定义:到达此台阶的最小体力为dp[i]递推公式:前两个台阶最小体力值加这两个台阶的cost。dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2])dp初始化:dp[0] = 0,dp[…

OddAgent:轻松手搓一个你自己的“小艺”、“小爱同学”

想自己动手来手搓一个完全属于你自己的“小爱同学”、“小艺”吗?如果有你这么一个想法,而又不知道该如何开始的话,那么OddAgent项目可以成为你非常容易上手的开源项目。想自己动手来手搓一个完全属于你自己的“小爱…

使用UnsafeAccessor 访问私有字段

UnsafeAccessor 允许在 不依赖反射 的情况下,高效地访问私有字段、属性、方法甚至构造函数。它的使用场景非常明确:你需要访问一个类型的私有成员,但你不能或不想改变该类型的可见性设计。支持AOT。UnsafeAccessor …

[PTA]龟兔赛跑

题目描述题源:龟兔赛跑 - PTA 题意:乌龟与兔子在同一起点、同一时刻沿环形跑道赛跑。乌龟以 \(3\text{ m/s}\) 匀速前进;兔子以 \(9\text{ m/s}\) 奔跑,但每隔 \(10\) 分钟回头观察一次:若此时已领先乌龟,则停下…

数组参数的函数传递

数组参数的函数传递package org.example;public class Main {public static void main(String[] args){Main s=new Main();s.test(1,2);s.test();}public void test(int...i)//可变传参必须放最后,可用作数组传参{if(…

【狂神说Java】Mybatis最新完整教程IDEA版通俗易懂 P1什么是Mybatis P2第一个Mybatis程序

1、简介 环境说明: jdk 8 + MySQL 5.7.19 maven-3.6.1 IDEA 学习前需要掌握: JDBC MySQL Java 基础 Maven Junit 1.1、什么是MyBatis MyBatis 是一款优秀的持久层框架 MyBatis 避免了几乎所有的 JDBC 代码…

AI agent framework from microsoft

https://github.com/microsoft/agent-frameworkThe Microsoft Agent Framework, now in public preview, is the open-source SDK and runtime that simplifies the orchestration of multi-agent systems. It converg…

《从 0 到 1 搭建个人技术博客:Hexo+GitHub Pages 完整指南(2024 优化版)》

想拥有专属技术博客却担心门槛高?其实用 Hexo+GitHub Pages 搭建,零基础也能快速上手。首先准备环境,安装 Node.js 和 Git 后,通过 npm 命令全局安装 Hexo,执行hexo init blog初始化项目,进入目录后npm install安…

《Spring Boot 实战:搭建 RESTful API 接口服务(含 Swagger + 异常处理)》

Spring Boot 简化了 Spring 配置,能快速搭建稳定的 RESTful API 服务。首先通过 Spring Initializr 创建项目,勾选 Web、MySQL、MyBatis-Plus 依赖,生成项目后配置 application.yml 文件,设置数据源 URL、用户名、…

2025/11/02 LGNOIpR22

T1 简化题意 求最长的可以整除字符串长度的循环节,然后加上 \((m-1)\times n\),\(n\) 是字符串长度。 sol kmp,然后判断一下就行,时间复杂度 \(O(Tn)\)。 T2 简化题意 删除一些行、列上的数,求最后是否可以使得剩…

《程序员高效工作流:5 款必备工具 + 时间管理方法,告别无效加班》

程序员的高效离不开工具和科学的时间管理。代码片段管理推荐 Snipaste,支持截图标注、代码片段收藏,跨项目复用常用代码,节省重复编写时间;多终端同步用坚果云,自动同步代码、文档,在家和公司无缝切换工作状态,…

Ai元人文:附语两篇

Ai元人文:附语两篇主篇:AI的功绩与困境:在“卓越工具”与“智慧伙伴”之间 毫无疑问,我们正处在一个由人工智能驱动的生产力革命时代。从精准的医疗影像分析到高效的语言翻译,从个性化的内容推荐到颠覆性的科学研…

《MySQL 索引优化:从原理到实战,解决慢查询问题》

MySQL 索引是提升查询效率的关键,其底层基于 B + 树结构,叶子节点存储数据或主键地址,非叶子节点仅存储索引值,查询时通过二分查找快速定位数据,比全表扫描效率高数十倍。索引分为聚簇索引和非聚簇索引,聚簇索引…

《Git 进阶实战:3 个鲜为人知的高效操作,解决 90% 的协作难题》

作为程序员日常协作的核心工具,Git 的基础操作早已深入人心,但实际工作中总会遇到复杂场景。比如同事需要你从开发分支提取某个特定功能代码合并到主分支,这时git cherry-pick就能派上用场,只需复制目标提交的哈希…

locked ambition

达成成就:打破周期律 但我一直在哭(。_。)虽说不是很遥远……但还是存在距离啊…… 虽然在他人视角已经是耀眼……但这还不是我啊…… 已经没有时间了啊…… 野性 袒露着灵魂纯粹 野心 尘封已久的昏睡

详细介绍:深入解析Java并发编程中的Synchronized关键字工作原理与性能优化

详细介绍:深入解析Java并发编程中的Synchronized关键字工作原理与性能优化pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-famil…

实用指南:【前端基础】20、CSS属性——transform、translate、transition

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

AI agent framwork Agno

What is Agno?Agno is a multi-agent framework, runtime and control plane. Built for speed, privacy, and scale. It provides a rich set of tools for building:Agents with memory, knowledge, session manage…

NOIP2025模拟4

前言: 好久没写改题记录了。(真的有很久吗?) 趁着今晚有空,赶紧写一写。 T1:括号问号(bracket) 思路: 原本在和学妹“愉快地”卡最优解,结果好像把评测机玩的有点生气死了,直接从 \(83 ~ ms\) 跑成了 \(94 …