Ramisali007/healthbridge-sre-analysis

GitHub: Ramisali007/healthbridge-sre-analysis

一套面向遗留 Java 医院管理系统的软件重建项目,整合了 SonarQube 静态分析、数据库模式规范化、数据异味识别和 Prisma ORM 驱动的 ETL 迁移全流程。

Stars: 0 | Forks: 0

# SRE 期末项目 — 重建传统医院管理系统 **课程:** 软件重建 (BSSE-8B) **作者:** Ramis Ali (22F-3703) & Kamil Mohsin (22F-3713) ## 项目概述 本项目将完整的软件重建流程应用于: 1. **一个 Java 项目** (ZainAftab-dev/hospital-management-system) 用于代码分析 (A–D 部分) 2. **传统的 HealthBridge Hospital schema** 用于数据库重建 (E–G 部分) ## 仓库结构 ``` SRE_FINAL_PROJECT/ ├── java-project/ # Cloned HMS Java project ├── sql-scripts/ │ ├── 01_legacy_schema.sql # Legacy schema + sample data │ ├── 02_normalised_schema.sql # Normalised tables (3NF) │ └── 03_refactoring_scripts.sql # Five refactoring operations ├── prisma/ │ ├── schema.prisma # Prisma ORM schema definition │ └── .env # Database connection string ├── migration/ │ ├── migration_etl.py # Python ETL script │ └── legacy_appointments.csv # Sample legacy CSV data ├── sonar-project.properties # SonarQube scanner config ├── docs/ # Report and screenshots └── README.md # This file ``` ## 设置说明 ### 1. 启动 SonarQube (Docker) ``` # 拉取并运行 SonarQube Community Edition docker run -d --name sonarqube -p 9000:9000 sonarqube:community # 等待约 60 秒,然后访问 http://localhost:9000 # 默认凭据:admin / admin ``` ### 2. 运行 SonarScanner ``` # 导航到 Java 项目目录 cd java-project # 将 sonar-project.properties 复制到项目根目录 cp ../sonar-project.properties . # 运行 SonarScanner(必须已安装并位于 PATH 中) sonar-scanner ``` ### 3. 加载医院传统 Schema (MySQL) ``` # 登录 MySQL mysql -u root -p # 创建数据库 CREATE DATABASE healthbridge; USE healthbridge; # 加载 legacy schema source sql-scripts/01_legacy_schema.sql; # 加载 normalised schema source sql-scripts/02_normalised_schema.sql; # 运行 refactoring scripts source sql-scripts/03_refactoring_scripts.sql; ``` ### 4. 设置 Prisma ``` # 安装 Prisma npm install prisma --save-dev # 初始化 Prisma npx prisma init # 从 prisma/ 目录复制 schema.prisma # 使用你的数据库 URL 更新 .env # 运行 migrations npx prisma migrate dev --name init # 生成 Prisma Client npx prisma generate ``` ### 5. 运行迁移脚本 ``` # 安装 Python 依赖 pip install mysql-connector-python # 运行 ETL 迁移 cd migration python migration_etl.py ``` ### 6. 迁移后验证 ``` -- V1: Row count SELECT COUNT(*) AS migrated_rows FROM appointments; -- V2: No NULL dates SELECT COUNT(*) AS null_dates FROM appointments WHERE appt_datetime IS NULL; -- V3: Valid statuses only SELECT DISTINCT status FROM appointments; -- V4: No orphan appointments SELECT COUNT(*) AS orphans FROM appointments a LEFT JOIN patients p ON a.patient_id = p.patient_id WHERE p.patient_id IS NULL; ``` ## 使用工具 | 工具 | 版本 | 用途 | |------|---------|---------| | Docker | 24.x+ | 托管 SonarQube 容器 | | SonarQube | 10.x Community | 静态分析与指标度量 | | SonarScanner | 5.x | 将项目提交至 SonarQube | | MySQL | 8.0+ | 传统医院数据库 | | Python | 3.10+ | 迁移 ETL 脚本 | | Prisma | 5.x | 用于数据库任务的 ORM | | Draw.io | Online | 依赖关系与 CFG 图 | | Python Tutor | Online | 单步执行跟踪 | | AST Explorer | Online | 抽象语法树检查 | ## 被分析的 Java 项目 **仓库:** https://github.com/ZainAftab-dev/hospital-management-system **语言:** Java 8+ (100% Java) **架构:** Swing GUI + 基于文件的 DAO + 服务层 **总类数:** 25+ **代码行数:** ~4,500+ ## 许可证 本项目仅供学术用途 — 软件重建课程,BSSE-8B。
标签:Docker, ETL迁移, Java代码分析, JS文件枚举, MITM代理, Prisma ORM, Python, SonarQube, SQL脚本, 代码度量, 代码异味检测, 代码质量评估, 依赖耦合, 医院管理系统, 域名枚举, 多线程, 安全防御评估, 数据库重构, 数据异味识别, 数据清洗, 无后门, 架构优化, 模式规范化, 请求拦截, 软件再工程, 软件工程课程设计, 逆向工具, 遗留数据库, 遗留系统重构, 错误基检测, 静态代码分析