Over the past decade, the target environment for software development has complexified dramatically. Software systems must now operate robustly in a dynamic, global, networked environment comprised of distributed diverse technologies, where frequent change is inevitable. There is increasing demand for flexibility and ease of use. Multiagent systems (Wooldridge, 2002) are a potential successor to object-oriented systems, better able to address the new demands on software. In multi-agent systems, heterogeneous autonomous entities (i.e., agents) interact to achieve system goals. In addition to being a technological building block, an agent, also known as an actor, is an important modeling abstraction that can be used at different stages of software engineering. The authors while teaching agent-related subjects and interacting with industry have observed that the agent serves as a powerful anthropomorphic notion readily understood by novices. It is easy to explain to even a nontechnical person that one or more software agents are going to perform a set of tasks on your behalf. We define software engineering as a discipline applied by teams to produce high-quality, large-scale, cost-effective software that satisfies the users’ needs and can be maintained over time. Methods and processes are emerging to place software development on a parallel with other engineering endeavors. Software engineering courses give increasing focus to teaching students how to analyze software designs, emphasizing imbuing software with quality attributes such as performance, correctness, scalability, and security. Agent-oriented software engineering (AOSE) (Ciancarini & Wooldridge, 2001) has become an active research area. Agent-oriented methodologies, such as Tropos (Bresciani, Perini, Giorgini, Giunchiglia, & Mylopoulos, 2004), ROADMAP (Juan & Sterling, 2003), and RAP/AOR (Taveter & Wagner, 2005), use the notion of agent throughout the software lifecycle from analyzing the problem domain to maintaining the functional software system. An agent-oriented approach can be useful even when the resulting system neither consists of nor includes software agents. Some other proposed AOSE methodologies are Gaia (Wooldridge, Jennings, & Kinny, 2000), MESSAGE (Garijo, Gomez-Sanz, & Massonet, 2005), TAO (Silva & Lucena, 2004), and Prometheus (Padgham & Winikoff, 2004). Although none of the AOSE methodologies are yet widely accepted, AOSE is a promising area. The recent book by Henderson-Sellers & Giorgini (2005) contains a good overview of currently available agent-oriented methodologies. AOSE approaches loosely fall into one of two categories. One approach adds agent extensions to an existing objectoriented notation. The prototypical example is Agent UML (Odell, Van Dyke, & Bauer, 2001). The alternate approach builds a custom software methodology around agent concepts such as roles. Gaia (Wooldridge et al., 2000) was the pioneering example. In this article, we address the new paradigm of AOSE for developing both agent-based and traditional software systems.
Software engineering deals with sociotechnical systems. Sommerville (2004) defines a sociotechnical system as one that includes hardware and software, has defined operational processes, and offers an interface, implemented in software, to human users. Software engineering addresses developing software components of sociotechnical systems. Software engineering is therefore critical for the successful development of complex, computer-based, sociotechnical systems because a software engineer should have a broad awareness of how that software interacts with other hardware and software systems and its intended use, not only the software itself (Sommerville, 2004).
A conventional software engineering process represented in Figure 1 contains the stages of requirements engineering, design, implementation, testing, and maintenance.
A software engineering process
Key Terms in this Chapter
Agent-Oriented Software Engineering: A new paradigm within software engineering involving novel analysis notions, the most fundamental ones of them being agent (actor), role, goal, and activity, as well as new implementation units—software agents.
Multi-Agent System (MAS): A new paradigm in distributed computing where the system characteristics are: (1) no global system control; (2) decentralized information; and (3) each participating agent has incomplete information and limited capabilities.
Role: A coherent set of functional responsibilities specifying what the agent playing the role is expected to do in the organization within some specialized context or domain of endeavor: with respect to both other agents and the organization itself.
Agent: An autonomous entity situated in an environment that is capable of perceiving the environment and acting on the environment.
Action: An atomic and instantaneous unit of work done by an agent.
Software Engineering Process: A set of activities whose purpose is development or evolution of a software system. Generally consists of the stages of requirements engineering, design, implementation, testing, and maintenance.
Goal: A condition or state of affairs in the world that the agent wants to bring about.
Quality Goal: A goal which constrains or documents how a regular goal should be achieved by an agent.
Software Engineering: A discipline applied by teams to produce high-quality, large-scale, cost-effective software that satisfies the users’ needs and can be maintained over time.
Action Event Type: The type of an event created through the action of an agent, such as starting a machine, sending a message to another agent, or providing another agent with a commodity.
Activity Type: A prototypical job function in an organization that specifies a particular “way of doing” by performing elementary epistemic, physical, and/or communicative actions.
Reaction Rule: A rule that specifies behavior of an agent by determining a triggering event to which the agent must react, a condition that the agent must check in its internal knowledge base and one or more actions to be performed by the agent.