Real-time monitoring & plant orchestration for water treatment
Event-driven SCADA prototype. Monitors process parameters across the treatment line, manages recipes and batches, raises configurable alarms, tracks maintenance tickets, and computes OEE in real time.
Core capabilities
Real-time monitoring
Live trend graphs of all process parameters. Sensors stream readings, dashboard updates via observer pattern only on significant change.
Configurable alarms
Strategy pattern selects alarm logic at runtime: fixed threshold, rate-of-change, or state-based. Bound to active recipe.
Maintenance tickets
Operators raise tickets, engineering resolves. Auto-generated on faults. Full audit log for compliance.
Recipe & batch control
Each recipe binds setpoints and alarm rules. Batches run on a process line; manager schedules and aborts.
OEE & KPI snapshots
Computes Availability × Performance × Quality per batch and per line. Periodic snapshots persisted for reporting.
Role-based access
RBAC with 11 permissions across 4 roles. Plant manager unrestricted, operator scoped to view + setpoint changes.
Out of scope · v0.1
Hardware integration
All sensor data is simulated. No PLC/OPC-UA driver in this iteration.
Predictive maintenance
Maintenance is reactive: triggered by tickets or fault states. No ML-based prediction.
MES / ERP integration
Production batches are mocked; no upstream job ingestion from external systems.
Plant Dashboard
Real-time view of the active batch. KPIs refresh every second; sensor charts stream simulated readings; alarm feed driven by the rule engine. Selected unit: Filtration Unit.
› FLOW RATE · m³/h
› pH · TURBIDITY
› ACTIVE BATCH · B-2026-051
Plant Topology
Two ProcessLines: MAIN_TREATMENT (intake → distribution) and SLUDGE_HANDLING (recovers solids from sedimentation/filtration). Each ProcessUnit owns its sensors and exposes a state machine: IDLE / RUNNING / FAULT / MAINTENANCE / OFFLINE.
System Architecture
Layered, event-driven architecture. Sensors push readings into the bus; the AlarmEngine and Dashboard subscribe via Observer; AlarmRule strategies are swapped at runtime per active recipe.
Design patterns
Strategy · AlarmRule
Three concrete rules — ThresholdAlarmRule, RateOfChangeAlarmRule, StateBasedRule — all share evaluate(ctx). The active Recipe selects which set is bound; the AlarmEngine stays unchanged.
Observer · Sensor → Engine/UI
Sensors implement Subject; Dashboard and AlarmEngine implement Observer. Push-based updates only on significant change — no polling, lower DB write load.
Factory · SensorFactory
buildFor(unit) instantiates the right Sensor subset for each ProcessUnit subclass — keeps unit construction declarative.
State · ProcessUnit
Each unit transitions across UnitState: IDLE → RUNNING → FAULT/MAINTENANCE → OFFLINE. State changes emit DomainEvents picked up by AuditLog and AlarmEngine.
Domain Model
UML class diagram organised in functional packages. Each box shows attributes (- private) and operations (+ public). External refs link to other packages.
› IDENTITY & ACCESS
› SENSORS & DATA
› ALARM MANAGEMENT
› PLANT TOPOLOGY
› PRODUCTION
› KPI & MAINTENANCE
Alarms & Maintenance
All triggered alarms over the current shift, plus active maintenance tickets. Filters apply client-side; severity and ticket status are colour-coded.
Maintenance tickets
Roadmap & Team
Three-month delivery plan aligned with SE4A guidelines: requirements analysis → design → implementation. Each milestone maps to a deliverable.
Project proposal · approved
1-page scope: SCADA for water treatment, OEE/KPI focus, simulated I/O. Roles, core functions, out-of-scope and design patterns identified.
Deliverable 1 · RASD
Requirements Analysis and Specification Document. Domain model (UML), scenarios, functional and non-functional requirements, FSMs for unit lifecycle.
Deliverable 2 · Design Document
Component, class and runtime views. Selected styles: layered + event-driven. Patterns: Strategy, Observer, Factory, State. Requirements traceability matrix.
Deliverable 3 · Implementation
Working prototype with simulated sensors, alarm engine, recipe/batch flow and dashboard. Stability over feature breadth — viable prototype, not market-ready.
Final discussion
Presentation of the three artifacts — assessment of precision, conceptual soundness, completeness, consistency, and presentation quality.
The team
Two students, two instructors. The team behind the requirements analysis, design, and implementation of HydroCore OS.
<img> tags with empty src — fallback to initials. Add an image URL to each src attribute to swap in the real photo.