从用例到生产
Source: Dev.to
请提供您希望翻译的正文内容,我将按照要求保留源链接并翻译成简体中文。
介绍
当我在大学时,一有新项目的想法,我首先会打开 VS Code 并开始写代码。你是否熟悉这种情形?
问题在于我的项目毫无方向地增长,持续不断地更改,从不知道何时算是 “完成”,写出的代码两周后我自己都不懂,最终变成了一个再也没有继续的项目。以我的角度来看,这并不是技术能力的问题,因为我会做事;后来我明白这其实是 过程 的问题。
如果你刚踏入技术行业,遇到类似情况,也没关系,大家都是这么开始的。但有一种方式可能更适合你。
在本文中,我们将使用 Kiro 将一个想法从用例转化为可运行的代码。如果你是第一次接触 Kiro 并且想要更入门的内容,Ana Cunha 写了一篇入门指南,能作为起点。
为什么项目会失败
在我的经验中,许多项目并不是因为 代码差 而失败的。它们失败是因为我从未正确定义想要解决的问题。
想象一下,你想构建一个使用 AI 将你的简历与招聘信息进行对比并告诉你缺少什么的应用。
你从哪里开始?前端?数据库?还是与人工智能的集成?
在我的职业生涯的某个阶段,我曾是自由职业者,在那段经历中,我重新认识了软件工程课程的价值。我学到了一件改变我构建方式的事:代码不是起点,而是结果。在写下第一行代码之前,你需要先理解自己在构建什么以及为谁构建。
定义用例
用例只是对用户如何与系统交互的描述。可以把它想象成建筑师的蓝图:没有蓝图你不会建房子,同样在不了解要构建什么之前也不应该开始编码。
你需要的(实用版)
- 用户故事 – 用户想做什么以及原因。
- 验收标准 – 如何判断功能是否正常。
- 实体和关系 – 系统中存在哪些“事物”,以及它们如何关联。
示例:简历比较器
用户故事
作为 正在找工作的人,我想 上传我的 PDF 或文本格式简历,以便 系统能够分析并将其与职位招聘信息进行比较。
现在你已经知道几件事:
- 需要支持 PDF 和文本。
- 需要将职位描述作为第二个输入。
- 结果是一次比较。
验收标准
| # | 条件 | 预期结果 |
|---|---|---|
| 1 | 当用户上传 PDF 时 | 系统必须 正确提取内容 |
| 2 | 当用户尝试上传不支持的格式时 | 系统必须 显示包含有效格式的错误信息 |
有了这些,你就知道 要构建什么 以及 何时算“完成”。
从需求到代码:规范驱动开发(SDD)
规范驱动开发是一种先设计规范再实现的方式。它分为 四个阶段:
捕获意图
- 用自然语言定义你想要构建的内容(用户故事和验收标准)。
- 目标是让任何人(技术人员或非技术人员)都能理解将要构建的东西。
将意图转化为系统蓝图
- 将这些需求转化为技术设计:组件、通信方式、技术选型。
- 这就是你的架构图。
生成工作单元
- 将设计拆分为具体且增量的任务。
- 每个任务都应当小而清晰,并产出可测试的可运行功能。
实现并验证
- 编写代码。
- 每个任务都要依据第一阶段定义的验收标准进行验证。
💡 注意: 该过程会在每次添加新功能时重复执行。
此方法不依赖任何特定工具;你可以使用文本文档、白板,甚至是一张餐巾纸。关键是 先思考再编码。
Kiro 与 SDD 流程
像 Kiro 这样的工具实现了此方法论,并帮助你以结构化的方式遍历各阶段。Kiro 遵循一个 三阶段 流程 (1️⃣ requirements, 2️⃣ design, 3️⃣ tasks),直接映射我们刚才看到的内容。
| SDD 阶段 | 发生了什么 | 在 Kiro 中 |
|---|---|---|
| 捕获意图 | 用自然语言描述你的想法 | 告诉 Kiro 你想构建什么 |
| 系统蓝图 | 需求 + 设计 + 任务 | Kiro 生成 requirements.md、design.md 和 tasks.md |
| 工作单元 | 执行任务 | 在 IDE 中运行每个 task |
| 实现与验证 | 代码 + 验证 | Kiro 实现代码,你根据验收标准进行验证 |
💡 重要提示: AI 工具并不取代你的批判性思维;它们是对其的放大。关键不是为了记录而记录,而是 在编码前先思考。文档是这种思考的产物。
实践应用:简历比较器项目
下面,我们来看一下将此过程应用于简历比较器项目的实际效果。
用户故事和验收标准
与其用一个模糊的提示如 “帮我做一个简历应用” 打开 Kiro,我首先编写了一个包含已定义的用户故事和验收标准的文件:
- 项目背景
- 用户是谁
- 需要完成的任务
- 我们如何判断它已成功
文件示例:
# Ejemplo de archivo de historias de usuario
---
proyecto: "Generador de CV"
usuario: "Candidato a empleo"
historias:
- id: HU-01
descripción: "Como candidato, quiero crear mi CV a partir de un formulario sencillo para poder exportarlo en PDF."
criterios_de_aceptación:
- "El formulario debe incluir campos obligatorios: nombre, email, experiencia y educación."
- "Al guardar, el CV se genera en formato PDF con el diseño seleccionado."
- "El PDF debe descargarse automáticamente y también estar disponible en la cuenta del usuario."
- id: HU-02
descripción: "Como candidato, quiero previsualizar mi CV antes de descargarlo para asegurarme de que la información está correcta."
criterios_de_aceptación:
- "Debe mostrarse una vista previa en tiempo real mientras el usuario completa el formulario."
- "La vista previa debe reflejar exactamente el diseño final del PDF."注意: 这只是一个示例;请根据你的项目具体需求调整用户故事和验收标准。
项目背景
主要用户: 积极寻找工作的人
目标: 提升简历质量,以强化职业形象
故事 1 – 上传简历进行分析
作为 寻找工作的人
我想 上传我的简历(PDF 或文本格式)
以便 系统能够分析并将其与工作机会进行比较
验收标准
- 当 用户上传 PDF 格式的简历文件时,系统必须 正确提取文档内容。
- (在此添加其余验收标准…)
第2阶段 – 系统蓝图
根据用例,Kiro 生成了三个文档,构成项目的完整蓝图:
| 文档 | 目的 |
|---|---|
requirements.md | 将用户故事展开为正式需求,包含术语表(例如 Brecha_Crítica、Generador_Recomendaciones),详细说明验收标准和技术需求(PDF 文本提取、结构化职位描述分析)。 |
design.md | 定义技术架构:图表、数据流(PDF → 浏览器 → IA),组件之间的接口(每个 Lambda 接收什么、返回什么)以及错误处理策略。 |
tasks.md | 将设计拆解为增量任务,关联每项任务对应实现的需求。包含清晰的子任务和执行顺序(基础设施 → 预签名 URL Lambda → PDF 提取 → 等)。 |
注: Kiro 最初为 Lambda 提议使用 Python,但团队更倾向于 Rust。Kiro 自动调整了架构、依赖和任务,以在后端使用 Rust。
结果架构
- 前端: Astro(现代 Web 框架)。
- 后端: 使用 Rust 的无服务器函数,部署在 AWS Lambda 上。
- AI: 使用 Amazon Bedrock(生成式模型)进行简历分析。
- 临时存储: Amazon S3。
在编写第一行代码之前,一切已全部定义完毕。
步骤实现
- 创建 monorepo – Kiro 生成了项目结构。
- 初始化前端 – 配置 Astro。
- Rust 工作区 – 设置环境和依赖。
- SAM 模板 (
template.yaml) – 为无服务器基础设施提供基础。
任务计划(共21项)
| 编号 | 任务 | 简要描述 |
|---|---|---|
| 1 | AWS 基础设施 | S3、Cognito、API Gateway、Lambda。 |
| 2 | Lambda → 预签名 URL | 生成用于上传简历的临时 URL。 |
| 3 | PDF 提取 | 内容的解析和标准化。 |
| 4 | 与 Bedrock 集成 | 将文本发送给 AI 并接收结果。 |
| 5 | 响应解析 | 将 Bedrock 的输出转换为有用的数据。 |
| … | … | … |
| 20 | 前端 – 结果页面 | 显示匹配度和推荐。 |
| 21 | 最终部署 | CI/CD 与发布。 |
每项任务都关联了它实现的需求,这使得团队随时能够明确 正在构建什么 以及 为什么 构建。
最终结果
一个功能性应用,用户:
- 上传简历(PDF 或文本)。
- 粘贴职位招聘信息。
- 获取兼容性分析和改进领域列表。
所有内容均基于六个用户故事,写在一个文本文件中。
反思
花至少30分钟思考 要 构建什么,在决定 如何 实现之前,能节省之后的数小时挫败感。
如果这种方法对你有帮助,并且想讨论它在你项目中的应用,请在 LinkedIn 上找到我。
额外资源
- Spec‑Driven Development – Kiro
- Kiro 入门指南 – 如何开始使用 Kiro:一步步教程 (Ana Cunha)
- AWS Free Tier – 免费开始,无需花费。