55AA-001

软件工程

层级
本科生
状态
建设中

提示:本课程仍在持续设计和校准中,页面内容仅供参考,不代表最终教学版本。

教学大纲

课程概览

本课程面向已经具备基础编程能力的本科生,训练学生把一个模糊的问题转化为可维护、可测试、可演进的软件系统。课程参考 MIT 6.102 对软件构造质量的强调、CMU 17-313 对工程过程和团队协作的训练、Berkeley CS 169A 对敏捷迭代和用户价值的组织方式,以及 UW CSE 403 对真实项目交付的要求;但课程重心放在安全实验室语境下的软件工程:需求、设计、实现、测试、评审、部署和运维都要为可靠性、安全性和长期维护负责。

这是 55AA 课程体系中的工程入口课,也是后续软件安全、程序分析、安全基线与合规自动化课程的实践基础。

先修要求

  • 至少掌握一门通用编程语言,能够独立完成 1000 行左右的程序。
  • 理解基本数据结构、模块化、命令行、Git 和单元测试的基本概念。
  • 愿意在团队中接受代码评审、重构建议和持续交付约束。

学习目标

  • 把开放式需求分解为用户故事、质量属性、验收标准和可排期任务。
  • 设计具有清晰边界的模块、接口和数据模型,并能解释设计取舍。
  • 使用版本控制、代码评审、静态检查、测试和 CI 维护团队代码质量。
  • 编写覆盖正常路径、边界条件、错误处理和回归风险的测试。
  • 用迭代方式交付一个可运行系统,并通过监控、文档和发布流程支持后续维护。
  • 识别常见工程风险,包括需求漂移、技术债、供应链依赖、安全缺陷和团队协作失效。

教学组织

  • 每周 2 次课堂:一次概念与案例,一次设计评审、代码评审或项目工作坊。
  • 每 2 周一次迭代交付,要求有可演示功能、测试结果和复盘记录。
  • 课程项目采用 4 到 5 人团队,题目优先选择实验室工具、课程平台、数据处理或安全工程相关系统。

周计划

第 1 周
第 2 周
第 7 周
第 8 周

中期项目评审

演示第二次迭代,提交中期复盘和调整后的路线图。

第 9 周
第 10 周
第 12 周
第 14 周
第 15 周

考核方式

个人作业

需求分析、接口设计、测试设计、重构和故障复盘等短作业。

20%
团队项目

四次迭代交付,评分关注用户价值、工程质量、测试证据、可维护性和安全意识。

40%
代码评审与工程记录

Pull request 质量、评审反馈、issue 管理、设计记录和发布记录。

15%
期末技术报告与演示

说明系统目标、架构、关键实现、测试与部署、已知限制和后续路线图。

20%
课堂参与

参与讨论、评审、项目例会和同伴反馈。

5%

课程项目

团队项目必须有真实用户或明确使用场景。最低交付要求包括:可运行部署、核心功能演示、自动化测试、代码评审记录、威胁建模记录、发布说明和维护文档。鼓励选择能被实验室后续复用的系统,例如课程资料管理、论文与项目展示、实验平台、数据采集清洗工具、轻量级安全扫描或合规检查工具。

课程政策

  • 允许使用 AI 工具,但所有生成代码、实验记录和设计建议必须经过学生本人审查,并在报告中说明使用方式。
  • 严禁提交不能解释的代码、证明、配置或实验结果;答辩时每名成员都需要解释自己负责部分的设计、测试和取舍。
  • 迟交会影响迭代评分,但课程更看重可复现、可审计和可维护的结果,而不是临时堆砌。

参考课程

中国 985 高校