Architectural Design of Open Distributed Systems by