软件需求规格说明书
1. 文档概述
1.1 文档信息
- 文档名称:AUBB(Academic Unified Builder Bench)软件需求规格说明书
- 版本:v4.3
- 状态:需求基线稿
- 更新日期:2026-04-14
- 适用对象:产品、研发、测试、实施、运维、评审人员
- 适用范围:平台 V1 版本及首轮交付验收
| 版本 | 日期 | 修订说明 |
|---|---|---|
| v1.0 | — | 初稿,覆盖核心功能清单 |
| v2.0 | — | 补充角色、非功能需求和数据对象 |
| v3.0 | 2026-04-08 | 增加详细用例、验收标准、业务规则、数据字典和追踪矩阵 |
| v4.0 | 2026-04-13 | 按 SRS 标准边界重构文档,收敛实现细节,重组为范围、功能、接口、数据、质量属性、约束、验证与追踪的正式基线 |
| v4.1 | 2026-04-13 | 新增“在线 IDE 编辑 / 运行 / 提交”需求边界,补充工作区与运行会话数据对象 |
| v4.2 | 2026-04-14 | 明确平台正式名称为 AUBB(Academic Unified Builder Bench),同步更新文档口径 |
| v4.3 | 2026-04-14 | 将平台治理需求调整为 JWT、四层组织、分层管理员与即时生效配置 |
1.2 编写目的
本说明书用于定义 AUBB(Academic Unified Builder Bench)V1 的业务目标、范围边界、功能需求、外部接口需求、数据需求、非功能需求和验收依据。本文档回答的是“系统必须做什么、做到什么程度、如何验证”,而不是“系统内部如何设计或实现”。
本文档是下列工作的共同输入:
- 概要设计与详细设计
- 开发任务拆分与联调范围确认
- 测试方案与验收用例设计
- 交付评审、上线评审和项目答辩
1.3 文档边界
本说明书应包含:
- 产品背景、目标、范围、角色、业务场景和运行模式
- 编号化的功能需求、非功能需求、接口需求和数据需求
- 受外部约束影响的设计约束与运行前提
- 验证方法、验收基线、追踪关系和未决事项
本说明书不应包含:
- 详细 API 端点、请求报文、响应结构、错误码清单
- 数据库物理表结构、字段类型、索引、分库分表或缓存策略
- 框架、语言、中间件、消息系统、容器编排、存储产品等选型
- 页面像素级视觉设计、组件实现方案和前后端分层细节
- 部署步骤、运维 Runbook、排障手册、监控面板配置脚本
- 测试用例脚本、自动化实现、项目排期、人力分工和成本计划
上列内容如有需要,应分别进入以下文档:
- 软件开发计划书
- 软件概要设计说明书
- 软件详细设计说明书
- API 文档
- 测试策略 / 测试报告
- 部署文档 / 用户手册
1.4 需求质量准则
本文档中的需求条目应满足以下质量要求:
| 质量准则 | 说明 |
|---|---|
| 正确 | 与业务目标、用户期望和范围边界一致,不引入错误约束 |
| 完整 | 覆盖正常流程、异常流程、边界条件、输入输出和状态变化 |
| 单义 | 术语统一,避免“尽快”“适当”“友好”等无法判定的模糊表达 |
| 一致 | 不同章节之间不存在冲突的规则、状态、口径和范围 |
| 可验证 | 每条 MUST 级需求至少能对应一种验证方法 |
| 可追踪 | 需求可追踪到场景、接口、数据对象和验收活动 |
| 可修改 | 条目独立、编号稳定,便于后续增删改和版本比对 |
| 已分级 | 使用 MUST / SHOULD / COULD 区分交付优先级 |
1.5 参考资料
- ISO/IEC/IEEE 29148:2018, Systems and software engineering — Life cycle processes — Requirements engineering
- ISO/IEC/IEEE 29148:2011, Systems and software engineering — Life cycle processes — Requirements engineering
- NASA Software Engineering Handbook, Topic 5.2.1 / SWE-109, Document Software Requirements
- 《AUBB(Academic Unified Builder Bench)软件开发计划书 v2.0》
- 项目现有文档:概要设计说明书、详细设计说明书、API 总览、测试策略、部署文档
1.6 术语、缩略语与优先级
| 术语 | 含义 |
|---|---|
| AUBB | Academic Unified Builder Bench,平台正式名称 |
| 平台管理员 | 负责平台级配置、组织、用户、权限和运营治理的用户 |
| 教师 | 负责课程组织、任务发布、批改和成绩发布的用户 |
| 助教 | 在授权范围内协助批改、管理成员或处理复核的用户 |
| 学员 | 参与课程、完成任务、查看反馈和成绩的用户 |
| OJ | Online Judge,在线评测系统 |
| 沙箱 | 执行学员提交内容的隔离运行环境 |
| Rubric | 人工批改时使用的评分量规 |
| 提交 | 学员围绕任务上传的代码、文件或在线编辑结果 |
| MUST | 本版本必须满足,缺失将阻断交付 |
| SHOULD | 建议满足,缺失不阻断首发但会影响质量或效率 |
| COULD | 后续增强能力,本版本可不实现 |
2. 产品概述
2.1 产品定位与业务目标
AUBB(Academic Unified Builder Bench)是面向高校、职业培训机构和企业培训部门的一体化在线教学与实训平台。平台以浏览器为主要入口,通过统一的课程、任务、在线提交、自动评测、人工批改、成绩发布和审计治理能力,承载正式教学与训练活动,而不是一次性演示工具。
平台 V1 的业务目标如下:
- 为机构提供统一的课程组织、任务发布和成绩管理入口。
- 为教师提供标准化的教学任务配置、批改和反馈闭环。
- 为学员提供无需本地复杂配置的在线完成与反馈体验。
- 为平台管理员和运维人员提供可追踪、可治理、可审计的运营基础。
2.2 范围界定
V1 范围内:
| 编号 | 能力范围 |
|---|---|
| IN-01 | 平台初始化、品牌配置、组织与用户导入 |
| IN-02 | 课程创建、资源组织、成员管理和课程归档 |
| IN-03 | 作业、实验或文档类任务的创建、发布和关闭 |
| IN-04 | 学员加入课程、查看任务、使用在线 IDE 编辑 / 运行并提交,或进行文件提交 |
| IN-05 | 自动评测、人工批改、成绩生成、成绩发布和复核 |
| IN-06 | 学员个人学习概览、通知中心和结果查看 |
| IN-07 | 课程级与平台级运营概览、关键审计和异常留痕 |
| IN-08 | 支持私有化交付或独立部署场景下的平台级配置 |
V1 范围外:
| 编号 | 不在本期范围内的内容 |
|---|---|
| OUT-01 | 商业订阅、计费、合同、开票和财务结算系统 |
| OUT-02 | 线下专用硬件、考场终端或实验设备控制 |
| OUT-03 | 原生移动端 App 和离线客户端 |
| OUT-04 | 面向所有第三方教务系统的深度定制集成 |
| OUT-05 | 高级学术诚信分析、查重引擎和智能作弊识别 |
| OUT-06 | AI 智能问答、自动讲解、自动纠错等非主链路能力 |
2.3 用户类别与关键诉求
| 角色 | 核心目标 | 关键操作 | 优先级 |
|---|---|---|---|
| 平台管理员 | 完成平台初始化与治理 | 配置平台、维护组织、导入用户、分配角色、查看审计与平台概览 | MUST |
| 教师 | 组织教学活动并完成反馈闭环 | 建课、上传资源、发布任务、查看提交、批改、发布成绩、导出结果 | MUST |
| 助教 | 协助教师处理课程事务 | 查看提交、执行授权批改、管理成员、协助处理复核 | SHOULD |
| 学员 | 完成学习任务并获取反馈 | 加入课程、查看任务、在线提交、查看评测结果和成绩 | MUST |
| 运维/客服 | 保障平台可用并处理异常 | 查看健康状态、告警、审计记录和异常事件 | SHOULD |
2.4 运行环境
- 平台应以 Web 端为主要交互入口。
- 平台应支持按部署实例进行平台级自定义配置。
- 平台应具备应用层、数据存储层、文件存储层和评测执行层等基本运行边界。
- 编程类任务应提供浏览器内完成和隔离执行能力,不以学员本地环境为前提。
- 系统默认语言为简体中文,界面文案应支持配置。
2.5 假设、依赖与约束
假设:
- 使用机构具备常规校园网或企业内网访问能力。
- 教师能够提供课程资料、任务说明、Rubric 和评测规则。
- 学员使用受支持的现代浏览器访问平台。
依赖:
- 自动评测能力依赖可用的隔离执行环境。
- 通知扩展能力依赖邮件、短信或企业 IM 等外部通道。
- 如启用统一认证,则依赖外部身份源可用。
约束:
- 平台配置变更不得破坏既有课程、提交和成绩数据。
- 不同角色之间必须进行页面、操作和数据访问隔离。
- 单次提交文件大小上限默认 50 MB,可按平台配置调整。
- 单次评测执行时间上限默认 60 秒,可按任务配置调整。
2.6 运行状态与模式
| 运行模式 | 说明 | 系统必须满足的行为 |
|---|---|---|
| 正常运行 | 全部核心服务可用 | 允许完整教学主链路执行 |
| 降级运行 | 评测或通知等非阻断服务暂时不可用 | 课程浏览、提交受理和历史结果查询仍可继续;受影响能力需明确提示 |
| 维护状态 | 平台进行受控维护 | 阻止普通用户发起高风险写操作,仅允许经授权的维护入口 |
3. 系统上下文与业务场景
3.1 系统上下文
| 外部实体 / 子系统 | 交互目的 | 对系统提出的边界要求 |
|---|---|---|
| 浏览器客户端 | 用户访问页面、提交表单、查看结果 | 需支持受保护资源访问控制、令牌管理和错误反馈 |
| 评测执行环境 | 执行学员提交、返回评测结果 | 需支持隔离执行、状态查询和结果回传 |
| 文件存储服务 | 保存课程资料、提交文件和导出文件 | 需支持权限控制、引用管理和生命周期管理 |
| 消息通道 | 发送邮件、短信或企业 IM 通知 | 需支持异步触达和失败反馈 |
| 机构统一认证 | 提供单点登录或统一身份信息 | 需支持可选接入和失败回退方案 |
| 外部学习平台 | 同步课程、成绩或提供嵌入式接入 | 属于可选扩展,不影响核心主链路 |
3.2 核心业务主链路
| 步骤 | 参与者 | 期望结果 |
|---|---|---|
| 1 | 平台管理员 | 完成平台配置、组织建立、教师和学员账号导入 |
| 2 | 教师 | 创建课程并组织教学资源 |
| 3 | 教师 | 创建任务,配置提交规则与评分方式并发布 |
| 4 | 学员 | 加入课程,查看任务说明与截止时间 |
| 5 | 学员 | 通过在线 IDE 编辑并运行代码后正式提交,或通过文件上传完成提交 |
| 6 | 系统 | 受理提交并在需要时自动发起评测 |
| 7 | 教师 / 助教 | 查看提交、进行人工批改、生成并发布成绩 |
| 8 | 学员 | 查看评测结果、评语、成绩和个人学习概览 |
| 9 | 管理员 / 运维 | 查看运营概览、审计记录和异常事件 |
3.3 主要业务场景
| 场景编号 | 场景名称 | 主要参与者 | 优先级 |
|---|---|---|---|
| UC-01 | 平台初始化与组织导入 | 平台管理员 | MUST |
| UC-02 | 课程创建与资源组织 | 教师 | MUST |
| UC-03 | 任务创建与发布 | 教师 | MUST |
| UC-04 | 学员加入课程与查看任务 | 学员 | MUST |
| UC-05 | 学员在线 IDE 编辑、运行与提交 | 学员 | MUST |
| UC-06 | 自动评测与结果查询 | 系统、学员、教师 | MUST |
| UC-07 | 人工批改与成绩发布 | 教师、助教 | MUST |
| UC-08 | 学员查看反馈与个人学习概览 | 学员 | SHOULD |
| UC-09 | 平台运营概览与安全审计 | 平台管理员、运维/客服 | MUST |
| UC-10 | 成绩复核与支持 | 学员、教师 | SHOULD |
4. 功能需求
验证方法编码:D = 演示(Demonstration),T = 测试(Test),A = 分析(Analysis),I = 检查(Inspection)。
4.1 平台配置与组织管理
| 编号 | 需求 | 描述 | 优先级 | 验证 |
|---|---|---|---|---|
| FR-CFG-01 | 平台基础信息配置 | 系统应支持配置平台名称、简称、Logo、页脚信息和默认首页等基础信息 | MUST | D/T |
| FR-CFG-02 | 品牌与模块配置 | 系统应支持配置主题、登录页文案和模块启停等平台级可配置项 | MUST | D/T |
| FR-CFG-03 | 组织结构维护 | 平台应支持维护 学校 -> 学院 -> 课程 -> 班级 四层组织结构,并将用户归属到指定组织节点 | MUST | D/T |
| FR-CFG-04 | 用户导入与创建 | 平台管理员应能批量导入、手动创建和邀请用户 | MUST | T/I |
| FR-CFG-05 | 身份与账号状态管理 | 平台应支持按组织作用域分配管理员身份,并管理账号启用、停用、锁定与解锁 | MUST | T/I |
| FR-CFG-06 | 即时生效配置 | 平台配置修改后应立即生效,并保留更新留痕 | MUST | T/I |
| FR-CFG-07 | 平台级资源策略 | 平台应支持配置评测并发、存储额度和通知开关等资源策略 | SHOULD | D/T |
业务规则:
- BR-CFG-01:平台配置只保留一份当前生效配置,更新后立即覆盖旧值。
- BR-CFG-02:组织结构固定为
学校 -> 学院 -> 课程 -> 班级四层。 - BR-CFG-03:管理员身份必须绑定到组织节点;教师在平台治理阶段视为班级管理员。
- BR-CFG-04:用户批量导入必须返回逐行校验结果和失败原因。
- BR-CFG-05:配置调整不得删除既有课程、提交、成绩和审计数据。
4.2 身份认证与授权
| 编号 | 需求 | 描述 | 优先级 | 验证 |
|---|---|---|---|---|
| FR-IAM-01 | 登录与退出 | 平台应支持用户安全登录、签发 JWT 访问令牌并安全退出 | MUST | T |
| FR-IAM-02 | 基于身份与作用域的授权 | 系统应按管理员身份及其组织作用域控制页面、操作和数据访问范围 | MUST | T/I |
| FR-IAM-03 | 未授权访问拦截 | 未登录或无权限用户不得访问受保护资源;系统应返回明确拒绝结果 | MUST | T |
| FR-IAM-04 | 账号生命周期管理 | 平台应支持启用、停用、锁定、解锁和失效等账号状态控制 | MUST | T/I |
| FR-IAM-05 | 密码管理 | 平台应支持密码重置、首次登录修改密码和密码失效处理 | SHOULD | T |
| FR-IAM-06 | 统一认证扩展 | 平台应预留对 OAuth2、OIDC、SAML 等统一认证方案的接入能力 | SHOULD | A/I |
业务规则:
- BR-IAM-01:密码长度不得少于 8 位,且应包含字母和数字。
- BR-IAM-02:连续 5 次登录失败后,账号默认锁定 30 分钟。
- BR-IAM-03:JWT 访问令牌默认有效期为 2 小时,可由管理员配置。
- BR-IAM-04:同一用户可在不同课程中拥有不同课程角色。
- BR-IAM-05:权限控制必须同时作用于界面入口和服务端资源访问。
4.3 课程与成员管理
| 编号 | 需求 | 描述 | 优先级 | 验证 |
|---|---|---|---|---|
| FR-CRS-01 | 课程创建与编辑 | 教师应能创建课程并维护名称、简介、学期、所属组织等基础信息 | MUST | D/T |
| FR-CRS-02 | 课程状态管理 | 系统应支持课程草稿、进行中和归档等状态管理 | MUST | T |
| FR-CRS-03 | 成员管理 | 教师和平台管理员应能查看、添加、移除和调整课程成员角色 | MUST | D/T |
| FR-CRS-04 | 学员加入课程 | 学员应能通过邀请码、课程码或组织分配等方式加入课程 | MUST | D/T |
| FR-CRS-05 | 课程资源管理 | 教师应能上传、分类、组织和发布课程资源 | MUST | D/T |
| FR-CRS-06 | 课程结构编排 | 系统应支持按章节、模块或任务列表组织课程内容 | SHOULD | D/T |
| FR-CRS-07 | 课程归档与历史访问 | 课程归档后应默认只读,但教师和学员仍可查看被允许的历史数据 | SHOULD | T |
| FR-CRS-08 | 资源或模板复用 | 平台可支持跨课程复用任务模板或课程资源 | COULD | D |
业务规则:
- BR-CRS-01:一门课程必须有且仅有一名负责教师,可有 0 到多名助教。
- BR-CRS-02:邀请码默认有效期为 30 天,可由教师刷新或关闭。
- BR-CRS-03:课程状态路径为 draft -> active -> archived。
- BR-CRS-04:归档课程不可接收新提交,但可查询历史成绩和提交记录。
- BR-CRS-05:课程资源总量上限应可由平台级策略配置。
4.4 任务与评分规则
| 编号 | 需求 | 描述 | 优先级 | 验证 |
|---|---|---|---|---|
| FR-TSK-01 | 任务创建 | 教师应能创建编程、文档或实验报告类任务,并指定所属课程 | MUST | D/T |
| FR-TSK-02 | 任务说明维护 | 教师应能维护任务标题、正文、附件、样例、模板代码或环境说明 | MUST | D/T |
| FR-TSK-03 | 提交规则配置 | 教师应能配置开放时间、截止时间、提交次数、允许的提交形式和文件限制 | MUST | T |
| FR-TSK-04 | 评分方式配置 | 教师应能配置自动评测、人工批改或混合评分方式 | MUST | T |
| FR-TSK-05 | 发布与关闭控制 | 教师应能保存草稿、发布任务、关闭任务,并保留重要变更记录 | MUST | T/I |
| FR-TSK-06 | Rubric 配置 | 教师应能为人工批改任务定义评分项、分值和判定标准 | SHOULD | D/T |
| FR-TSK-07 | 任务模板复用 | 教师可复制历史任务作为新任务模板 | COULD | D |
业务规则:
- BR-TSK-01:任务满分默认 100 分,可按任务配置调整。
- BR-TSK-02:截止时间必须晚于开放时间至少 1 小时。
- BR-TSK-03:混合评分模式下,各评分权重之和必须等于 100%。
- BR-TSK-04:任务状态路径为 draft -> published -> closed。
- BR-TSK-05:已发布任务的重大修改必须保留版本号、修改人和修改时间。
4.5 提交与在线作业
| 编号 | 需求 | 描述 | 优先级 | 验证 |
|---|---|---|---|---|
| FR-SUB-01 | 提交入口与要求展示 | 学员在任务开放期间应能进入提交入口并查看提交要求 | MUST | D/T |
| FR-SUB-02 | 提交形式支持 | 平台应支持在线 IDE 工程快照提交、代码文本提交、文件上传或两者结合的提交方式 | MUST | D/T |
| FR-SUB-03 | 在线 IDE 工作区 | 对编程类任务,平台应提供浏览器内在线 IDE,至少支持语法高亮、模板工程加载、文件切换和运行 / 提交入口 | MUST | D/T |
| FR-SUB-04 | 提交受理与编号 | 平台受理提交后应生成唯一提交标识,并记录提交时间、提交者和受理状态 | MUST | T/I |
| FR-SUB-05 | 提交历史查询 | 学员应能查看个人历史提交;教师和助教应能按权限查看课程提交记录 | MUST | D/T |
| FR-SUB-06 | 提交规则校验 | 对不满足时间、格式、大小或次数限制的提交,系统应拒绝受理并说明原因 | MUST | T |
| FR-SUB-07 | 草稿保存与恢复 | 在线 IDE 场景下,平台应支持工作区草稿暂存、自动保存和恢复 | SHOULD | T |
| FR-SUB-08 | 提交前运行 | 学员在正式提交前应能在在线 IDE 中运行代码,并查看标准输出、标准错误、退出状态和资源摘要 | MUST | D/T |
| FR-SUB-09 | 运行与提交分离 | 系统应区分“运行代码”和“正式提交评测”两类操作,避免将试运行结果误记为正式成绩依据 | MUST | T/I |
业务规则:
- BR-SUB-01:每次提交必须生成全局唯一提交标识。
- BR-SUB-02:一旦提交被成功受理,记录不得被学员删除。
- BR-SUB-03:学员仅能查看自己的提交;教师和助教仅能查看授权课程下的提交。
- BR-SUB-04:允许的文件类型和大小由任务配置决定。
- BR-SUB-05:若因存储或系统异常导致受理失败,该次失败不得扣减提交次数。
- BR-SUB-06:在线运行不计入正式提交次数,不得直接生成正式成绩或替代正式评测结果。
- BR-SUB-07:正式提交必须基于某一时刻的不可变代码 / 文件快照,后续工作区修改不得回写既有提交内容。
- BR-SUB-08:工作区自动保存失败时,系统应提示学员并保留最近一次成功保存的可恢复版本。
4.6 自动评测与隔离执行
| 编号 | 需求 | 描述 | 优先级 | 验证 |
|---|---|---|---|---|
| FR-JDG-01 | 自动触发评测 | 对启用自动评测的任务,系统在提交受理后应自动发起评测流程 | MUST | T |
| FR-JDG-02 | 异步状态流转 | 评测任务应支持待处理、处理中、已完成、超时和失败等状态,并可被查询 | MUST | T |
| FR-JDG-03 | 结果结构化输出 | 平台应输出得分、通过情况、错误摘要、运行时间和必要日志摘要 | MUST | D/T |
| FR-JDG-04 | 结果持久化与追溯 | 每次评测结果应与对应提交关联保存,并保留历史记录 | MUST | T/I |
| FR-JDG-05 | 隔离执行 | 学员提交内容必须在隔离环境中执行,不得直接运行在平台主服务进程内 | MUST | A/T |
| FR-JDG-06 | 评测规则配置 | 教师应能配置语言、用例、评分比例、时间和资源限制 | SHOULD | D/T |
| FR-JDG-07 | 重新评测 | 教师或管理员应能对指定提交重新发起评测 | SHOULD | T |
| FR-JDG-08 | 多运行环境扩展 | 平台可支持不同任务类型绑定不同运行环境模板 | COULD | A |
业务规则:
- BR-JDG-01:评测队列应按受理顺序处理,同一学员的多个评测任务默认不并行执行。
- BR-JDG-02:单次评测默认时间限制为 60 秒,默认内存限制为 256 MB,可按任务覆盖。
- BR-JDG-03:隔离环境默认禁止网络访问,并限制文件写入范围和进程数量。
- BR-JDG-04:重新评测必须生成新结果,不得覆盖原始评测记录。
- BR-JDG-05:评测服务不可用时,系统应进入降级模式并给出清晰提示。
4.7 人工批改、成绩与复核
| 编号 | 需求 | 描述 | 优先级 | 验证 |
|---|---|---|---|---|
| FR-REV-01 | 提交详情查看 | 教师和助教应能查看提交内容、自动评测结果和历史记录 | MUST | D/T |
| FR-REV-02 | 人工批改 | 教师和授权助教应能填写评语、应用 Rubric 和录入人工评分 | MUST | D/T |
| FR-REV-03 | 最终成绩生成 | 平台应按任务配置生成最终成绩,并可追溯到依据的提交和批改记录 | MUST | T/I |
| FR-REV-04 | 成绩发布与撤回 | 教师应能控制成绩对学员是否可见,并支持撤回后重新发布 | MUST | T |
| FR-REV-05 | 学员查看反馈 | 学员应能查看本人得分、评语、评测结果和发布时间 | MUST | D/T |
| FR-REV-06 | 成绩汇总与筛选 | 教师和平台管理员应能按课程、任务或学员维度查看成绩汇总结果 | MUST | D/T |
| FR-REV-07 | 成绩导出 | 平台应支持导出课程成绩或任务成绩结果 | SHOULD | T |
| FR-REV-08 | 成绩复核申请 | 学员应能在允许窗口内发起复核申请,由教师处理并留痕 | SHOULD | D/T |
| FR-REV-09 | 个人学习概览 | 学员应能查看本人课程进度、未完成任务、成绩状态和最近反馈 | SHOULD | D/T |
业务规则:
- BR-REV-01:默认以最后一次有效提交作为成绩计算基准;教师可手动选择其他提交。
- BR-REV-02:成绩状态路径为 pending -> unpublished -> published -> withdrawn。
- BR-REV-03:已发布成绩的修改必须记录变更原因和操作者。
- BR-REV-04:复核申请窗口默认为成绩发布后 7 天内,可按机构规则调整。
- BR-REV-05:助教批改结果应保留“助教批改”标识,教师可复核后再发布。
4.8 通知与公告
| 编号 | 需求 | 描述 | 优先级 | 验证 |
|---|---|---|---|---|
| FR-NTF-01 | 站内通知 | 平台应支持围绕关键事件向指定用户发送站内通知 | MUST | D/T |
| FR-NTF-02 | 已读状态管理 | 用户应能查看通知列表并更新通知已读状态 | MUST | T |
| FR-NTF-03 | 系统公告 | 平台管理员应能向指定范围发布公告 | SHOULD | D/T |
| FR-NTF-04 | 多渠道通知扩展 | 平台应预留邮件、短信或企业 IM 的通知接入能力 | SHOULD | A/I |
业务规则:
- BR-NTF-01:通知触发事件至少包括任务发布、提交受理、评测完成、成绩发布、复核处理和系统公告。
- BR-NTF-02:同一事件对同一用户在 5 分钟内默认不重复通知。
- BR-NTF-03:站内通知默认保留 90 天。
- BR-NTF-04:用户可关闭非强制通知;系统公告不可关闭。
4.9 运营概览与审计
| 编号 | 需求 | 描述 | 优先级 | 验证 |
|---|---|---|---|---|
| FR-OPS-01 | 课程级运营概览 | 平台应提供课程活跃度、提交量、评测通过率和成绩分布等概览 | MUST | D/A |
| FR-OPS-02 | 平台级概览 | 平台管理员应能查看平台课程数、用户数、活跃度和资源使用概况 | SHOULD | D/A |
| FR-OPS-03 | 审计日志 | 平台应记录登录、任务发布、成绩修改、权限变更和导出等关键操作 | MUST | T/I |
| FR-OPS-04 | 异常事件留痕 | 平台应记录异常登录、评测失败和资源超限等异常事件 | SHOULD | T/I |
业务规则:
- BR-OPS-01:审计日志至少应包含操作者、身份、时间、操作类型、操作对象、结果和来源信息。
- BR-OPS-02:审计日志不得被普通业务角色修改或删除。
- BR-OPS-03:审计日志默认保留 1 年,可按机构要求调整。
- BR-OPS-04:以下操作必须进入审计范围:登录/登出、创建/删除用户、身份变更、平台配置更新、任务发布/修改、成绩修改、重新评测、导出数据。
5. 外部接口需求
5.1 用户界面需求
本说明书仅定义界面必须承载的业务能力和交互要求,不包含视觉设计稿、组件实现或像素级布局。
| 角色 | 必须提供的界面能力 | 说明 |
|---|---|---|
| 学员端 | 登录、加入课程、查看课程与任务、在线 IDE 编辑与运行、正式提交、查看评测结果、查看成绩与通知、查看个人学习概览 | 核心主链路必须完整可用 |
| 教师端 | 课程管理、资源管理、成员管理、任务编辑、提交查看、人工批改、成绩发布与导出 | 面向教学组织和反馈闭环 |
| 管理 / 运维端 | 平台配置、组织与用户管理、平台概览、审计日志、异常事件查看 | 面向平台治理和运行支持 |
| 通用能力 | 搜索、筛选、分页、状态反馈、表单校验、操作确认 | 应在关键页面保持一致交互习惯 |
界面级要求:
- UI-01:导航、按钮、状态标签和错误提示应与当前用户角色匹配。
- UI-02:所有关键写操作应给出成功、失败或处理中反馈。
- UI-03:对删除、关闭、撤回、发布等不可逆或高风险操作,应提供二次确认。
- UI-04:任务、提交、评测结果和成绩页面之间应保持可追踪的跳转关系。
5.2 外部软件接口需求
| 接口对象 | 交互目的 | 必要信息范围 | 边界要求 |
|---|---|---|---|
| 评测执行环境 | 下发待评测提交并接收结果 | 提交内容引用、运行参数、结果状态、得分摘要 | 需支持隔离执行、结果回传和失败留痕 |
| 文件存储服务 | 保存课程资料、提交文件和导出文件 | 文件元数据、访问范围、生命周期信息 | 需支持权限控制和生命周期管理 |
| 统一认证服务 | 用户身份认证与单点登录 | 用户身份标识、认证状态、必要属性 | 可选接入,失败时应具备明确回退策略 |
| 消息通道 | 扩展通知发送 | 接收人、通知类型、内容摘要、发送结果 | 支持异步发送与失败反馈 |
| 外部学习平台 | 课程或成绩同步、嵌入式接入 | 课程标识、用户标识、成绩摘要 | 可选扩展,不应阻断本平台核心主链路 |
接口边界说明:
- IF-01:接口协议、鉴权方式、报文字段和错误码由后续 API / 接口设计文档定义。
- IF-02:SRS 中仅保留“必须交换什么信息”和“接口必须满足什么约束”。
- IF-03:任何接口调整都不得破坏既有已发布成绩、提交记录和审计留痕。
5.3 通信接口需求
- COM-01:所有对外通信必须采用受保护的传输通道。
- COM-02:受保护资源的访问必须支持访问令牌失效与重新认证。
- COM-03:长耗时操作应采用异步反馈机制,避免长时间阻塞用户交互。
- COM-04:导入、导出、评测和通知等异步交互应能够回传成功或失败状态。
5.4 导入与导出需求
| 功能 | 输入 / 输出 | 需求说明 |
|---|---|---|
| 用户批量导入 | 输入:.xlsx 模板文件 | 必须返回总数、成功数、失败数和逐行失败原因 |
| 课程成员导入 | 输入:.xlsx 模板文件 | 必须支持按课程批量导入成员 |
| 评测用例导入 | 输入:结构化用例包 | 必须校验用例完整性和格式合法性 |
| 成绩导出 | 输出:.xlsx | 导出结果应包含学员标识、任务名称、成绩和发布时间等必要字段 |
| 审计日志导出 | 输出:.csv 或等效结构化格式 | 导出结果应包含完整审计字段并受权限控制 |
| 提交内容导出 | 输出:压缩包或等效批量文件 | 导出时应按课程/任务/学员维度进行可追踪组织 |
导入导出规则:
- IO-01:导入模板应提供版本标识和必填字段说明。
- IO-02:导出文件名应包含时间戳和范围标识。
- IO-03:不具备相应权限的用户不得导出成绩、提交或审计数据。
6. 数据需求
6.1 逻辑数据实体
| 数据实体 | 必备信息 | 关键要求 |
|---|---|---|
| PlatformConfig | 平台名称、品牌配置、模块开关、资源策略、更新时间 | 配置变更应立即生效且不破坏历史业务数据 |
| OrgUnit | 名称、父级、类型、层级 | 支持学校 / 学院 / 课程 / 班级四层组织结构 |
| User | 登录标识、显示名称、组织、身份、账号状态 | 支持账号生命周期和最小必要个人信息 |
| Course | 名称、负责人、所属组织、学期、状态、邀请信息 | 支持状态管理与成员关联 |
| CourseMember | 课程、用户、课程角色、加入来源、状态 | 支持同一用户在不同课程中拥有不同角色 |
| Resource | 课程、资源名称、资源类型、可见范围、引用位置 | 支持权限控制与资源组织 |
| Task | 所属课程、任务类型、说明、规则、评分方式、状态、版本 | 支持任务版本留痕和状态管理 |
| Rubric | 所属任务、评分项、分值分配、版本、生效状态 | 支持人工批改一致性 |
| IDEWorkspace | 所属任务、所属学员、当前语言、当前文件树、草稿版本、最后保存时间 | 支持在线 IDE 草稿恢复与工作区隔离 |
| Submission | 所属任务、提交者、提交内容引用、提交时间、提交序号、状态 | 每次提交独立留痕 |
| RunSession | 所属任务、所属学员、运行输入、输出摘要、退出状态、资源指标、运行时间 | 明确区分试运行与正式评测 |
| EvaluationResult | 所属提交、评测状态、得分、用例摘要、错误信息、运行指标 | 支持历史结果追溯 |
| ReviewRecord | 所属提交、批改人、评语、Rubric 快照、人工评分、批改时间 | 支持批改来源追踪 |
| Grade | 学员、任务、基准提交、最终成绩、发布状态、时间戳 | 必须能追溯成绩来源 |
| Notification | 接收人、通知类型、内容、已读状态、关联对象 | 支持消息生命周期管理 |
| AuditLog | 操作者、动作、对象、结果、时间、来源 | 不可随意篡改,支持审计检索 |
6.2 数据关系与完整性要求
- DAT-01:一个课程可关联多个成员、多个资源和多个任务。
- DAT-02:一个任务必须归属于一个课程;一个任务可产生多次提交。
- DAT-03:一个提交可关联多次评测记录,但同一时刻只能有一个当前有效结果。
- DAT-04:一个成绩必须能追溯到对应的任务、学员以及相关提交或批改记录。
- DAT-05:平台配置、课程、提交、成绩和审计数据的关联关系不得因配置调整而失效。
- DAT-06:停用或删除账号时,其历史提交、成绩和审计记录不得被直接物理删除。
- DAT-07:用户、成绩、提交和审计数据必须按角色和作用范围进行访问控制。
- DAT-08:一个编程任务可为每个学员维护一个独立 IDE 工作区;工作区数据不得被其他学员访问。
- DAT-09:一次运行会话可关联某个工作区版本,但运行结果不得直接替代正式提交或成绩记录。
6.3 核心状态模型
| 对象 | 状态 | 合法流转 | 说明 |
|---|---|---|---|
| 平台配置 | active | active | 当前版本为单份即时生效配置 |
| 课程 | draft / active / archived | draft -> active -> archived | 归档后默认为只读 |
| 任务 | draft / published / closed | draft -> published -> closed | 关闭可由时间触发或人工触发 |
| 提交 | accepted / evaluating / evaluated / failed | accepted -> evaluating -> evaluated 或 failed | 提交被受理后不可删除 |
| 评测结果 | pending / running / success / failed / timeout / error | pending -> running -> 终态 | 终态结果保留供追溯 |
| 成绩 | pending / unpublished / published / withdrawn | pending -> unpublished -> published -> withdrawn -> published | 撤回后允许重新发布 |
6.4 数据保留与隐私要求
| 数据类别 | 默认保留要求 | 补充说明 |
|---|---|---|
| 用户与组织信息 | 至少保留到账号停用后的审计期结束 | 应遵循最小必要原则 |
| 提交记录与结果文件 | 默认保留 3 年 | 过期后可按策略归档或删除文件实体 |
| 评测结果 | 默认保留 3 年 | 历史结果需支持查询与审计 |
| 成绩记录 | 默认保留 5 年 | 机构如有更长要求,以机构规则为准 |
| 审计日志 | 默认保留 1 年 | 可按机构合规要求延长 |
| 通知消息 | 默认保留 90 天 | 超期可归档或清理 |
隐私规则:
- PRV-01:成绩数据默认仅对本人、授权教师、助教和管理员可见。
- PRV-02:个人信息采集范围应限定在账号、组织、教学管理和审计所需范围内。
- PRV-03:涉及导出和删除的数据操作必须受权限控制并产生审计记录。
7. 非功能需求
7.1 易用性与可访问性
| 编号 | 需求 | 衡量标准 | 优先级 | 验证 |
|---|---|---|---|---|
| NFR-USE-01 | 浏览器内完成主链路 | 学员无需安装本地开发环境即可完成“查看任务 -> 在线 IDE 编辑 / 运行 -> 提交 -> 查看结果”主链路 | MUST | D/T |
| NFR-USE-02 | 明确的状态与错误反馈 | 关键操作必须给出成功、失败或处理中提示,错误信息应可理解 | MUST | D/T |
| NFR-USE-03 | 首次使用可完成主链路 | 首次使用者应能在无专门培训情况下完成“加入课程 -> 查看任务 -> 在线 IDE 运行 -> 提交 -> 查看结果” | SHOULD | D/T |
| NFR-USE-04 | 基本可访问性 | 关键页面应提供键盘可达、焦点可见和足够对比度等基本可访问性支持 | SHOULD | I/T |
7.2 性能
| 编号 | 需求 | 指标 | 优先级 | 验证 |
|---|---|---|---|---|
| NFR-PERF-01 | 常规页面响应时间 | 列表、详情、配置等常规页面 95th 响应时间应不高于 2 秒 | MUST | T/A |
| NFR-PERF-02 | 提交受理响应 | 提交请求返回受理结果的时间应不高于 2 秒 | MUST | T |
| NFR-PERF-03 | 评测状态感知延迟 | 前端感知评测状态变化的延迟应不高于 5 秒 | SHOULD | T |
| NFR-PERF-04 | 批量导入性能 | 导入 500 条合法用户数据的反馈时间应不高于 30 秒 | SHOULD | T |
| NFR-PERF-05 | 成绩导出性能 | 导出 500 条成绩记录的生成时间应不高于 10 秒 | SHOULD | T |
| NFR-PERF-06 | 在线编辑器输入延迟 | 在线编辑器字符输入显示延迟应不高于 100 毫秒 | SHOULD | T |
| NFR-PERF-07 | 在线运行反馈时间 | 对公开样例或自定义输入的单次试运行,95th 首次结果返回时间应不高于 5 秒 | SHOULD | T |
7.3 可靠性与可用性
| 编号 | 需求 | 衡量标准 | 优先级 | 验证 |
|---|---|---|---|---|
| NFR-REL-01 | 提交受理后不丢失 | 一旦提交被系统受理,不得因页面刷新、前端断连或普通服务重启导致记录丢失 | MUST | T |
| NFR-REL-02 | 关键数据备份恢复 | 关键业务数据应具备备份和恢复能力 | MUST | A/I |
| NFR-REL-03 | 评测故障隔离 | 评测服务故障不应影响课程浏览、提交受理和成绩查询等其他核心能力 | MUST | T/A |
| NFR-REL-04 | 降级运行 | 评测服务不可用时,系统应能进入降级模式并保留后续恢复空间 | SHOULD | D/A |
| NFR-REL-05 | SaaS 可用性目标 | 对 SaaS 部署形态,月度可用性目标应不低于 99.9%,计划内维护除外 | SHOULD | A |
| NFR-REL-06 | SaaS 灾备目标 | 对 SaaS 部署形态,默认目标为 RPO <= 15 分钟、RTO <= 4 小时 | SHOULD | A/I |
7.4 安全与隐私
| 编号 | 需求 | 衡量标准 | 优先级 | 验证 |
|---|---|---|---|---|
| NFR-SEC-01 | 受保护资源访问控制 | 所有受保护页面、接口和数据都必须经过认证和授权校验 | MUST | T |
| NFR-SEC-02 | 提交隔离执行 | 学员提交内容必须在受限环境执行,并限制网络、文件系统和资源边界 | MUST | T/A |
| NFR-SEC-03 | 传输安全 | 敏感信息在传输过程中必须受到保护 | MUST | T/I |
| NFR-SEC-04 | 凭证安全存储 | 密码和等效凭证不得以明文或可逆形式存储 | MUST | I |
| NFR-SEC-05 | 异常登录防护 | 系统应具备基础限流、登录失败锁定和异常登录检测能力 | SHOULD | T |
| NFR-SEC-06 | 常见漏洞防护 | 接口和上传能力应防范注入、跨站脚本、跨站请求伪造和恶意文件上传等常见攻击 | MUST | T/A |
| NFR-PRV-01 | 最小必要采集 | 平台应仅采集教学和治理所必需的个人信息与行为数据 | MUST | I |
| NFR-PRV-02 | 成绩隐私 | 学员成绩默认不得对其他学员公开展示 | MUST | T |
| NFR-PRV-03 | 数据保留与删除策略 | 平台应支持按机构规则执行数据保留、导出和删除策略 | SHOULD | I/A |
7.5 兼容性与可移植性
| 编号 | 需求 | 衡量标准 | 优先级 | 验证 |
|---|---|---|---|---|
| NFR-CMP-01 | 主流浏览器兼容 | Web 端应兼容最新两个主要版本的 Chrome、Firefox、Edge 和 Safari | MUST | T |
| NFR-CMP-02 | 常见桌面分辨率支持 | 核心页面在 1280x720 至 3840x2160 范围内应能正常显示和操作 | MUST | T |
| NFR-CMP-03 | 默认语言与文案配置 | 平台默认语言为简体中文,界面文案应支持配置 | SHOULD | D/I |
| NFR-CMP-04 | 部署形态适配 | 平台应支持独立部署或私有化部署,并允许关闭非必需扩展模块 | SHOULD | A/I |
7.6 可扩展性与可观测性
| 编号 | 需求 | 衡量标准 | 优先级 | 验证 |
|---|---|---|---|---|
| NFR-EXT-01 | 分层扩展 | 应用层、评测执行层和通知处理层应支持独立扩展 | SHOULD | A |
| NFR-EXT-02 | 能力增量扩展 | 新增任务类型、运行环境或外部集成时,不应破坏既有课程、提交和成绩模型 | SHOULD | A/I |
| NFR-OBS-01 | 日志与指标 | 平台应输出结构化日志、关键性能指标和异常告警 | MUST | I/A |
| NFR-OBS-02 | 错误追踪上下文 | 关键失败链路应包含请求标识、用户标识和时间信息,便于问题定位 | MUST | I |
| NFR-OBS-03 | 评测观测指标 | 评测服务应提供队列深度、平均处理时间和失败率等指标 | SHOULD | I/A |
| NFR-OBS-04 | 运行状态查看 | 授权运维人员应能查看服务健康状态、评测状态和资源使用情况 | SHOULD | D/A |
8. 验证、追踪与分阶段交付
8.1 验证方法定义
| 代码 | 方法 | 说明 |
|---|---|---|
| D | 演示(Demonstration) | 通过角色操作、界面交互或业务演示验证需求满足情况 |
| T | 测试(Test) | 通过手工或自动化测试验证输入、处理和输出是否符合预期 |
| A | 分析(Analysis) | 通过日志、指标、容量分析、故障注入或设计约束分析验证 |
| I | 检查(Inspection) | 通过文档审查、配置检查和记录核对确认需求已被实现和留痕 |
8.2 V1 验收基线
V1 交付至少应满足以下条件:
- 全部 MUST 级功能需求和非功能需求均有对应证据,且不存在阻断主链路的问题。
- 核心业务主链路能够从“平台初始化”连续执行到“成绩发布与查看”。
- 学员提交隔离执行、权限控制和审计留痕均完成验证。
- 关键数据对象、状态流转和导入导出能力均具备可复查证据。
- 必需的异常场景至少覆盖:无权限访问、超时提交、评测失败、成绩撤回、导出权限校验。
8.3 需求追踪矩阵(摘要)
| 需求组 | 代表编号 | 关联场景 | 核心数据对象 | 主要验证 |
|---|---|---|---|---|
| 平台配置与组织 | FR-CFG-01 ~ FR-CFG-07 | UC-01, UC-09 | PlatformConfig, OrgUnit, User | D/T/I |
| 认证与授权 | FR-IAM-01 ~ FR-IAM-06 | UC-01, UC-04, UC-09 | User, AuditLog | T/I |
| 课程与成员 | FR-CRS-01 ~ FR-CRS-08 | UC-02, UC-04 | Course, CourseMember, Resource | D/T |
| 任务与规则 | FR-TSK-01 ~ FR-TSK-07 | UC-03 | Task, Rubric | D/T/I |
| 提交与在线作业 | FR-SUB-01 ~ FR-SUB-09 | UC-05 | IDEWorkspace, Submission, RunSession | D/T |
| 自动评测 | FR-JDG-01 ~ FR-JDG-08 | UC-06 | Submission, EvaluationResult | T/A |
| 批改与成绩 | FR-REV-01 ~ FR-REV-09 | UC-07, UC-08, UC-10 | ReviewRecord, Grade | D/T/I |
| 通知与公告 | FR-NTF-01 ~ FR-NTF-04 | UC-06, UC-07, UC-08, UC-10 | Notification | D/T |
| 运营与审计 | FR-OPS-01 ~ FR-OPS-04 | UC-09 | AuditLog, Course, Submission, Grade | D/A/I |
| 非功能需求 | NFR-* | 全部场景 | 全部关键对象 | T/A/I |
8.4 分阶段交付建议
| 交付阶段 | 建议范围 |
|---|---|
| V1 基线 | 全部 MUST 级需求 |
| V1.1 优先增强 | FR-IAM-05、FR-IAM-06、FR-CRS-06、FR-CRS-07、FR-TSK-06、FR-SUB-07、FR-JDG-06、FR-JDG-07、FR-REV-07、FR-REV-08、FR-REV-09、FR-NTF-03、FR-NTF-04、FR-OPS-02、FR-OPS-04 |
| 后续版本候选 | FR-CRS-08、FR-TSK-07、FR-JDG-08,以及范围外的高级反作弊、深度集成和 AI 能力 |
8.5 未决事项
| 编号 | 类型 | 内容 | 当前状态 |
|---|---|---|---|
| TBD-01 | 容量指标 | 基准部署配置下的并发用户数和并行评测容量目标尚需在设计阶段明确 | 待确认 |
| TBD-02 | 外部认证范围 | 是否在 V1 即纳入统一认证正式对接,取决于交付对象和部署场景 | 待确认 |
| TBD-03 | 成绩保留年限 | 某些机构可能要求高于 5 年的成绩留存期限,需在项目签约或需求澄清时确认 | 待确认 |
9. 附录
9.1 本次优化的收敛原则
相较于 v3.0,本版做了以下文档层面的收敛:
- 保留了范围、角色、需求、接口、数据、质量属性、验证和追踪等 SRS 必备信息。
- 删除了数据库字段类型、接口协议、技术栈和部署实现等过度实现化内容。
- 将冗长的逐步用例流程收缩为主链路和场景摘要,避免与设计说明书、测试用例文档重复。
- 将 AI 能力、深度三方集成和高级诚信分析移出 V1 正式范围,避免目标膨胀。
- 增加了运行模式、逻辑数据要求、非功能编号体系和未决事项,以提升正式性和可维护性。
9.2 后续文档建议
为避免 SRS 再次膨胀,后续建议如下:
- 概要设计说明书:补总体架构、模块划分、关键流程、接口分层、部署逻辑图。
- 详细设计说明书:补模块内部设计、状态机实现、异常处理策略、数据结构和接口时序。
- API 文档:补端点、字段、鉴权、错误码、分页和示例请求响应。
- 测试策略 / 测试报告:补测试分层、测试用例、缺陷和回归证据。
- 部署文档:补运行依赖、环境变量、初始化、发布、回滚和排障步骤。