Article Preview
Top1. Introduction
Scale is the new frontier (Northrop et al., 2006) As humanity goes online, it's becoming an extremely advanced, large-scale processing unit (Von Ahn, Blum, Hopper, & Langford, 2003). The complexity of the future real-world applications comes from variety of aspects such as the large number of components they contain, their distributed knowledge and control, their open and heterogeneous nature, their dynamic and uncertain work environments (Gasser, 2001; Serugendo, Gleizes, and Karageorgos, 2011; Gleizes, Camps, George, & Capera, 2008). Large-scale systems are becoming crucial for future computing applications because of the increased evolution of modern civilization and the forcing trend towards globalization, decentralization, international business competition, and cyber connectedness. That in turn would lead to an observable increase in the heterogeneity, openness, and complexity of modern software applications which have reached a point that imposes new demands on their development technologies and approaches. From the other hand and as scale changes everything (Easterbrook, 2007), new software engineering approaches are critically needed, where concepts such as decomposition, autonomy, modularity, and adaptivity, scalability, and many other quality attributes can be collectively combined in one application (Frei & Di Marzo Sergendo, 2011). Existing software development approaches and techniques can’t manage the complex interactions and emergent behaviors usually exist in complex systems where the interactions between system components may occur at unpredictable times, for unpredictable reasons, and between unpredictable components (Zhang & Zhang, 2004).
One of the promising software engineering paradigms is Multi-Agent Systems (MAS) (Wooldridge & Jennings, 1995; Lind, 2001), which currently represent a mainstream engineering approach for developing complex real-life applications. MAS have been adopted and used in a wide range of application domains such as traffic control, manufacturing, power systems, factory automation, e-commerce, healthcare, etc. They model a certain application as a number (few or more) of autonomous agents cooperatively interact with each other and reactively act upon their environment. The key properties of modern complex distributed applications are mainly related to quality attributes such as autonomy, adaptivity, robustness, flexibility, scalability and so on, that is why the MAS technology seems to be the adequate paradigm for engineering them because these properties are exactly the properties that have been agreed to characterize them (Weyns, Helleboogh, & Holvoet, 2009). However, despite their adequateness for developing highly distributed, large-scale, complex, and open applications, the agent-based approach is currently used with small or at most medium-scale (hundreds of agents) applications and using it with complex and large-scale applications comprise large numbers of agents is still limited (Wijngaards, Van Steen, & Brazier, 2001). The reason might be related to the limited mechanisms normally used for agents’ coordination and location. In other words, the currently adopted coordination and location mechanisms can’t support MAS with higher numbers of agents (thousands or millions) distributed at large distances.