ELEC5620 Lab 1–6 总结:从选题到运行时对象模型
ELEC5620 Lab 1–6 总结:从选题到运行时对象模型
课程:ELEC5620 — Model-Based Software Engineering,Semester 2 2026
来源:ELEC5620-Lab-Note-1.pdf至ELEC5620-Lab-Note-6.pdf(共 7 页)
配套阅读:One-Person AI Company 项目指南|需求范例拆解|Stage 1 评分标准与 Lab 3
先说结论:Lab 1–6 不是六次互不相关的练习,而是一条连续的项目建模流水线。每周的结果都应该成为下一周的输入:
真实问题与团队 → 项目需求 → 需求模型 → 架构原则与视点 → 架构模式与类图 → 运行时对象模型
一、六次 Lab 的整体路线图
| Lab | 教学周 | 核心问题 | 应形成的主要产出 |
|---|---|---|---|
| Lab 1 | Week 2 | 我们是谁,要解决什么真实问题? | 团队、1–2 个候选题目、项目初稿、协作约定 |
| Lab 2 | Week 3 | 题目可行吗?Agent 角色与功能规模够不够? | 3 分钟 pitch、tutor 反馈、≥3 个 AI 角色、功能分工 |
| Lab 3 | Week 4 | 如何从不同角度把需求说明白? | Ad-Hoc requirements、Feature model、Use cases |
| Lab 4 | Week 5 | 需求是否成熟?用什么原则和视点指导架构? | Checkpoint 反馈、细化后的 use cases、设计原则、viewpoint analysis |
| Lab 5 | Week 6 | 系统采用什么架构模式?静态结构是什么? | 架构设计、模式选择与 rationale、class diagram(s) |
| Lab 6 | Week 7 | 类在实际运行时如何实例化与协作? | Object diagram(s)、具体对象值、运行时关系与 collaboration |
这条路线可以压缩成一条可追踪链:
Problem / Company Goal |
任何一步与上一步断开,都会让最终报告看起来像“一组彼此无关的 UML 图”,而不是一个有设计逻辑的系统。
二、Lab 1(Week 2):组队、选题与项目文档
2.1 先建立团队
Lab 1 首先要求成员介绍自己的背景、兴趣、Agentic AI / LLM
经验、可贡献的技能,以及希望在本学期学习的方向。随后组成 3–5
人小组,并加入 Canvas 中与 lab 时间对应的 group;小组名称采用
lab time + group number 的格式。
这里真正要解决的不是“凑够人数”,而是让团队技能覆盖项目所需的不同方面。至少要提前知道谁更适合负责:
- 需求与项目文档
- UML 与架构建模
- LLM / agent workflow
- 后端、工具调用和数据
- 前端、演示与整合
2.2 选题必须围绕真实问题
小组要讨论一个利用 Agentic AI 协作解决复杂问题或任务的软件项目。官方建议:
- 准备 1–2 个候选题目,保留比较和调整空间;
- 明确软件要解决的 real-world problem;
- 说明需要什么类型的 LLM,以及 LLM 为什么能显著增强 agent;
- 保持与 One-Person AI Company 主题的强关联;
- 思考对目标行业的影响,例如简化流程、提高效率或提供新方案;
- 可以参考现有 LLM 应用,但最好面向澳大利亚的相关挑战,并具有行业吸引力。
关键判断:不要从“我们想用哪个模型”出发,而要从“现实中哪一段工作值得由多个 agent 协作完成”出发。
2.3 Lab 1 文档至少覆盖六项
根据 Project Description,项目初稿应包括:
- Project scenario:项目场景与问题背景;
- Key functionalities:关键功能概览;
- Intended users or beneficiaries:目标用户或受益者;
- Member roles and responsibilities:每位成员的角色与职责;
- Collaboration rules:协作、沟通与冲突解决方式;
- Objectives, scope and significance:目标、范围、意义,并突出 Agentic AI 的作用。
Lab 1 的理想结果不是一份很长的报告,而是一份全组都同意的 company brief + team charter。它将成为后续需求建模的地基。
三、Lab 2(Week 3):可行性确认与需求规模
3.1 三分钟 pitch 只回答两个问题
小组需要向其他组进行 3 分钟题目介绍,重点回答:
- 它解决什么真实世界问题?
- 公司中的哪些角色应由 AI agent 执行或替代?
在展示前,应先与 tutor 讨论候选题目的可行性,确认它符合课程项目目标。三分钟很短,所以 pitch 不应堆功能,而应讲清楚:问题 → 角色 → agent 协作带来的价值。
3.2 两条硬性规模要求
Lab 2 明确写出:
- 应用必须包含 至少 3 个不同的 AI 角色,并承担主要 stakeholder 或 business function;
- 每位成员必须独立实现至少 2 个 core features + 1 个 optional feature。
因此,最低功能规模取决于组员人数:
| 组员数 | Core features 下限 | Optional features 下限 | 每人合计 |
|---|---|---|---|
| 3 人 | 6 | 3 | 9 |
| 4 人 | 8 | 4 | 12 |
| 5 人 | 10 | 5 | 15 |
容易误解的地方:三个 agent 不能只是同一个聊天机器人换三个名字。它们需要有不同职责,并在工作流中真正传递信息、委派任务、验证结果或进行升级处理。
Lab 2 结束时,建议形成一张最小责任矩阵:
| AI 角色 | 业务职责 | Core features | Optional features | 负责人 |
|---|---|---|---|---|
| Agent A | … | … | … | Member 1 |
| Agent B | … | … | … | Member 2 |
| Agent C | … | … | … | Member 3 |
四、Lab 3(Week 4):三种需求建模方法
Lab 3 引入三种互补方法。它们不是三选一,而是从模糊想法走向可验证需求的三个层次。
| 方法 | 作用 | 应回答的问题 |
|---|---|---|
| Ad-Hoc Approach | 用灵活、非正式的方式先描述和分析需求 | 我们在这个具体场景里到底需要什么? |
| Feature-Oriented Approach | 把初始需求系统化地细化为功能和属性 | 系统必须具备哪些明确能力? |
| Use Case Approach | 从用户或外部系统的交互角度定义需求 | 谁在什么条件下,通过哪些步骤实现什么目标? |
官方给出的关系可以概括为:
Ad-Hoc 提供初始、灵活的需求定义 → Feature-Oriented 把它细化为具体特性 → Use Case 验证这些特性是否符合用户期望和交互。
4.1 三种模型必须互相对应
假设初始需求是“当行程预算超限时,系统应帮助用户调整方案”,三种方法不应该各写各的:
- Ad-Hoc requirement:描述预算超限的业务情境、约束和期望结果;
- Feature model:包含 Budget Monitoring、Alternative Search、Negotiation、Human Approval 等特性;
- Use case:描述用户、Planner Agent 与 Budget Agent 如何协作完成调整。
这条需求之后还应继续成为 activity、interaction 和 state machine diagram 的来源。Lab 3 与 Stage 1 评分项的详细对应,见 Stage 1 评分标准拆解。
五、Lab 4(Week 5):Checkpoint、设计原则与视点分析
5.1 Checkpoint 是一次方向校准
首先向 tutor 展示当前进展,检查需求是否:
- 符合课程目标;
- 可实现,而不是范围无限扩大;
- 足够完整,能够支撑后续建模;
- 清楚体现 One-Person AI Company 和 agent collaboration。
最值得在 checkpoint 主动问 tutor 的问题包括:项目范围是否合适、agent 的职责是否真的不同、功能数量是否满足每人要求、关键 use case 能否支撑后续三类行为图。
5.2 细化 Use Cases
Use case 需要准确表示系统的 functional requirements,并清楚定义用户与系统之间的交互。至少应检查:
- Actor 和目标是否明确;
- Preconditions / trigger 是否成立;
- Main flow 是否有完整的起点和终点;
- Alternative / exception flow 是否覆盖失败与人工升级;
- Postconditions 是否可以验证;
- 是否与 feature model 和项目目标一致。
5.3 在画架构前先写 Design Principles
Lab 4 给出的例子包括:
- Separating control from function:控制逻辑与业务功能分离;
- Centralizing control:在适合的情况下集中协调;
- 选择合适的 Model of Computation(MoC)。
设计原则不是口号。每条原则都应能约束后续决策,例如:“所有高风险输出必须经过独立验证 agent 或 human approval”,就会影响组件划分、消息流和状态设计。
5.4 Viewpoint Analysis
设计原则确定后,选择合适的 viewpoint model,例如 4+1 View Model,再从特定视点分析架构。核心是让不同 stakeholder 看到自己关心的系统属性,而不是试图用一张图解释全部内容。
| 视点示例 | 关注内容 |
|---|---|
| Logical | 核心功能、领域对象、职责划分 |
| Process | 并发、通信、运行时协作与控制流 |
| Development | 模块、包、代码组织和团队分工 |
| Physical | 部署节点、外部服务、网络与基础设施 |
| Scenarios(+1) | 用关键 use cases 验证其他视点是否一致 |
六、Lab 5(Week 6):架构模式与类图
6.1 选择模式,而不是堆砌模式
Lab 5 要求基于合适的 architectural design patterns 完成系统架构。候选包括:
- 通用架构模式:Layered Architecture、MVC、Service-Oriented Architecture、Shared-Data;
- Agent-oriented patterns:ReAct、Planner–Executor、Supervisor–Worker、Blackboard、Cognitive Layering。
官方明确说明:不需要使用所有模式,只选择与系统最相关的模式。 对每个选中的模式,应回答三件事:
- 它解决什么架构问题?
- 在本系统中如何落地到具体组件、职责和交互?
- 它的优势、限制和 trade-offs 是什么,如何满足 functional / non-functional requirements?
例如,一个多 agent 系统选择 Supervisor–Worker,并不等于画一个 Supervisor 框。还要说明:任务如何拆分、worker 如何选择、失败如何重试、结果如何合并、何时升级给人类,以及集中式 supervisor 带来的单点故障和性能权衡。
6.2 Class Diagram 的四类检查项
类图表示系统的 design-time static structure。Lab 5 要求覆盖:
- Classes and relationships:主要类,以及 association、generalization、aggregation、composition;
- Interfaces:接口及其实现关系;
- Multiplicity:每条 association 的多重性;
- Attributes and methods:与职责相符的属性和方法。
常见失分点:把架构组件图直接当类图;只画类名不画关系;漏掉 multiplicity;把 aggregation 与 composition 随意混用;接口与具体实现没有区分。
类图应当能够反向解释 use case,也应能向前支持 Lab 6 的对象实例化。如果一个关键 use case 中出现的重要职责在类图里找不到承担者,说明模型之间已经断链。
七、Lab 6(Week 7):Object Diagram 与运行时协作
Lab 6 从“系统有哪些类”推进到“某个具体时刻,系统中实际存在哪些对象,它们怎样连接”。
| Class Diagram | Object Diagram |
|---|---|
| 描述类型和规则 | 描述某个时刻的具体实例 |
TripPlanner |
plannerSydney:TripPlanner |
属性定义 budget: Money |
具体值 budget = AUD 2500 |
| 关联允许哪些对象相连 | 当前场景中哪些对象真的相连 |
| 设计时静态结构 | 运行时快照与 collaboration |
7.1 Step 1:从类图选择实例
- 回顾 Lab 5 的 class diagram;
- 找出关键场景中真正参与运行的类;
- 为每个类创建具体命名的 object;
- 给关键 attributes 填入能解释该场景的具体值。
对象命名通常采用:
objectName:ClassName |
例如:
request42:TripRequest |
7.2 Step 2:用对象关系表现 collaboration
对象图不能只是把类名改成带下划线的对象名。它要呈现:
- 当前场景中的 object links;
- 哪些对象交换信息或共同完成任务;
- 运行时关系是否符合类图中的 association 和 multiplicity;
- agent collaboration pattern 在具体场景中如何出现。
最适合画对象图的是一个有代表性的运行时瞬间,例如“Planner 已生成方案、Budget Agent 判定超支、系统等待 Human Operator 批准替代方案”。具体值和连接会让抽象架构变得可检查。
八、跨 Lab 的完整溯源矩阵
| 阶段 | 输入 | 输出 | 一致性检查 |
|---|---|---|---|
| Lab 1 | 真实问题、团队能力 | 项目场景、范围、用户、功能初稿 | Agentic AI 是否不可替代?范围是否可控? |
| Lab 2 | 候选题目 | AI 角色、功能数量、成员分工 | ≥3 个不同 AI 角色?每人 ≥2 core + 1 optional? |
| Lab 3 | 项目需求 | Ad-Hoc、Feature、Use Case 模型 | 三类需求是否互相映射? |
| Lab 4 | 需求模型 | 细化 use cases、原则、视点 | 原则是否约束设计?视点是否服务 stakeholder? |
| Lab 5 | 原则、视点、use cases | 架构模式、组件、类图 | 模式是否有 rationale?类能否承担 use case 职责? |
| Lab 6 | 类图、关键场景 | 对象图、运行时 collaboration | 实例、属性值、链接是否符合类图? |
一条需求的纵向检查方式
挑一条关键需求,从头到尾追问:
它来自哪个真实问题? |
如果每个问题都能明确回答,模型之间才真正具有 traceability。
九、最容易踩的七个坑
- 先选模型,再找问题:结果通常只是普通聊天应用套了一个 LLM API。
- 三个 agent 只有名称不同:角色没有独立职责,也没有真实协作或交接。
- 功能数量与组员人数不匹配:忽略每人 2 core + 1 optional 的最低要求。
- 三类需求模型互不对应:Ad-Hoc、Feature 和 Use Case 各自描述不同系统。
- 设计原则停留在口号:没有影响组件边界、控制方式、异常处理或人类审批。
- 为了显得复杂而叠加模式:列出多个架构模式,却没有说明各自解决的问题和 trade-offs。
- Object Diagram 只是 Class Diagram 的复制品:缺少具体对象名、属性值、场景和运行时链接。
十、Lab 1–6 完成检查表
项目与团队
需求与架构
结构模型
总结
Lab 1–6 的核心不是“每周多画一张图”,而是逐步把一个真实问题变成可解释、可追踪、可实现的系统设计:
Lab 1–2 决定做什么、谁来做;Lab 3 说明系统必须做什么;Lab 4 决定用什么原则和视点观察它;Lab 5 定义它的架构与静态结构;Lab 6 证明这些结构在具体运行场景中如何成立。
最终交付的质量,取决于这条链是否连贯。单张图画得漂亮但彼此无法追踪,价值有限;每个模型都能解释上一步并支撑下一步,才真正体现 Model-Based Software Engineering。