Files
cobol-java-v3/docs/detailed-design/00-overview.md
T

9.8 KiB
Raw Blame History

V3系统总体设计

版本: v1.0 | 日期: 2026-08-22 本文档描述COBOL迁移验证平台V3的总体架构和模块设计。


一、系统概述

1.1 系统定位

COBOL迁移验证平台V3是一个AI辅助的自动化测试工具,用于验证COBOL程序向Java/Spark迁移的正确性。

1.2 核心能力

能力 说明
COBOL源码解析 自动解析DATA DIVISION和PROCEDURE DIVISION
测试数据生成 基于分支覆盖的测试数据自动生成
双管道验证 支持非DBflat file)和DBSQLite)两种验证模式
覆盖率分析 静态分支覆盖 + 动态gcov覆盖
AI辅助 LLM驱动的程序分类和测试策略生成

1.3 技术栈

组件 技术
语言 Python 3.12+
解析器 Lark (Earley parser)
COBOL编译 GnuCOBOL 3.2.0
DB管道 gixsql + SQLite
AI模型 DeepSeek
测试框架 pytest

二、系统架构

2.1 架构图

┌─────────────────────────────────────────────────────────────────┐
│                        V3系统架构                                │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌──────────────┐     ┌──────────────┐     ┌──────────────┐    │
│  │  CLI入口     │     │  Web界面     │     │  API接口     │    │
│  │  main.py     │     │  web/        │     │  __init__    │    │
│  └──────┬───────┘     └──────┬───────┘     └──────┬───────┘    │
│         │                    │                    │            │
│         └────────────────────┼────────────────────┘            │
│                              │                                 │
│                              ▼                                 │
│  ┌─────────────────────────────────────────────────────────┐  │
│  │                   编排层 (Orchestrator)                   │  │
│  │  orchestrator.py (非DB)    orchestrator_db.py (DB)      │  │
│  └─────────────────────────────────────────────────────────┘  │
│                              │                                 │
│         ┌────────────────────┼────────────────────┐            │
│         │                    │                    │            │
│         ▼                    ▼                    ▼            │
│  ┌──────────────┐     ┌──────────────┐     ┌──────────────┐    │
│  │  核心引擎    │     │  运行引擎    │     │  AI代理      │    │
│  │ cobol_testgen│     │  runners/    │     │  agents/     │    │
│  └──────────────┘     └──────────────┘     └──────────────┘    │
│         │                    │                    │            │
│         │                    │                    │            │
│         ▼                    ▼                    ▼            │
│  ┌──────────────┐     ┌──────────────┐     ┌──────────────┐    │
│  │  比对模块    │     │  报告模块    │     │  配置模块    │    │
│  │ comparator/  │     │  report/     │     │  config/     │    │
│  └──────────────┘     └──────────────┘     └──────────────┘    │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

2.2 分层架构

层级 模块 职责
L1 数据层 data/ 共享数据模型
L2 核心层 cobol_testgen/, config/ COBOL解析、配置管理
L3 业务层 hina/, agents/, comparator/ 分类、AI代理、比对
L4 编排层 orchestrator*, runners/ 流程编排、执行
L5 接口层 main.py, web/, __init__.py 用户接口

三、模块清单

3.1 核心模块

模块 文件数 行数 职责
cobol_testgen/ 22 ~8000 COBOL解析、测试数据生成
orchestrator_db.py 1 1334 DB管道6步编排
runners/ 8 ~600 编译运行引擎
hina/ 11 ~2000 HINA程序分类
agents/ 6 ~800 LLM代理
comparator/ 6 ~400 字段比对
config/ 5 ~300 配置管理
report/ 1 ~200 报告生成

3.2 模块依赖关系

models.py (零依赖)
    │
    ├── read.py (lark)
    ├── cond.py (stdlib)
    ├── core.py (cond)
    ├── design.py (models, cond, core)
    ├── coverage.py (models, cond)
    ├── output.py (file_io)
    ├── to_sql.py (stdlib)
    ├── runner.py (file_io)
    ├── flatfile.py (read, file_io)
    │
    └── __init__.py (所有上层模块)

四、数据流

4.1 非DB管道数据流

COBOL源码
    │
    ▼
read.py: preprocess() + parse_data_division()
    │
    ▼
core.py: build_branch_tree()
    │
    ▼
design.py: enum_paths() + generate_records()
    │
    ▼
output.py: output_json() + output_input_files()
    │
    ▼
runners/cobol_runner.py: compile() + run()
    │
    ▼
comparator/: compare_field()
    │
    ▼
report/generator.py: generate_report()

4.2 DB管道数据流

COBOL源码 (含EXEC SQL)
    │
    ▼
gixsql_runner.py: preprocess() + compile()
    │
    ▼
orchestrator_db.py: step2_generate_inputs()
    │
    ├── cobol_testgen: extract_structure + generate_data
    ├── to_sql.py: build_db_input()
    └── flatfile.py: write_all_files()
    │
    ▼
orchestrator_db.py: step3_run_cobol()
    │
    ▼
orchestrator_db.py: step4_extract_intermediate()
    │
    ▼
orchestrator_db.py: step5_run_java() (可选)
    │
    ▼
orchestrator_db.py: step6_verify()

五、接口设计

5.1 公开API

# cobol_testgen/__init__.py

def extract_structure(
    cobol_source: str,
    copybook_dirs: list[str] = None
) -> dict:
    """解析COBOL源码,返回结构信息"""
    pass

def generate_data(
    cobol_source: str,
    structure: dict,
    copybook_dirs: list[str] = None
) -> list[dict]:
    """生成分支覆盖测试数据"""
    pass

def main():
    """CLI入口"""
    pass

5.2 配置接口

# config/__init__.py

@dataclass
class Config:
    """全局配置"""
    project_name: str
    copybook_paths: list[str]
    dialect: str
    llm_model: str
    gcov_enabled: bool
    # ... 更多字段

六、错误处理

6.1 错误分类

类别 示例 处理策略
解析错误 COBOL语法不合法 抛出异常,返回错误信息
编译错误 cobc编译失败 记录日志,跳过该程序
运行错误 程序执行异常 捕获异常,标记失败
超时错误 执行超时 强制终止,记录超时

6.2 容错机制

  • 解析器超时pipeline_bridge 3秒超时回退
  • LLM失败:回退到规则引擎
  • gcov失败:跳过覆盖率收集
  • DB连接失败:重试或跳过

七、性能设计

7.1 性能指标

指标 目标
单程序解析 < 5秒
测试数据生成 < 30秒
编译运行 < 60秒
覆盖率报告 < 10秒

7.2 优化策略

  • 路径枚举O(N)线性算法替代O(2^N)
  • 并行执行:多场景gcov并行收集
  • 缓存机制LLM结果缓存
  • 增量补充:质量门循环最多4次

八、安全设计

8.1 输入验证

  • COBOL源码:长度限制、编码检查
  • 配置文件:YAML schema验证
  • 文件路径:路径遍历防护

8.2 资源限制

  • LLM调用:最大成本限制
  • 执行时间:超时强制终止
  • 内存使用:大文件分块处理

九、测试策略

9.1 测试层次

层次 覆盖率目标 工具
单元测试 ≥ 90% pytest
集成测试 ≥ 80% pytest
端到端测试 100%通过 自定义脚本

9.2 测试数据

  • 43个COBOL基准程序
  • 33+2种程序类型
  • 58个电信测试程序

十、部署设计

10.1 运行环境

组件 要求
OS Windows 10/11
Python 3.12+
GnuCOBOL 3.2.0
磁盘 ≥ 500MB

10.2 安装步骤

# 1. 安装Python依赖
pip install lark pathlib pyyaml

# 2. 安装GnuCOBOL
# 下载GC32-BDB-SP1,添加到PATH

# 3. 验证安装
python -c "from cobol_testgen import extract_structure; print('OK')"