面向软件工程研一学生的智能软件工程实践课程。本课程学习对象是对应用人工智能技术完成工程类软件作品感兴趣的学生。 本课程是项目式实践学习。学生通过学习和探讨专业软件开发相关理论,定义软件作品需要解决的问题,以小组分工协作的方式全面系统地应用软件工程方法论以及人工智能技术最终完成软件作品。学生将通过完成定义问题、设计、开发和测试功能以及发布作品等5个子任务,实践软件开发(包括人工智能算法模型)、产品设计、项目管理和敏捷开发等知识,熟悉开源软件,熟练掌握软件工程方法论,提高实践创新能力。学生通过探讨和实践人工智能在软件工程的应用以及对软件工程发展的影响,建立前瞻性观点,为后期研究打下理论和实践基础。
- 目标1:掌握软件开发整个生命周期,即分析、设计、开发、测试和维护的行业方法论,利用团队协作工具和知识技能完成软件作品,使学生具备面向复杂软件工程问题开展需求分析、技术建模、系统设计、算法实现、实验验证和工程集成的能力,能够运用人工智能技术和工具解决智能软件开发中的典型问题。
- 目标2:理解软件行业中不同专业人员如产品经理、架构师、开发工程师和质量保证工程师的职业特点,为成为能够创造性地从事实际工作的高层次应用型专门人才做好准备。
- 目标3:掌握学习虚拟现实、区块链、数据分析和人工智能等新技术的方法。
- 目标4:掌握研究智能软件工程(Intelligent Software Engineering, ISE)尤其是(包括面向软件工程的人工智能(AI for Software Engineering, AI4SE))案例和论文的方法,提高文献阅读能力,提升学术演讲表达能力,使学生系统掌握人工智能与软件工程交叉融合的基础理论、关键技术、研究方法和前沿发展,理解人工智能在软件需求分析、设计开发、测试维护、运维管理等环节中的应用机理,熟悉智能软件系统构建所涉及的数据处理、模型训练、实验评估、工程部署及伦理安全等基本知识。
- 目标5: 掌握专业技术或实践创新的理论知识和方法论,即在真实职业场景中,创造性地运用专业知识,解决行业产业实际问题的能力。
- 目标6:发展适应行业要求的品行特征,包括适应性、创造性、严谨性、自我指导和热情等个性特征。培养学生严谨求实的科研素养、面向复杂系统的工程素养、主动探索的创新素养以及规范合作的职业素养,强化其人工智能伦理意识、数据安全意识和社会责任意识,形成持续学习、理性应用技术和服务实际需求的综合素质。
本课程为项目式学习实践课程。教师将应用概念解释、互动讨论、示范的方法,指导学生完成项目式实践。为降低实践学习曲线坡度,教师将帮助学生分解实践任务,并在实践任务中引导学生应用和理解工程实践的理念、体系、流程、方法和平台,教师将为学生指导较复杂的实践环节,并提供示范案例。教师也将提供解决实际问题的虚拟现实、区块链、数据分析和人工智能等新一代信息技术的学习路线和参考代码等。学生在实践中将会应用相关理论知识,如系统工程方法、MBSE(Model-Based Systems Engineering,基于模型的系统工程)、面向对象分析方法、敏捷开发方法论、代码质量管理等。学生实践成果的顺利完成,需要学生在记忆、理解和应用认知水平的基础上,达到高阶认知水平即分析、评估和创造。本课程能够帮助学生在高阶认知水平方面得到相应的能力训练。
表1 课程考核方式
| 维度 | 百分比 | 说明 |
|---|---|---|
| 出勤 | 10 | 不无故缺席,积极参与课堂讨论 |
| 子任务 | 30 | 每个子任务的完成情况 |
| 论文讨论 | 20 | 学习智能软件工程相关论文的情况,批判性思维方法的使用等 |
| 个人品行(素养)表现 | 10 | 包括适应性、创造性、严谨性、自我指导和热情等个性特征,参考品行描述 |
| 作品答辩 | 30 | 包括演示作品介绍幻灯片,演示作品功能,回答教师问题等三个部分参考作品答辩评分表 |
本课程包括理论、实践及检查和汇报三个部分。 理论部分是指软件工程、软件作品以及人工智能涉及的相关理论。实践部分是指学生在教师指导下,包括与AI协作完成软件产品的具体过程。教师将提供足够的指导资源。检查和汇报部分是指教师确认学生每阶段实践任务的情况,并给予指导,也包括学生分享智能软件工程论文学习体会。
课程共 17 周,分为五个部分:根据软件生命周期分为5个部分,包括分析、设计、开发、测试和发布。
- 第一部分:系统分析(第 1–2 周)—— 定义工程问题与软件功能
- 第二部分:系统设计(第 3–6 周)—— 原型设计、文献阅读与技术方案
- 第三部分:系统开发(第 7–10 周)—— 系统功能开发与代码质量
- 第四部分:系统测试(第 11–13 周)—— 测试用例编写与缺陷修复
- 第五部分:发布(第 14–17 周)—— 部署、迭代与作品答辩
表2 课程大纲
| 部分 | 周 | 理论 | 实践 | 检查和汇报 |
|---|---|---|---|---|
| 第一部分 系统分析 |
1 | 基于模型的系统工程与NASA系统工程;什么是工业软件;定义工程问题的方法;如何完成技术或实践创新 | 分组;定义要解决的工程问题;在协作平台上建立小组项目仓库 目录结构docs/{requirements,algorithm,software,mgmt,retrospection} \ code/{backend,frontend,core_engine} \ tests/{unit,integration} 在 docs/requirements/problem_definition.md 中完成 5W1H 报告和产品描述 |
确认学生定义的工程问题 |
| 2 | 如何定义软件的功能?;面向对象分析与设计;敏捷开发方法 | 定义要解决工程问题的软件作品功能 提交docs/requirements/functional_spec.md和docs/requirements/nonfunctional_spec.md |
确认软件作品的功能 | |
| 第二部分 系统设计 |
3 | 智能软件工程的研究与实践 | 编写用户故事;使用AI工具及原型设计工具设计软件作品原型;调研技术方案 | 确认软件作品原型设计 |
| 4 | AI与软件工程的相互影响 | — | 汇报智能软件工程文献阅读 | |
| 5 | 项目管理的沟通管理和风险管理 | 制定项目管理的沟通计划和风险管理计划 | 汇报智能软件工程文献阅读 | |
| 6 | 领域驱动设计方法 | 确认技术方案(包括人工智能算法模型等);制定新技术学习方法 | 汇报系统设计技术方案 | |
| 第三部分 系统开发 |
7 | 软件开发方法 | 用各种技术和工具开发系统功能 | 为学生提供开发指导 |
| 8 | — | 用各种技术和工具开发系统功能 | 为学生提供开发指导 | |
| 9 | 如何编写卓越的代码:软件代码质量 | 使用软件代码质量工具检查代码质量,并修改代码 | 检查代码质量 | |
| 10 | — | 用各种工具开发系统功能 | 汇报系统代码质量情况 | |
| 第四部分 系统测试 |
11 | 软件测试的方法 | 编写作品的测试用例 | 确认学生的测试用例 |
| 12 | — | 用测试用例测试作品;修改作品缺陷 | 确认学生的测试用例 | |
| 13 | 软件产品原型测试方法 | 小组交叉测试软件作品原型 | — | |
| 第五部分 发布 |
14 | 部署和发布软件的方法及检查单 | 部署作品 | — |
| 15 | — | 完善作品:优化和迭代作品 | — | |
| 16 | — | 准备答辩材料 | — | |
| 17 | — | — | 作品答辩 |
作品成果放到GitHub的仓库里。
以下是仓库的目录树形结构图
repository-root/
├── docs/ # 项目文档
│ ├── requirements/ # 需求文档(需求规格、用户故事、验收标准)
│ │ ├── problem_definition.md # 问题定义(背景、痛点、目标、范围边界)
│ │ ├── functional_spec.md # 功能需求规格说明
│ │ ├── nonfunctional_spec.md # 非功能需求规格说明(性能、安全、可用性等)
│ │ └── user_stories.md # 用户故事与验收标准
│ │
│ ├── algorithm/ # 算法说明(公式推导、复杂度分析、参数说明)
│ │ └── research.md # 技术调研(候选方案对比、论文/资料整理、选型依据)
│ │
│ ├── software/ # 软件设计(架构图、接口文档、模块设计)
│ │ ├── prototype/ # 原型设计(线框图、交互原型、UI/UX 草稿)
│ │ └── architecture.md # 系统架构说明文档
│ │
│ ├── mgmt/ # 项目管理(沟通管理、风险管理)
│ │ ├── communication_mgmt_plan.md # 沟通管理计划
│ │ └── risk_mgmt_plan.md # 风险管理计划
│ │
│ └── retrospection/ # 复盘总结(迭代回顾、事故复盘、经验沉淀)
│
├── code/ # 源码
│ ├── backend/ # 后端服务(API、业务逻辑、数据访问)
│ ├── frontend/ # 前端应用(页面、组件、状态管理)
│ └── core_engine/ # 核心引擎(算法实现、公共库、被前后端复用)
│
└── tests/ # 测试
├── unit/ # 单元测试
└── integration/ # 集成测试
这个结构的思路是「按职能分层」而非「按模块分层」:文档、代码、测试三条线各自独立成树。
注意事项
tests/放在仓库根目录,意味着测试与code/是平级关系。好处是测试视角独立、便于整体跑流水线;代价是测试里引用业务代码时路径会变成../../code/backend/...这种长跳转。如果你更在意就近维护,也可以把unit/、integration/下移到code/backend/等各模块内部,根目录只留docs/和code/。core_engine和backend的边界要提前约定好:纯逻辑(无 I/O、无框架依赖)放core_engine,能被单元测试直接覆盖;一旦它开始依赖数据库或 Web 框架,就会被拖进集成测试,测试成本明显上升。docs/mgmt和docs/retrospection是「过程性文档」,和requirements/software这类「产出性文档」性质不同——前者随迭代不断追加,后者应当被修订覆盖。有些团队会把过程性内容移出仓库,交给项目管理工具,仓库里只留最终产物。- 前端如果是独立部署、独立发版的项目,常见做法是直接拆成两个仓库,而不是用
code/frontend和code/backend并列。
- 《软件工程实践教程—基于开源和群智的方法》(第1版),毛新军等编著,高等教育出版社,2024年。
- 《智能软件工程》(第1版),朱少民等编著,清华大学出版社,2024年。
- 《构建之法》(第4版),邹欣编著,人民邮电出版社,2026年。
- 《NASA系统工程手册》(第2版),朱一凡等编著,电子工业出版社,2021年。
- 《基于MBSE的复杂装备系统设计:理论与实践》(第2版),刘继红等编著,电子工业出版社,2024年。
- 《工业软件简史》(第2版),林雪萍著,上海社会科学院出版社,2021年。
- 《代码大全2》(中文纪念版),史蒂夫·麦康奈尔著,清华大学出版社,2022年。
- 《领域驱动设计:软件核心复杂性应对之道》(修订版),埃里克·埃文斯著,人民邮电出版社,2021年。
- 《面向对象分析与设计》(第3版:修订版),布奇·格雷迪著,电子工业出版社,2016年。
- 《面向对象软件工程》(第3版),贝恩德·布鲁格著,清华大学出版社,2011年。
- 《人件:项目与团队高效管理》(第3版),汤姆.德玛克著, 电子工业出社,2023年。
- 《重构:改善既有代码的设计》(第3版),马丁·福勒著,人民邮电出版社,2019年。
- 《启示录:打造用户喜爱的产品》(第2版),马丁·卡根著,中国人民大学出版社,2019年。
- 《设计冲刺:谷歌风投如何5天完成产品迭代》(第2版),浙江大学出版社,2021年。
- 设计思维手册:斯坦福创新方法论,[德]迈克尔·勒威克(Michael Lewrick)帕特里克·林克(Patrick Link)拉里·利弗(Larry Leiffer)浙江大学出版社,2023年3月。
- AI 智能体参考书
- UNESCO.联合国教科文组织学生人工智能胜任力框架. https://unesdoc.unesco.org/ark:/48223/pf0000391105.2024.
- https://github.com/topics/ai4se
- https://github.com/topics/ml4se AI4SE Lab.AI for Software Engineering.
- https://mondai.tudelftcampus.nl/projects/ai4se-lab/#content
- 微软推出的代码智能综合评测https://github.com/microsoft/CodeXGLUE
- 微信公众号CodeWisdom,复旦大学智能化软件开发研究团队
- 计算机科学教育生成式人工智能联盟GenAI in CS Education Consortium的课程 https://www.teachcswithai.org/courses 。联盟使命是支持教育工作者战略性地调整教学方法与课程体系。联盟提供整合生成式人工智能所需的资源、培训及社群支持,确保学生在恪守学术诚信的前提下,掌握未来职业所需的高阶技能。这个联盟是由UCSD教授Leo Porter牵头的。
- Agent 在线课程, 斯坦福 2026 年秋季新增的 CS329Z《Engineering AI Agents》(AI Agent 工程),由 Diyi Yang、Michael Ryan 和 John Yang 共同主讲。课程官网:cs329z.stanford.edu