Archipelago群岛 · 公开课笔记

COURSE · 6.1040

6.1040 软件设计

课程从真实需求出发,用概念(Concept)描述用户可观察的行为,再用模块化与同步(Sync)组合功能。 学习主线是“问题框架 → 概念与行为 → 模块化组合 → Web 与 AI 实现 → 用户与社会影响验证”。 Vue、Node、MongoDB 和 LLM 是实现工具;课程真正训练的是可迁移的设…

20 篇编号讲义 · 24 篇内容 · 67 个已标注 tags
DOMAIN
编程与软件工程
STATUS
complete
COURSE ID
6.1040
RELATIONS
暂无结构化数据

课程资料与说明

来自课程 index.md

6.1040 软件设计

TL;DR

  • 课程从真实需求出发,用概念(Concept)描述用户可观察的行为,再用模块化与同步(Sync)组合功能。
  • 学习主线是“问题框架 → 概念与行为 → 模块化组合 → Web 与 AI 实现 → 用户与社会影响验证”。
  • Vue、Node、MongoDB 和 LLM 是实现工具;课程真正训练的是可迁移的设计判断力。

课程介绍

项目信息
学期Fall 2025
先修6.1020 Software Construction;6.042 Mathematics for Computer Science
教材Daniel Jackson, The Essence of Software: Why Concepts Matter for Great Design
官网6.1040 Software Design

本课程是关于设计的。你将学习如何设计出“符合目的”的软件:既能满足用户需求,又具备灵活性、强大功能且易于使用。设计发生在技术与人的交汇点上。然而,设计绝不仅仅关乎用户界面;本课程的很大一部分内容,是在探讨 如何塑造用户所体验的底层功能。

课程讲授的设计材料不仅包含经典的传统内容,如:

  1. 用户界面设计(例如:以用户为中心的计算、概念模型的作用);
  2. 状态与动作/数据建模;
  3. 模块化。

还包含更前沿的尖端内容,如:

  1. 功能设计(基于概念);
  2. 使用LLM进行软件设计;
  3. 使用LLM生成代码;
  4. 将 AI 智能体(AI Agents)作为组件融入系统。

尽管本课程的核心关注点并非技术,但你将学会成为一名熟练的 Web 全栈开发人员所需的所有工具。这些工具包括:

  • 用于维护代码库的 GitHub、
  • 用于托管静态网站的 GitHub Pages、
  • 用于后端开发的 Node/Express、
  • 用于部署 Node.js 的 Heroku、
  • 用于绘制原型图的 Figma、
  • 用于持久化存储的 MongoDB,
  • 以及一个前端响应式框架( Vue)。

这门课符合行业标准吗?

学生们有时会问,我们在课上讲授的设计方法是否是目前行业中使用的标准方法。当然不是! 如果它是的话,你在工作中就能学到,也就不需要一个 MIT 的学位了。或者换句话说:教育的作用是塑造未来(包括你的未来!),而不是去重述过去。

这门课确实会教你几种目前在行业中最行之有效的技术,但如果仅仅如此,那它将是一门相当平庸的课程。特别是,我们讲授“概念设计”,是为了赋予你更强大的能力,让你成为一名远比仅靠在岗摸索或参加 UX 训练营更优秀的设计师。

MIT 的课程有一个悠久的传统,即讲授源自科研的全新方法,而这些方法有时要在几十年后才会被工业界广泛采用。你们的一位讲师曾是初代 6.170 课程的 TA,当时该课程使用的编程语言是 CLU——这是最早的面向对象语言之一(由 Barbara Liskov 发明,她也因此等成就荣获图灵奖)。在那个时候,极少有程序员了解“对象”,直到几十年后,各种语言才开始具备 CLU 当时就有的特性。甚至当 Java 出现时,它的设计中还存在一些缺陷(例如“原始类型”和“对象类型”之间的区分),而这些缺陷在二十年前的 CLU 中就已经被消除了!

该讲师还曾担任 6.001 课程的分班讲师,当时的教材是《计算机程序的构造和解释》(SICP,俗称“巫师书”)。一些学生曾抱怨说,这门课是用 Scheme 讲授的——这是一种当时没人使用的函数式语言,而不是像 C 语言那样“实用”的语言。令人惊叹的是,现在 Scheme 已经诞生了大约 50 年(LISP 甚至更古老),而直到过去这几年,函数式语言才真正成为所有优秀的程序员都渴望了解和使用的语言。

关于这一点还有另一种视角:虽然工业界的大多数人还没有学过概念设计,但最顶尖的那批人早就一直在使用这类思想了。 概念设计诞生于对数百款应用程序的深入研究,从中提炼出它们或优秀或糟糕的经验教训。通过这种方式,它将那些工业界人士可能需要历经多年、不断试错才能习得的最佳实践,进行了沉淀并显性化。

学习主线

找到真实问题 → 用 purpose、principle、state、actions 定义概念 → 用模块化标准拆分职责 → 用 Sync 显式组合 → 实现并验证。

阶段核心问题对应讲次
问题框架这个问题是否真实、重要且值得解决?Lec 1
概念与行为软件向用户承诺什么行为?Lec 2–3
模块化组合职责如何拆分,概念如何避免耦合?Lec 4–5、11
人机 AI 交互AI 适合承担什么,如何保留人的控制权?Lec 6–9
工程实现如何把设计落成可读、可靠的前后端系统?Lec 10、12–16
设计验证用户是否理解并受益,系统会造成什么外部影响?Lec 17–18
迁移与收官如何把方法迁移到行业架构和完整项目?Lec 19–20

讲次索引

讲次主题核心内容
Lec 1开始设计真实需求、问题框架与失败模式
Lec 2概念设计purpose、principle、state、actions 与 Sync
Lec 3设计行为action、trace、不变量与数据模型
Lec 4模块化设计 I关注点分离与职责混杂
Lec 5模块化设计 II分离、完整、独立与组合增益
Lec 6人机 AI 交互基础锐边与钝边、增强而非替代
Lec 7AI 交互设计 I心智模型、可修正性与线框图
Lec 8AI 交互设计 II结构化交互、Agent 与混合主动权
Lec 9LLM 代码架构Prompt、评估、安全与成本
Lec 10用 AI 编写概念代码上下文工程与概念实现
Lec 11理解同步扁平架构、因果矩阵与执行流
Lec 12现代 AI Coding 工具Agentic Coding、Review 与认知债务
Lec 13响应式前端与 Vue状态驱动视图与组件边界
Lec 14视觉设计布局、字体、色彩与设计批评
Lec 15软件工程全景Web 架构、Session、JWT 与安全边界
Lec 16后端设计异步请求、数据库查询、Sync 与部署
Lec 17用户测试研究方法、原型验证与设计修订
Lec 18价值敏感设计利益相关者、长期影响与责任创新
Lec 19设计经验总结行业架构映射与可迁移设计思想
Lec 20项目展示期末项目时间线与交付闭环

关键框架

概念规格

一个概念由四部分定义:purpose 说明价值,principle 描述用户视角的运行故事,state 保存必要事实,actions 用前置条件与效果描述状态变化。

模块化与 Sync

用三个问题检查模块化:职责是否分离、同一职责是否完整、概念能否独立理解和演进。概念不直接读写彼此状态,而由 Sync 按 when → where → then 显式组合。

AI 功能

先判断任务的错误容忍度。高风险或不可逆操作应把生成与执行分离,并提供来源、确认、局部修改、撤销和人工接管;模型输出始终按不可信输入验证。

设计验证

启发式评估和认知走查适合低成本预检;用户测试观察真实理解与行为;价值敏感设计进一步检查间接利益相关者、长期影响、普及后的系统效应和价值冲突。

配套作业

作业目标
问题框架用利益相关者与证据验证真实需求
阅读与编写概念规格练习状态、动作、不变量与设计取舍
Markdown 与课程作品集建立可版本化、可发布的课程交付方式

来源