软件工程实践团队第二次作业-原型设计&需求分析

NULL101010 NULL101010 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

软件工程实践团队第二次作业——原型设计&需求分析

团队:NULL | 项目:数据结构可视化学习平台(NULL Visual Lab)
一句话:把「代码执行 → 状态变化 → 原因解释」做成可控、可交互的学习过程。
We start from NULL, but we won't end at NULL.

这个作业属于哪个课程202601福大-软件工程实践-W班
这个作业要求在哪里软件工程实践团队第二次作业——原型设计&需求分析
团队名称NULL
这个作业的目标完成《数据结构可视化学习平台》的界面原型设计与需求分析:产出《软件需求规格说明书》、界面原型、需求分析 PPT、界面原型设计答辩 PPT;明确团队整体计划与里程碑、关键点/难点/风险、组员分工与工作量比例、成员协作方式
其他参考文献GB/T 9385-2008《计算机软件需求规格说明规范》;GB/T 8567-2006《计算机软件文档编制规范》;邹欣《构建之法》(第 3 版);严蔚敏《数据结构(C 语言版)》;VisuAlgo;MDN Web Docs;D3.js 官方文档

目录

一、作业目录与评分要点自检(Checklist)
二、团队项目计划
 2.1 项目定位与一句话目标
 2.2 项目范围与迭代边界(内容维度 MVP / V1 / V2 + 能力维度 L1–L4)
 2.3 项目整体里程碑计划(含新增能力时间盒 M4a / M6a)
 2.4 里程碑甘特图
 2.5 本次作业周计划(10/09 – 10/16)
三、关键点、难点与风险分析
 3.1 六个关键技术难点与攻关思路
 3.2 风险登记册
 3.3 Top 3 风险的详细应对预案
四、项目分工与组员工作量比例
 4.1 团队角色分工(主责 + 副责)
 4.2 本次作业组员分工与贡献度
 4.3 团队绩效考核制度
五、成员协作方式
 5.1 端到端开发链路与四条主线
 5.2 沟通工具矩阵
 5.3 版本仓库协作规范(含九步合并流程)
 5.4 接口与集成测试责任矩阵
 5.5 冲突处理机制
 5.6 任务同步机制(含一周迭代节奏)
 5.7 质量保障机制(含黄金测试案例)
 5.8 团队执行检查清单
六、软件需求规格说明书
**七、界面原型设计**(含新增的登录 / 注册页 P8、闯关积分页 P9)
八、需求分析 PPT 链接
九、界面原型设计答辩 PPT 链接
十、团队互评与评审表
十一、小结与下一步


一、作业目录与评分要点自检(Checklist)

1.1 交付物清单

  • ✅ 1 篇博客随笔(包含作业目录并且核对评分要点)—— 本文
  • ✅ 1 份界面原型设计(在博客中给出链接)—— 见 第七章
  • ✅ 1 份界面原型设计答辩 PPT(课堂讲述)—— 见 第九章
  • ✅ 1 份需求规格说明书(Word 电子版)—— 见 第六章
  • ✅ 1 份需求分析报告 PPT(课堂讲述)—— 见 第八章
  • ✅ 1 份界面原型设计评审表(腾讯共享文档,由助教汇总)
  • ✅ 1 份需求分析评审表(腾讯共享文档,由助教汇总)

交付说明:PPT 与《需求规格说明书》均已按老师建议同时导出 PDF,连同源文件一并上传至华为云仓库,仓库链接见第六、八、九章。

支撑文档:团队另有执行版文档《NULL 团队 8 人职责分工与协作说明》,逐人写明职责边界、分阶段工作、协作接口、验收与绩效证据,是本文第四、五章的来源。链接:【待填:职责分工与协作说明文档链接】

1.2 评分要点自检表

评分项分值得分点本文对应位置自检
博客撰写(课程目标 7)2'博客 markdown 排版;正确给出说明书链接、界面原型链接、原型答辩 PPT 链接、需求分析 PPT 链接第六章 / 第七章 / 第八章 / 第九章✅ 四个链接均已给出(占位符待替换仓库地址)
博客撰写(课程目标 7)6'组队后项目整体计划安排第二章,含 M0–M8 共 9 个带日期、交付物、验收标准的里程碑✅
博客撰写(课程目标 7)5'项目进行过程中可能遭遇的关键点、难点与风险分析第三章,含 6 项技术难点 + 11 条风险登记册(含新增功能带来的范围与安全风险)✅
博客撰写(课程目标 7)7'此次作业组员分工、组员工作量比例第四章,含 8 人「主责 + 副责」角色表、四条协作主线、本次作业分工贡献度表与绩效考核制度✅
团队协作(课程目标 6)16'描述成员协作方式第五章,覆盖端到端链路与四条主线、沟通工具、版本仓库协作与九步合并流程、接口与集成测试责任矩阵、DoD、冲突处理、一周迭代节奏、任务同步与检查清单✅
需求规格说明书(课程目标 2)2'引言说明书第 1 章✅
需求规格说明书(课程目标 2)8'用户场景说明书第 2 章 + 7.2 用户场景✅
需求规格说明书(课程目标 2)8'类图说明书第 3 章 + 7.3 领域类图概览✅
需求规格说明书(课程目标 2)8'界面原型说明书第 4 章 + 第七章✅
需求规格说明书(课程目标 2)3'功能描述说明书第 5.1 节✅
需求规格说明书(课程目标 2)3'验收验证标准说明书第 5.3 / 5.4 节✅
国标规范(课程目标 5)12'参考《软件需求规格说明书》国标规范文本撰写说明书按 GB/T 9385-2008 目录组织,分层描述、缩写先定义、样式统一✅
答辩(课程目标 2)2'项目开发的目的、意义、背景原型答辩 PPT 第 1–2 页 + 需求分析 PPT 第 1 章✅
答辩(课程目标 2)6'项目研发的内容(类图、原型、功能展示)需求分析 PPT 第 3–5 章 + 现场可交互原型演示✅
答辩(课程目标 6)4'团队计划落实情况、组员分工与工作量比例第二、四章 + 答辩 PPT「计划落实」页✅
答辩(课程目标 5)4'PPT 演示两份 PPT 统一视觉规范,页码/编号/加载计时一致✅
答辩(课程目标 5)4'报告《需求规格说明书》+ 答辩讲稿✅

二、团队项目计划

2.1 项目定位与一句话目标

项目名称:数据结构可视化学习平台(NULL Visual Lab)
产品形态:Web 应用,浏览器打开即用,无需安装
团队名称:NULL 组员人数:8 人

我们观察到的真实学习障碍是:**数据结构最难的地方不只是"定义难",而是"过程看不见"**。

传统学习路径是「代码 / 伪代码 → 脑内模拟 → 结构变化 → 理解结果」,而关键变化恰恰发生在学习者脑中——初学者最容易在这一环"断链"。它不是三点具体问题,而是三个叠加的认知负荷:

障碍表现
抽象指针、节点、边、下标关系难以形成稳定心智模型
动态插入 / 删除 / 遍历是连续过程,静态图只能展示几个截面
脱节"这行代码"与"这个节点为什么变化"常常对应不上

我们要做的:把「脑内模拟」搬到屏幕上,把"代码执行 → 状态变化 → 原因解释"做成可控、可交互的学习过程;并通过账号体系沉淀学习进度、通过**闯关积分把"看懂"推进到"练会"**,形成「学 → 练 → 测」的完整闭环。

核心体验四要素(贯穿全部设计决策):

体验含义落到原型上
看得见节点 / 指针 / 边 / 下标可视化画布区用形状、颜色、箭头表达结构与指针
跟得上代码高亮与动画同步代码区当前执行行高亮,与画布动画同一节拍
点得动自定义数据与主动操作支持输入自定义数据、随机生成、指定操作与参数
控得住暂停 / 单步 / 回退 / 调速底部控制条 + 步骤进度条,任意步骤可来回跳

闭环三要素(第二阶段起纳入):

环节能力回答的问题
学可视化 + 代码联动 + 步骤解释"这一步为什么这样变?"
练自定义数据 + 主动操作 + 实验台"换成我的数据会怎样?"
测账号进度 + 闯关关卡 + 积分与成就"我到底掌握了没有?"

目标:不是"看动画",而是"理解变化";不是"看过",而是"练会"。

2.2 项目范围与迭代边界

我们主动承认成熟可视化工具(如 VisuAlgo)已经存在,因此边界控制是本项目的第一原则:先把"看懂"做扎实,再扩展数据结构数量;不追求一次性覆盖所有算法。

范围从两个维度定义——内容维度(支持哪些数据结构)和能力维度(产品提供哪些能力)。两者独立排期,避免"加功能"顺手把"加结构"也带进来。

(1)内容维度:数据结构覆盖范围

阶段范围内容说明
MVP数组 / 链表 / 栈 / 队列基础操作 + 单步动画第一阶段,必须完成
V1树 / 二叉搜索树遍历 + 插入 / 删除第二阶段,必须完成
V2图 / 哈希表更复杂交互与课程扩展第三阶段,加分项,仅在 M7 前有余量时启动

(2)能力维度:账号与闯关积分(本阶段新增纳入范围)

在可视化学习闭环之外,本项目新增两条能力线——账号体系(登录 / 注册)与闯关积分,用于解决"学完就忘、没有反馈、没有坚持动力"的问题。

能力层功能所属阶段优先级说明
L1 学习闭环(立身之本)结构选择、数据输入、单步动画、代码高亮、步骤解释、播放控制MVPMust不可裁剪——任何情况下优先保证
L2 账号与进度(新增)注册 / 登录 / 登出、会话保持、访客模式、学习记录与进度持久化、"我的实验台"M4aShould让学习行为可持续;未登录也必须能完整使用 L1
L3 闯关积分(新增)知识关卡地图与解锁、题目与答题区、即时判定与解析、积分规则、成就 / 徽章、积分榜M6aShould把"看懂"变成"练会",形成「学 → 练 → 测」闭环
L4 轻后端(新增)账号 API、进度 API、积分 API、数据持久化、部署与回滚M4a / M6aCould由成员8 承担,不提前过度设计

(3)新增范围带来的取舍(必须说清楚)

  • 新增 L2 / L3 不改变 L1 的完成标准,也不占用 V1 / V2 的数据结构迭代窗口——账号与积分安排在 M4a(Alpha 期)与 M6a(Beta 期)两个独立时间盒内完成;
  • 若 M4a / M6a 时间盒不够用,降级顺序为:积分榜 → 成就徽章 → 关卡数量,登录与进度保存最后降级;
  • L4 的轻后端只做"账号 / 进度 / 积分"三件事,不做通用用户中心,避免在 MVP 阶段过度设计;
  • 积分规则必须公开可解释(学生能自己算出为什么得这个分),不接受黑盒加分。

差异化重点(不是"动画更多",而是学习链路更完整):

维度教材 / 视频成熟工具NULL 重点
动态过程△✓✓
主动交互△✓✓
代码联动△✓强化
中文课程场景✓部分重点
步骤解释✓有强化
账号与进度沉淀✗部分新增
闯关练习与积分激励△(纸质习题)少新增·重点

2.3 项目整体里程碑计划

说明:下表日期为团队内部排期。其中 10/15(作业截止)、10/16(答辩)为课程组硬性节点;其余节点如与课程日历冲突,由组长在群内公告后更新本文并打版本号。

里程碑阶段时间关键交付物通过标准(DoD)
M0 选题确认选题09/24 – 10/08《选题汇报》PPT、NABCD 分析✅ 已完成,课堂汇报通过
M1 需求分析 & 界面原型定稿需求与原型10/09 – 10/15《软件需求规格说明书》v1.0、界面原型 v1.0、需求分析 PPT、原型答辩 PPT10/15 23:59 前博客 + 文档 + PPT 全部归档华为云;10/16 答辩完成
M2 需求评审与基线冻结需求基线10/17 – 10/18评审意见记录、说明书 v1.1、产品 Backlog、验收标准清单评审问题 100% 闭环;需求基线 v1.1 打 tag 冻结,此后变更走变更流程
M3 架构设计与技术验证架构10/17 – 10/19架构设计文档、Structure Adapter 接口定义、动画引擎 PoCPoC 跑通"链表插入"垂直切片,代码高亮 × 动画 × 解释三联动可用;接口 Review 通过
M4 Alpha 冲刺Alpha10/19 – 10/24MVP 版本:数组 / 链表 / 栈 / 队列,基础操作 + 单步动画4 个结构 × 核心操作全部可用;单元测试通过;无 P0/P1 缺陷
M4a 账号与学习记录增值能力10/19 – 10/23注册 / 登录 / 登出、会话保持、访客模式、学习进度与实验台记录持久化、账号与进度 API可按账号登录并保留学习进度;未登录也能完整使用 L1 核心功能;密码加盐哈希存储,库中无明文
M5 Alpha 发布 & 班级内测Alpha10/24 – 10/25Alpha 上线版本、内测反馈表≥ 15 位同学完成体验;"是否看懂"正向反馈 ≥ 70%
M6 Beta 冲刺Beta10/25 – 10/27V1 版本:树 / 二叉搜索树(遍历 + 插入 / 删除);V2 视余量启动V1 结构全功能可用;Alpha 反馈的 P0/P1 问题 100% 修复
M6a 闯关积分体系增值能力10/24 – 10/26关卡地图与解锁、题面与答题区、即时判定与解析、积分规则与结算、成就徽章、积分榜≥ 3 个知识关卡上线;积分由服务端判定且幂等(重复提交不重复加分);积分规则对用户公开可解释
M7 Beta 发布 & 课程场景验证Beta10/26 – 10/27Beta 版本、课程场景试用记录(预习 / 演示 / 复习)至少完成 1 次课堂投屏演示;教师 / 助教走查通过
M8 终期答辩与交付交付10/27 – 10/28终期答辩 PPT、完整源码与文档、演示视频演示零故障(含录屏兜底);文档齐全、README 可复现

关于新增的账号与闯关积分:M4a / M6a 是两条独立时间盒,与 M4、M6 的数据结构冲刺并行推进,由不同成员承担(见 4.2 分工表),因此不会挤占 L1 学习闭环与 V1 / V2 的迭代窗口。若时间盒告急,按 2.2 节「新增范围带来的取舍」约定的顺序降级。

关键指标:不是"访问量",而是——用户能否更快理解一次结构变化,以及能否在闯关中被检验出真的掌握了。

2.4 里程碑甘特图

gantt
    title NULL · 数据结构可视化学习平台 —— 项目整体里程碑
    dateFormat  YYYY-MM-DD
    axisFormat  %m/%d
    section 选题
    M0 选题确认              :done,   m0, 2026-09-24, 2026-10-08
    section 需求与原型
    M1 需求分析 & 原型定稿    :active, m1, 2026-10-09, 2026-10-16
    M2 需求评审与基线冻结     :        m2, 2026-10-17, 2026-10-18
    section 架构
    M3 架构设计与技术验证     :        m3, 2026-10-17, 2026-10-19
    section Alpha
    M4 Alpha 冲刺            :        m4, 2026-10-19, 2026-10-24
    M5 Alpha 发布 & 班级内测  :        m5, 2026-10-24, 2026-10-25
    section Beta
    M6 Beta 冲刺             :        m6, 2026-10-25, 2026-10-27
    M7 Beta 发布 & 场景验证   :        m7, 2026-10-26, 2026-10-27
    section 增值能力 · 账号与闯关积分
    M4a 账号与学习记录        :        m4a, 2026-10-19, 2026-10-23
    M6a 闯关积分体系          :        m6a, 2026-10-24, 2026-10-26
    section 交付
    M8 终期答辩与交付         :        m8, 2026-10-27, 2026-10-28

2.5 本次作业周计划

本次作业的窗口只有 7 天(10/09 – 10/16),且"界面原型设计内容必须于答辩(10/16)前完成",因此我们采用倒排 + 并行的方式推进:

日期事项产出主要负责
10/09(五)需求梳理启动会:确认范围、冻结 MVP 边界、任务拆分到人任务看板、分工表组长 / PM
10/10(六)用户调研:访谈 3 位同学 + 1 位助教或老师,整理真实使用场景访谈纪要、用户场景清单需求负责人
10/11(日)场景 → 功能:功能清单 + MoSCoW 优先级;类图第一稿功能清单、类图 v0.1需求分析 / 建模
10/12(一)类图评审 + 前后端接口对齐;原型页面清单与线框类图 v1.0、页面清单、线框稿建模 + 原型设计
10/13(二)高保真原型开发(核心 3 个页面);《需求规格说明书》撰写原型 v0.5、说明书初稿原型实现 + 文档
10/14(三)原型走查 + 说明书走查;两份 PPT 制作走查记录、PPT 初稿测试 / 文档
10/15(四)全流程彩排 + 计时;文档与 PPT 归档华为云;博客发布全套交付物、博客链接全组
10/16(五)课堂答辩 · 收集评审意见评审表、答辩记录全组

并行原则:文档(说明书)与原型(HTML)由不同成员同步推进,每天 21:00 在群里对齐一次接口与术语,避免"文档写完发现原型对不上"。

本次作业的 7 天排期是完整迭代节奏的一个压缩版。进入 M4 之后,团队统一按 5.6 一周迭代节奏(周一立项 → 周二至周三并行开发 → 周四主链路集成 → 周五验收回归 → 周末复盘)运转。

原型范围说明:本次交付的界面原型除 L1 学习闭环的 7 个页面外,已包含账号(登录 / 注册)与闯关积分相关的页面原型(P8、P9,见 7.4 页面清单)。这两条能力线的功能实现分别安排在 M4a 与 M6a,本次只交付原型与需求定义,不占用本次作业的答辩内容。


三、关键点、难点与风险分析

3.1 六个关键技术难点与攻关思路

难点 1:动画与代码执行的同步——本项目的"心脏"

问题:如何把一次数据结构操作(例如链表插入)切分成可回放、可解释的原子步骤,并让每一步同时驱动"代码高亮 + 图形变化 + 文字解释"三者一致?

为什么难:如果让动画回调去直接操作画布,那么"暂停 / 单步 / 回退"就变成了无法实现的乱序状态;如果让代码逐行执行再录屏,又无法支持用户自定义数据。

攻关思路:**把动画降级为"数据 + 下标"**——让算法只负责产出 Step,让画面只负责消费 Step。

  1. 成员5(算法引擎) 不直接画图,而是把算法过程拆成 Step 序列(而不是只返回最终结果);
  2. 成员1(Tech Lead) 统一 Step Schema,规定字段、顺序与公共语义,并维护 Step Controller 作为唯一调度入口;
  3. 成员3(可视化引擎) 与 成员6(代码同步) 各自消费同一个 Step——一个播动画,一个绑 codeLine 与 description;
  4. 成员4(播放控制) 的播放器不碰算法,只负责改变当前 Step 下标。

这样,"暂停 / 单步 / 回退 / 调速 / 拖进度条"全部退化成切换一个下标,实现难度骤降,天然支持回放与分享,也让成员3、4、5、6 可以按接口并行开发,互不等待。

难点 2:图形自动布局的稳定性与美观

问题:链表 / 树 / 图在插入、删除后需要重新布局,若布局突变会出现"节点乱跳",学生反而看不懂。

攻关思路:分层布局策略——链表用线性布局,树用 Reingold–Tilford 类算法,图用有向分层布局;动画只做位置补间(tween),不做重排突变;布局结果缓存,只有结构真正变化时才重算。

难点 3:自定义输入下的边界与非法情况

问题:用户可输入任意数据、任意操作序列(空结构删除、下标越界、栈溢出、重复插入等)。

攻关思路:输入校验 + 操作预演(dry-run) + 明确错误提示。宁可拒绝执行并解释原因,也绝不静默失败——静默失败对初学者是最大的伤害。

难点 4:长操作序列下的性能与内存

问题:快照序列随步骤数线性增长,长序列(如 1000 次随机操作)会占满内存。

攻关思路:快照增量 / 差分存储 + 关键帧定期全量;设置步骤上限保护,超过 N 步自动分段并提供"跳到第 k 段"。

难点 5:教学解释的"人话"质量

问题:本项目最难的其实不是代码,而是文案。"把 p.next 指向新节点"对初学者等于没说。

攻关思路:每个步骤绑定固定解释模板,解释文案由"算法同学 + 文档同学"双人评审;邀请任课老师 / 助教对术语与表述做一次走查,确保与课程用语一致。

难点 6:多结构复用架构,避免"每加一个结构就重写一遍"

问题:如果每个数据结构都自带一套动画代码,V1、V2 阶段将无法按期交付。

攻关思路:抽象出统一的 Structure Adapter 接口(数据模型 + 布局器 + 渲染器 + 步骤生成器),把"通用基础设施"(播放器、控制条、代码高亮、解释面板)与"具体结构"彻底解耦。M3 阶段必须先完成一个垂直切片(链表插入)跑通全链路,再横向复制到其他结构。

3.2 风险登记册

编号风险描述类别概率影响等级应对策略负责人触发信号
R1需求蔓延:结构越加越多、功能越加越多,MVP 做不完范围高高🔴 高严格双维度边界:内容维度 MVP 只做 4 个线性结构;能力维度 L1 不可裁剪、L2/L3 走独立时间盒 M4a / M6a。新增需求一律进 Backlog,需组长 + PM 双签才能插入当前迭代组长 / PM迭代中出现"顺手再加一个结构 / 再加一个功能"的提议
R2动画引擎与代码高亮同步难度被低估技术中高🔴 高M3 先做"链表插入"垂直切片打通全链路,再横向复制;若 3 天内未跑通,降级为"预置数据集 + 分段动画"方案可视化技术预研PoC 超出 M3 时间盒
R38 人协作接口不一致、合并冲突频繁协作中中🟠 中提前冻结 Adapter 接口与类型定义;feature 分支 + 小 PR + 每日合并回 dev;禁止直推 main前端架构单次 PR 冲突文件 > 5 个
R4进度前松后紧,末期撞上考试周进度高中🟠 中里程碑倒排;每周日 21:00 看板对齐;每个阶段预留 20% buffer组长 / PM连续两周任务完成率 < 70%
R5成员课程负担不均,个别成员长期掉线人员中中🟠 中任务按 1–5 Point 计量、可转让;组长每周复核负载并调平组长 / PM某成员连续 2 周无产出记录
R6浏览器兼容 / 课堂投屏演示失败交付低高🟠 中提前锁定 Chrome / Edge 最新版;课堂演示前 24 小时全流程彩排;准备录屏兜底测试 / 质量彩排出现渲染异常
R7需求理解偏差,做出来老师同学觉得不好用需求中高🔴 高10/16 答辩即第一次真实反馈;M5 班级内测收集"是否看懂";用数据而非感觉决定迭代方向需求负责人内测正向反馈 < 70%
R8素材 / 第三方库版权问题合规低中🟡 低代码与素材全部自研;引用第三方库遵守 License 并在 README 注明文档 / 答辩引入新的第三方依赖
R9新增账号与闯关积分拖累核心功能:登录 / 积分是新增范围,容易在 Alpha 期抢走 L1 的工时范围中高🔴 高独立时间盒(M4a / M6a)与独立负责人;L1 是不可裁剪项,任何情况下优先保证;按"积分榜 → 成就 → 关卡数量"顺序降级,登录与进度保存最后降级组长 / PM + 成员8M4a / M6a 占用到 L1 的迭代工时
R10账号安全与积分公平性:密码泄露、会话固定、重复提交刷分、越权查看他人积分安全中高🔴 高密码加盐哈希存储、全程 HTTPS、会话超时与登出失效;积分一律由服务端判定并按幂等键去重;接口做鉴权,不信任前端传入的分数成员8 + 成员7出现可重复加分 / 越权读取的用例
R11轻后端范围失控,MVP 阶段过度设计技术中中🟠 中L4 只做"账号 / 进度 / 积分"三件事,明确不做通用用户中心、不做社交、不做管理后台成员8出现课程作业未要求的后端需求

3.3 Top 3 风险的详细应对预案

R1 需求蔓延(最高优先级)

我们的项目最诱人的陷阱是"再加一个红黑树吧"——最近一次就发生在新增登录与闯关积分的时候。对策不是拒绝新功能,而是把范围写进基线并给新功能单独开时间盒:内容维度(MVP / V1 / V2)与能力维度(L1–L4)在 M2 需求基线冻结时一并冻结,L2 / L3 走独立的 M4a / M6a,不占用 L1 与 V1 / V2 的窗口。任何新增需求写进 Backlog 并在每周日例会上统一评估,变更必须同时回答"砍掉什么"——不允许只加不减。

R2 同步引擎技术风险

这是决定项目成败的单点技术风险。应对方式是先用最小垂直切片验证:M3 阶段只做"链表插入"这一个操作,从代码高亮到画布动画到解释文案全部打通。如果 3 天时间盒内无法跑通,立即启动降级方案(预置数据集 + 分段动画,牺牲部分自定义能力保住核心体验),并在周报中如实上报。

R7 需求理解偏差

我们不假设自己懂用户。10/16 答辩现场就是第一次真实检验;M5 阶段做班级内测,收集"是否看懂"的结构化反馈而不是"好不好看";M7 进入真实课程场景(预习 / 课堂演示 / 复习)验证。任何一个功能,如果内测中多数人看完仍说不清"刚才发生了什么",就重做。


四、项目分工与组员工作量比例

本章与团队执行版文档《NULL 团队 8 人职责分工与协作说明》完全对齐。该文档明确了 8 名成员的职责边界、协作接口、阶段产出与验收依据。

4.1 团队角色分工

组织原则:不是把 8 个人机械地切成 8 个孤立岗位,而是让每个人有明确主责,同时能够围绕同一个可运行产品进行跨模块协作。每名成员均采用「主责 + 副责」模式。

项目核心链路(所有成员的工作最终都必须能够接入这条链路):

用户输入 → 算法引擎 → Step 步骤模型 → 动画引擎 / 代码高亮 / 步骤解释 → 播放控制 → 页面展示 → 测试与部署
成员核心角色主责副责
成员1组长 / PM / Tech Lead / 集成负责人范围、架构、任务、接口、集成、版本公共状态、Step Controller、技术补位
成员2产品 / UX / 前端体验负责人用户流程、页面原型、学习交互、普通前端可用性测试、文案与演示流程
成员3可视化引擎负责人节点 / 边 / 指针渲染、动画、布局、视觉状态性能优化、动画组件沉淀
成员4前端交互 / 播放控制负责人播放、暂停、单步、回退、调速、UI 状态前端组件、与成员3联调
成员5数据结构算法引擎负责人数据模型、算法操作、Step 生成、算法正确性单元测试、基础数据结构模块
成员6代码同步 / 算法模块负责人代码高亮、步骤解释、Step 映射、进阶算法模块教学案例、树 / 图等扩展
成员7QA / 测试负责人测试计划、接口测试、回归测试、E2E、Bug 管理可用性与兼容性检查
成员8工程化 / 部署 / 全栈支援构建、CI、部署、环境、日志、轻后端跨模块救火、发布保障

四条协作主线与交叉备份

主线成员共同目标要避免的误区
产品与整体1 + 2范围清晰、用户流程可执行、架构可落地PM 与开发脱节
可视化与交互3 + 4动画正确、播放可靠、操作直观动画各写各的
算法与教学5 + 6算法正确、Step 可解释、代码同步算法正确但无法被动画消费
质量与工程化7 + 8测试可重复、发布可重复、问题可追溯最后一天才测试和部署

三条组织规则

  1. 每名成员均采用**"主责 + 副责"**模式:主责用于确保模块有人负责到底,副责用于避免单点依赖;
  2. 成员之间以**"接口约定"协作,不以"写完自己的文件"作为完成标准**——只有模块能够被下一环正确调用,任务才算真正完成;
  3. 优先保证"链表插入"这一黄金样例完整跑通,再横向扩展数组、栈、队列、树和图。

4.2 本次作业组员分工与贡献度

本节与 1.1 交付物清单逐条对应:先把 7 项交付物落到人,再按成员汇总工作量与贡献度。

(1)交付物责任分配

编号交付物(对应 1.1)主责主要协作
D11 篇博客随笔(含作业目录与评分要点核对)【郑伟航】102400134全员供稿:成员2(用户场景与原型)、成员3(可视化方案)、成员4(交互与控制)、成员5(算法与功能)、成员6(教学解释)、成员7(验收标准)、成员8(工程与部署)
D21 份界面原型设计(在线可交互链接)【林嘉柞】102400118成员4(播放控制与交互控件)、成员3(可视化画布与动画表达)、成员5(示例数据与操作合法性)、成员8(部署为在线链接)
D31份需求规格说明书(word电子版)【姚浩然】102400131成员3(类图与具体要求)、成员5(功能描述与算法接口)、成员6(术语表与解释规范)、成员4(交互规范)、成员7(验收验证标准)、成员8(运行环境与外部接口)、成员1(统稿与国标格式把关)
D41 份需求分析 PPT【苏林】102400125成员2(用户场景与原型页)、成员3(领域类图页)、成员5(功能与优先级页)、成员6(教学解释页)、成员7(验收标准页)、成员8(运行环境页)
D51 份界面原型设计答辩 PPT【邹毅轩】102400136成员1(答辩组织与讲稿)、成员4(现场演示操作)、成员3(视觉素材)、成员7(彩排走查)、成员8(演示环境与录屏兜底)
D61 份界面原型设计评审表(腾讯共享文档)【邱宁华】102400325成员2(评审要点)、成员1(汇总并转 Backlog)
D71 份需求分析评审表(腾讯共享文档)【林俊杰】102400119成员3(技术要点)、成员1(汇总并转 Backlog)

说明:D3 / D4 是"一人主笔、多人分章"的交付物,因此主责人负责统稿与交期,各协作人负责自己那一章的内容与准确性;D6 / D7 由成员7 统一建表维护,避免多人同时编辑同一份腾讯共享文档。

(2)组员分工与贡献度

学号工作内容贡献度
【詹志瑜】102400133【成员1·组长/PM/Tech Lead】主责 D1、D4;协作 D3、D5、D6、D7。确定本次作业范围与 MVP 边界,拆分任务到人并制定 10/09–10/16 倒排计划;统一 Algorithm Engine → Step → Animation / Code Sync / Explanation 的接口约定;主持需求启动会与类图评审会;撰写并排版发布博客 D1,核对 1.2 评分要点自检表;统稿《需求规格说明书》D3,把关国标目录结构、缩写定义与全文术语一致性;搭建需求分析 PPT D4 的框架并撰写项目背景 / 目的意义 / 计划落实页;组织答辩彩排;负责全部交付物归档华为云【13%】
【邱宁华】102400325【成员2·产品/UX/前端体验】主责 D2、D3、D5;协作 D1、D4、D6。设计 9 个页面的信息架构(结构目录 / 操作区 / 动画区 / 代码区 / 解释区 / 控制区),绘制中保真原型并定义页面状态(初始 / 输入错误 / 运行中 / 暂停 / 完成 / 未登录);新增设计登录与注册页、闯关模式与积分榜页;撰写《需求规格说明书》第 1 章引言与第 2 章总体描述(用户画像 / 用户场景 / 用户故事);编写交互说明与提示文案;设计答辩演示路径与异常兜底【12%】
【苏林】102400125【成员3·可视化引擎】协作 D1、D2、D3、D4、D5。绘制领域类图 v0.1–v1.0 并主持评审,撰写《需求规格说明书》第 3 章具体要求与第 5 章功能描述 D3;设计节点 / 边 / 指针 / 数组单元 / 标签等基础可视化组件的原型表达 D2;定义 Create / Delete / Connect / Disconnect / Highlight / Move 通用动画动作并输出动作映射表;制定链表横向、数组顺序、树层次、图基础布局策略;在原型中表达关键步骤的视觉状态;为闯关答题提供"结构状态比对"判定能力【12%】
【邹毅轩】102400136【成员4·前端交互/播放控制】协作 D1、D2、D3、D5。在原型中实现播放控制器(开始 / 暂停 / 继续 / 下一步 / 上一步 / 重新开始 / 速度调整)与前端交互状态机(running / paused / finished / error)D2;实现操作面板、按钮、滑块与步骤进度组件;撰写《需求规格说明书》第 4 章交互规范(页面状态与操作反馈)D3;验证连续点击、快速切换、暂停后恢复、回退后再播放等状态问题;设计登录态 UI 与积分变化、关卡解锁的界面反馈;承担答辩现场原型演示操作 D5【12%】
【林嘉柞】102400118【成员5·算法引擎】协作 D1、D2、D3、D4。建立统一数据结构模型与操作接口(create / insert / delete / search / traverse);把算法过程拆成 Step 序列而非只返回最终结果,与成员1共同维护 Step Schema;撰写《需求规格说明书》第 5.1 功能描述与第 5.2 输入输出格式 D3,输出算法接口文档与边界情况说明;为原型提供各结构的示例数据与操作合法性校验 D2;定义闯关关卡的正确答案与判分规则;编写正常 / 边界 / 非法输入的算法单元测试【13%】
【郑伟航】102400134【成员6·代码同步/步骤解释】协作 D1、D3、D4、D5。建立 Step → codeLine → description 映射关系,实现代码 / 伪代码高亮组件的数据绑定,保证 Step 切换时高亮同步;撰写面向初学者的步骤解释(黄金样例「10→20→40 中 20 后插入 30」全套解释)并整理《需求规格说明书》附录 B 术语表 D3;统一各结构的术语与教学风格;设计闯关关卡的知识点分布、题干与错题解析,保证积分规则对用户公开可解释;规划树遍历、BST、BFS/DFS 等进阶算法模块【12%】
【林俊杰】102400119【成员7·QA/测试】主责 D6、D7;协作 D1、D2、D3、D5。制作并维护《界面原型设计评审表》《需求分析评审表》腾讯共享文档 D6 / D7;撰写《需求规格说明书》第 5.3 界面验收标准与第 5.4 功能验收标准 D3;制定测试计划与用例库(正常流程 / 边界 / 异常输入 / 连续操作),建立 7 条接口测试矩阵并维护黄金测试案例;依据验收标准执行原型走查、记录并跟踪缺陷 D2;新增登录 / 会话失效 / 权限越界 / 重复提交刷分 / 积分回滚专项用例;组织答辩彩排走查 D5【13%】
【姚浩然】102400131【成员8·工程化/部署/全栈支援】协作 D1、D2、D3、D4、D5。将界面原型部署为在线可访问链接并保证答辩演示环境稳定、准备录屏兜底 D2 / D5;撰写《需求规格说明书》第 2.3 运行环境与第 3.3 外部接口需求 D3;统一开发环境、依赖版本与启动命令,配置基础 CI(构建 + 基础测试 + 必要检查),维护 README 与部署文档;新增账号与进度 API、积分 API 与数据持久化(密码加盐哈希、会话管理、积分幂等结算),保证未登录访客模式可完整使用核心功能【13%】
合计100%

4.3 团队绩效考核制度

为保证"计划不只是写在纸上",我们在开发开始前就公开考核规则(评分规则、证据来源、计算方式全部前置公开,组长同样被考核):

五项指标与权重

指标权重考察内容
T 任务完成度30%按时、达标、无故延期情况
Q 工作质量25%正确性、规范性、Bug 与可维护性
W 实际工作量20%任务点、复杂度、责任与额外工作
C 团队协作15%Code Review、补位、沟通、问题解决
P 参与纪律10%会议、响应、进度反馈、制度执行

计算公式:S = 0.30T + 0.25Q + 0.20W + 0.15C + 0.10P,最终个人绩效封顶 100 分。

执行流程(每个迭代结束填写一次)

① 任务分配 → ② 过程留痕 → ③ 阶段评分 → ④ 贡献归一 → ⑤ 异议复核
   负责人/      代码/文档/     五项指标      绩效分 →      凭证据复核,
   截止时间/    测试/会议      分别 0–100    成员贡献比例   组长同规则
   验收标准

不同角色使用同一权重,但证据形式不同(避免"用同一把尺子量不同岗位"):

角色任务完成证据示例质量证据示例协作证据示例
成员1任务拆分、公共模块、集成版本接口稳定、版本可运行解决跨模块阻塞、Review
成员2原型、页面、交互流程可用性问题减少、状态完整与前端 / 教学内容联调
成员3动画组件、布局、视觉状态动画稳定、组件复用配合播放器 / 算法联调
成员4播放器、状态管理、控制组件状态一致、边界操作可靠与成员1 / 3 联调
成员5算法与 Step算法 / 边界测试通过维护公共 Step 语义
成员6代码同步、解释、进阶算法同步准确、解释正确配合产品 / 测试优化理解
成员7用例、Bug、测试报告缺陷复现清晰、回归完整推动问题闭环
成员8CI、部署、环境、API构建稳定、版本可复现为各模块提供工程支持

核心原则

  • 不以代码行数或 Commit 数量直接等同于贡献;
  • 任务按 1 / 2 / 3 / 4 / 5 Point 计量,实际难度明显偏差时经团队讨论可调整;
  • 加减分必须说明理由 + 提供对应证据;
  • 建议每个成员每轮迭代的任务点保持在同一数量级(例如 8~12 点),但不强求完全相等——真正需要比较的是"任务难度 × 完成质量 × 协作贡献";
  • 主要证据来源:任务看板 / 验收记录、Git / PR / Code Review、测试记录 / 文档 / 设计稿、会议纪要 / 阶段汇报。

五、成员协作方式

8 人团队最大的风险不是技术,而是信息不对称。我们的协作机制围绕"让信息自动流动、让接口先于代码确定"设计。

5.1 端到端开发链路与四条主线

谁接谁的活——这不是 8 个人各做各的模块然后拼起来,而是一条有明确上下游的生产线:

成员2 定义用户操作
   ↓
成员5 产生算法 Step
   ↓
成员1 统一并调度 Step
   ↓
成员3 播放动画
   ↓
成员6 同步代码与解释
   ↓
成员4 提供播放控制
   ↓
成员7 执行接口与 E2E 测试
   ↓
成员8 构建并部署

每一环的"完成"标准都是下一环能够正确调用,而不是"我这个文件写完了"。

5.2 沟通工具矩阵

场景工具规则
日常即时沟通QQ 群(主) / 微信群(备)消息 2 小时内响应;@全体 由组长发起,仅用于需要全员知悉的事项
每周例会 / 评审会腾讯会议每周日 21:00 固定例会 30–45 分钟;评审会按需召开,必须留会议纪要
每日进度同步QQ 群打卡每人每天三句话:昨天做了什么 / 今天做什么 / 卡在哪里
文档在线协作腾讯文档说明书、评审表、会议纪要均在腾讯文档协同编辑,保留修订记录
任务看板腾讯文档表格四态看板:待办 / 进行中 / 待验收 / 已完成
接口约定接口文档 + Issue接口先于实现确定,并以文档为唯一依据
代码与 IssueGit 仓库 Issues + PR 评论技术讨论尽量落在 Issue / PR 里,形成可追溯的决策记录
对外发布CSDN 社区团队博客、阶段性成果对外发布

这周已经召开组会进行需求分析以及原型的确立

img

img

img

5.3 版本仓库协作规范

仓库划分:代码主仓库(Gitee / GitHub 私有仓库)+ 作业交付仓库(华为云仓库,存放 Word / PDF / PPT)。

分支模型

分支用途规则
master可交付 / 冻结版本禁止直接 push,只接受来自集成分支的 PR,每次里程碑打 tag
develop集成分支每日合并,保持可运行
feature/<模块>-<简述>功能开发从 develop 切出,如 feature/linkedlist-insert-anim
fix/<问题简述>缺陷修复从 develop 或对应 feature 切出
docs/<文档名>文档变更说明书、PPT 源文件、博客草稿

代码合并与测试流程(九步,每步都要留证据)

步骤阶段关键要求证据
1领取任务明确功能、输入输出、任务点、验收标准任务卡
2独立分支开发feature/xxx 或 fix/xxx,不直接改稳定分支分支 / Commit
3开发者自测单元 / 组件测试 + 黄金输入自测记录
4接口联调与直接上游 / 下游验证调用关系联调结果
5Pull Request说明改了什么、怎么测、影响哪些接口PR
6Code Review至少一名相关成员评审;公共模块成员1参与Review 记录
7合入 develop通过后进入集成分支,不直接进入 release集成版本
8集成 / 回归测试成员7跑接口矩阵与黄金案例测试结果
9版本冻结与发布只修 Bug,不新增功能;成员8部署Release

Commit 规范:采用 Conventional Commits,格式 type(scope): 描述,type 取值 feat / fix / docs / style / refactor / test / chore。
示例:feat(linkedlist): 支持插入步骤的 Step 生成

Commit 归属:要求 user.name 使用真实姓名、user.email 使用团队统一邮箱,确保贡献可追溯、可用于绩效评分。

5.4 接口与集成测试责任矩阵

模块单独能跑不等于连起来能跑。我们把 11 条关键连接、提供方、消费方、测试方和"必须验证什么"全部写死在矩阵里(新增账号与积分后,从原来的 7 条扩展到 11 条):

连接提供方消费方测试 / 验收必须验证
UI → Algorithm2 / 457输入参数能否正确进入算法;非法输入是否被拦截
Algorithm → Step517Step 字段、顺序、目标对象与最终状态是否正确
Step → Animation137Create / Connect / Highlight 等动作能否正确播放
Step → Code Sync1 / 567codeLine 与 explanation 是否和当前 Step 一致
Player → Step Controller417前进、后退、暂停、重播是否改变正确状态
Step → UI State1 / 427运行中 / 错误 / 完成状态是否正确呈现
Build → Deploy全体提交87 / 1代码合并后是否可构建、可访问、可回滚
Login → Session81 / 47登录态是否正确建立、超时失效与登出后是否真正失效;未登录访客模式是否仍可完整使用 L1
Session → Progress81 / 27学习进度写入与读取是否一致;换设备登录后进度是否恢复
Session → Score85 / 67积分是否由服务端判定、是否幂等(重复提交不重复加分);越权提交他人分数是否被拒绝
Score → UI State8 / 427未登录 / 已登录 / 积分变化 / 关卡解锁状态是否正确呈现

推荐的集成顺序(把"最后一刻大爆炸集成"拆成可验证的小步):

  1. 成员5先完成算法模块自测,能独立输出正确 Step;
  2. 成员1用固定 Step 测 Step Controller,不依赖动画;
  3. 成员3用 Mock Step 测动画,不等待算法全部完成;
  4. 成员6用固定 Step 测代码高亮与解释;
  5. 成员4接入 Step Controller,验证播放、暂停、回退和重播;
  6. 成员7按接口矩阵逐条做两两集成测试;
  7. 全部通过后再做"链表插入"完整 E2E;
  8. 黄金样例稳定后,再扩展其他数据结构。

完成的定义(Definition of Done)

一个成员说"我写完了"还不够。至少应满足:本模块自测通过 → 接口数据符合约定 → 与直接下游联调通过 → PR 完成评审 → 集成分支测试通过 → 关键用例回归无新增严重问题。

5.5 冲突处理机制

冲突类型处理机制
代码冲突(Git merge conflict)遵循"谁后提交谁负责 rebase"原则;冲突涉及他人模块时,先拉当事人语音沟通,30 分钟内未解决立即升级到群里同步,由模块负责人裁决;禁止用"覆盖对方代码"的方式解决冲突
接口冲突(上下游定义不一致)以接口文档为唯一依据;需要变更时先改接口文档、再改代码,并在 PR 中同步引用;不允许一方私自改字段
文档冲突(多人改同一份)统一在腾讯文档在线协作,不使用"各自本地 Word 互相传"的方式;文档设唯一负责人,其他人以批注 / 修订模式提意见;重要版本导出 PDF 并以 vX.Y_日期 命名归档
意见冲突(方案分歧)三步收敛:① 用证据说话——原型 / 数据 / 竞品截图优先于主观感觉;② 讨论两轮仍不收敛,由组长拍板并记录决策理由与反对意见;③ 已决策事项先执行,允许在下一个迭代复盘时重新提出
进度冲突(任务撞车 / 无人认领)周一例会上统一认领;出现无人认领的任务,由组长指定;出现撞车,按"谁更熟悉谁做、另一人转做相邻任务"处理
职责冲突(模块边界模糊)回到职责文档的"协作接口"与"职责边界"两节判定;文档未覆盖的情况由成员1裁定并补充进文档

5.6 任务同步机制

(1)任务看板四态流转

待办 (Backlog) ──认领──▶ 进行中 (Doing) ──提交──▶ 待验收 (Review) ──验收通过──▶ 已完成 (Done)
     ▲                                                      │
     └──────────────── 验收不通过,打回并注明原因 ◀──────────┘

每个任务卡必须包含:任务名 / 负责人 / 截止时间 / 验收标准 / 任务点(1–5 Point) / 关联 PR 或文档链接。

(2)一周迭代节奏

时间团队动作成员1重点成员7 / 8 重点
周一确定 Sprint Goal、任务与验收标准拆任务、确认依赖、分配任务点提前准备测试与环境
周二 ~ 周三并行开发 + 小范围联调检查接口是否一致、提前合并小 PR接口一完成就开始测试
周四主链路集成组织 Algorithm→Step→Animation→UI 联调建立 Bug 清单、修 CI / 环境
周五功能验收 + 回归判断是否达到 Sprint Goal完整测试、给出质量结论
周末15 ~ 30 分钟复盘记录完成 / 延期 / 风险并调整下周整理测试与发布记录

(3)三级同步节奏

频率形式内容
每日群内三句话打卡昨天 / 今天 / 卡点
每周日 21:00腾讯会议例会(30–45 min)看板过一遍、本周完成率、下周计划、风险预警、绩效记录
每里程碑阶段评审会 + 周报归档交付物走查、DoD 核对、下一阶段排期、复盘沉淀

(4)信息单一来源(Single Source of Truth)

为避免"群里说过但文档没改",我们约定唯一来源:

信息类型唯一来源
需求与功能定义《软件需求规格说明书》
职责与协作接口《8 人职责分工与协作说明》
接口定义(Step Schema 等)接口文档(冻结版)
任务与进度任务看板
决策与理由会议纪要
设计与视觉规范原型设计规范文档

其余渠道(群聊、口头)只作为提醒,不作为依据。

5.7 质量保障机制

(1)测试层次递进

单元测试 → 接口测试 → 两两集成 → 完整链路 → E2E → 回归测试

测试从第一轮迭代就开始,而不是项目最后一周才开始点页面。

(2)黄金测试案例:链表插入

全组共用同一个"黄金样例"作为验收基准——输入 10→20→40,在 20 后插入 30,最终 10→20→30→40:

检查点预期结果
初始输入10 → 20 → 40 能正确创建
操作在 20 后插入 30
算法最终结构为 10 → 20 → 30 → 40
Step查找位置 → 创建 30 → 30 连 40 → 20 连 30,顺序正确
动画节点 / 指针变化与 Step 一致,无残留或错误连线
代码同步每一步高亮正确代码行
解释每一步说明与当前动作一致
播放器暂停、下一步、上一步、重播均正确
异常操作快速点击、回退后再播放不会破坏状态

(3)其他质量手段

  • Code Review Checklist:命名规范、边界处理、无调试残留、注释与解释文案是否"说人话";
  • 文档走查:说明书由非撰写者交叉走查,重点检查术语一致性、图表编号、目录与正文是否对应;
  • 原型走查:由成员7按验收标准逐条打勾,缺陷记录到看板并跟踪到关闭;
  • 答辩彩排:至少 2 次计时彩排,全组到场提意见,确保 8 分钟节奏可控;
  • 演示兜底:答辩版本提前冻结并部署为稳定 Release,同时准备录屏备用方案,不依赖某一台开发电脑临时运行。

5.8 团队执行检查清单

每轮迭代开始与结束时各过一遍(本清单是可复用的过程自检模板,随迭代长期使用):

  • ✅ 本轮 Sprint Goal 是否只有一个清晰的主目标?
  • ✅ 每个任务是否有负责人、截止时间、任务点和验收标准?
  • ✅ 上游输出与下游输入是否已有接口约定?
  • ✅ 每个开发成员是否完成自测,而不是把测试全部交给成员7?
  • ✅ 关键功能是否先完成两两联调,再进入完整 E2E?
  • ✅ 黄金测试案例是否仍然通过?
  • ✅ PR 是否经过相关成员 Review?
  • ✅ 严重 Bug 是否有复现、修复和回归记录?
  • ✅ 答辩版本是否已经冻结并部署为稳定 Release?
  • ✅ 本轮绩效是否有实际成果和记录支撑?

六、软件需求规格说明书

《数据结构可视化学习平台 软件需求规格说明书》v1.0

项目内容
仓库链接(华为云)华为云仓库链接
PDF 版(推荐阅读).pdf 文件链接
版本v1.0(2026-10-15)
编制依据GB/T 9385-2008《计算机软件需求规格说明规范》

6.1 文档结构(对应国标规范)

目录
1  引言
   1.1 编写目的
   1.2 项目背景
   1.3 定义与缩写
   1.4 参考资料
2  总体描述
   2.1 目标(开发意图 / 应用目标和作用范围 / 产品前景)
   2.2 用户场景(用户画像 / 典型场景 / 用户故事)
   2.3 运行环境
   2.4 设计与实现约束
3  具体要求
   3.1 类图(领域模型)
   3.2 属性(可用性 / 安全性 / 性能 / 可靠性)
   3.3 外部接口需求
4  界面原型
   4.1 页面清单
   4.2 核心界面说明
   4.3 交互规范与视觉规范
5  功能描述及验收验证标准
   5.1 具体功能描述
   5.2 输入输出格式
   5.3 界面验收标准
   5.4 功能验收标准
附录 A 用户访谈纪要
附录 B 术语表
附录 C 需求追踪矩阵

6.2 关键内容摘要

(1)引言(2')
编写目的、项目背景(软件名称:数据结构可视化学习平台;项目任务提出者:软件工程实践课程组;项目开发者:NULL 队)、缩写定义(所有缩写均在第 1.3 节事先定义,如 MVP、DoD、PoC、Step Engine、Adapter 等)。

(2)用户场景(8')
沿用选题阶段的四类用户,并细化为可验证的场景:

用户需求典型场景
数据结构课程初学者看懂动态过程课后复习"链表插入",用单步动画逐步看完指针怎么改
需要快速复习的计算机专业学生快速回顾核心操作考前 30 分钟过一遍栈 / 队列的核心操作,并做 2 个关卡自测
课堂演示的教师 / 助教稳定可投屏的演示工具课堂上投屏演示 BST 插入,边讲边暂停
算法与编程自学者可试错的实验台输入自己的数据,试试空结构删除会发生什么
希望有反馈与坚持动力的学习者(新增能力对应)知道自己掌握了没有登录后闯关,答错看解析,积分与成就记录进度

(3)类图(8')
第 3.1 节给出完整领域类图(见 7.3 节 的概览),核心类包括:UserAccount(账号)、VisualizationSession、抽象类 DataStructure 及其子类 Array / LinkedList / Stack / Queue / Tree / Graph、Operation、StepSnapshot、CodeSnippet、Explanation、DataSet、LearningRecord,以及新增能力对应的 Challenge(关卡)、ScoreRecord(积分记录)。

(4)界面原型(8')
第 4 章给出 9 个页面的界面说明与交互规范,详见 第七章。

(5)功能描述(3')
第 5.1 节按"结构选择 → 数据输入 → 操作选择 → 单步播放 → 回放与分享"的主流程逐项描述功能,并用 MoSCoW 标注优先级。

(6)验收验证标准(3')
第 5.3 / 5.4 节分别给出界面验收标准(逐页面的元素、位置、状态)与功能验收标准(逐条可判定、可勾选),示例:

编号验收项验收方法通过标准
F-01选择数据结构点击首页任一种结构卡片进入学习主界面,画布加载该结构默认数据
F-02自定义数据输入输入 5 个整数并提交画布渲染 5 个节点,节点值与输入顺序一致
F-03单步执行点击"单步"代码区高亮下一行,画布与解释面板同步更新,步骤计数 +1
F-04回退点击"回退"回到上一步快照,三者状态与上一步完全一致
F-05非法操作提示对空链表执行删除给出明确中文错误提示,程序不崩溃、不静默失败
F-06步骤解释可读性每一步查看解释面板每步均有中文解释,且不含未定义术语

七、界面原型设计

7.1 原型链接

项目内容
在线可交互原型界面原型在线链接
原型源文件 / 仓库华为云仓库
原型版本v1.0(2026-10-15)
技术形式HTML + CSS + JavaScript 高保真可交互原型,浏览器直接打开
推荐浏览器Chrome / Edge 最新版

7.2 用户场景与原型映射

场景原型路径
课前预习结构与基本操作首页 → 选择结构 → 知识卡 → 播放单步动画
课中教师投屏演示过程学习主界面 → 暂停 / 单步 / 调速 → 投屏演示
课后复习与自定义实验学习主界面 → 数据输入面板 → 自定义数据 → 执行操作
考前快速回顾核心操作首页 → 结构详情 → 操作速查 → 播放关键步骤
登录后闯关自测(新增)登录 → 闯关模式 → 选择关卡 → 答题 / 操作 → 即时判定与解析 → 获得积分与成就
查看进度与积分榜(新增)登录 → 我的实验台 → 学习记录 / 积分明细 / 排行榜
不登录先试用(访客模式)首页 → 访客模式 → 完整使用 L1 学习闭环 → 提示登录以保存进度

7.3 领域类图概览

新增账号与闯关积分后,领域模型增加 UserAccount、Challenge、ScoreRecord 三个类,以及 VisualizationSession 与它们之间的归属关系(下图中以「新增」标注)。

classDiagram
    class UserAccount {
        +String accountId
        +String nickname
        +String passwordHash
        +Date createdAt
        +register()
        +login()
        +logout()
        +isGuest()
    }
    class VisualizationSession {
        +String sessionId
        +Date startTime
        +int currentStepIndex
        +play()
        +pause()
        +stepForward()
        +stepBackward()
        +setSpeed()
    }
    class DataStructure {
        <<abstract>>
        +String name
        +int size
        +insert(value)
        +remove(value)
        +traverse()
    }
    class Array
    class LinkedList
    class Stack
    class Queue
    class Tree
    class Graph
    class Operation {
        +String opType
        +Object params
        +validate()
    }
    class StepSnapshot {
        +int stepIndex
        +int codeLineNo
        +Object structureState
        +List highlightedNodes
        +String explanation
    }
    class CodeSnippet {
        +String language
        +List lines
    }
    class Explanation {
        +String text
        +String termRef
    }
    class DataSet {
        +String sourceType
        +List values
    }
    class LearningRecord {
        +String recordId
        +Date timestamp
        +int stepCount
    }
    class Challenge {
        +String challengeId
        +String title
        +String structureRef
        +int difficulty
        +int pointValue
        +checkAnswer()
    }
    class ScoreRecord {
        +String recordId
        +String accountId
        +String challengeId
        +int points
        +Date submittedAt
        +boolean isFirstClear
    }

    UserAccount "1" --> "*" VisualizationSession : 创建 / 控制
    UserAccount "1" --> "*" LearningRecord : 产生
    UserAccount "1" --> "*" ScoreRecord : 获得
    VisualizationSession "1" --> "1" DataStructure : 操作对象
    VisualizationSession "1" --> "1" CodeSnippet : 代码高亮
    VisualizationSession "1" --> "*" StepSnapshot : 快照序列
    DataStructure <|-- Array
    DataStructure <|-- LinkedList
    DataStructure <|-- Stack
    DataStructure <|-- Queue
    DataStructure <|-- Tree
    DataStructure <|-- Graph
    Operation "1" --> "*" StepSnapshot : 生成
    StepSnapshot "1" --> "1" Explanation : 绑定解释
    DataSet "1" --> "1" DataStructure : 初始化
    Challenge "1" --> "1" DataStructure : 考察
    Challenge "1" --> "*" ScoreRecord : 结算

设计要点:VisualizationSession 与 StepSnapshot 是本项目的核心抽象——**把"过程"变成"可索引的数据"**,这正是难点 1 的解决方案在模型层的体现。

新增账号与闯关积分后的模型变化:User 细化为 UserAccount(承载注册 / 登录 / 会话,并支持访客模式 isGuest());新增 Challenge(关卡:考察哪个结构、难度、分值、判定方法)与 ScoreRecord(积分记录:保留 isFirstClear 字段用于幂等结算,重复通关不重复加分)。VisualizationSession 与 LearningRecord、ScoreRecord 都归属到 UserAccount,使进度与积分可跨设备恢复。

类职责说明(与上图一一对应,便于不便查看图形的读者阅读)

类名类型关键属性关键方法职责
UserAccount实体accountId、nickname、passwordHash、createdAtregister()、login()、logout()、isGuest()账号:注册 / 登录 / 登出与会话;支持不登录的访客模式;密码只存加盐哈希
VisualizationSession控制sessionId、startTime、currentStepIndexplay()、pause()、stepForward()、stepBackward()、setSpeed()一次可视化会话,持有当前步骤下标,是所有播放控制的入口
DataStructure抽象实体name、sizeinsert()、remove()、traverse()所有数据结构的统一抽象,屏蔽具体结构差异
Array / LinkedList / Stack / Queue / Tree / Graph实体各自结构属性重写 insert / remove / traverse具体数据结构实现,对应 MVP / V1 / V2 三阶段
Operation实体opType、paramsvalidate()一次用户操作请求,负责参数校验与非法操作拦截
StepSnapshot实体stepIndex、codeLineNo、structureState、highlightedNodes、explanation—不可变步骤快照,同时承载代码行号、结构状态、高亮集合与解释文案
CodeSnippet实体language、lines—待演示的算法代码,供代码区高亮使用
Explanation实体text、termRef—每一步的中文解释文案及其术语引用
DataSet实体sourceType、values—用户输入 / 随机生成 / 导入的数据集,用于初始化结构
LearningRecord实体recordId、timestamp、stepCount—学习记录,用于"我的实验台"回放与进度追踪
Challenge实体challengeId、title、structureRef、difficulty、pointValuecheckAnswer()关卡:考察指定数据结构的一个知识点,携带难度、分值与判定方法
ScoreRecord实体recordId、accountId、challengeId、points、submittedAt、isFirstClear—积分记录:一次结算的凭证;isFirstClear 用于幂等去重,保证重复提交不重复加分

若渲染环境不支持 mermaid,上表即为类图的可读替代。

与团队接口术语的对应关系(与《8 人职责分工与协作说明》保持一致)

设计模型(本图)团队接口术语负责成员
DataStructure 及其子类 + OperationAlgorithm Engine成员5(成员6 承担树 / 图等进阶模块)
StepSnapshot 的属性集合Step Schema(统一 Step 数据结构)成员1 统一维护,成员5 生成
VisualizationSessionStep Controller(公共状态与控制层)成员1 设计,成员4 调用
StepSnapshot → 画布渲染Step → Animation成员3
StepSnapshot → CodeSnippet / ExplanationStep → Code Sync成员6
播放控制部分Player → Step Controller成员4
LearningRecord / DataSetUI State 与输入层成员2
UserAccount账号 API / Session成员8(成员4 消费登录态)
Challenge / ScoreRecord闯关与积分 API(服务端判定、幂等结算)成员8(成员5 提供判定逻辑,成员6 提供关卡与解析)

7.4 页面清单(9 个页面)

编号页面核心内容
P1首页 / 结构选择Logo 与品牌标语、结构卡片(数组 / 链表 / 栈 / 队列 / 树 / 图)、学习进度入口、帮助入口、登录 / 访客模式入口
P2学习主界面(核心页)三栏布局:左侧代码区(当前行高亮)+ 中间画布区(节点 / 指针 / 边 / 下标)+ 右侧解释区(当前步骤说明);底部控制条(播放 / 暂停 / 单步 / 回退 / 调速 / 步骤进度条)
P3数据输入面板手动输入、随机生成、批量粘贴、导入数据集;输入校验提示
P4操作面板插入 / 删除 / 查找 / 遍历;参数输入;操作前预演提示;非法操作错误提示
P5结构详情与知识卡结构定义、复杂度、核心要点、常见错误、与课程章节对应关系、该结构关联的关卡入口
P6我的实验台历史记录、步骤回放、收藏的示例、分享链接;积分明细、成就徽章、关卡通过记录(需登录)
P7帮助与术语表使用说明、快捷键、术语表(与说明书第 1.3 节定义保持一致)
P8登录 / 注册页(新增)账号密码登录、注册、访客模式入口、错误提示(账号不存在 / 密码错误 / 重复注册)、隐私与数据说明
P9闯关模式与积分榜(新增)关卡地图与解锁状态、题面与答题区、即时判定与错题解析、本次得分与总分、成就徽章、排行榜(需登录)

7.5 核心界面 P2 的布局与交互说明

┌───────────────────────────────────────────────────────────────────────┐
│ NULL Visual Lab   链表 · INSERT          步骤 4 / 4      [术语] [帮助] │
├────────────────────┬──────────────────────────────┬───────────────────┤
│ 代码区              │ 画布区                        │ 解释区             │
│                    │                              │                   │
│ 1  p = head        │   (A)──▶(B)──▶(C)            │ 步骤 4 / 4        │
│ 2  while p.next:   │          ▲                   │                   │
│ 3    p = p.next    │          │ p                │ 修改指针,让新节点  │
│ 4  p.next = new  ◀ │   (N)────┘                   │ 接入链表。         │
│                    │                              │                   │
│                    │  节点 / 指针 / 边 / 下标可视化  │ 当前代码行:4      │
├────────────────────┴──────────────────────────────┴───────────────────┤
│ ▶/⏸  ⏮ 单步  回退  速度[──●──]  ●━━━━━━━━━━━━━━━━━━━━  步骤进度条      │
└───────────────────────────────────────────────────────────────────────┘

关键交互规则

  1. 三联动:代码高亮行、画布动画、解释文案由同一个 stepIndex 驱动,任意时刻三者必然一致;
  2. 可控:播放 / 暂停 / 单步 / 回退 / 调速 / 拖拽进度条,任意步骤可来回跳转;
  3. 可实验:用户可随时打开 P3 替换数据、打开 P4 换一个操作;
  4. 可解释:每一步都有中文解释,且解释中的术语均可在 P7 术语表中查到;
  5. 不静默失败:任何非法输入或非法操作,均在界面上给出明确中文提示;
  6. 登录不挡路(新增):未登录(访客模式)也能完整使用 L1 学习闭环,只在"保存进度 / 闯关积分 / 排行榜"处提示登录,不做强制登录墙;
  7. 积分可解释(新增):每一笔积分的来源(哪个关卡、首次通过还是重复练习)都可在"我的实验台"查到明细,不出现黑盒加分。

7.6 新增页面 P8 / P9 的界面说明

┌───────────────────────────── P8 登录 / 注册 ─────────────────────────────┐
│  NULL Visual Lab                                                          │
│  ┌───────────────────────────────────┐  账号  [________________]          │
│  │  登录   │  注册                   │  密码  [________________]          │
│  │                                   │  [ 登  录 ]                        │
│  │  登录后可保存学习进度、参与闯关积分 │  ───────────────                   │
│  │  排行榜;也可以直接访客模式试用     │  [ 以访客身份继续 → ]              │
│  └───────────────────────────────────┘  ⚠ 账号或密码错误                  │
└───────────────────────────────────────────────────────────────────────────┘

┌──────────────────────── P9 闯关模式与积分榜 ──────────────────────────────┐
│ NULL Visual Lab   闯关模式          总积分 320   [我的实验台] [退出登录]   │
├──────────────────────────────┬────────────────────────────────────────────┤
│ 关卡地图                      │ 关卡 3 · 链表插入(难度 ★★☆ · 20 分)      │
│  ✅ 关卡1 数组基础      10分  │ ──────────────────────────────────────────  │
│  ✅ 关卡2 栈与队列      10分  │ 题目:在 10→20→40 的 20 之后插入 30,       │
│  ▶ 关卡3 链表插入      20分  │       第 3 步应该修改哪个指针?             │
│  🔒 关卡4 链表删除      20分  │   ○ p = head                                │
│  🔒 关卡5 树遍历        30分  │   ● p.next = new                            │
│  🔒 关卡6 BST 插入      30分  │   ○ new.next = p                            │
│                              │ ──────────────────────────────────────────  │
│ 成就徽章                      │ [ 提 交 ]   ✅ 正确!+20 分(首次通过)      │
│  🏅 初次通关  🏅 连对5题      │ 解析:新节点接入链表需要修改前驱的 next……   │
└──────────────────────────────┴────────────────────────────────────────────┘

P9 的关键设计点

  • 关卡与知识点绑定:每个关卡通过 Challenge.structureRef 绑定到一个数据结构与一个知识点,答错直接跳到对应的可视化页面(P2)回看那一步;
  • 判定在服务端:前端只提交作答,分数由服务端依据成员5 提供的判定逻辑计算,ScoreRecord.isFirstClear 保证重复提交不重复加分;
  • 积分可解释:得分明细逐条可查,重复练习不重复给分但记录练习次数;
  • 解锁而非阻断:未解锁的关卡显示 🔒 与解锁条件,不做付费 / 强制分享等阻断式设计。

八、需求分析 PPT 链接

《数据结构可视化学习平台 需求分析报告》PPT

项目内容
仓库链接(华为云)华为云仓库链接
PDF 版(推荐).pdf 文件链接

内容大纲

01 封面
02 项目背景与开发目的、意义
03 用户调研与用户场景(用户画像 / 访谈结论 / 用户故事)
04 领域类图与领域模型讲解
05 界面原型讲解(9 个页面清单 + 核心页逐个说明)
06 新增能力专章:账号与学习进度、闯关积分体系(积分规则与幂等结算)
07 功能描述与优先级(MoSCoW)
08 验收验证标准
09 团队计划落实情况、分工与工作量比例
10 风险与后续计划(含新增范围带来的范围与安全风险)
11 致谢 / Q&A

九、界面原型设计答辩 PPT 链接

《数据结构可视化学习平台 界面原型设计答辩》PPT

项目内容
仓库链接(华为云)华为云仓库链接
PDF 版(推荐).pdf 文件链接

内容大纲

01 封面:NULL · 数据结构可视化学习平台 · 界面原型设计答辩
02 为什么值得做:传统学习路径的断链点(抽象 / 动态 / 脱节)
03 我们做什么:把「脑内模拟」搬到屏幕上(看得见 / 跟得上 / 点得动 / 控得住)
04 界面原型总览:9 个页面与信息架构
05 核心页精讲:学习主界面 P2 的三栏布局与三联动机制
06 交互演示:现场操作——自定义数据 → 单步 → 回退 → 改参数重跑
07 关键设计决策:为什么用 StepSnapshot 驱动而不是动画回调
08 新增能力演示:登录 / 访客模式 → 闯关答题 → 即时判定与解析 → 积分与成就
09 用户场景演示:课前 / 课中 / 课后 / 考前
10 计划落实与分工:里程碑完成情况、组员分工与工作量比例
11 风险与下一步:待验证问题与迭代计划(含 M4a / M6a 两条新增能力时间盒)
12 致谢 / Q&A

十、团队互评与评审表

本次作业的两份评审表——《界面原型设计评审表》与《需求分析评审表》——按课程要求直接在腾讯共享文档中填写与互评,由助教统一汇总,因此不在本博客中另附链接。

评审表内容包括:小组名称、项目名称、评审的内容、评审建议;各小组的名称和排名;以及自定义表格。

我们的使用方式:答辩当天由成员7 现场记录各组反馈,当晚汇总进共享文档,并把可执行的建议转成 Backlog 条目,进入下一轮迭代评估。


十一、小结与下一步

本次作业我们完成了什么

  1. 计划:把选题一句话,拆成了 M0–M8 共 9 个里程碑 + M4a / M6a 两条新增能力时间盒,每个都有日期、交付物与通过标准,并倒排出本次作业的 7 天周计划;
  2. 范围:明确"内容维度(MVP / V1 / V2)+ 能力维度(L1 学习闭环 / L2 账号与进度 / L3 闯关积分 / L4 轻后端)"的双维度边界,并为新增的登录与闯关积分写清了取舍与降级顺序;
  3. 风险:识别出 6 个技术难点与 11 条项目风险,其中"需求蔓延""动画与代码同步""需求理解偏差""新增功能拖累核心功能""账号安全与积分公平性"五条列为高等级并配了具体预案;
  4. 分工:明确 8 人「主责 + 副责」角色与职责边界,把新增的账号 / 积分工作明确分配到成员2、4、5、6、7、8,给出本次作业分工与贡献度表,并公开了绩效考核公式与证据来源;
  5. 协作:建立了"端到端开发链路 + 四条协作主线 + 沟通工具矩阵 + 分支模型与九步合并流程 + 11 条接口与集成测试责任矩阵 + DoD + 冲突处理机制 + 一周迭代节奏 + 信息单一来源"的完整协作机制;
  6. 交付:《软件需求规格说明书》、界面原型(9 个页面)、需求分析 PPT、原型答辩 PPT 已全部产出并归档。

下一步(M2 → M3)

  • 10/16 答辩后 48 小时内完成评审意见汇总,闭环后冻结需求基线 v1.1(含 L2 / L3 的范围基线);
  • 启动 M3 架构设计与技术验证,重点是先用"链表插入"垂直切片跑通三联动,验证通过后再横向复制到其他结构;
  • 严格执行范围边界:MVP 只做 4 个线性结构,L1 学习闭环是不可裁剪项,其余进 Backlog;
  • M4a 与 M4 同期启动时,先确认访客模式可用——保证新增账号体系不会挡住核心学习流程。

我们从一个空指针出发——NULL 不是"空",而是一切结构建立之前的起点。
We start from NULL, but we won't end at NULL.


...全文

相关推荐

软件工程需求分析作业.docx

《软件工程需求分析——以学生信息管理系统为例》在软件工程领域,需求分析是至关重要的第一步,它为后续的设计、编码、测试等阶段奠定了基础。

iKendall

软件工程中Git的工作流实践

Git作为当今最流行的分布式版本控制系统,其工作流实践直接影响软件开发团队的效率和代码质量。本文旨在系统性地介绍Git工作流的核心概念、主流实践模式及其在软件工程中的应用场景,帮助开发团队建立高效、规范的版本控制流程。本文首先介绍Git工作流的基本概念,然后深入分析几种主流工作流模型,接着通过实际案例展示Git工作流的应用,最后讨论相关工具和未来发展趋势。Git: 分布式版本控制系统,由Linus Torvalds创建工作流(Workflow): 团队使用Git进行协作的标准流程和方法。

AI软件工程实践

3软件工程大作业.doc

"该文档是关于软件工程的一份大作业,涵盖了从系统概述到系统测试的完整开发流程。作业详细介绍了网上商城系统的开发背景、目的、可行性分析、需求分析、系统设计、系统实现和测试等内容。该系统包括前台用户部分

是空空呀

软件工程大作业-日记管理系统

《软件工程大作业——日记管理系统》在软件工程的学习中,大作业是实践技能和理论知识结合的重要环节。

Asadsong

软件工程项目需求分析说明书(模板)

在软件工程项目中,软件工程项目需求分析说明书可以帮助项目团队成员和项目stakeholders之间达成共识,确保项目的正确实施。

悠闲饭团
评论 1
收藏 已收藏
分享
返回顶部