<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">ReSeagent: A Refactoring Tool for Plan Level Refactoring in MAS Development</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Ali</forename><surname>Murat</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Department Of Computer Engineering</orgName>
								<orgName type="institution">Ege University</orgName>
								<address>
									<postCode>35100</postCode>
									<settlement>Bornova, Izmir</settlement>
									<country key="TR">Turkey</country>
								</address>
							</affiliation>
						</author>
						<author role="corresp">
							<persName><forename type="first">Oguz</forename><surname>Dikenelli</surname></persName>
							<email>oguz.dikenelli@ege.edu.tr</email>
							<affiliation key="aff0">
								<orgName type="department">Department Of Computer Engineering</orgName>
								<orgName type="institution">Ege University</orgName>
								<address>
									<postCode>35100</postCode>
									<settlement>Bornova, Izmir</settlement>
									<country key="TR">Turkey</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">ReSeagent: A Refactoring Tool for Plan Level Refactoring in MAS Development</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">A32AD1D1F6EF2BC59DE8E150966031DF</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-25T05:50+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>The need for XP-like agile approaches that facilitate flexible evolutionary development has been widely acknowledged in the AOSE area. Such approaches improve acceptability of agent-technology by the industry. Evolutionary development of multi agent systems-MASs can only be applied successfully, if designs of the MASs being developed are improved throughout the development process.In our previous work, we have defined a refactoring approach that makes evolutionary MAS development possible. In this paper, we mainly aim to identify a development approach for MAS refactoring tools. In order to discuss this approach, we developed a refactoring tool called ReSeagent on the Seagent framework. Although the ReSeagent tool supports plan level refactoring patterns that are to be manually applied by the developers, ideas used in the implementation of this tool are generic ideas that provide a base for different refactoring types and development artifacts.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>I. INTRODUCTION</head><p>Based on the experiences on agent-based system development, AOSE research community has realized that it is almost impossible to develop complex systems like multi agent systems -MAS in a sequential manner <ref type="bibr" target="#b32">[33]</ref>, <ref type="bibr" target="#b6">[7]</ref>. The solution is the iterative approach which has been accepted as one of the best practices by software development community and integrated to all recent software development methodologies such as Rational Unified Process -RUP <ref type="bibr" target="#b25">[26]</ref> and Extreme Programming -XP <ref type="bibr" target="#b2">[3]</ref>.</p><p>Managing the continuous evolution of software architecture and related design is one of the key issues in iterative development. XP introduces two critical practices to manage the evolution of software architectures: test driven development <ref type="bibr" target="#b20">[21]</ref> and refactoring <ref type="bibr" target="#b17">[18]</ref>.</p><p>Test driven development produces test code for each class developed during iterations. This test code provides a protection shield against the flaws that can occur as a result of changes made on the working code by guaranteeing the functional accuracy of this code. The other best practice refactoring defines a process for improving the structure of the software system without altering the external behavior.</p><p>An iterative and incremental development life-cycle approach is quite appropriate for developing large scale distributed and complex systems such as MASs. XP-like agile processes, that introduce light-weight practices for iterative and incremental development in a controllable way, are needed to improve acceptability of the agent-technology by the industry <ref type="bibr" target="#b6">[7]</ref>, <ref type="bibr" target="#b32">[33]</ref>. However, traditional testing and refactoring approaches and their supporting tools cannot be re-used directly in MAS development, since MASs are built using different abstractions and techniques. So we need to re-define these practices for MAS development.</p><p>In <ref type="bibr" target="#b27">[28]</ref>, we have proposed a refactoring approach that makes evolutionary MAS development possible. This refactoring approach follows the route of traditional refactoring and provides some new refactoring patterns for MAS development. The proposed approach introduces some common problems called "bad smells" experienced during the development of MAS systems (such as duplicated behaviour structure and big plan) and maintenance strategies called "refactoring patterns" to overcome these bad smells. Each of the refactoring patterns defined in this proposed approach focuses on overcoming one or more than one bad smell(s) encountered during MAS development.</p><p>In this paper, we aim to introduce a basic development approach to produce MAS refactoring tools Then, we implement a refactoring tool called as ReSeagent on Seagent MAS development framework <ref type="bibr" target="#b13">[14]</ref>, <ref type="bibr" target="#b14">[15]</ref> by using the proposed approach. This tool supports refactoring on agent plans supported by almost all MAS development methodologies such as Passi <ref type="bibr" target="#b9">[10]</ref>, Tropos <ref type="bibr" target="#b4">[5]</ref> and MaSe <ref type="bibr" target="#b12">[13]</ref>. The tool can be used manually by developers during MAS development activities. ReSeagent focuses on refactoring Seagent plans whose meta model is defined clearly in Seagent. However, software architecture of the tool is generic and it can be used for other planning systems whose meta-models are explicitly defined or other MAS design artifacts such as role, goal and protocols.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>II. RELATED WORKS</head><p>In the literature, there are some pioneering works which try to apply agile practices to MAS development.</p><p>Knublauch <ref type="bibr" target="#b19">[20]</ref> used practices of extreme programming -XP <ref type="bibr" target="#b2">[3]</ref>, which is the one of the most known agile development processes used for MAS development. Although, this work proves the effectiveness of XP practices in terms of MAS development, refactoring is not explained in detail. Since the agent development framework and process meta-model, which are used during development, are very simple, refactoring operations on agents seem as very simple processes and refactoring practice is applied on agents. However, an agent that is developed by using a realistic development framework can play many roles in MAS and those roles have many goals, responsibilities and abilities. So, we believe that agents are not .</p><p>In our previous work,</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>In our previous work,</head><p>small; on the contrary they are too big entities for testing and refactoring.</p><p>In another important work has been introduced by Chella et. al. <ref type="bibr" target="#b7">[8]</ref>, well known Passi methodology is transformed to Agile Passi. The testing framework developed by the Agile Passi research team provides an automated testing approach for testing multi-agent systems <ref type="bibr" target="#b5">[6]</ref>, <ref type="bibr" target="#b10">[11]</ref>. Agile Passi approach does not introduce an iterative or evolutionary style for MAS development. Therefore, a refactoring approach that makes agile MAS development possible is not introduced in this work.</p><p>In <ref type="bibr" target="#b8">[9]</ref>, an agile methodology for MAS development is introduced. This methodology is a generic methodology based on the practices such as test driven development and refactoring that come from the agile approaches. The process of SADAAM consists of four key phases: design, test driven implementation, release &amp; review and refactor &amp; enhancement, that are applied iteratively until a finished state is reached. However, any detailed discussion on how the practices called test driven development and refactoring are applied during MAS development. Hence, the proposed methodology is a generic methodology that does not add too many specific ideas to the abstract development process proposed by agile approaches. To concretize how the proposed methodology is used for MAS development, the agile practices in the methodology have to be discussed exhaustively.</p><p>Another working <ref type="bibr" target="#b29">[30]</ref> focuses on to define which and how traditional refactoring practice can be used for agent based simulation systems on a multi agent simulation systems modeling paradigm called MASim. At the end of the working, a catalog that consists of the refactoring patterns used to improve the system designs based MASim is introduced. Moreover, some of the proposed refactoring patterns has been implemented and integrated to an agent based simulation platform called SeSam. This working does not introduce a general refactoring approach and its main characteristics for MAS development. The proposed refactoring patterns can be used to only the agent systems that have a specific type. To define the refactoring patterns that can be used during MAS development, firstly a general refactoring approach based on the characteristics of these systems has to be defined.</p><p>In <ref type="bibr" target="#b28">[29]</ref>, an iterative and incremental development approach called agent oriented test driven development -AOTDD is proposed to handle the complexity and continuously changing nature of the requirements in MAS development. In AOTDD, developers follow the development cycle with adding the new functionalities to the system between iterations, just like all other agile &amp; iterative development approaches. Also, the life cycle of proposed test driven approach and a testing tool that supports the proposed test driven approach are introduced in this work. Since this work is focused on the testing part of test driven development, the refactoring step that is very critical for iterative and incremental development is not discussed in detail.</p><p>These works neither propose a systematic approach for MAS refactoring nor introduce a refactoring tool support for these approaches. In this paper, we focus on these two points.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>III. A DEVELOPMENT APPROACH FOR MAS REFACTORING TOLLS</head><p>Refactoring is directly dependent on the executable artifacts of the developed system. In AOSE area, it is not possible to define a set of executable artifacts that can be agreed on, since there are several agent architectures such as BDI, re-active, self-organized and several development approaches such as Gaia <ref type="bibr" target="#b31">[32]</ref>, Tropos <ref type="bibr" target="#b4">[5]</ref> and Adelfe <ref type="bibr" target="#b3">[4]</ref> that aim to develop agents based on these agent architectures. Naturely, different executable artifacts may emerged based on the used agent architecture and/or development frameworks that support these architectures. As a conclusion, it is impossible to develop a refactoring tool that is usable for all kinds of MAS development artifacts. Instead of this, we need a generic approach to develop MAS refactoring tools. This approach can be specified for different MAS architectures and/or different artifacts to produce a suitable refactoring tool.</p><p>The proposed development approach has three steps listed as follows:</p><p>1) Define the meta-model of the target executable development artifacts, 2) Define the bad smells encountered during the development of the artifacts specified in the previous step, 3) Define the refactoring patterns that overcome the bad smells defined for the target development artifact. To illustrate how the proposed approach can be applied to refactoring tool development, we chose the agent plans as the target development artifact. Agent plan abstraction is one of the most common artifacts in MAS development methodologies. Almost all of the MAS methodologies use plan abstraction (it is named with different terms in different methodologies) to model agents' internal behaviours. For example, in the goal oriented development approach, each agent goal is achieved by one or more agent plan(s). Several approaches can be used to build plan structures such as HTN <ref type="bibr" target="#b30">[31]</ref>, <ref type="bibr" target="#b22">[23]</ref> based on the agent infrastructure. Developers have to specify the planning approach before they apply first step of the proposed refactoring tool development approach (defining the meta-model of the target artifacts).</p><p>In our case, we aim to develop a refactoring tool for the Seagent framework that was developed by our research group. So, our refactoring tool called ReSeagent aims to refactor agent plans that are directly dependent on the Seagent planning infrastructure.</p><p>The rest of this section explains how the steps of the proposed approach were applied for the plan artifact in the Seagent framework.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>A. Define the meta-model of the target executable development artifacts</head><p>Performing a refactoring pattern requires a clear understanding of the abstract syntax and semantics of both the source and target models. Meta-modeling is a common technique for defining the abstract syntax of models and the interrelationships between model elements. To identify refactoring patterns and bad smells for an executable design artifact, we have to work Naturally, emerge know the meta-model used to build structures of this type of artifacts.</p><p>In Seagent framework, the hierarchical task network -HTN formalism <ref type="bibr" target="#b22">[23]</ref>, <ref type="bibr" target="#b30">[31]</ref> is used to build and store of agent plans. Hence, the plan level refactoring patterns introduced in this paper are dependent on the HTN formalism. ReSeagent refactoring tool supports to apply the mechanics of these HTN dependent refactoring patterns on HTN plans that are developed through Seagent. The structure of the HTN meta model used in the current Seagent version is shown in the figure <ref type="figure" target="#fig_0">1</ref>. In HTN formalism, there are two kinds of task; complex task (we call behaviour) and primitive task (we call action). Complex tasks hold the structure of its sub-tasks and links between these tasks. Primitive tasks have directly executable code. Information requirements of tasks are illustrated as provisions. Outcomes are result states of tasks. Data is transferred to other tasks through the several kinds of link. An inheritance link is used to transfer a provision of a parent complex task to a sub task. Disinheritance links are used to transfer outcomes of sub-tasks to parent complex task. And finally, the information flow between outcomes and provisions of the tasks in the same level is provided by internal provision links. As an addition of the links come from the HTN formalism, there is one more type of link called order link in the Seagent behavioural PSM. Order links do not pass any information between tasks. They are used only to order the execution of tasks.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>B. Define the bad smells encountered during the development of the artifacts specified in the previous step,</head><p>To make decision about applying refactoring patterns on an arfifact, we need to define the common design problems that are encountered by developers during the system development process frequently. Fowler named these common problems as bed smells in <ref type="bibr" target="#b17">[18]</ref> and introduced refactoring patterns to overcome these bad smells in software design. Each of the defined refactoring patterns is introduced to overcome one or many bad smell(s).</p><p>Similarly, we have to define bad smells for MAS development. Based on our experiences on the MAS development, we have identified following bad smells for plan level refactoring: Duplicated behaviour structure, execution decision in a plan, big behaviour, incoherent behaviour, redundant task group.</p><p>Detailed definitions of all defined bad smells are accessible through the Seagent web side 1 .</p><p>C. Define the refactoring patterns that overcome the defined bad smells for the target development artifact.</p><p>To develop a refactoring tool that can be used during MAS development, the refactoring patterns that define the order of the mechanics for each refactoring pattern has to be defined by a standard way. Each pattern includes pre-defined mechanics in order to overcome one or more bad smell(s). These mechanics has to be defined by using a machine understandable semantic. The tool uses the pre-defined machine understandable pattern definitions to overcome bad smells.</p><p>In ReSeagent, we have defined seven refactoring patterns for HTN based plan refactoring. These plan level refactoring patterns that were defined based on our experiences with its initiator bad smell(s) are shown in table I.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Table I REFACTORING PATTERNS AND THEIR INITIATOR BAD SMELLS IN THE PLAN LEVEL</head><p>The detailed definitions of all refactoring patterns defined are accessible on the refactoring patterns part of the Seagent web side.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>IV. A HYBRID APPROACH FOR DEFINITION OF REFACTORING PATTRENS</head><p>To implement a refactoring tool, firstly the refactoring techniques supported by the tool have to be defined in a usable form for the tool. We used a hybrid approach based on the mechanisms used for defining transformation rules in the Model Driven Enginnering -MDE to define the refactoring tecniques mentioned in the previous section for our refactoring tool. MDE is a discipline in software engineering that relies on models as first class entities and that aims to develop, maintain and evolve software by performing model transformations <ref type="bibr" target="#b21">[22]</ref>, <ref type="bibr" target="#b24">[25]</ref>. This section introduces our hybrid approach that is based on the model transformation techniques <ref type="bibr" target="#b18">[19]</ref> and used to define refactoring techniques in ReSeagent refactoring tool.  From the MDE perspective, a refactoring operation is a model transformation between the initial and the improved models. Model is a structure of design artifacts in the refactoring context. Like each model transformation has some teransformation rules, each refactoring has some mechanics that achieve main goal of the refactoring by working together. It is nature to think that the refactoring approaches and tools can be based on the model transformation approaches and techniques. To develop a refactoring tool by using the model transformation techniques, mechanics of refactorings should be defined as the transformation rules. In this manner, the refactoring tool operates the refactoring mechanics that are defined as transformation rules according to the refactoring pattern in order. This is not a new idea and there are some works about rule based refactoring in the literature such as <ref type="bibr" target="#b1">[2]</ref>, <ref type="bibr" target="#b23">[24]</ref>. All of these works aim to define refactoring operations by rules for their own target development sytle.</p><p>Transformation rules are the focal point for model transformation. The techniques and languages that are used to identify these rules specify the maim characteristics of model transformation. There are two main approaches to define trasnformation rules; declerative and imperative approaches <ref type="bibr" target="#b11">[12]</ref>. Declarative approaches (e.g., <ref type="bibr" target="#b0">[1]</ref>) are attractive because particular services such as source model traversal, traceability management and automatic bidirectionality can be offered by an underlying reasoning engine. On the other hand, imperative approaches (e.g., <ref type="bibr" target="#b26">[27]</ref>) may be required to implement transformations for which declarative approaches fail to guarantee their services. Especially when the application order of a set of transformations needs to be controlled explicitly, an imperative approach is more appropriate thanks to its built-in notions of sequence, selection and iteration.</p><p>In Seagent framework, plan models are stored in ontologies that are built by using a description logic based language called Web Ontology Language -OWL 2 . Refactoring operations on these plan models can be considered as model transformations between initial plan ontologies and improved plan ontologies. So, a logic based declerative approach looks like appropriate for building rules on the these models. A refactoring tool that supports transformation between OWL ontologies using logic based rules is useful for refactoring Seagent plan models. However, logic based rules are not enough for defining refactoring mechanics because of the two handicaps of logic based declarative approaches listed belove:</p><p>1-Almost all of the logic languages such as Prolog have been developed to extend their target models. By using these languages, new definitions can be made on the existent elements in the model. These languages do not support to remove and change the existent elements in the model. Refactoring techniques require removing and changing of the existent elements in the model besides extending of the model.</p><p>2-Another handicap of the declerative approach for creating transformation rules of refactorings is that the mechanics of refactorings should be operate in sequence, As mentioned above, such a sequence operation can be controlled explictly by an imperative approach.</p><p>2 http://www.w3.org/TR/owl-features/ Because of these handicaps, the declerative approach cannot be used alone to define refactoring mechanics since their handicap mentioned above. To define refactoring mechanics as rules, imperative or hybrid approaches should be used.</p><p>ReSeagent uses a hybrid approach that combines the advantages of declarative and imperative rule definition approaches. The declarative side of this approach is achieved by using Semantic Web Rule Language -SWRL 3 . SWRL is a logic based rule language that supports defining rules on OWL ontology models. Refactoring mechanics that extend the initial models are defined as SWRL rules. Refactoring mechanics defined using the HTN paradigm forms the imperative side of our hybrid approach <ref type="bibr" target="#b30">[31]</ref>, <ref type="bibr" target="#b22">[23]</ref>.</p><p>In this hybrid approach, each refactoring pattern is defined as an agent plan by using the HTN paradigm and each refactoring mechanic is implemented as an executable action in refactoring plans. Refactoring mechanics that extend the initial models are implemented as rule actions. Rule actions have the responsibility of operating a SWRL rule on the OWL model of the related Seagent plan. Refactoring mechanics that change and/or remove the existing element in the initial model are implemented as normal actions. Normal actions implement change and remocal activities by means of Java code that handles the ontology explicitly. All of the actions that are implemented to realize the mechanics of a refactoring pattern compose a refactoring plan that achieves the main goal of the refactoring pattern. Sequential execution of these actions is controlled by the plan structure.</p><p>Many different methods such as finite state machine can be chosen to implement the imperative side of our hybrid rule definition approach. However, defining each refactoring pattern as an agent plan by using the HTN paradigm in ReSeagent has some advantages listed below:</p><p>• Simplicity: In Seagent, HTN paradigm is used for testing and implementation of plans. Defining refactoring patterns by using the same method simplifies the addition of new refactoring patterns into the refactoring tool. • Reusability: HTN paradigm makes it possible to reuse other pre-defined plan structures in higher level plan structures. Thanks to this, big refactorings can be simply implemented by re-using the pre-defined refactoring plans in a high level refactoring plan. • Generality: Since the refactoring plans are agent plans like domain dependent user plans, these refactoring plans can also be refactored by applying refactoring plan(s) on these plans. The software architecture of ReSeagent that executes the refactoring patterns defined by our hybrid approach is explained in the following section.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>V. OVERAL SOFTWARE ARCHITECTURE OF RESEAGENT</head><p>ReSeagent refactoring tool was implemented as a plug-in on the Seagent plan editor in the Seagent Development Environment -SDE like the refactoring support of Eclipse. ReSeagent gives suport for refactoring the plan models developed using 3 http://www.w3.org/Submission/SWRL/ removal is natural to .</p><p>Because of these handicaps, the declerative approach cannot be used alone to define refactoring mechanics. To define refactoring mechanics as rules, imperative or hybrid approaches should be used. declarative SDE. The tool applies pre-defined refactoring patterns on the related plan models to fulfill the refactoring requests received from Seagent plan editor.</p><p>ReSeagent focuses on the refactoring of Seagent plans whose meta-model is clearly defined in Seagent. Additionally, since the software architecture of the tool is generic and it can be used for other planning systems whose meta-models are different or for other MAS design artifacts such as role, goal and protocols. To add support for the artifacts that have different meta-models, you have to add new refactoring plans that work on these meta-models into the refactorer role of ReSeagent, and make some additions to the initiator module for initiating these new refactoring plans. SDE has the responsibility of developing executable artifacts such as plan models and goal models that can be executed by Seagent. For this purpose, SDE includes a plan and a goal editor for developing plan and goal models. It includes also a testing tool called SeaUnit that verifies the functionalities of these development artifacts <ref type="bibr" target="#b15">[16]</ref>. The overall software architecture of ReSeagent and its dependencies on other modules in SDE is shown in figure <ref type="figure" target="#fig_3">2</ref>.</p><p>ReSeagent consist of two sub-packages: refactoring initiator and refactorer role. Refactoring initiator package was developed as a plug-in on the Seagent Plan Editor like the refactoring support of the well known Eclipse environment. It has the responsibilities of capturing the refactoring requests in the plan editor, and initiating a refactoring operation for each of these refactoring requests. On the other hand, refactoring role holds the refactoring plans that are defined to provide the mechanics of the refactorings.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>A. Refactoring Initiator</head><p>Refactoring initiator module of ReSeagent has a simple structure. This module has the responsibilities of capturing the refactoring requests from the plan editor and the user preferences that are needed to fulfill these requests, and initiating a refactoring operation that is suitable for each of the captured refactoring requests.</p><p>When the developer wants to start a refactoring operation on a pre-defined plan model by using the refactoring plugin of the Seagent plan editor, the initiator initiates an agent that plays the refactorer role and then passes the refactoring request with its inputs to this refactorer agent. This agent maps the received refactoring request to a suitable refactoring plan situated in the plan library of the refactorer role, passes the input values to this plan and executes it. During the plan execution, the input values of the refactoring requests are passed to the sub-tasks of the plan via the links in the HTN structure. Then, these subtasks are executed depending on their order in the HTN structure. At the end of the plan, updated plan models are returned to the initiator via the outcomes so that the results can be shown to the plan editor user.</p><p>There can be many plans that realize the same refactoring operation by means of different ways. In such a situation, refactorer agent decides which refactoring plan has to be executed, according to inputs of the refactoring request and its internal state. This ability of the refactorer agent comes from Goal Mapping Engine in Seagent framework <ref type="bibr" target="#b16">[17]</ref>. Thanks to this engine, Seagent agents can map a request to most suitable of many plans that achieve same goal in different ways. When this decision is made, some criteria such as inputs and outputs of the goal are considered by the Goal Mapping Engine. To add more than one refactoring plan that can realize the same refactoring operation to Seagent, it is enough to add correct mapping definitions to the knowledge base that are used for goal mapping (called Goal Mapping Ontology in Seagent) by the refactorer agent .</p><p>Another responsibility of the initiator is passing the updated plan model(s) to the plan editor. Each refactoring plan has some outcomes that return the plan models that have been changed during the execution of the refactoring plan. There is one outcome for each updated plan model. Initiator listens to the planner of the refactorer agent after it initiates this agent. When a PlanFinished event is thrown by the planner, the initiator captures the updated plan models returned by the outcomes and updates the model(s) in the plan editor. Hereby, new structures of the refactored plans are shown to the user.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>B. The Refactorer Role</head><p>Refactorer role is a special role that has refactoring goals and refactoring plans that achieve these goals. This role can access plan models and action definitions in the system. This role has the responsibility of applying plan level refactorings on plan models during MAS development.</p><p>The refactorer role has refactoring goals that aim to apply a specific refactoring pattern on the Seagent plan models. Each of these refactoring goals is achieved by one or more than one refactoring plans. So, the plan library of this role has to include at least one refactoring plan for each refactoring pattern supported by ReSeagent tool.</p><p>The current version of ReSeagent refactoring tool supports the following plan level refactoring patterns: Replace Tasks with a Task, Extract Behaviour, Behaviour to Plan, Extract Plan.</p><p>The detailed definitions of these refactoring plans can be found on the ReSeagent plans page of the Seagent web site. Also, the OWL ontologies of the plans and Java codes of the actions in these plans are downloadable on this page.</p><p>To give an inside about the refactoring plans in ReSeagent, one of the refactoring patterns and the refactoring plan developed to achieve this refactoring in ReSeagent are explained in the following section.</p><p>Replace Tasks with a Task Refactoring and Its Implementation in ReSeagent Replace Tasks with a Task refactoring can be used in such a case: a functionality achieved by more than one tasks in a plan structure can be achieved by only one task. This refactoring removes these tasks from the plan structure and adds the new task to the plan structure instead of the removed tasks.</p><p>When the Redundant Task Group bad smell is realized in a plan structure, the plan can be made more readable and simpler by replacing the task group with a task that can achieve same functionality.</p><p>To apply Replace Tasks with a Task refactoring, the new task has to have all of the provisions and outcomes of the tasks in the replaced task group that are linked to other tasks in the plan structure.</p><p>Mechanics:</p><p>1) Remove the task group from the plan and add the new task. 2) Find inheritance and provision-outcome links that are attached to the provisions of the replaced tasks and attach such links to the suitable provisions of the new task. 3) Find disinheritance and provision-outcome links that are attached to the outcomes of the replaced tasks and attach such links to the suitable outcomes of the new task. 4) Scan the provision-outcome links whose source or target task(s) is the reference to the replaced tasks. If there are such links, remove these links from the plan structure. Replace Tasks with a Task refactoring plan in ReSeagent refactoring tool is developed to realize the goal of "replacing a task group with a task that can fulfill same functionality" which is the aim of Replace Tasks with a Task refactoring pattern. HTN structure of this refactoring plan that implements the mechanics of Replace Tasks with a Task refactoring pattern is shown in figure <ref type="figure" target="#fig_4">3</ref>. The plan takes the name of the plan whose structure is be refactored, the list of the tasks that are to be removed from the plan structure and the task that is to be added into the plan structure as provisions, and transfers these provisions to its sub-tasks. The plan has four actions. Each of these actions achieves one of the mechanics of the Replace Tasks with a Task refactoring pattern. These actions which are called ProvideProvisions and LinkOutcomes extend the model of the target plan structure by adding new links. Hence, each of these actions operates a SWRL rule to fulfill its responsibility. At the end of the plan execution, updated plan structure is returned through an outcome.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>VI. CASE STUDY</head><p>In this section, we introduce a case study that shows the usage of our refactoring approach and ReSeagent refactoring tool during the development of an actual MAS application which is a conference management system that has been developed by Seagent group.</p><p>At the beginning of the development, we did not intervene the developers and let them to follow a sequential development process that does not impose evolutionary development. The developers developed some of the goals such as "building the program committee", "sending call for paper" and "initiating a conference" by applying the activities of their development process.</p><p>After developing a few of the system goals, some bad smells emerged in the design of the MAS that was developed: some plan structures were duplicated in many plans. Furthermore, the developers were disappointed from the unmanageable structures of the plans developed. We can give an example for these bad smells on a simple plan structure from the conference management MAS. This plan structure achieves the "sending call for paper" goal of the "organization" role in this system. The initial HTN structure of this plan that was obtained at the end of the sequential development process for "sending call for paper" goal is shown in figure <ref type="figure" target="#fig_5">4</ref>. The simple plan in the figure <ref type="figure" target="#fig_5">4</ref> takes the conference topic as a provision. This provision is passed to the "create suitable researcher profile" action through an inheritance link. In this action, a researcher profile object is created, the interested_topic an insight whose structure is field of this profile is set with the topic that is received as a provision and this researcher profile is returned through the "OK" outcome. The other action called "prepare and send query message to DF" takes the researcher profile, creates a query message by using this profile and sends this message to directory facilitator -DF. The "evaluate incoming researchers" action has an external provision called researcherList. This provision includes agent descriptions of the researcher agents that are sent by the DF. In this action, the description of the researcher agents are filtered according to the preferences and suitable researchers are selected. The final action called "send CFP to selected researchers" has the responsibility of sending call for paper of the conference to selected researchers using the agent descriptions that are received as a provision.</p><p>Some tasks in the plan structure have a common goal called "finding the suitable researcher agents" that should be tested independently from the other goals. This goal can also be part of the other plan structures such as "create program committee" in the system. This was a bad smell called Duplicated Behaviour Structure. So, we decided to collect the actions called CreateResearcherProfile, SendResearcher-QueryToDFand EvaluateResearcherAgentsinto a new plan that achieves the common goal by applying Extract Behaviourrefactoring on these actions.</p><p>To initiate anExtract Behaviourrefactoring operation on these three actions, we selected these actions and right clicked the mouse. In the opened menu, we chose the Refactor -&gt; Extract Behaviour as shown in figure <ref type="figure" target="#fig_5">4</ref>. Then, a window releated with the Extract Behaviourrefactoring appeared on the screen. This window had three spaces that had to be set by the input values of the plan. These values were plan name, tasks list and new task. When we set all of the spaces by values and then clicked to the start button, the refactoring operation was initiated. After, a short duration, the improved structure of the plan appeared in the Seagent plan editor. At the end of the Extract Behaviour refactoring, we obtained a new plan called FindResearcherAgents that can be re-used in the other plan structures. This plan has the responsibility of finding agent descriptions of the researchers that work on the conference topic according to the topic provision. The FindResearcherAgents plan was simply used in some other plans in conference management system. The plan structure of our "send CFP" plan after the Extract Behaviour refactoring is shown in figure <ref type="figure" target="#fig_6">5</ref>.</p><p>After the refactoring operations on the developed plan structures, we obtained more readable and manageable plans for the conference management system. Reusable plan structures such as FindResearcherAgents obtained during the refactoring operations simplified to development of other system goals that include the goals achieved by these plans.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>VII. CONCLUSION</head><p>In this paper, we define a development approach for refactoring tools that can be used during the development of MASs.</p><p>To discuss this development approach on a refactoring tool implementation, a refactoring tool called ReSeagent has been implemented on the Seagent framework by following the process proposed by this approach. This tool supports the manual application of pre-defined refactoring patterns stored as agent plans on Seagent plan models during the development activities. So far, ReSeagent refactoring tool was used in the development of the several MAS applications such as e-barter and conference management systems developed by the Seagent group. The experiences we obtained during the development of these systems show that ReSeagent refactoring tool facilitates evolutionary MAS development by simplifying the refactoring process.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figure 1 .</head><label>1</label><figDesc>Figure 1. Seagent HTN Meta Model</figDesc><graphic coords="3,57.44,207.58,234.09,149.58" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head></head><label></label><figDesc>1 http://etmen.ege.edu.tr/wiki/index.php/refactoring_agent_system bad is used to build and store artifact,</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head></head><label></label><figDesc>site</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Figure 2 .</head><label>2</label><figDesc>Figure 2. Overal Software Architecture of ReSeagent</figDesc><graphic coords="5,81.04,231.34,186.90,149.70" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_4"><head>Figure 3 .</head><label>3</label><figDesc>Figure 3. HTN structure of the Replace Tasks with a Task refactoring plan in ReSeagent</figDesc><graphic coords="6,84.64,579.40,179.70,78.90" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_5"><head>Figure 4 .</head><label>4</label><figDesc>Figure 4. The initial plan structure of the Send_CFP plan</figDesc><graphic coords="6,311.97,474.29,249.60,193.83" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_6"><head>Figure 5 .</head><label>5</label><figDesc>Figure 5. Final structure of the Send_CFP plan</figDesc><graphic coords="7,48.96,484.58,253.44,183.48" type="bitmap" /></figure>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">A Relational Approach to Defining Transformations in a Metamodel</title>
		<author>
			<persName><forename type="first">David</forename><forename type="middle">H</forename><surname>Akehurst</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">H</forename><surname>Stuart</surname></persName>
		</author>
		<author>
			<persName><surname>Kent</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">The Unified Modeling Language: Model Engineeing, Concepts, and Tools</title>
		<title level="s">Lecture notes in computer science</title>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2002">2002</date>
			<biblScope unit="volume">2460</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Verification and refactoring of ontologies with rules</title>
		<author>
			<persName><forename type="first">Joachim</forename><surname>Baumeister</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Dietmar</forename><surname>Seipel</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">EKAW</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">Steffen</forename><surname>Staab</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Vojtech</forename><surname>Svatek</surname></persName>
		</editor>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2006">2006</date>
			<biblScope unit="volume">4248</biblScope>
			<biblScope unit="page" from="82" to="95" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<monogr>
		<author>
			<persName><forename type="first">Kent</forename><surname>Beck</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Cynthia</forename><surname>Andres</surname></persName>
		</author>
		<title level="m">Extreme Programming Explained: Embrace Change</title>
				<imprint>
			<publisher>Addison-Wesley Professional</publisher>
			<date type="published" when="2004">2004</date>
		</imprint>
	</monogr>
	<note>2nd Edition</note>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Engineering Adaptive Multi-Agent Systems: The ADELFE Methodology</title>
		<author>
			<persName><forename type="first">Carole</forename><surname>Bernon</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Valérie</forename><surname>Camps</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Marie</forename><forename type="middle">P</forename><surname>Gleizes</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Gauthier</forename><surname>Picard</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Agent-Oriented Methodologies</title>
				<editor>
			<persName><forename type="first">Brian</forename><forename type="middle">H</forename><surname>Sellers</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Paolo</forename><surname>Giorgini</surname></persName>
		</editor>
		<meeting><address><addrLine>, NY, USA</addrLine></address></meeting>
		<imprint>
			<publisher>Idea Group Pub</publisher>
			<date>juin</date>
			<biblScope unit="page" from="172" to="202" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Tropos: An agent-oriented software development methodology</title>
		<author>
			<persName><forename type="first">Paolo</forename><surname>Bresciani</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Anna</forename><surname>Perini</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Paolo</forename><surname>Giorgini</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Fausto</forename><surname>Giunchiglia</surname></persName>
		</author>
		<author>
			<persName><forename type="first">John</forename><surname>Mylopoulos</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Autonomous Agents and Multi-Agent Systems</title>
		<imprint>
			<biblScope unit="volume">8</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="203" to="236" />
			<date type="published" when="2004">2004</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Multi-agent systems implementation and testing</title>
		<author>
			<persName><forename type="first">G</forename><surname>Caire</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Cossentino</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Negri</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Poggi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Turci</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">From Agent Theory to Agent Implementation</title>
				<imprint>
			<date type="published" when="2004">2004</date>
		</imprint>
	</monogr>
	<note>Fourth International Symposium (AT2AI-4)</note>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Process models for agent-based development</title>
		<author>
			<persName><forename type="first">L</forename><surname>Cernuzzi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Cossentino</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Zambonell</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Engineering Applications of Artificial Intelligence</title>
		<imprint>
			<biblScope unit="volume">18</biblScope>
			<biblScope unit="issue">2</biblScope>
			<date type="published" when="2005">2005</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">From passi to agile passi: Tailoring a design process to meet new needs</title>
		<author>
			<persName><forename type="first">A</forename><surname>Chella</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Cossentino</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Sabatucci</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Seidita</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE/WIC/ACM International Joint Conference on Intelligent Agent Technology (IAT-04)</title>
				<imprint>
			<date type="published" when="2004">2004</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Sadaam: Software agent development an agile methodology</title>
		<author>
			<persName><forename type="first">Neil</forename><surname>Clynch</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Rem</forename><surname>Collier</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the Workshop of Languages, methodologies, and Development tools for multi-agent systems</title>
				<meeting>the Workshop of Languages, methodologies, and Development tools for multi-agent systems</meeting>
		<imprint>
			<date type="published" when="2007">2007</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Patterns reuse in the passi methodology</title>
		<author>
			<persName><forename type="first">Massimo</forename><surname>Cossentino</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Luca</forename><surname>Sabatucci</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Antonio</forename><surname>Chella</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the Fourth International Workshop Engineering Societies in the Agents World (ESAW&apos;03</title>
				<meeting>the Fourth International Workshop Engineering Societies in the Agents World (ESAW&apos;03</meeting>
		<imprint>
			<publisher>Springer-Verlag</publisher>
			<date type="published" when="2003">2003</date>
			<biblScope unit="page" from="29" to="31" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">Composition of a new process to meet agile needs using method engineering</title>
		<author>
			<persName><forename type="first">Massimo</forename><surname>Cossentino</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Valeria</forename><surname>Seidita</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">SELMAS</title>
				<imprint>
			<date type="published" when="2004">2004</date>
			<biblScope unit="page" from="36" to="51" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">Classification of model transformation approaches</title>
		<author>
			<persName><forename type="first">Krzysztof</forename><surname>Czarnecki</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Simon</forename><surname>Helsen</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">OOPSLA-03 Workshop on Generative Techniques in the Context of Model-Driven Architecture</title>
				<imprint>
			<date type="published" when="2003">2003</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">Multiagent Systems Engineering A Methodology and Language for Designing Agent Systems</title>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">A</forename><surname>Deloach</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. of Agent Oriented Information Systems</title>
				<meeting>of Agent Oriented Information Systems</meeting>
		<imprint>
			<date type="published" when="1999">1999</date>
			<biblScope unit="page" from="45" to="57" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">Seagent: a platform for developing semantic web based multi agent systems</title>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">C</forename><surname>Oguz Dikenelli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename><surname>Erdur</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><forename type="middle">E</forename><surname>Gumus</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename><surname>Ekinci</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Gurcan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Inanc</forename><surname>Kardas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Ali</forename><surname>Seylan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Tiryaki</forename><surname>Murat</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">AAMAS &apos;05: Proceedings of the fourth international joint conference on Autonomous agents and multiagent systems</title>
				<meeting><address><addrLine>New York, NY, USA</addrLine></address></meeting>
		<imprint>
			<publisher>ACM Press</publisher>
			<date type="published" when="2005">2005</date>
			<biblScope unit="page" from="1271" to="1272" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Developing multi agent systems on semantic web environment using seagent platform</title>
		<author>
			<persName><forename type="first">Oguz</forename><surname>Dikenelli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Riza</forename><surname>Cenk Erdur</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Geylani</forename><surname>Kardas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Ozgr</forename><surname>Gumus</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Inanc</forename><surname>Seylan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Ali</forename><surname>Onder Gurcan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Erdem</forename><surname>Murat Tiryaki</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Ekinci</forename><surname>Eser</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Engineering Societies in the Agents World VI</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2006">2006</date>
			<biblScope unit="volume">3963</biblScope>
			<biblScope unit="page" from="1" to="13" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">Goal oriented agent testing revisited</title>
		<author>
			<persName><forename type="first">Erdem</forename><surname>Eser Ekinci</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Ali</forename><surname>Murat Tiryaki</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Oguz</forename><surname>Dikenelli</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Agent Oriented Software Engineering</title>
				<imprint>
			<publisher>Springer Verlag</publisher>
			<date type="published" when="2008">2008. 2008</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">A planner infrastructure for semantic web enabled agents</title>
		<author>
			<persName><forename type="first">Erdem</forename><surname>Eser Ekinci</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Ali</forename><forename type="middle">Murat</forename><surname>Tiryaki</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Oguz</forename><surname>Onder Gurcan</surname></persName>
		</author>
		<author>
			<persName><surname>Dikenelli</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">OTM Workshops</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<meeting><address><addrLine>Vilamoura, Algarve, Portugal</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2007">2007</date>
			<biblScope unit="volume">4805</biblScope>
			<biblScope unit="page" from="95" to="104" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<monogr>
		<title level="m" type="main">Refactoring: Improving the Design of Existing Code</title>
		<author>
			<persName><forename type="first">Martin</forename><surname>Fowler</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1999">1999</date>
			<publisher>Addison-Wesley</publisher>
			<pubPlace>Boston, MA, USA</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<monogr>
		<title level="m" type="main">MDA Explained: The Model Driven Architecture-Practice and Promise</title>
		<author>
			<persName><forename type="first">Anneke</forename><surname>Kleppe</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Jos</forename><surname>Warmer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Wim</forename><surname>Bast</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2003-04">April 2003</date>
			<publisher>Addison-Wesley Professional</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">Extreme programming of multi-agent systems</title>
		<author>
			<persName><forename type="first">Holger</forename><surname>Knublauch</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">AAMAS &apos;02: Proceedings of the first international joint conference on Autonomous agents and multiagent systems</title>
				<meeting><address><addrLine>New York, NY, USA</addrLine></address></meeting>
		<imprint>
			<publisher>ACM Press</publisher>
			<date type="published" when="2002">2002</date>
			<biblScope unit="page" from="704" to="711" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<monogr>
		<title level="m" type="main">Unit Testing in Java: How Tests Drive the Code</title>
		<author>
			<persName><forename type="first">Johannes</forename><surname>Link</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Peter</forename><surname>Frolich</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2003">2003</date>
			<publisher>Morgan Kaufmann Publishers Inc</publisher>
			<pubPlace>San Francisco, CA, USA</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<analytic>
		<title level="a" type="main">A taxonomy of model transformation</title>
		<author>
			<persName><forename type="first">Tom</forename><surname>Mens</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Pieter</forename><surname>Van Gorp</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Electronic Notes in Theoretical Computer Science</title>
		<imprint>
			<biblScope unit="volume">152</biblScope>
			<biblScope unit="page" from="125" to="142" />
			<date type="published" when="2006-03">March 2006</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<analytic>
		<title level="a" type="main">A planning component for retsina agents</title>
		<author>
			<persName><forename type="first">Massimo</forename><surname>Paolucci</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Dirk</forename><surname>Kalp</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Anandeep</forename><forename type="middle">S</forename><surname>Pannu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Onn</forename><surname>Shehory</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Katia</forename><surname>Sycara</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Lecture Notes in Artificial Intelligence, Intelligent Agents VI</title>
				<imprint>
			<date type="published" when="1999">1999</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b23">
	<analytic>
		<title level="a" type="main">Rule-based update transformations and their application to model refactorings</title>
		<author>
			<persName><forename type="first">Ivan</forename><surname>Porres</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Software and System Modeling</title>
		<imprint>
			<biblScope unit="volume">4</biblScope>
			<biblScope unit="issue">4</biblScope>
			<biblScope unit="page" from="368" to="385" />
			<date type="published" when="2005">2005</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b24">
	<analytic>
		<title level="a" type="main">Model transformation: The heart and soul of model-driven software development</title>
		<author>
			<persName><forename type="first">Shane</forename><surname>Sendall</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Wojtek</forename><surname>Kozaczynski</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Software</title>
		<imprint>
			<biblScope unit="volume">20</biblScope>
			<biblScope unit="page" from="42" to="45" />
			<date type="published" when="2003">2003</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b25">
	<analytic>
		<title level="a" type="main">The rational unified process</title>
	</analytic>
	<monogr>
		<title level="m">Rational Software</title>
				<imprint>
			<date type="published" when="1998">1998</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b26">
	<analytic>
		<title level="a" type="main">Domain model translation using graph transformations</title>
		<author>
			<persName><forename type="first">Jonathan</forename><surname>Sprinkle</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Aditya</forename><surname>Agrawal</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Tihamer</forename><surname>Levendovszky</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Feng</forename><surname>Shi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Gabor</forename><surname>Karsai</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">ECBS</title>
				<imprint>
			<publisher>IEEE Computer Society</publisher>
			<date type="published" when="2003">2003</date>
			<biblScope unit="page" from="159" to="167" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b27">
	<analytic>
		<title level="a" type="main">Refactoring in multi agent system development</title>
		<author>
			<persName><forename type="first">Ali</forename><surname>Murat Tiryaki</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Erdem</forename><surname>Eser Ekinci</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Oguz</forename><surname>Dikenelli</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Lecture Notes in Artificial Intelligence</title>
		<imprint>
			<biblScope unit="volume">5244</biblScope>
			<biblScope unit="page" from="183" to="194" />
			<date type="published" when="2008">2008</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b28">
	<analytic>
		<title level="a" type="main">Sunit: A unit testing framework for test driven development of multiagent systems</title>
		<author>
			<persName><forename type="first">Ali</forename><surname>Murat Tiryaki</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Sibel</forename><surname>Öztuna</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Oguz</forename><surname>Dikenelli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Riza</forename><surname>Cenk</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Erdur</forename></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">AOSE</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2006">2006</date>
			<biblScope unit="volume">4405</biblScope>
			<biblScope unit="page" from="156" to="173" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b29">
	<analytic>
		<title level="a" type="main">Refactoring of agent-based simulation models</title>
		<author>
			<persName><forename type="first">Cornelia</forename><surname>Triebig</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Franziska</forename><surname>Klugl</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Multikonferenz Wirtschaftsinformatik</title>
				<imprint>
			<date type="published" when="2008">2008</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b30">
	<analytic>
		<title level="a" type="main">Unified information and control flow in hierarchical task networks</title>
		<author>
			<persName><forename type="first">M</forename><surname>Williamson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Decker</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Sycara</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Theories of Action, Planning, and Robot Control: Bridging the Gap: Proceedings of the 1996 AAAI Workshop</title>
				<meeting><address><addrLine>Menlo Park, California</addrLine></address></meeting>
		<imprint>
			<publisher>AAAI Press</publisher>
			<date type="published" when="1996">1996</date>
			<biblScope unit="page" from="142" to="150" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b31">
	<analytic>
		<title level="a" type="main">Developing multiagent systems: The gaia methodology</title>
		<author>
			<persName><forename type="first">Franco</forename><surname>Zambonelli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Nicholas</forename><forename type="middle">R</forename><surname>Jennings</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Michael</forename><surname>Wooldridge</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM Trans. Softw. Eng. Methodol</title>
		<imprint>
			<biblScope unit="volume">12</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="317" to="370" />
			<date type="published" when="2003">2003</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b32">
	<analytic>
		<title level="a" type="main">Challenges and research directions in agent-oriented software engineering</title>
		<author>
			<persName><forename type="first">Franco</forename><surname>Zambonelli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Andrea</forename><surname>Omicini</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Autonomous Agents and Multi-Agent Systems</title>
		<imprint>
			<biblScope unit="volume">9</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="253" to="283" />
			<date type="published" when="2004">2004</date>
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
