跳转到内容

1.1 文档标识

技术需求文档

本节教授如何撰写技术需求文档(Technical Requirements Document, TRD)。TRD 是连接客户需求和方案设计的关键文档,清晰的需求文档能大幅降低项目风险和沟通成本。

学习完成后您将能够:

  • 掌握 TRD 的标准结构和撰写要点
  • 将模糊的客户需求转化为可执行的规格
  • 定义可量化的验收标准
  • 使用 TRD 控制项目范围和预期
1. 文档概述(Document Overview)
2. 总体描述(General Description)
3. 功能需求(Functional Requirements)
4. 非功能需求(Non-functional Requirements)
5. 接口定义(Interface Definition)
6. 限制条件(Constraints)
7. 验收标准(Acceptance Criteria)

目的: 定义文档范围和使用者

# 技术需求文档
## 1.1 文档标识
- 文档编号: TRD-[项目缩写]-v[版本号]
- 项目名称: [项目全称]
- 编制人: [售前/架构师]
- 版本日期: YYYY-MM-DD
## 1.2 文档目的
本文档旨在定义 [项目名称] 的技术需求规格,作为方案设计和验收的依据。
## 1.3 目标读者
- 项目团队:技术方案设计依据
- 客户方:需求确认和验收参考
- 开发团队:开发实施指南
## 1.4 参考文档
- [提案文档链接]
- [客户提供的需求文档]
- [行业标准或规范]

目的: 从宏观层面描述系统目标

## 2.1 系统目标
[描述系统需要实现的核心目标]
## 2.2 系统范围
包含:
- 功能范围 1
- 功能范围 2
不包含(明确排除):
- 排除范围 1
- 排除范围 2
## 2.3 用户角色
| 角色 | 描述 | 权限 |
|------|------|------|
| 管理员 | 系统管理和配置 | 全部权限 |
| 操作员 | 日常监控和操作 | 查看+控制 |
| 维护员 | 设备维护 | 设备管理 |

目的: 详细定义每个功能的需求规格

格式要求: 每个功能需求使用唯一编号,便于追踪

## 3.1 数据采集功能
### FR-001: 温度采集
- **描述**: 系统需支持温度传感器数据采集
- **优先级**: P0(必须实现)
- **输入**: DHT22 传感器信号
- **输出**: JSON 格式 MQTT 消息
- **精度要求**: ±0.5°C
- **范围**: -40°C ~ 80°C
- **采样频率**: 最小 1 秒,可配置
- **数据格式**:
```json
{
"device_id": "sensor_001",
"type": "temperature",
"value": 25.5,
"unit": "C",
"timestamp": "2024-01-01T00:00:00Z"
}
  • 描述: 系统需支持温度数据的时序存储
  • 优先级: P0
  • 存储引擎: InfluxDB
  • 保留策略:
    • 原始数据: 7 天
    • 聚合数据(5分钟均值): 30 天
    • 日聚合数据: 12 个月
  • 描述: 提供实时数据可视化面板
  • 优先级: P1(重要)
  • 展示内容: 当前温度、历史曲线、告警状态
  • 刷新频率: 5 秒
#### Section 4: 非功能需求
**目的**: 定义系统的性能、安全、可用性等质量属性
```markdown
## 4.1 性能需求
| 需求编号 | 指标 | 目标值 | 测量方法 |
|---------|------|--------|---------|
| NFR-001 | 最大设备数 | 10,000+ | 压力测试 |
| NFR-002 | 端到端延迟 | < 500ms | 实际测量 |
| NFR-003 | 数据吞吐量 | 1000 msg/s | 压力测试 |
| NFR-004 | 系统可用性 | 99.9% | 运行统计 |
| NFR-005 | 存储容量 | 1TB+ | 硬盘规格 |
## 4.2 安全需求
### NFR-101: 传输加密
- **要求**: MQTT 通信使用 TLS 1.2 或以上加密
- **证书**: 使用权威 CA 签发证书
### NFR-102: 访问控制
- **要求**: 系统需支持多级用户权限管理
- **认证方式**: 用户名/密码 + JWT Token
## 4.3 可扩展性需求
### NFR-201: 水平扩展
- **要求**: 系统支持通过增加节点实现水平扩展
- **扩展方式**: 增加 Broker 节点或数据处理节点

目的: 定义系统内外部的所有接口

## 5.1 MQTT 接口
### Topic 定义
| Topic | 方向 | 说明 | QoS |
|-------|------|------|-----|
| devices/{id}/data | 设备→平台 | 传感器数据 | 0 |
| devices/{id}/command | 平台→设备 | 控制命令 | 1 |
| devices/{id}/status | 双向 | 状态更新 | 1+Retain |
### 消息格式
```json
// 数据消息
{
"v": 25.5, // 数值
"t": 1704067200 // 时间戳(Unix)
}
方法路径说明
GET/api/v1/devices查询设备列表
GET/api/v1/devices/{id}查单个设备
POST/api/v1/devices/{id}/command下发控制命令
#### Section 6: 限制条件
**目的**: 明确项目的技术、时间、预算等约束
  • 网络环境:[描述,如工厂内网无公网 IP]
  • 供电条件:[描述,如现场只有 220V 电源]
  • 环境条件:[描述,如高温、高湿]
  • 项目总工期:[数字] 周
  • 关键里程碑:[日期]
  • 总预算范围:$[金额范围]
  • 应避免的成本:[描述]
#### Section 7: 验收标准
**目的**: 定义项目验收的量化标准
```markdown
## 7.1 功能验收
| 验收项 | 标准 | 验证方法 |
|--------|------|---------|
| 数据采集 | 所有传感器数据正常上报 | 查看 Dashboard |
| 数据存储 | 数据完整可查询 | InfluxDB Query |
| 控制命令 | 命令下发成功率 > 99% | 日志统计 |
| 告警功能 | 异常触发告警 | 模拟测试 |
## 7.2 性能验收
| 验收项 | 标准 | 验证方法 |
|--------|------|---------|
| 响应时间 | 控制命令 < 1s | 时间测量 |
| 并发能力 | 1000 设备同时在线 | 压力测试 |
| 存储容量 | 满足 30 天数据 | 容量计算 |
## 7.3 文档验收
- [ ] 方案设计文档通过评审
- [ ] 操作手册完整可用
- [ ] 运维手册交付
- [ ] 培训完成确认
  • 每个需求有唯一编号(FR-XXX / NFR-XXX)
  • 所有需求可验证(有明确的验收标准)
  • 避免模糊描述(“系统应该高效” → “响应时间 < 500ms”)
  • 功能需求和非功能需求分开定义
  • 接口格式明确(JSON 示例)
  • 限制条件完整(技术/时间/预算)
  • 验收标准可量化
  • 排除项明确标注
  • 与方案提案内容一致
  • 客户方已确认过需求理解
  • TRD 是保护伞: 明确的需求边界保护双方利益
  • 编号系统: 每个需求有唯一编号,便于变更追踪
  • 避免模糊: “响应快”→“延迟 < 500ms”,“可靠”→“99.9% 可用性”
  • 排除项: 明确不包含的需求比包含的需求更重要
  • 联合评审: TRD 需客户和项目团队一起评审确认

本节要点总结:

  1. TRD 包含 7 个标准 Section,覆盖需求定义、接口和验收标准
  2. 功能需求和非功能需求分开定义,每个需求有唯一编号
  3. 验收标准必须可量化,避免模糊描述
  4. 限制条件清晰界定项目边界
  5. TRD 对售前是重要的风险控制工具