Scale problems for centralized services can be formally analyzed using queue theory, with some simplistic assumptions. At the conceptual level, a centralized service can be modeled as the simple queue system shown in Figure 2: requests are sent to the service where they are placed in the queue until further notice. As soon as the process can process a next request, it retrieves it from the queue, does its job, and generates a response. We largely follow Menasce and Almeida  to explain the performance of a centralized service. In distributed systems, transactions are often conceived as a number of sub-transactions that together form a nested transaction, as shown in Figure 9. 3: Responding more easily to sensory input, but also to explicit user input, is easier said than done. What a ubiquitous computer system needs to do is consider the context in which interactions take place. Contextual awareness also distinguishes ubiquitous computer systems from the more traditional systems we discussed earlier and is described by Dey and Abowd  as “any information that can be used to characterize the situation of entities (whether it is a person, place, or object) that are considered relevant to the interaction between a user and an application. including the user and the app itself. In practice, context is often characterized by place, identity, time and activity: where, who, when and what. A system must have the (sensory) input necessary to determine one or more of these types of context.
Geographic scalability A geographically scalable system is one where users and resources can be far away, but the fact that communication delays can be significant is hardly noticed. Modern distributed systems can and often will consist of all kinds of nodes, from very large, high-performance computers to small computers or even small devices. A fundamental principle is that nodes can act independently of each other, when it should be obvious that if they ignore each other, there is no point in putting them in the same distributed system. In practice, nodes are programmed in such a way as to achieve common goals achieved through the exchange of messages between them. A node responds to incoming messages that are then processed and lead to further communication by Message Passing. Communication A common communication service is called Remote Procedure Call (RPC). An RPC service allows an application to call a function that is implemented and run on a remote computer as if it were available locally. .