Abstract
The history of software engineering in general and programming languages in particular is marked by the introduction of high-level engineering concepts, abstracting away from the rather low-level principles that are used by the machine on which the software is executed. Such high-level abstractions allow us to focus only on a
... read more
few essential concepts at the same time by factoring out details. The abstractions by which we engineer complex software systems are more than often inspired by metaphorical concepts by which we understand and structure the complex world around us. A well-known example is the concept of folder for archiving our files. Introducing the concepts of agent as the metaphorical counterpart of humans and multi-agent system as the metaphorical counterpart of a society, the field of agent-oriented software engineering brings the use of abstractions in programming to an even higher level. Agents are autonomous entities that are typically programmed in terms of beliefs modeling the information they have about their world, goals denoting the situations they desire to establish and plans describing how to reach their goals. Agents participating in a multi-agent system may have been engineered by different parties with differing design objectives, implying that agents may encounter and interact with agents having conflicting goals. An illustrative example is an online marketplace on which agents interact with (unknown) parties to sell and buy their goods. Because little can be assumed about the behavior the interacting agents exhibit and nobody directly wrote the whole program encompassing the multi-agent system it is hard to predict the emerging behavior of the system as a whole. To increase the likelihood of the design objectives of the system being met, coordination media are put in place to regulate the individual agents' behavior. Some of these media are based on constructs that resemble physical every-day structures, such as a tube's entrance gate and traffic lights. Yet others use more abstract concepts we use for organizing our society, such as norms that should be followed and roles that agents can play. Getting back to the online marketplace example, agents play the role of seller and buyer, and are expected to abide by certain norms, e.g. paying the price agreed within a certain time. In this thesis we will focus on organization-oriented coordination media. In this thesis we show that research on individual agents progressed rather independently from research on agent organizations, leaving a gap between agent-oriented and organization-oriented programming. We identify what we consider the root causes underlying this gap and develop an organization-oriented programming language whose constructs accord better with the key concepts and characteristics associated with agents. Constructs for programming roles, norms and constructs for changing the norms at runtime will be investigated in particular. To understand what our programming language can (or cannot) offer, a precise description of its meaning (semantics) is indispensable. For example, to use an obligation properly, we need to know exactly when it is fulfilled or violated, and when sanctions will be imposed. Therefore, in this thesis, we formally describe the semantics of the programming constructs in a mathematically rigorous manner.
show less