核心技能:全栈项目实战
掌握从需求到交付的完整流程,理解Spec驱动开发的方法论,学会WBS分解和DoD定义,具备企业级项目管理和质量控制能力。
需求澄清方法论
需求澄清是项目成功的基础。通过系统化的方法,确保理解真实需求,避免返工和误解。
Reverse Interview技巧
Reverse Interview是一种主动提问的技巧,通过问"为什么"来挖掘真实需求:
问"为什么"而不是"是什么"
错误问法:"你需要什么功能?"
正确问法:"你为什么需要这个功能?解决了什么问题?"
通过问"为什么",了解需求背后的真实动机和业务目标。
问"什么时候"和"谁"
- • 使用场景:"什么时候会使用这个功能?使用频率如何?"
- • 目标用户:"谁会使用这个功能?他们的技术水平如何?"
- • 使用环境:"在什么环境下使用?有什么限制?"
问"如果...会怎样"
- • 边界情况:"如果没有这个功能会怎样?"
- • 异常处理:"如果数据异常会怎样?"
- • 扩展性:"如果需求变化会怎样?"
用户故事编写
用户故事是需求的最小单元,包含角色、目标、价值三个要素:
用户故事模板:
我希望 [目标],
以便 [价值/原因]。
好的用户故事特征
- • 独立性:可以独立开发和测试
- • 可协商:可以讨论和调整
- • 有价值:对用户有实际价值
- • 可估算:可以估算开发时间
- • 小:可以在一个迭代中完成
- • 可测试:有明确的验收标准
验收标准
每个用户故事都应该有明确的验收标准,使用Given-When-Then格式:
When: 用户点击"创建任务"按钮
Then: 显示任务创建表单
And: 用户可以输入任务标题和描述
And: 用户可以保存任务
需求优先级排序
MoSCoW方法
- • Must have:必须有,项目成功的关键功能
- • Should have:应该有,重要但不是关键
- • Could have:可以有,如果时间允许就做
- • Won't have:这次不做,可能以后做
价值-复杂度矩阵
根据功能的价值和复杂度,优先开发高价值、低复杂度的功能。
实战案例:电商平台需求澄清
初始需求
"我们需要一个购物车功能"
Reverse Interview过程
- Q: "为什么需要购物车?" A: "用户需要能够同时选择多个商品"
- Q: "什么时候使用?" A: "浏览商品时,看到喜欢的就加入购物车"
- Q: "谁会使用?" A: "所有注册用户"
- Q: "如果用户未登录会怎样?" A: "可以加入购物车,但结账时需要登录"
澄清后的需求
- • 用户可以添加商品到购物车(登录/未登录)
- • 用户可以查看购物车中的商品
- • 用户可以修改商品数量
- • 用户可以删除商品
- • 未登录用户的购物车保存在本地存储
- • 登录后合并本地购物车和服务器购物车
Spec驱动开发
Spec驱动开发将需求转化为可执行的规范,AI可以直接根据Spec生成代码,提高开发效率和代码质量。
PRD编写
PRD结构
- • 产品概述:产品定位、目标用户、核心价值
- • 功能需求:详细的功能描述和用户故事
- • 非功能需求:性能、可用性、安全性、可扩展性
- • 用户界面:界面设计和交互流程
- • 数据模型:数据结构和关系
- • 验收标准:功能验收、性能验收、安全验收
PRD编写原则
- • 清晰明确:使用清晰的语言,避免歧义
- • 可执行:AI可以直接根据PRD生成代码
- • 可测试:每个需求都有明确的验收标准
- • 可追溯:需求可以追溯到业务目标
API Spec(OpenAPI规范)
OpenAPI规范的优势
- • 标准化:行业标准,工具支持完善
- • 可执行:AI可以直接根据OpenAPI生成代码
- • 可测试:可以自动生成API测试用例
- • 可文档化:自动生成API文档
API Spec示例
openapi: 3.0.0
info:
title: Task Management API
version: 1.0.0
paths:
/api/tasks:
get:
summary: 获取任务列表
parameters:
- name: status
in: query
schema:
type: string
enum: [pending, in-progress, completed]
responses:
'200':
description: 成功
content:
application/json:
schema:
type: object
properties:
tasks:
type: array
items:
$ref: '#/components/schemas/Task'
post:
summary: 创建任务
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateTaskRequest'
responses:
'201':
description: 创建成功
components:
schemas:
Task:
type: object
properties:
id:
type: string
title:
type: string
status:
type: string
enum: [pending, in-progress, completed]UI Spec
UI Spec内容
- • 页面布局:页面结构、组件位置
- • 组件设计:组件类型、样式、交互
- • 交互流程:用户操作流程、状态变化
- • 响应式设计:不同屏幕尺寸的适配
UI Spec编写技巧
- • 使用Figma或类似工具设计界面
- • 详细描述每个组件的状态和交互
- • 使用AI工具(如v0)根据描述生成代码
- • 提供设计规范和组件库
实战案例:从PRD到代码的完整流程
Step 1: 编写PRD
明确产品目标、功能需求、非功能需求
Step 2: 编写API Spec
使用OpenAPI规范定义API接口,AI可以根据Spec生成API代码
Step 3: 编写UI Spec
详细描述界面设计,使用v0等工具生成UI代码
Step 4: 使用Cursor生成代码
将PRD、API Spec、UI Spec提供给Cursor Agent,生成完整代码
Step 5: 测试和优化
根据Spec编写测试用例,验证功能是否符合Spec要求
WBS分解
WBS(Work Breakdown Structure)将大任务分解为可执行的小任务,明确任务之间的依赖关系,便于项目管理和进度跟踪。
任务拆分原则
粒度控制
- • 2-4小时原则:每个任务应该在2-4小时内完成
- • 可测试性:每个任务都有明确的验收标准
- • 独立性:任务之间尽量减少依赖
- • 可估算:可以准确估算完成时间
依赖关系
- • 识别依赖:明确任务之间的依赖关系
- • 关键路径:识别项目的关键路径,优先完成
- • 并行任务:识别可以并行执行的任务
- • 依赖管理:使用工具(如GitHub Projects)管理依赖
时间估算
三点估算法
估算公式:(乐观时间 + 4×最可能时间 + 悲观时间) / 6
示例:乐观2小时,最可能4小时,悲观8小时 → 估算 = (2 + 4×4 + 8) / 6 = 4.3小时
类比估算
参考类似任务的完成时间,结合当前任务的复杂度进行调整。
AI辅助估算
使用AI工具分析任务复杂度,结合历史数据估算时间。
资源分配
人员分配
- • 根据技能和经验分配任务
- • 考虑人员的工作负载
- • 确保关键任务有备份人员
工具分配
- • 确保有足够的开发工具和资源
- • 考虑工具的许可证和成本
- • 准备备用方案
时间分配
- • 考虑项目的截止日期
- • 预留缓冲时间应对风险
- • 平衡并行任务和串行任务
实战案例:WBS分解示例
关键路径:1 → 2.1 → 3.2 → 4.2 → 5(总时长约34小时)
DoD定义
DoD(Definition of Done)定义了任务完成的标准,确保交付质量,避免"看起来完成但实际未完成"的情况。
质量标准
代码质量
- • 通过ESLint检查,无严重警告
- • 代码符合团队规范
- • 代码已通过代码审查
- • 无已知bug
测试覆盖
- • 单元测试覆盖率>80%
- • 关键功能有集成测试
- • 所有测试通过
- • 测试代码质量达标
文档完整
- • API文档完整
- • 代码注释充分
- • 用户手册更新
- • 变更日志更新
性能指标
- • 页面加载时间<2秒
- • API响应时间<500ms
- • 数据库查询优化
- • 无内存泄漏
验收标准
功能验收
- • 所有功能按Spec实现
- • 用户故事验收标准满足
- • 边界情况处理正确
- • 错误处理完善
性能验收
- • 性能指标达到要求
- • 负载测试通过
- • 压力测试通过
- • 性能监控正常
安全验收
- • 通过安全扫描
- • 无高危漏洞
- • 数据加密正确
- • 权限控制正确
实战案例:DoD检查清单
学习成果
完成本章后,你将:
- 1掌握需求澄清的方法论(Reverse Interview、用户故事、优先级排序),能够挖掘真实需求
- 2理解Spec驱动开发的工程实践,能够编写清晰的PRD、API Spec和UI Spec
- 3掌握WBS分解的方法,能够合理拆分任务、估算时间、分配资源
- 4理解DoD的质量标准,能够定义验收标准,确保交付质量
- 5具备企业级项目管理和质量控制能力,能够确保项目成功交付