




《互联网软件开发技术与实践》· 第 1 课(下)
主讲人:张齐勋
单位:北京大学
2026 年秋
为谁解决什么问题,达到何种状态视为成功。校园智能助手面向本班的教师与学生,而不是面向所有人的通用问答。意图写不清,生成再快也只是通用功能的堆砌,上线后说不清为谁做成了什么。
谁可以查看、谁不可以查看;无依据时不得编造;密钥不得进入前端。约束写不清楚,模型将自行填入默认假设。实际项目中,缺约束的典型后果是越权访问与密钥进入前端。
用页面、接口、测试、日志证明约束成立。反馈来自系统是否通过检验,而不是来自模型口头声称完成。没有验收,完成标准就会落到“模型说完成了”。
瀑布先完成全部设计,再一次性实现。阶段清楚,变更成本高。
敏捷小步交付、边使用边调整。反馈加快;缺少验收时,范围容易扩散。
DevOps开发与运维贯通:构建、发布、观测、回滚成为同一条回路。
AI 原生人类定义意图,AI 生成并维护软件。控制点从代码行转到规约与验收。
| 做法 | 规约 | 迭代 | 什么算完成 | 缺口 |
|---|---|---|---|---|
| 瀑布 | 有,且较完备 | 基本没有 | 阶段成果通过验收 | 变更成本高,反馈晚 |
| 敏捷 | 偏轻,常靠口头约定 | 有 | 增量可运行、可演示 | 缺验收时难判对错 |
| DevOps | 继承敏捷 | 含发布与观测 | 能重复发布、可回滚 | 不自动保证符合意图 |
| 氛围编程 | 几乎没有 | 只有对话轮次 | 看似可用 | 决策难以保留 |
| SDD | 有,且结构化 | 规约与代码一并迭代 | 失败路径与证据成立 | 起始要先写清意图 |
不再编写可核对的条目,只在对话中勾勒轮廓。角色、边界与失败处理往往并未明确规定。
数据库、分页、缓存与错误码等选择,往往追随模型建议或对话走向,很少记录备选方案与理由。
完成标准退化成“能否运行”。不再追问为何如此实现、是否存在更优方案、风险位于何处。
提出想法只给出大致方向。角色、边界与失败处理常常未予写明,或仅停留在口头约定
生成可运行代码模型依据概率补全未予说明的部分,很少追问提示是否成立,便生成可运行的代码
试运行后再修改查看预览、修改一句提示、再次生成。业务规则与性能假设大多仍留在对话窗口中
看似可用主路径一旦通过便停止验证。错误处理、并发、数据一致性与越权等情形常常未被检查
做一个能录入并查询“班级课程表”的网页应用: - 教师可以添加课程(星期、节次、科目、教师) - 支持按星期筛选查看 - 页面风格简洁,主色用北大红
同类工具可对照:编辑器内的 Cursor / Trae / Claude Code。
质量靠不住未写入的边界模型不会补。能查本班作业,不代表改 URL 查看其他班级时会被拒绝
可维护被透支为何如此实现只留在对话里。上线前补隔离,改核心的时间往往接近当初开发
协作易冲突甲返回 homeworkId,乙生成 id;没有统一约定,合并变成逐行修补
无法稳定复现同一句提示换模型可以是另一套行为。当时能运行,下次却复现不出来
写规约把需求意图写成可核对条目:谁、做什么、不做、失败时怎样、证据
审查团队内先行审查:条目是否具体、可验证。规约本身未通过,不得进入实现
生成把审过的规约原样交给 Harness,按规约修改同一仓库,而不是再次口头描述
对照用同一份规约做一致性验收:页面、接口、测试、日志相互一致才算完成





第 1 课 · 人定义意图,AI 生成并维护,以规约约束过程