【FDTD+UPML+全场/散射场】具有TF/SF接口和UPML吸收边界的2D FDTD研究(Matlab代码实现)
2026/6/19 5:01:45
本文是一份结构清晰、可直接复制使用的完整教程,涵盖PRD、ADR、Spec、MVP的全称、核心理念、相互关系、使用场景、模板、最佳实践以及真实案例与代码示例。内容模块化,便于快速查阅与落地。
PRD:Product Requirement Document(产品需求文档)
面向产品管理与业务,回答“要做什么、为什么做、做给谁、如何衡量成功”。
ADR:Architecture Decision Record(架构决策记录)
面向工程技术,记录“重要架构/技术决策、备选方案、权衡与最终结果”。
Spec:Specification(规范/规格说明书)
可细分为:
MVP:Minimum Viable Product(最小可行产品 / 最简可用产品)
用最小的功能集合快速验证市场与用户假设,获取真实反馈。
| 文档 | 核心价值 | 解决的主要问题 |
|---|---|---|
| PRD | 统一产品方向、对齐所有利益相关者、明确验收标准与成功指标 | 避免团队“各做各的”、需求反复变更 |
| Spec | 将抽象需求转化为可执行、可测试、可实现的工程蓝图 | 消除实现歧义、减少前后端沟通成本 |
| ADR | 将重要技术决策保存为组织知识,便于未来审计、重构、新人理解 | 决策理由丢失、“为什么当年这么做”无人知晓 |
| MVP | 以最小成本、最短时间验证核心假设,降低失败风险 | 花大代价做了一个没人用的完整产品 |
常见流程顺序(可循环迭代):
可视化关系图:
PRD(为什么做 / 目标 / 成功指标) │ ├─→ ADR(技术选型与权衡,在设计/实现中产生) │ └─→ Spec(怎么做 / 接口 / 数据 / 行为细节) │ └─→ MVP(最小实现,用于验证 PRD 中的假设)# <功能/产品名称> PRD **作者**:XXX **日期**:YYYY-MM-DD **版本**:v1.0 ### 一、背景与问题 - 当前用户痛点 / 业务机会 / 数据支撑 ### 二、目标与成功指标 - **目标**:一句话描述要达成的业务/用户价值 - **关键指标**(建议可量化): - 7天留存提升 ≥ 10% - 日活跃用户 ≥ 1000 - 转化率提升 ≥ 2% ### 三、用户画像与场景 - 目标用户 Persona - 核心用户故事(As a ... I want ... So that ...) ### 四、主要功能(按优先级排序) - **功能1**:描述 + 验收标准(AC) - **功能2**:... ### 五、非功能性需求 - 性能、可用性、安全、隐私、合规等 ### 六、MVP 范围与发布计划 - **MVP 包含**:A、B、C - **MVP 不包含**:X、Y、Z(延后) - 时间线:XX 周完成 ### 七、风险与缓解措施 ### 附录 - 流程图 / 原型链接 / 竞品分析文件命名:YYYY-MM-DD-title.md
# ADR 0001: 选择认证方案 - **Date**: 2025-12-17 - **Status**: Proposed | Accepted | Deprecated | Superseded - **Deciders**: Tech Lead / 架构组 ### Context(背景) - 项目需要支持 Web、App、第三方接入的统一认证 ### Decision(决策) - 采用 OAuth2(Authorization Code + PKCE)作为主流程,内部服务间使用 JWT 传递上下文 ### Alternatives Considered(备选方案) 1. 纯 JWT:实现简单,但难以支持第三方授权和权限撤销 2. Session + Cookie:传统但不适合移动端和微服务 ### Consequences(后果) - **优点**:标准、安全、可扩展 - **缺点**:初期实现成本较高,需要引入授权服务器 - **缓解**:先实现简化版,后续迭代支持完整 scope ### References - 相关 Issue / PR 链接openapi:3.0.1info:title:示例认证服务 APIversion:1.0.0paths:/signup:post:summary:用户注册requestBody:required:truecontent:application/json:schema:type:objectrequired:[email,password]properties:email:{type:string,format:email}password:{type:string,minLength:8}responses:'201':{description:注册成功}'400':{description:参数错误或用户已存在}/login:post:summary:用户登录(返回 JWT)requestBody:required:truecontent:application/json:schema:type:objectrequired:[email,password]properties:email:{type:string,format:email}password:{type:string}responses:'200':description:登录成功content:application/json:schema:type:objectproperties:access_token:{type:string}'401':{description:账号或密码错误}### MVP 定义:XX 功能验证 **核心假设**:用户愿意为 XX 功能付费 / 用户会频繁使用 XX **包含功能**(最小集合): - A - B - C **明确不包含**: - X(复杂权限系统) - Y(多语言支持) **成功标准**: - 30 天内注册用户 ≥ 5000 - 付费转化率 ≥ 2% **时间箱**:6 周内上线/docs/prd/,/docs/spec/,/docs/adr/),通过 PR 评审变更。| 文档 | 主要使用者 | 典型使用时机 |
|---|---|---|
| PRD | 产品经理、业务方、设计、开发、运营 | 立项、需求评审、对齐会议 |
| Spec | 前后端开发、QA、DevOps | 开发前详细设计、联调、测试用例编写 |
| ADR | 架构师、Tech Lead、后端开发 | 技术选型评审、未来重构回顾 |
| MVP | 产品 + 开发团队 | 早期验证假设、内部试点、A/B 测试 |
基于上述 OpenAPI Spec,实现一个最简认证服务(Python + FastAPI)
# app.pyfromfastapiimportFastAPI,HTTPExceptionfrompydanticimportBaseModel,EmailStrimporthashlibimportjwtimporttimefromtypingimportDict app=FastAPI()SECRET="please_change_this_in_production"classSignupReq(BaseModel):email:EmailStr password:strclassLoginReq(BaseModel):email:EmailStr password:str# MVP 阶段:内存存储(实际项目请换数据库)users:Dict[str,str]={}defhash_pw(pw:str)->str:returnhashlib.sha256(pw.encode()).hexdigest()@app.post("/signup",status_code=201)defsignup(req:SignupReq):ifreq.emailinusers:raiseHTTPException(400,"user exists")users[req.email]=hash_pw(req.password)return{"message":"created"}@app.post("/login")deflogin(req:LoginReq):stored=users.get(req.email)ifnotstoredorstored!=hash_pw(req.password):raiseHTTPException(401,"invalid credentials")token=jwt.encode({"sub":req.email,"iat":int(time.time())},SECRET,algorithm="HS256")return{"access_token":token}这就是一个典型 MVP:功能极简、能验证“用户是否愿意注册并登录”,完全对齐 Spec。
场景:移动端社交 App 计划新增“发布短文本 + 评论”功能,验证用户互动黏性。
POST /posts,GET /timeline,POST /posts/{id}/comments关系总结:
/docs/prd//docs/spec//docs/adr/| 误区 | 后果 | 建议 |
|---|---|---|
| 把所有细节塞进 PRD | PRD 臃肿、难以维护 | PRD 只写“为什么”和“成功标准”,细节交给 Spec |
| 不写 ADR,决策散落在聊天记录 | 后期无人知晓决策理由 | 关键选型必须写 ADR 并入库 |
| Spec 与代码不同步 | 接口频繁返工 | 用 contract test / OpenAPI 生成代码 |
| MVP 做得太简单或太完整 | 无法有效验证假设 | 紧扣核心假设,只做必须的功能 |
以上内容可直接用于团队模板与培训,祝落地顺利!