Distributed software systems are more complex than centralized software systems that run on a single computer. This complexity of distributed software systems arises because,
• It is practically impossible to have a top-down model of control of these systems.
• The nodes in the system that deliver functionality are often independent systems with no single authority in charge of them.
• The network connecting these nodes is a separately managed system.
• It is a complex system in its own right and cannot be controlled by the owners of systems using the network.
• There is therefore an inherent unpredictability in the operation of distributed systems that has to be taken into account by the system designer.