Open systems design using agent interactions
As software requirements grow increasingly complex, the need to connect to and re-use existing, tested software, grows with it. Open systems, such as the Internet, aid this process by connecting together software services provided by a range of organisations, and the distributed nature of the system allows the services to be regularly updated and improved. Applications can be deployed within the open systems that opportunistically attempt to make use of the best functionality available at any one time. Agent-based systems have been proposed as an ideal way to implement such applications, due to their flexibility and distributed control. However, a balance must be kept between acting opportunistically and ensuring that each application operates to the standards demanded by the application requirements. Determining whether an application will perform to its requirements necessitates justifying the design decisions made in creating it. Our goal is to provide application developers with the means to create justified designs for opportunistic applications. The main contribution of this thesis is a software engineering methodology, agent interaction analysis, based on a set of independently valuable techniques we have developed. The first of these is a novel approach to modelling applications as being instantiated by a set of agent interactions, allowing such applications to be described with minimal restrictions on their implemented structure. Second, we provide a technique, based on design patterns, for comparing mechanisms for instantiating parts of multi-agent system. Finally, we provide an approach to more detailed analysis and comparison of coordination mechanisms.