The Design of Distributed, Dependable, Real-time Systems using a Functional Paradigm