【大数据】Demo 城市供水管网智能监控系统——项目开发实施计划

城市供水管网智能监控系统------项目开发实施计划

文档信息

项目 内容
项目名称 城市供水管网智能监控系统(演示程序)
文档版本 V1.0
编制日期 2026年7月
编制人 项目经理 / 技术部部长 / 软件架构师
目标环境 Ubuntu 22.04 LTS,32GB内存,4核以上CPU,100GB可用磁盘
项目周期 12周(84个工作日)
团队规模 5人(项目经理兼架构师1人、高级开发2人、中级开发1人、测试1人)

0. 执行摘要

本计划基于《城市供水管网智能监控系统------演示程序详细需求规格说明书》编制,覆盖从环境搭建到验收交付的完整软件开发生命周期。项目以**"演示目的、生产级架构"为原则------所有代码均为演示用途,但整体部署方案和程序架构具备水平扩展能力**,仅需升级硬件规模和调整配置参数即可承接海量数据处理业务【参见需求规格说明书第1.1节】。

核心约束

  • 单机部署(Ubuntu 22.04,32GB内存)
  • 全组件伪分布式/单机模式运行
  • 演示100个管网节点的数据采集、ETL、预警与大屏展示

1. 项目阶段总览

阶段 名称 工期 核心交付物 里程碑
P0 项目启动与准备 3天 项目章程、技术选型确认、开发环境就绪 M0: 环境就绪
P1 需求分析与确认 3天 需求规格说明书终稿、接口契约 M1: 需求冻结
P2 概要设计 5天 总体架构设计、数据库设计、接口设计 M2: 架构基线
P3 详细设计 7天 各模块详细设计说明书、类图、时序图 M3: 设计冻结
P4 编码与单元测试 28天 全部源码、单元测试报告 M4: 代码完成
P5 集成测试 10天 集成测试报告、性能测试报告 M5: 测试通过
P6 部署与验收 8天 部署文档、验收报告、用户手册 M6: 项目交付
P7 项目收尾 2天 项目总结报告、归档 M7: 项目关闭

总工期:66个工作日(约13.2周)

2. 阶段P0:项目启动与准备(第1周,3天)

2.1 核心任务

任务ID 任务名称 负责人 工期 依赖 输出
P0-T01 项目章程编制与评审 项目经理 0.5天 --- 项目章程
P0-T02 技术栈最终选型确认 架构师 0.5天 P0-T01 技术选型决议书
P0-T03 开发环境搭建(Ubuntu 22.04) 高级开发A 1天 P0-T02 开发机就绪
P0-T04 版本控制仓库初始化(Git) 高级开发A 0.5天 P0-T03 Git仓库
P0-T05 项目管理工具配置(Jira/Trello) 项目经理 0.5天 --- 项目管理看板

2.2 技术选型决议

基于需求规格说明书第5章及2026年各组件最新版本,确认如下技术栈:

层级 组件 选定版本 选型理由
数据源模拟 Java + Kafka Client Java 17 / Kafka Client 3.9.2 稳定,兼容性好
消息缓冲 Apache Kafka 3.9.2 稳定版,支持KRaft(无需ZooKeeper)
流式写入 Spark Structured Streaming Spark 3.5.9 LTS版本,稳定可靠
存储层 Apache Hadoop HDFS Hadoop 3.4.3 稳定生产版本
元数据层 Hive Metastore Hive 3.1.3(独立部署) 与Spark 3.x兼容
计算层 Spark SQL Spark 3.5.9 与流式写入统一
调度层 Apache Airflow Airflow 2.10.2 稳定版,Python生态成熟
服务层-点查 Apache HBase HBase 2.5.15 当前稳定版
服务层-聚合 ClickHouse ClickHouse 26.6 最新稳定版,性能优异
后端API Spring Boot Spring Boot 4.1.0 最新GA版,支持Java 21
前端大屏 React 19 + ECharts 6 --- 生态成熟,组件丰富
JDK OpenJDK Java 21 LTS Spring Boot 4.1基线要求

3. 阶段P1:需求分析与确认(第1-2周,3天)

3.1 核心任务

任务ID 任务名称 负责人 工期 依赖 输出
P1-T01 需求规格说明书评审与确认 项目经理+架构师 1天 P0-T05 需求评审纪要
P1-T02 用户故事拆分与优先级排序 项目经理 0.5天 P1-T01 产品Backlog
P1-T03 接口契约定义(OpenAPI 3.0) 架构师 1天 P1-T01 API契约文档
P1-T04 数据模型确认(ER图) 架构师 0.5天 P1-T01 数据模型V1.0

3.2 接口契约清单(输出物)

基于需求规格说明书第3.8.4节,定义以下API契约:

API端点 方法 用途 数据源 响应时间要求
/api/dashboard/overview GET 大屏概览统计 ClickHouse < 1s
/api/dashboard/trend GET 今日趋势数据 ClickHouse < 1s
/api/node/{nodeId}/detail GET 节点详情 HBase < 50ms
/api/node/{nodeId}/history GET 节点历史趋势 HBase/CK < 500ms
/api/alert/list GET 预警列表 预警表 < 200ms
/api/alert/{alertId}/resolve PUT 预警确认/解决 预警表 < 200ms
/ws/alert WebSocket 实时预警推送 --- < 100ms

4. 阶段P2:概要设计(第2-3周,5天)

4.1 核心任务

任务ID 任务名称 负责人 工期 依赖 输出
P2-T01 总体架构设计(含部署拓扑) 架构师 1天 P1-T04 架构设计说明书
P2-T02 模块划分与职责定义 架构师 0.5天 P2-T01 模块架构图
P2-T03 数据库详细设计(Hive/HBase/CK) 高级开发A 1天 P2-T01 DDL脚本集
P2-T04 数据流设计(含分区策略) 高级开发A 1天 P2-T03 数据流设计文档
P2-T05 接口详细设计(含错误码) 高级开发B 1天 P2-T01 接口设计文档
P2-T06 概要设计评审 全员 0.5天 P2-T02~T05 评审纪要

4.2 模块划分(输出物)

模块编号 模块名称 职责 对应需求
M01 数据模拟器(Simulator) 模拟100个传感器数据,写入Kafka 3.1.1
M02 流式写入器(StreamingIngestor) Kafka→HDFS流式入湖 3.3.1
M03 元数据管理器(MetaManager) Hive Metastore表管理、分区管理 3.4.1
M04 ETL处理器(ETLProcessor) ODS→DWD→DWS三层ETL 3.5.1-3.5.3
M05 服务导出器(ServiceExporter) Hive→HBase/CK数据导出 3.6.1-3.6.2
M06 规则引擎(RuleEngine) 预警规则检测与触发 3.7.1
M07 后端API(BackendAPI) Spring Boot RESTful API + WebSocket 3.8.4
M08 前端大屏(FrontendDashboard) React大屏展示 3.8.1-3.8.3
M09 调度编排器(Scheduler) Airflow DAG定义与调度 3.5.1

4.3 HDFS目录结构设计(输出物)

复制代码
hdfs://namenode:8020/
├── /data/raw/pipe/                    # ODS层(外部表)
│   └── dt=2026-07-16/
│       └── hour=14/
│           └── part-0000.snappy.parquet
├── /user/hive/warehouse/
│   ├── dwd_pipe_detail/               # DWD层(内部表)
│   │   └── dt=2026-07-16/
│   │       └── hour=14/
│   │           └── part-0000.snappy.parquet
│   ├── dws_pipe_hourly/               # DWS层(内部表)
│   │   └── dt=2026-07-16/
│   │       └── part-0000.snappy.parquet
│   └── dwd_alert_events/              # 预警表
│       └── dt=2026-07-16/
│           └── part-0000.snappy.parquet
└── /checkpoint/
    └── pipe_streaming/                # Spark Streaming Checkpoint

5. 阶段P3:详细设计(第3-4周,7天)

5.1 核心任务

任务ID 任务名称 负责人 工期 依赖 输出
P3-T01 M01数据模拟器详细设计 高级开发A 0.5天 P2-T06 类图、时序图
P3-T02 M02流式写入器详细设计 高级开发A 1天 P2-T06 类图、时序图
P3-T03 M03元数据管理器详细设计 高级开发B 0.5天 P2-T06 DDL+管理脚本设计
P3-T04 M04 ETL处理器详细设计 高级开发A 1.5天 P2-T06 类图、SQL设计
P3-T05 M05服务导出器详细设计 高级开发B 1天 P2-T06 类图、时序图
P3-T06 M06规则引擎详细设计 高级开发B 1天 P2-T06 规则配置设计
P3-T07 M07后端API详细设计 高级开发A 1天 P2-T06 Controller/Service设计
P3-T08 M08前端大屏详细设计 高级开发B 1天 P2-T06 组件设计、状态管理
P3-T09 M09调度编排器详细设计 高级开发A 0.5天 P2-T06 DAG定义设计
P3-T10 详细设计评审 全员 1天 P3-T01~T09 评审纪要

5.2 M04 ETL处理器核心类设计(输出物)

java 复制代码
// 核心类设计(详细设计阶段输出)

/**
 * ODS → DWD 清洗任务
 * 对应需求: 3.5.2
 */
public class OdsToDwdJob {
    // 核心方法
    public void run(String dt, SparkSession spark);
    private Dataset<Row> filterAbnormalData(Dataset<Row> input);
    private Dataset<Row> convertDataTypes(Dataset<Row> input);
    private Dataset<Row> markFaultRecords(Dataset<Row> input);
    private void writeToDwd(Dataset<Row> dwdDF, String dt);
}

/**
 * DWD → DWS 聚合任务
 * 对应需求: 3.5.3
 */
public class DwdToDwsJob {
    public void run(String dt, SparkSession spark);
    private Dataset<Row> aggregateByRegionAndHour(Dataset<Row> input);
    private void writeToDws(Dataset<Row> dwsDF, String dt);
}

/**
 * 规则预警检测任务(独立DQC任务)
 * 对应需求: 3.7.1
 */
public class RuleAlertJob {
    public void run(String dt, SparkSession spark);
    private Dataset<Row> detectOfflineNodes(Dataset<Row> dwdDF);
    private Dataset<Row> detectPressureAbnormal(Dataset<Row> dwdDF);
    private Dataset<Row> detectRegionFaultRate(Dataset<Row> dwsDF);
    private void mergeAlertsAndWrite(List<Dataset<Row>> alerts, String dt);
}

6. 阶段P4:编码与单元测试(第4-8周,28天)

6.1 编码任务清单(按模块分解到函数粒度)

M01:数据模拟器(3天)
任务ID 函数/类名 负责人 工期 输入 输出 单元测试用例数
P4-M01-01 NodeConfigLoader.loadNodes() 中级开发 0.5天 nodes.conf List<Node> 3
P4-M01-02 SensorDataGenerator.generateData(Node) 中级开发 0.5天 Node对象 JSON字符串 5(含异常注入)
P4-M01-03 SensorDataGenerator.injectAnomaly() 中级开发 0.5天 正常值 异常值 4
P4-M01-04 KafkaProducerService.send(String) 中级开发 0.5天 JSON字符串 发送结果 3
P4-M01-05 PipeSensorSimulator.main() 中级开发 0.5天 --- 持续运行 2(集成)
P4-M01-06 M01单元测试编写 中级开发 0.5天 --- 测试报告 ---
M02:流式写入器(4天)
任务ID 函数/类名 负责人 工期 输入 输出 单元测试用例数
P4-M02-01 KafkaSourceReader.createStream() 高级开发A 0.5天 SparkSession DataFrame 2
P4-M02-02 JsonParser.parseAndExtractFields() 高级开发A 1天 JSON字符串DF 结构化DF 6
P4-M02-03 PartitionExtractor.extractDtHour() 高级开发A 0.5天 timestamp (dt, hour) 4
P4-M02-04 HdfsWriter.writeParquet() 高级开发A 1天 DataFrame, path StreamingQuery 3
P4-M02-05 CheckpointManager.configure() 高级开发A 0.5天 --- Checkpoint配置 2
P4-M02-06 PipeStreamingToHdfs.main() 高级开发A 0.5天 --- 持续运行的Streaming作业 2(集成)
M03:元数据管理器(2天)
任务ID 函数/类名 负责人 工期 输入 输出 单元测试用例数
P4-M03-01 TableDDL.createOdsTable() 高级开发B 0.5天 SparkSession 执行结果 2
P4-M03-02 TableDDL.createDwdTable() 高级开发B 0.5天 SparkSession 执行结果 2
P4-M03-03 TableDDL.createDwsTable() 高级开发B 0.5天 SparkSession 执行结果 2
P4-M03-04 PartitionManager.addPartition() 高级开发B 0.5天 table, dt, hour 执行结果 3
M04:ETL处理器(5天)
任务ID 函数/类名 负责人 工期 输入 输出 单元测试用例数
P4-M04-01 OdsToDwdJob.filterAbnormalData() 高级开发A 1天 DataFrame 清洗后DF 5
P4-M04-02 OdsToDwdJob.convertDataTypes() 高级开发A 0.5天 DataFrame 类型转换后DF 4
P4-M04-03 OdsToDwdJob.markFaultRecords() 高级开发A 1天 DataFrame 含fault标记DF 5
P4-M04-04 OdsToDwdJob.writeToDwd() 高级开发A 0.5天 DataFrame, dt 写入结果 2
P4-M04-05 OdsToDwdJob.run() 高级开发A 0.5天 dt, SparkSession 完整执行 2(集成)
P4-M04-06 DwdToDwsJob.aggregateByRegionAndHour() 高级开发A 1天 DataFrame 聚合后DF 4
P4-M04-07 DwdToDwsJob.writeToDws() 高级开发A 0.5天 DataFrame, dt 写入结果 2
M05:服务导出器(4天)
任务ID 函数/类名 负责人 工期 输入 输出 单元测试用例数
P4-M05-01 HBaseConnectionPool.getConnection() 高级开发B 0.5天 --- HBase Connection 2
P4-M05-02 HBaseExporter.buildRowKey() 高级开发B 0.5天 nodeId, dt, hour RowKey字符串 4
P4-M05-03 HBaseExporter.batchPut() 高级开发B 1天 List<Row>, Table 写入结果 3
P4-M05-04 HBaseExporter.exportDwdToHBase() 高级开发B 0.5天 DataFrame, dt 执行结果 2
P4-M05-05 ClickHouseExporter.buildInsertSQL() 高级开发B 0.5天 --- SQL模板 3
P4-M05-06 ClickHouseExporter.batchInsert() 高级开发B 1天 DataFrame, Connection 写入结果 3
M06:规则引擎(3天)
任务ID 函数/类名 负责人 工期 输入 输出 单元测试用例数
P4-M06-01 RuleAlertJob.detectOfflineNodes() 高级开发B 0.5天 DataFrame 预警DF 3
P4-M06-02 RuleAlertJob.detectPressureAbnormal() 高级开发B 0.5天 DataFrame 预警DF 3
P4-M06-03 RuleAlertJob.detectRegionFaultRate() 高级开发B 0.5天 DataFrame 预警DF 3
P4-M06-04 RuleAlertJob.mergeAlertsAndWrite() 高级开发B 0.5天 List<DF>, dt 写入结果 2
P4-M06-05 AlertNotifier.sendWebSocketAlert() 高级开发B 0.5天 Alert对象 推送结果 2
P4-M06-06 RuleAlertJob.run() 高级开发B 0.5天 dt, SparkSession 完整执行 2(集成)
M07:后端API(4天)
任务ID 函数/类名 负责人 工期 输入 输出 单元测试用例数
P4-M07-01 ClickHouseDataSource.getConnection() 高级开发A 0.5天 --- DataSource 2
P4-M07-02 HBaseDataSource.getConnection() 高级开发A 0.5天 --- Connection 2
P4-M07-03 DashboardController.getOverview() 高级开发A 0.5天 --- OverviewVO 3
P4-M07-04 DashboardController.getTrend() 高级开发A 0.5天 --- List<TrendVO> 3
P4-M07-05 NodeController.getNodeDetail() 高级开发A 0.5天 nodeId NodeDetailVO 4
P4-M07-06 NodeController.getNodeHistory() 高级开发A 0.5天 nodeId, hours List<HistoryPoint> 3
P4-M07-07 AlertController.getAlertList() 高级开发A 0.5天 page, size Page<AlertVO> 3
P4-M07-08 WebSocketAlertHandler.handleAlert() 高级开发A 0.5天 Alert对象 推送 2
M08:前端大屏(3天)
任务ID 功能/组件名 负责人 工期 输入 输出 单元测试用例数
P4-M08-01 PipeTopology 组件 中级开发 0.5天 nodes数据 拓扑图渲染 3
P4-M08-02 StatusPanel 组件 中级开发 0.5天 stats数据 统计面板 3
P4-M08-03 AlertList 组件 中级开发 0.5天 alerts数据 预警列表 3
P4-M08-04 TrendChart 组件 中级开发 0.5天 trend数据 趋势图 3
P4-M08-05 NodeDetailModal 组件 中级开发 0.5天 nodeId 详情弹窗 3
P4-M08-06 WebSocket客户端服务 中级开发 0.5天 --- 实时消息接收 2
M09:调度编排器(2天)
任务ID 函数/类名 负责人 工期 输入 输出 单元测试用例数
P4-M09-01 pipe_daily_pipeline.py DAG定义 高级开发A 1天 --- DAG文件 2
P4-M09-02 Airflow BashOperator任务配置 高级开发A 0.5天 --- 任务配置 2
P4-M09-03 任务依赖链配置 高级开发A 0.5天 --- 依赖图 2

6.2 单元测试覆盖率目标

模块 行覆盖率目标 分支覆盖率目标
M01 数据模拟器 ≥ 80% ≥ 70%
M02 流式写入器 ≥ 75% ≥ 65%
M03 元数据管理器 ≥ 70% ≥ 60%
M04 ETL处理器 ≥ 80% ≥ 70%
M05 服务导出器 ≥ 75% ≥ 65%
M06 规则引擎 ≥ 85% ≥ 75%
M07 后端API ≥ 80% ≥ 70%
M08 前端大屏 ≥ 70% ≥ 60%
M09 调度编排器 ≥ 60% ≥ 50%

6.3 编码阶段里程碑

里程碑 时间节点 验收标准
M4-1 第4周末 M01+M02完成编码,单元测试通过率100%
M4-2 第5周末 M03+M04完成编码,单元测试通过率100%
M4-3 第6周末 M05+M06完成编码,单元测试通过率100%
M4-4 第7周末 M07+M08完成编码,单元测试通过率100%
M4-5 第8周末 M09完成编码,全部模块联调通过

7. 阶段P5:集成测试(第9-10周,10天)

7.1 核心任务

任务ID 任务名称 负责人 工期 依赖 输出
P5-T01 测试环境搭建(完整集群部署) 高级开发A 1天 M4-5 测试环境就绪
P5-T02 端到端数据流测试(Kafka→HDFS→Hive) 测试 1.5天 P5-T01 测试报告
P5-T03 ETL全链路测试(ODS→DWD→DWS) 测试 1.5天 P5-T02 测试报告
P5-T04 服务导出测试(Hive→HBase/CK) 测试 1天 P5-T03 测试报告
P5-T05 规则引擎测试 测试 1天 P5-T04 测试报告
P5-T06 API接口测试(含WebSocket) 测试 1.5天 P5-T05 测试报告
P5-T07 前端大屏集成测试 测试 1天 P5-T06 测试报告
P5-T08 性能测试(模拟100节点、7天数据) 测试 1天 P5-T07 性能测试报告
P5-T09 故障恢复测试(组件重启/网络中断) 测试 0.5天 P5-T08 高可用测试报告
P5-T10 集成测试评审 全员 1天 P5-T09 评审纪要

7.2 端到端测试用例清单

用例ID 测试场景 预期结果 对应需求
E2E-01 模拟器运行1小时,Kafka接收数据 100个节点×3600条=360,000条消息 3.1.1
E2E-02 Spark Streaming消费Kafka写入HDFS HDFS生成12个(每小时)Parquet分区文件 3.3.1
E2E-03 Hive Metastore挂载ODS外部表 可查询ods_pipe_raw表,分区可识别 3.4.1
E2E-04 ODS→DWD清洗任务 DWD表数据量=ODS-异常标记数据 3.5.2
E2E-05 DWD→DWS聚合任务 DWS表产生24条/区域(按小时)汇总记录 3.5.3
E2E-06 DWD→HBase导出 RowKey {nodeId}_{dt}_{hour}可50ms内查询 3.6.1
E2E-07 DWS→ClickHouse导出 聚合查询<1秒返回 3.6.2
E2E-08 规则引擎离线检测 连续30分钟无数据的节点触发CRITICAL预警 3.7.1
E2E-09 规则引擎压力异常检测 压力<0.2或>0.8MPa触发WARNING预警 3.7.1
E2E-10 WebSocket预警推送 预警触发后<1秒推送至前端 3.8.2
E2E-11 大屏拓扑图渲染 100个节点全部正确显示,颜色标识符合状态 3.8.1
E2E-12 节点详情点查 点击节点弹出详情,<200ms加载完成 3.8.2

7.3 性能测试指标

指标 目标值 测试方法
数据采集吞吐量 ≥ 100条/秒 运行模拟器1小时,统计Kafka消费速率
流式写入延迟 ≤ 5分钟 检查HDFS文件生成时间与Kafka消息时间戳差值
ODS→DWD ETL耗时 ≤ 10分钟/天数据 跑1天数据(360,000条)计时
DWD→DWS ETL耗时 ≤ 10分钟/天数据 跑1天数据计时
大屏聚合查询响应 ≤ 1秒 并发10个请求,统计平均响应时间
节点详情点查响应 ≤ 50ms 并发50个请求,统计平均响应时间
WebSocket推送延迟 ≤ 100ms 规则触发到前端收到消息计时
大屏并发支持 ≥ 50用户 模拟50用户同时访问大屏

8. 阶段P6:部署与验收(第10-12周,8天)

8.1 核心任务

任务ID 任务名称 负责人 工期 依赖 输出
P6-T01 部署文档编写 高级开发A 1天 P5-T10 部署手册
P6-T02 用户手册编写 中级开发 1天 P5-T10 用户手册
P6-T03 运维手册编写(含监控、日志) 高级开发B 1天 P5-T10 运维手册
P6-T04 生产环境模拟部署(32GB环境) 高级开发A 1天 P6-T01~T03 部署完成
P6-T05 冒烟测试 测试 0.5天 P6-T04 冒烟测试报告
P6-T06 用户验收测试(UAT) 项目经理+测试 1.5天 P6-T05 UAT报告
P6-T07 验收评审会议 全员 0.5天 P6-T06 验收纪要
P6-T08 交付物打包与归档 项目经理 1天 P6-T07 交付物清单

8.2 部署文档大纲(输出物)

复制代码
部署手册 V1.0
├── 第1章 环境要求
│   ├── 1.1 硬件要求(最低/推荐)
│   ├── 1.2 操作系统要求(Ubuntu 22.04)
│   └── 1.3 网络要求
├── 第2章 组件安装与配置
│   ├── 2.1 JDK 21 安装
│   ├── 2.2 Hadoop 3.4.3 伪分布式配置
│   ├── 2.3 Hive 3.1.3 Metastore独立部署
│   ├── 2.4 Kafka 3.9.2 KRaft模式部署
│   ├── 2.5 Spark 3.5.9 部署
│   ├── 2.6 HBase 2.5.15 单机部署
│   ├── 2.7 ClickHouse 26.6 单机部署
│   ├── 2.8 Airflow 2.10.2 部署
│   └── 2.9 Spring Boot 4.1 应用部署
├── 第3章 数据库初始化
│   ├── 3.1 Hive表DDL执行
│   ├── 3.2 HBase表创建
│   └── 3.3 ClickHouse表创建
├── 第4章 应用部署
│   ├── 4.1 模拟器部署与启动
│   ├── 4.2 Streaming作业提交
│   ├── 4.3 Airflow DAG部署
│   ├── 4.4 Spring Boot API部署
│   └── 4.5 前端大屏部署(Nginx)
├── 第5章 验证测试
│   ├── 5.1 数据流验证
│   └── 5.2 大屏功能验证
└── 第6章 故障处理
    ├── 6.1 常见问题与解决方案
    └── 6.2 组件重启流程

8.3 32GB内存环境资源分配建议

组件 内存分配 说明
Hadoop HDFS (NameNode+DataNode) 4GB 伪分布式单进程
Hive Metastore 1GB 独立服务
Kafka (KRaft) 2GB 单节点
Spark (Driver+Executor) 8GB --executor-memory 4g
HBase (Master+RegionServer) 4GB 单机模式
ClickHouse 4GB 单机
Airflow (WebServer+Scheduler) 2GB ---
Spring Boot API 2GB JVM堆1.5GB
前端大屏 (Nginx) 0.5GB ---
操作系统预留 4.5GB ---
合计 32GB ---

9. 阶段P7:项目收尾(第12周,2天)

9.1 核心任务

任务ID 任务名称 负责人 工期 依赖 输出
P7-T01 项目总结报告编写 项目经理 1天 P6-T08 项目总结报告
P7-T02 经验教训文档 全员 0.5天 P7-T01 经验教训库
P7-T03 源码最终归档 高级开发A 0.5天 P7-T02 代码仓库Tag
P7-T04 项目关闭会议 全员 0.5天 P7-T03 会议纪要

10. 关键路径与里程碑总览

复制代码
Week 1    Week 2    Week 3    Week 4    Week 5    Week 6    Week 7    Week 8    Week 9    Week 10   Week 11   Week 12   Week 13
│         │         │         │         │         │         │         │         │         │         │         │         │
P0(3d)    P1(3d)    P2(5d)    P3(7d)    P4(28d)   P4(cont)  P4(cont)  P4(cont)  P5(10d)   P5(cont)  P6(8d)    P6(cont)  P7(2d)
│         │         │         │         │         │         │         │         │         │         │         │         │
▼         ▼         ▼         ▼         ▼         ▼         ▼         ▼         ▼         ▼         ▼         ▼         ▼
M0        M1        M2        M3        M4-1      M4-2      M4-3      M4-4 M4-5 M5        M5        M6        M6        M7

关键路径: P0 → P1 → P2 → P3 → P4(M01→M02→M03→M04→M05→M06→M07→M08→M09) → P5 → P6 → P7

里程碑定义

里程碑 时间(第X周末) 交付物
M0: 环境就绪 第1周末 开发环境、Git仓库、项目管理工具
M1: 需求冻结 第2周末 需求规格说明书终稿、API契约
M2: 架构基线 第3周末 架构设计说明书、数据库设计、接口设计
M3: 设计冻结 第4周末 详细设计说明书(含类图、时序图)
M4: 代码完成 第8周末 全部源码、单元测试报告(覆盖率达标)
M5: 测试通过 第10周末 集成测试报告、性能测试报告
M6: 项目交付 第12周末 部署文档、用户手册、验收报告
M7: 项目关闭 第12周末 项目总结报告、源码归档

11. 风险评估与应对

风险ID 风险描述 概率 影响 应对措施
R01 32GB内存不足以同时运行全部组件 ① 使用伪分布式/单机模式降低内存消耗;② 非核心组件(如Airflow)可暂不启动;③ 按需分配内存【参见第8.3节】
R02 Spark版本与Hive Metastore兼容性问题 ① 使用Spark 3.5.9 + Hive 3.1.3标准组合;② 提前做兼容性验证
R03 Kafka KRaft模式首次配置复杂 ① 提前准备KRaft配置文件模板;② 使用Kafka 3.9.2稳定版
R04 HBase单机模式RegionServer内存溢出 ① 限制HBase堆内存为2GB;② 减少Region数量
R05 前端大屏WebSocket连接稳定性 ① 使用标准WebSocket协议;② 实现自动重连机制
R06 ClickHouse 26.6新特性不稳定 ① 使用稳定特性,避免实验性功能;② 关注社区补丁

12. 文档输入输出清单

12.1 各阶段输入文档

阶段 输入文档 来源
P0 需求规格说明书(初稿) 用户/市场
P1 项目章程、技术选型决议 P0输出
P2 需求规格说明书(终稿)、接口契约 P1输出
P3 架构设计说明书、数据模型 P2输出
P4 详细设计说明书、类图、时序图 P3输出
P5 源码、单元测试报告 P4输出
P6 集成测试报告、性能测试报告 P5输出
P7 验收报告、用户手册 P6输出

12.2 各阶段输出文档

阶段 输出文档 接收方
P0 项目章程、技术选型决议书、开发环境配置文档 全员
P1 需求规格说明书(终稿)、API契约(OpenAPI 3.0)、产品Backlog 架构师+开发
P2 架构设计说明书、模块架构图、DDL脚本集、数据流设计文档 开发团队
P3 详细设计说明书(含类图、时序图、SQL设计) 开发团队
P4 全部源码、单元测试报告(覆盖率报告)、代码评审记录 测试团队
P5 集成测试报告、性能测试报告、高可用测试报告 项目经理
P6 部署手册、用户手册、运维手册、UAT报告、验收纪要 用户/运维
P7 项目总结报告、经验教训文档、源码归档(Git Tag) 组织资产库

13. 团队分工与职责

角色 人员 职责
项目经理 1人 项目计划制定、进度跟踪、风险管理、客户沟通、文档审核
技术部部长/架构师 1人(可兼任项目经理) 技术选型、架构设计、技术难点攻关、代码评审把关
高级开发A 1人 M02流式写入器、M04 ETL处理器、M07后端API、M09调度编排器
高级开发B 1人 M03元数据管理器、M05服务导出器、M06规则引擎
中级开发 1人 M01数据模拟器、M08前端大屏
测试工程师 1人 单元测试辅助、集成测试、性能测试、验收测试

14. 附录:核心函数开发清单(P4阶段详细参考)

A. M04 ETL处理器核心函数详细规格

函数签名 输入参数 返回值 核心逻辑 预估代码行数
filterAbnormalData(Dataset<Row> input) 原始DataFrame 清洗后DataFrame 过滤pressure<0或>1.5、velocity<0的记录 30
convertDataTypes(Dataset<Row> input) 原始DataFrame 类型转换后DF CAST字符串为Double/Timestamp 20
markFaultRecords(Dataset<Row> input) 清洗后DF 含fault标记DF CASE WHEN判定6种异常类型 50
aggregateByRegionAndHour(Dataset<Row> input) DWD DataFrame 聚合后DF GROUP BY region, hour + 7个聚合函数 40

B. M05服务导出器核心函数详细规格

函数签名 输入参数 返回值 核心逻辑 预估代码行数
buildRowKey(String nodeId, String dt, String hour) nodeId, dt, hour RowKey字符串 {nodeId}_{dt}_{hour} 5
batchPut(Iterator<Row> rows, Table table) 行迭代器, HBase Table void 每1000条批量Put 40
exportDwdToHBase(String dt, SparkSession spark) dt, SparkSession void 读取DWD→foreachPartition→batchPut 30

C. M06规则引擎核心函数详细规格

函数签名 输入参数 返回值 核心逻辑 预估代码行数
detectOfflineNodes(Dataset<Row> dwdDF) DWD DataFrame 预警DataFrame GROUP BY node_id HAVING MAX(ts) < now()-1800 25
detectPressureAbnormal(Dataset<Row> dwdDF) DWD DataFrame 预警DataFrame GROUP BY node_id HAVING AVG(pressure)<0.2 OR >0.8 25
detectRegionFaultRate(Dataset<Row> dwsDF) DWS DataFrame 预警DataFrame WHERE fault_rate > 0.05 15
mergeAlertsAndWrite(List<Dataset<Row>> alerts, String dt) 预警列表, dt void UNION ALL + INSERT INTO dwd_alert_events 25

D. M07后端API核心函数详细规格

函数签名 输入参数 返回值 核心逻辑 预估代码行数
getOverview() --- OverviewVO 查询ClickHouse获取统计数字 30
getNodeDetail(String nodeId) nodeId NodeDetailVO HBase RowKey点查 35
getTrend() --- List<TrendVO> 查询ClickHouse获取24小时趋势 30
handleAlert(Alert alert) Alert对象 void WebSocket推送 20

15. 总结

本计划以12周、5人团队 的规模,覆盖了从环境搭建到验收交付的完整软件开发生命周期。项目严格遵循需求规格说明书中定义的9大模块、100个管网节点、6条预警规则的技术要求【参见需求规格说明书第2.1节、第3.7.1节】。

核心原则

  1. 演示目的、生产架构:代码虽为演示,但部署方案和程序架构具备水平扩展能力
  2. 文档驱动:每个阶段都有明确的文档输入与输出
  3. 测试先行:单元测试覆盖率目标明确,集成测试用例完整
  4. 风险可控:32GB内存环境下的资源分配经过精确计算

项目成功标准

  • 全部9个模块按时交付
  • 单元测试行覆盖率≥70%(核心模块≥80%)
  • 全部12个端到端测试用例通过
  • 性能指标全部达标
  • 交付物完整(源码+部署手册+用户手册+运维手册)
相关推荐
廋到被风吹走1 小时前
【AI】当前沿模型撞上出口管制这堵墙
人工智能
AI应用苏大大1 小时前
AI项目落地架构缺陷:试点与推广体系脱节导致阶段卡死、无法规模化
人工智能
小顿的企业观察1 小时前
从人形机器人到AI销售智能体,AI正在重塑中企出海的底层逻辑
大数据·运维·人工智能·机器人·产品运营·制造
Lei活在当下1 小时前
从 Token 到 RAG:我这一周搭起的大模型基础认知地图
人工智能·langchain·openai
guslegend1 小时前
第1章:打语音模型的基础认知
人工智能·大模型
月光船幽幽2 小时前
Φ-MEU全息演算新范式
人工智能·科技·量子计算·拓扑学
QN1幻化引擎2 小时前
Dalin L — 我造了一门支持中文编程的语言,完整移植到 Rust 了
人工智能·算法·机器学习
龙智DevSecOps解决方案2 小时前
Perforce Intelligence 三大平台全新发布:当自动化升级为“自主化”,AI 时代的工作流该如何编排?
软件测试·人工智能·devops·perforce
珠***格2 小时前
XGF10-Z-4典型接入方式解析:10千伏专变用户380伏多点分布式光伏如何并网?
网络·人工智能·分布式·安全·边缘计算