3. System Scope and Context (MVP)¶
3.1 Business Context¶
PopUpSim MVP's Role:
PopUpSim MVP is a proof-of-concept desktop tool for simulating Pop-Up workshop operations during the DAC migration. The MVP validates the simulation approach with 4 priority use cases before building the full web-based version.
MVP Business Logic: 1. Developers configure scenarios using JSON/CSV files 2. MVP simulates retrofit workflow using SimPy discrete event simulation 3. Results exported to CSV/PNG for manual analysis 4. Validates simulation approach for full version development
C4Context
title Business Context - PopUpSim MVP
Person(developer, "Developer", "Creates scenarios, runs simulations, validates results")
Person(planner, "Workshop Planner", "Reviews results, provides feedback on simulation logic")
System(popupsim_mvp, "PopUpSim MVP", "Desktop simulation tool: file-based configuration, SimPy engine, Matplotlib output")
SystemDb_Ext(config_files, "Configuration Files", "JSON/CSV scenario definitions")
SystemDb(results_files, "Result Files", "CSV data + PNG charts")
Rel(developer, config_files, "Creates/edits")
Rel(developer, popupsim_mvp, "Runs simulation")
Rel(popupsim_mvp, config_files, "Reads configuration")
Rel(popupsim_mvp, results_files, "Writes results")
Rel(developer, results_files, "Analyzes")
Rel(planner, results_files, "Reviews for validation")
3.1.1 Communication Partners¶
| External Entity | Input to MVP | Output from MVP | Business Purpose |
|---|---|---|---|
| Developer | Scenario configurations, test data | Simulation results, KPI data | Develop and validate simulation logic |
| Workshop Planner | Requirements, feedback | Result analysis, throughput estimates | Validate simulation accuracy against real-world expectations |
| Configuration Files | Scenario definitions, workshop setup, train schedules | - | Define simulation parameters and input data |
| Result Files | - | CSV data, PNG charts, JSON logs | Store simulation results for analysis |
3.2 Technical Context¶
C4Context
title Technical Context - PopUpSim MVP
Person(users, "Users", "Developers/Planners")
System_Boundary(mvp_boundary, "PopUpSim MVP") {
Container(main, "Main Application", "Python Script", "Entry point, orchestrates simulation")
Container(config_reader, "Configuration Context", "Python + Pydantic", "Parses and validates JSON/CSV")
Container(sim_engine, "Workshop Operations Context", "Python + SimPy", "Discrete event simulation")
Container(output_gen, "Analysis & Reporting Context", "Python + Matplotlib", "Creates CSV and PNG outputs")
}
SystemDb_Ext(config_files, "Configuration Files", "JSON/CSV on Local FS")
SystemDb(results_storage, "Results Storage", "Local File System")
Rel(users, main, "Executes", "Command line")
Rel(main, config_reader, "Loads configuration")
Rel(config_reader, config_files, "File I/O", "Read")
Rel(main, sim_engine, "Runs simulation")
Rel(sim_engine, output_gen, "Passes results")
Rel(output_gen, results_storage, "File I/O", "Write")
Rel(users, results_storage, "Analyzes", "Manual review")
3.2.1 Technical Channels¶
| Channel | Transmission Media | Protocol/Format | Direction | Description |
|---|---|---|---|---|
| Configuration Input | Local File System | File I/O (JSON/CSV) | Input | Scenario configuration files |
| Results Output | Local File System | File I/O (CSV/PNG/JSON) | Output | Simulation results and visualizations |
| Internal Communication | Process Memory | Python function calls | Internal | Direct method invocation between components |
3.2.2 Security and Quality Requirements¶
Local Deployment Security: - Input validation with Pydantic schema validation - File system permissions using standard OS user permissions - No network access required (fully offline)
Operational Considerations: - Error logging to console and log files - Progress indicators for simulation execution - Input file validation before simulation starts
3.3 Data Flow Context¶
3.3.1 Input Data Flow¶
flowchart LR
subgraph "Input Sources"
manual["Manual Files<br/>• JSON editing<br/>• CSV creation"]
templates["Templates<br/>• Example configs<br/>• Test scenarios"]
end
subgraph "Processing"
validation["Input Validation<br/>• Pydantic schemas<br/>• Business rules"]
parsing["Data Parsing<br/>• JSON/CSV processing<br/>• Type conversion"]
end
subgraph "Configuration Data"
scenario["Scenario Parameters"]
workshop["Workshop Configuration"]
schedule["Train Schedules"]
routes["Routes"]
topology["Track Infrastructure"]
end
subgraph "Simulation"
simulation["SimPy Simulation<br/>• Event processing<br/>• State management"]
end
manual --> validation
templates --> validation
validation --> parsing
parsing --> scenario
parsing --> workshop
parsing --> schedule
parsing --> routes
parsing --> topology
topology --> routes
routes --> schedule
topology --> workshop
scenario --> simulation
workshop --> simulation
schedule --> simulation
routes --> simulation
topology --> simulation
classDef input fill:#e3f2fd
classDef process fill:#fff3e0
classDef data fill:#f3e5f5
classDef sim fill:#e8f5e8
class manual,templates input
class validation,parsing process
class scenario,workshop,schedule data
class simulation sim
3.3.2 Output Data Flow¶
flowchart TB
subgraph "Simulation Execution"
sim_engine["Simulation Engine<br/>• SimPy event simulation<br/>• Generates events during runtime"]
analysis_engine["Analysis Engine<br/>• Processes events in real-time<br/>• Calculates KPIs during simulation"]
end
subgraph "Output Processing"
formatting["Output Formatting<br/>• CSV export<br/>• Chart generation"]
end
sim_engine --> analysis_engine
analysis_engine --> formatting
subgraph "File Output"
files["Result Files<br/>• CSV (KPIs)<br/>• PNG (Charts)<br/>• JSON (Logs)"]
end
formatting --> files
classDef sim fill:#e8f5e8
classDef process fill:#fff3e0
classDef output fill:#f3e5f5
class sim_engine,analysis_engine sim
class formatting process
class files output
3.4 Critical Dependencies Analysis¶
3.4.1 Current Critical Dependencies¶
| Dependency | Criticality | Failure Impact | Mitigation Strategy |
|---|---|---|---|
| Python Runtime (3.13+) | High | System inoperable | Version pinning, startup checks |
| SimPy Library | High | Simulation engine fails | Version pinning, dependency monitoring |
| Configuration Files | High | Cannot start simulation | Validation, example files, clear error messages |
| File System Access | High | Cannot save/load data | Permission checks, error handling |
| Matplotlib | Medium | No visualizations | CSV output still available |
| Pandas | Medium | Slower CSV processing | Native Python CSV fallback |