A Simulation-Based Architecture for Smart Cyber-Physical Systems
design patterns : elements of reusable object - oriented software .