<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Towards an Approach for Engineering Complex Systems: Agents and Agility</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Massimo Cossentino, Luca Sabatucci</string-name>
          <email>luca.sabatucci@icar.cnr.it</email>
          <email>massimo.cossentino, luca.sabatucci@icar.cnr.it</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Valeria Seidita</string-name>
          <email>valeria.seidita@unipa.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Dip. dell'Innovazione Industriale e Digitale, Universita` degli Studi di Palermo</institution>
          ,
          <country country="IT">Italy</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Istituto di Calcolo e Reti ad Alte Prestazioni, CNR</institution>
          ,
          <addr-line>Palermo</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>-The way in which we use and conceive modern software systems is changing. Humans/users are becoming more and more immersed in today complex systems operation, systems interact in a dynamic fashion with the users and with changing and dynamic environments. New design paradigms are necessary. In this paper we propose a first insight to engineering complex physical systems by employing agility and a framework for selfadaptive service composition.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
    </sec>
    <sec id="sec-2">
      <title>Due to the advancements in computer technologies, we are</title>
      <p>now drawing near a new era where each of us owns more
than one computer (or smart or wearable device and so on).
Computers and devices are more and more interconnected and
we are getting used to work and live with them in an active
fashion.</p>
      <p>Our life is shared and in partnership with the technology.
This brings to the necessity of communication, collaboration,
cooperation and understanding among different devices and
among users and devices. The everyday life style is deeply
changing and consequently a new way of considering the
creation and the interconnection of modern software systems is
arising. Indeed, modern computer and devices must be more
than simple responders; they have to be able to sense and
anticipate users’ needs in order to support them in the right
way. Instructions we give to software systems are not passive
and plan of actions no more decided at design time.</p>
      <p>The scenario from now on is: humans work in tandem with
their devices (and software systems). At the same time
software systems have to interact in a proactive fashion in order
to guide and support users on the base of their preferences,
habits, constraints and contexts they live.</p>
      <p>Such a kind of situations is common, for instance, in the
field of smart cities, e-health, e-commerce, etc. and the open
challenges are still a lot, from design approaches to standards,
from interoperability to trust and so on.</p>
      <p>Software systems where users are included and are part
of the system require a high level of adaptivity and
selforganization. Classic design approaches are not suitable for
analyzing, designing and developing software systems
supporting users in the cited scenarios where, in a few words,
main features are: continuous changing operational context
and changing environment. We have to change the way in
which we look at software development.</p>
    </sec>
    <sec id="sec-3">
      <title>Promising approaches to engineering complex physical systems like these span from Agile approaches to a new current where design time and runtime approach are plunging into each other.</title>
      <p>In this paper, we propose the use of the framework MUSA
supported by an agile approach that sees users and agents
highly immersed in the design process. Agility let realize the
user inclusion.</p>
      <p>The paper is structured as follows: section II outlines
motivations and challenges of the work from a design point
of view; section III describes the MUSA framework and how
it is engaged in including the user in the design loop; section
IV illustrates Agile approaches features and how they may
be useful in the complex systems domain; section V focuses
on the use of MUSA and agility detailing how the use of
MUSA realize agility; finally in section VI some conclusions
are drawn.</p>
    </sec>
    <sec id="sec-4">
      <title>II. MOTIVATION</title>
      <p>Engineering and developing complex physical systems
where humans (or users) work together with the system and
they both are immersed and continuously interact with a very
dynamic environment, requires to consider several factors that
may be summarized in: changing operational context and
changing environment. Complex software systems supporting
digital economy have to intrinsically exhibit adaptation.</p>
      <p>A complex (self-adaptive) physical system is a system able
to modify its behavior in order to respond or to face changes
occurring in the environment it is working on or inside the
system itself. Adaptation depends on all the actors that interact
with the system, the environment whose changes are affected
by and affect the system. The system behavior itself is a source
of changes and adaptation. Adaptive behavior is prone to three
types of dependency: actor-dependency, system-dependency
and environment-dependency. These factors are taken into
account during the requirement engineering phase of complex
physical (self-adaptive) systems.</p>
      <p>Different kinds of approaches for engineering self adaptive
systems exist, they span from control theory to service oriented
and from agent-based approaches to nature inspired ones. They
all map to the four MAPE activities - well known in the field
of Autonomic Computing - Monitoring, Analyzing, Planning
and Executing.</p>
      <p>
        A promising approach to manage complexity in runtime terconnected and various than before, designers have not
environments and to implement MAPE activities is to de- the right means to anticipate and design interactions among
velop adaptation mechanisms that involves software models. different components, and interactions among users and the
This is referred to as models@run.time [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. The idea is to system. Indeed, (self-adaptive) software system properties are
extend the model produced using MDE approaches to runtime effectively known only when all the relationships among
environment. The authors of [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] emphasize the importance the software components and between the software and the
that software models (artifacts) may play at runtime stating environment have been expressed and have been made explicit.
that if .....“a system changes, the representation of the system Such issues have to be dealt with at runtime; modeling and
(the models) should all change, and viceversa”. In so doing, monitoring users and the environment is the key for enabling
researchers in this field stop at artifact levels; they wish artifact software to be adaptive [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. Self-adaptation deals with
produced were tied to the process used for creating them. requirements that vary at run time. Therefore it is important
However at the best of our knowledge this is still a vision, that requirements lend themselves to be dynamically observed,
an idea and nothing has been really realized for really putting i.e., during execution.
the design phases at runtime. We are moving into a new era of research for
engineer
      </p>
      <p>
        Baresi et al. [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] introduce the need of bringing near the ing complex (self-adaptive) physical systems. A new design
design time to the runtime: “The clear separation between paradigm is necessary for enabling the design and development
development-time and run-time is blurring and may disappear of systems that adapt their behavior at runtime with little, or
in the future for relevant classes of applications”. This allows better, no human intervention.
some changing activities to be shifted from design and devel- This paper attempts at framing some characteristics related
opment to run time and some changing responsibilities to be to engineering complex physical systems by merging Agile
assigned to the system itself instead of to the analysts or de- approach to design at runtime. This is a first experiment to
signers. Thus realizing and really implementing adaptation [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], engineering complex systems and exploit the lessons learnt
[
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. on the use of self-adaptive composition of services in dynamic
      </p>
      <p>
        Hence, requirements engineering has to deal with require- and distributed environment by means of MUSA (Middleware
ments that change at run time, for instance as the result of for User-Driven Service Adaptation).
changing in the environment. Uncertainty and incompleteness
are at the base of requirements engineering for complex III. A MIDDLEWARE FOR USER-DRIVEN
(self-adaptive) physical systems [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. Some researchers SELF-ADAPTATION (MUSA)
investigated the use of a goal model for specifying behavior The Middleware for User-driven Self-Adaptation (MUSA)
and requirements [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] and for supporting the modeling has arisen for managing evolution and adaptivity of
dyof adaptation mechanism instead of implementing adaptation namic workflows [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. Compared to traditional languages (e.g.
at run time. BPMN and BPEL) MUSA provides a wider space of solution
      </p>
      <p>The life cycle of a complex (self-adaptive) physical system, that improve the freedom of action when it is necessary
or of one of its components, starts with its design and does to overcome exceptional events such as failures or resource
not terminate with its deployment and testing. The life-cycle unavailability. The authors adopted the solution of relaxing
continues with some monitoring phases aiming at identifying the high constrained workflow specification to increase the
and handling new or emergent requirements and/or needs from flexibility in dynamically generating alternative solutions.
users. The key concept is a clear separation between ‘what the</p>
      <p>
        Classic heavyweight methodologies cannot be used anymore system has to address’ and ‘how it will operate for addressing
for engineering and developing such a kind of systems in fact, it’. The enablers of the MUSA vision are: a) representing the
normally, they prescribe a very disciplined process that follows two dimensions, what and how, as a couple of run-time
artia well specific life-cycle; the main aim is to make the software facts (respectively goals and capabilities); b) implementing a
development as more predictable as possible. In these cases reasoning system for dynamic binding of capabilities to goals;
all the requirements have to be identified and analyzed in the c) representing goals and capabilities with some formalism,
very early activities of the design process and transformed based on a common grounding semantic.
into code through whatever life cycle the designer considers The result is a multi-agent system, implemented in the
more useful (waterfall, iterative and incremental and so on). Jason [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] agent-oriented programming language.
This way of working has been well established for years for
all those systems that do not require particular changes. What A. What: a Declarative Specification of Goals
we mean is: normally, a software system is the solution to The characteristics of being autonomous and proactive make
a problem, regardless the level of complexity of the problem the agents able to explore a solution space, even when this
and the software, and the level of adaptability to changing space dynamically changes or contains uncertainty.
requirements is managed at design time using ad-hoc life Indeed, MUSA accepts, at run-time, requirements as a set
cycles or process models. of goals to be addressed [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ].
      </p>
      <p>Due to the features of complex (self-adaptive) physical The main language for goal injection is GoalSPEC, based on
systems and the fact that, nowadays, systems are more in- the natural language, and specifically conceived to be attractive
for a business audience. This language allows for describing through this space. Therefore self-configuration is defined as
workflows as a set of the user’s goals that are delegated to the a space search problem.
management system. Actually, the automatic reasoner is not a property of a single</p>
      <p>
        GoalSPEC supports Adaptivity because it is intended to agent, but rather it is a social ability of all the agents of the
make the business goals explicit in the process. Goals do not system. Indeed, the algorithm is distributed and decentralized
specify how to operate, but they rather define the expected (for details see [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]).
results.
      </p>
      <p>
        GoalSPEC also supports Evolution because business pro- D. The Self-Adaptation property
cesses change during the time. This could happen because of The main advantage of using MUSA for executing
workthe introduction of new business goals (laws to be respected flows is the ability to self-adapt the running instance when
or new desired functionalities). Whereas, traditionally, all the something unexpected happens. The self-adaptation property
revisions imply to check inter-dependencies among process’s is based on the feedback loop [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
tasks, with a consequent hard work of maintenance, MUSA In MUSA, the feedback loop is composed of two nested
accepts run time variations in the set of injected goals. loops. The inner loop is a traditional MAPE-K loop [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] where
      </p>
      <p>In the last years, MUSA and GoalSPEC have been used the activities are: Monitor, Analyze, Plan, and Act. This loop is
in many different application domains, from document man- responsible for managing the periods of stability of the system.
agement systems, smart travel planning, to cloud application During this time the system tries to run a specific workflow
mashup. The design activity necessary for instantiating the configuration. Local task replacement may be enacted for
system in a specific domain includes the definition of an ensuring the continuity of service.
ontology/conceptual diagram. However, it is possible that some severe malfunctioning
occurs and that the monitor reveals a violation of requirements
B. How: a Declarative Specification of Capabilities forces the system to stop working. The system becomes
un</p>
      <p>
        The concept of capability is a mixture of planning ac- stable and some fixing is necessary. These events are captured
tions [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] and services (or micro-services [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]). MUSA respects by the outer adaptation loop. In this case the system blocks
this dual nature by separating the abstract capability – a any capability concerning the current execution and executes a
symbolic description of the effect of the action – and the new self-configuration phase. The result may be a totally new
concrete capability – a small, independent, composable unit workflow instance to be executed for replacing the previous
of computation that produces some concrete result. one.
      </p>
      <p>The capability supports self-adaptation because it is not The outer loop also monitors the goal injection, retrieving
specific for a given goal, but it can be reused for addressing cases in which the running workflow is obsolete with respect
several ones. It also is implemented for explicit fault isolation. to the new injected goals. Also in these case the system’s</p>
      <p>Moreover, we focus on the idea that capabilities make it objective is that of switching from a workflow configuration
easier to deploy new versions of the software frequently. to another one that is able of addressing the new set of goals.
Indeed, providing capabilities as run-time entities constitute
the basis for continuous data exchange between human and
agents and therefore system evolution. Moreover, each capa- IV. AGILITY AND COMPLEX (SELF-ADAPTIVE) SYSTEMS
bility is relatively small, and therefore easier for a developer
to implement. It can be deployed independently of other
capabilities. By separating the overall functionality through
capabilities, it is easier to organize the overall development
effort around multiple teams.</p>
    </sec>
    <sec id="sec-5">
      <title>Agile is not strictly a methodology, it is more a way of</title>
      <p>conceiving working in teams. Agile movements were born
and are operating for exploring new alternatives to traditional
software development. Proponents of Agile approaches think
that software development process can adapt to changing
and dynamic operational conditions, imposed by variable and
C. Self-Configuring a Solution unpredictable environment, by putting emphasis to actual</p>
      <p>
        MUSA provides an automatic reasoner that, at run-time, working code [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. In this way Agile allows people to act in
configures the workflow by associating available capabilities response to uncertainty and unpredictability through iterations,
to the injected goals. increments and feedbacks.
      </p>
      <p>The approach is possible because both goals and capabilities Agile is an efficacious alternative to traditional software
are first-class entities to be used within agent deliberation. sequential development. Agile development paradigm is well
An agent requiring to address an unanticipated goal must suited to the design of systems where requirements
contindecide which capability (or combination of capabilities) have uously change. Requirements changing is, in the case of
to execute. the system we are considering here, due to uncertain and</p>
      <p>
        The automatic reasoner selects and associates capabilities dynamic development environments resulting from:
evolvaccording to the goals that are injected [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. The basic idea is ing technologies, changing customer requirements and other
that of exploring a space of solutions, where goals represent changes related to the analysis and design phase. All the
points of the space that must be reached, and the abstract existing Agile approaches face changes with incremental and
capabilities provide evolution functions that allow moving small software releases, with highly adaptation to sudden or
Design Time
      </p>
      <p>System Design (offline)
Requirements</p>
      <p>Analysis</p>
      <p>System Design
(online)</p>
      <p>Runtime</p>
      <p>Execution and</p>
      <p>Monitoring
no
able to
re-plan</p>
      <p>yes</p>
      <p>New
Requirements
Acquisition
system is
autonomous
Minimal human
intervention</p>
      <p>MUSA
feedback loop
last moment changes and with the production of the amount
of documentation necessary only for learning and modifying.</p>
      <p>
        So how and why talking about agility in the context of
complex (self-adaptive) physical systems and agents? In [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]
the author states that lightweight methodologies, including XP
and Agile, “include some concepts and principles of natural
complex systems”. The main principles of natural complex
systems (see [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] for a literature review) are:
• open systems and inner interactions - complex adaptive
physical systems are open systems exchanging
information in open and dynamic environments and components
of the systems interact dynamically each other.
Interactions affect the overall behavior of the system.
• feedback loop and emergent behavior - changes in some
parts or components of the system result in changes in
other parts or in the whole system.
• distributed control - control is distributed through the
      </p>
      <p>system.
• emergent behavior - features of the system and its
behavior in its whole cannot be described and understood
only looking at the single components, a holistic vision
is necessary, interactions among components let the
behavior arise.</p>
      <p>
        These principles perfectly fit agile practices, the most
important one is that Agile greatly focuses attention on the
continuous open interaction among all the involved stakeholder
of the system. So, our hypothesis is: complex physical system
involves software components and users both at run time and
design time. If we consider the complex adaptive physical
system and its design process as it were a whole, as if one
were an integral part of the other then we may apply the Agile
principles. Agile principles assure us to use one of the best
approaches for engineering self-adaptation [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]; agents,
in some moments of the software development, are “agilists”.
      </p>
      <p>Users are included in the design process with the support of
the multi-agent system from which MUSA is made. In the
following we give an overview of the MUSA framework in
order to let understand how it (by means of agents) support
in the developing and enacting a software application and to
bring to the illustration on how its use is agile.</p>
    </sec>
    <sec id="sec-6">
      <title>V. DESIGNING COMPLEX SELF-ADAPTIVE SYSTEMS EMPLOYING MUSA AND AGILITY</title>
    </sec>
    <sec id="sec-7">
      <title>Using the MUSA framework allows to include the user</title>
      <p>
        in the design process by employing the following agents:
discovery agent, specification manager, negotiator, worker e
case manager; moreover it partially realizes the design time at
run time [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ].
      </p>
      <p>Fig. 1 is intended to explain which are the main activities to
be performed when developing an application with MUSA.
The process is divided in two parts, the first one (the left
block in the figure) includes the standard design activities
(Requirements Analysis and System Design) for developing
a first release of an application. During the very first step,
the system design activity is performed “offline”, hence
requirements are captured and analyzed in a quite common and
standard fashion and then they are converted in the design of
the multi-agent system underpinning MUSA. During the first
execution at runtime (the first specific workflow configuration)
the system starts to monitor the environment and each time a
change occurs, a new requirement or a need, then the system
tries to re-plan. If re-planning is possible then the system goes
on in its work and continues the executing and monitoring
phase otherwise the system searches for a new solution. An
“online” system design is performed, users and agents in
MUSA collaborate in order to find a new solution at run
time as explained in the previous section. The design phase is
immersed in the run time one, agents and users work in team.
During the “online” System Design the presence of agents lets
users apply a minimal intervention thus enhancing adaptation.
Moreover, the team formed by agents and users, during the
implementation of the feedback loop, apply an agile approach
that, as said in section IV, gives a means and is one of the most
promising approaches for designing and developing complex
(self-adaptive) systems.</p>
      <p>In the following we analyze the Manifesto for Agile
Software Development1 with respect to the rationale underpinning</p>
    </sec>
    <sec id="sec-8">
      <title>1http://agilemanifesto.org</title>
      <p>Agile processes promote sustainable (all the involved stakeholder maintain
a constant pace) development. Simplicity–the art of maximizing the amount
of work not done–is essential.</p>
      <p>The best architectures, requirements, and designs emerge from
selforganizing teams.</p>
      <p>Frequently tuning and adjusting team’s behavior for becoming more
effective.
the use of MUSA:</p>
      <p>Individuals and interactions over process and
tools
MUSA interacts with its environment. There is no
need to follow a rigid design process and the
presence of MUSA guarantees that the user is the center
of design/runtime as well as interaction between
users and software.</p>
      <p>Working software over comprehensive
documentation
Using MUSA does not imply to produce
documentation; the only useful documentation is the one for
describing the environment through the ontology and
for the newly introduced capabilities and goals.
Customer collaboration over contract negotiation
Considering the runtime phase as part of the design
process, the user and the customer are at the center
of MUSA activities; the customer collaboration starts
with the definition of the requirements and
continues during the execution with advising new goals.
Negotiation happens at run time with a pay per use
criterion, it is automatic and has a minor importance
with respect to collaboration.</p>
      <p>Responding to change over following a plan
No plans are pre-defined but the system is made able
to configure itself at runtime each time a change
occurs.</p>
    </sec>
    <sec id="sec-9">
      <title>In Table I, we show how the principles behind the Agile</title>
      <p>Manifesto2 are met by using MUSA, both during the
selfadaptive system development and its running. In the left
column the principles of Agile Manifest are summarized, the</p>
    </sec>
    <sec id="sec-10">
      <title>2http://agilemanifesto.org/principles.html</title>
      <p>MUSA general Features
The Proactive Means-End-Reasoning for producing plans allows to create
soon a working software and to continually update it by (re)starting from
a set of goals and capabilities. (See also the following principle).
Once a new set of goals is specified, MUSA, by means of the injection
technique, allows to produce new portions of working software. (See also
the previous principle).</p>
      <p>Regardless of the role played by agents or humans in the MUSA loop, the
use of goals allows to specify the business logic of how services have to
be composed thus realizing the continuous collaboration among business
people and developers.</p>
      <p>Capabilities and goal specifications are compliant with the
conceptualization of the environment.</p>
      <p>MUSA, by means of the solution explorer agent, checks in the space of
solutions if the new set of goal has been reached.</p>
      <p>The use of MUSA as a middle layer, for realizing design process at runtime,
allows of some part the process to be made automatic thus reducing the
amount of work to be done and documentation to be produced.
The core of MUSA collaboration issues is guaranteed by the holonic
architecture. Holons allow self organization among, distributed coordination
and knowledge sharing.</p>
      <p>With regard to the team composed both by agents, holons continuously
know the state of the environment and so they are able to reach all the
new goals by organizing and self adapting their behavior.
right column shows which MUSA’s feature helps in putting
into practice agility.</p>
    </sec>
    <sec id="sec-11">
      <title>VI. CONCLUSION</title>
      <p>Actually, complex physical (self-adaptive) systems are
required to be much more than simply an ensemble of interacting
components; components are not only intertwined but they
form a unique ensemble of persons, technologies,
organizations and environmental contexts. Environment, moreover,
could involve laws and rules regulating the social interactions
and the interaction of people with the technology. Humans
are immersed together with devices in a highly dynamic
environment where a great amount of data and services are
constantly available. It is unthinkable that a human user were
able to act in such a kind of environment and to consciously
handle all the offered possibilities.</p>
      <p>Standard analysis and design of systems with these extended
features are more challenging than ever, mainly because the
behavior of system components depends and have to be
specified in terms of their interactions and communications
with the physical environment. Moreover, interactions and
communications are affected by environment dynamics at
runtime.</p>
      <p>
        Inspired by models@runtime [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] research line and by Baresi
et al. [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] that suggest to reduce the boundary gap between
design time and run time, we propose the use of MUSA
along with some Agile design activities that see users and
agents highly included and immersed in the design process.
Agility allows to realize user inclusion and to provide a means
for establishing a design approach that adapt and evolve at
run time while new requirements arise from the continuous
interaction among users and dynamic environment.
      </p>
      <p>What we illustrate here is a first experiment towards
engineering complex (self-adaptive) physical systems; it was
helpfulfor gaining useful insights on design activities in order
to complete the development of a design methodology for
complex systems we are working on.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>Jesper</given-names>
            <surname>Andersson</surname>
          </string-name>
          , Luciano Baresi, Nelly Bencomo, Roge´rio de Lemos, Alessandra Gorla, Paola Inverardi, and Thomas Vogel.
          <article-title>Software engineering processes for self-adaptive systems</article-title>
          . In Software Engineering for
          <string-name>
            <surname>Self-Adaptive Systems</surname>
            <given-names>II</given-names>
          </string-name>
          , pages
          <fpage>51</fpage>
          -
          <lpage>75</lpage>
          . Springer,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>Luciano</given-names>
            <surname>Baresi</surname>
          </string-name>
          and
          <string-name>
            <given-names>Carlo</given-names>
            <surname>Ghezzi</surname>
          </string-name>
          .
          <article-title>The disappearing boundary between development-time and run-time</article-title>
          .
          <source>In Proceedings of the FSE/SDP workshop on Future of software engineering research</source>
          , pages
          <fpage>17</fpage>
          -
          <lpage>22</lpage>
          . ACM,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>G.</given-names>
            <surname>Blair</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Bencomo</surname>
          </string-name>
          , and R. B. France. Models@ run.time.
          <source>Computer</source>
          ,
          <volume>42</volume>
          (
          <issue>10</issue>
          ):
          <fpage>22</fpage>
          -
          <lpage>27</lpage>
          ,
          <year>Oct 2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <surname>Rafael</surname>
            <given-names>H Bordini</given-names>
          </string-name>
          ,
          <article-title>Jomi Fred Hu¨bner, and Michael Wooldridge. Programming multi-agent systems in AgentSpeak using Jason</article-title>
          , volume
          <volume>8</volume>
          . John Wiley &amp; Sons,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>Yuriy</given-names>
            <surname>Brun</surname>
          </string-name>
          , Giovanna Di Marzo Serugendo, Cristina Gacek, Holger Giese, Holger Kienle, Marin Litoiu, Hausi Mu¨ller, Mauro Pezze`, and
          <string-name>
            <given-names>Mary</given-names>
            <surname>Shaw</surname>
          </string-name>
          .
          <article-title>Engineering self-adaptive systems through feedback loops. In Software engineering for self-adaptive systems</article-title>
          , pages
          <fpage>48</fpage>
          -
          <lpage>70</lpage>
          . Springer,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>Jim</given-names>
            <surname>Buckley</surname>
          </string-name>
          , Tom Mens, Matthias Zenger, Awais Rashid, and Gu¨nter Kniesel.
          <article-title>Towards a taxonomy of software change</article-title>
          .
          <source>Journal of Software Maintenance and Evolution: Research and Practice</source>
          ,
          <volume>17</volume>
          (
          <issue>5</issue>
          ):
          <fpage>309</fpage>
          -
          <lpage>332</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>Betty</surname>
            <given-names>HC Cheng</given-names>
          </string-name>
          , Rogerio De Lemos, Holger Giese, Paola Inverardi, Jeff Magee, Jesper Andersson, Basil Becker, Nelly Bencomo, Yuriy Brun,
          <string-name>
            <given-names>Bojan</given-names>
            <surname>Cukic</surname>
          </string-name>
          , et al.
          <article-title>Software engineering for self-adaptive systems: A research roadmap. In Software engineering for self-adaptive systems</article-title>
          , pages
          <fpage>1</fpage>
          -
          <lpage>26</lpage>
          . Springer,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>Michael</given-names>
            <surname>Gelfond</surname>
          </string-name>
          and
          <string-name>
            <given-names>Vladimir</given-names>
            <surname>Lifschitz</surname>
          </string-name>
          .
          <article-title>Action languages</article-title>
          .
          <source>Computer and Information Science</source>
          ,
          <volume>3</volume>
          (
          <issue>16</issue>
          ),
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>M</given-names>
            <surname>Gerber.</surname>
          </string-name>
          <article-title>Keynote speech: Lightweight methods and their foundations in chaos theory</article-title>
          .
          <source>In 6th IEEE International Enterprise Distributed Object Computing Conference (EDOC</source>
          <year>2002</year>
          ), Ecole Polytechnique Fe´de´rale de Lausanne (EPFL),
          <year>Switzerland</year>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>Heather J Goldsby</surname>
            , Pete Sawyer, Nelly Bencomo, Betty HC Cheng, and
            <given-names>Danny</given-names>
          </string-name>
          <string-name>
            <surname>Hughes</surname>
          </string-name>
          .
          <article-title>Goal-based modeling of dynamically adaptive system requirements</article-title>
          .
          <source>In Engineering of Computer Based Systems</source>
          ,
          <year>2008</year>
          .
          <source>ECBS</source>
          <year>2008</year>
          .
          <article-title>15th Annual IEEE International Conference</article-title>
          and Workshop on the, pages
          <fpage>36</fpage>
          -
          <lpage>45</lpage>
          . IEEE,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>Paola</given-names>
            <surname>Inverardi</surname>
          </string-name>
          .
          <article-title>Software of the future is the future of software</article-title>
          ? In
          <source>International Symposium on Trustworthy Global Computing</source>
          , pages
          <fpage>69</fpage>
          -
          <lpage>85</lpage>
          . Springer,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>Radhika</given-names>
            <surname>Jain</surname>
          </string-name>
          and
          <string-name>
            <given-names>Peter</given-names>
            <surname>Meso</surname>
          </string-name>
          .
          <article-title>Theory of complex adaptive systems and agile software development</article-title>
          .
          <source>AMCIS 2004 Proceedings, page 197</source>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>Philippe</given-names>
            <surname>Kruchten</surname>
          </string-name>
          .
          <article-title>Agility with the rup</article-title>
          .
          <source>Cutter IT journal</source>
          ,
          <volume>14</volume>
          (
          <issue>12</issue>
          ):
          <fpage>27</fpage>
          -
          <lpage>33</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>Sotirios</surname>
            <given-names>Liaskos</given-names>
          </string-name>
          , Alexei Lapouchnian, Yiqiao Wang,
          <string-name>
            <surname>Yijun Yu</surname>
            , and
            <given-names>Steve</given-names>
          </string-name>
          <string-name>
            <surname>Easterbrook</surname>
          </string-name>
          .
          <article-title>Configuring common personal software: a requirementsdriven approach</article-title>
          .
          <source>In 13th IEEE International Conference on Requirements Engineering (RE'05)</source>
          , pages
          <fpage>9</fpage>
          -
          <lpage>18</lpage>
          . IEEE,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>Peter</given-names>
            <surname>Meso</surname>
          </string-name>
          and
          <string-name>
            <given-names>Radhika</given-names>
            <surname>Jain</surname>
          </string-name>
          .
          <article-title>Agile software development: Adaptive systems principles and best practices</article-title>
          .
          <source>Information Systems Management</source>
          ,
          <volume>23</volume>
          (
          <issue>3</issue>
          ):
          <fpage>19</fpage>
          -
          <lpage>30</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>Dmitry</given-names>
            <surname>Namiot</surname>
          </string-name>
          and
          <string-name>
            <given-names>Manfred</given-names>
            <surname>Sneps-Sneppe</surname>
          </string-name>
          .
          <article-title>On micro-services architecture</article-title>
          .
          <source>International Journal of Open Information Technologies</source>
          ,
          <volume>2</volume>
          (
          <issue>9</issue>
          ),
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>Mark</surname>
            <given-names>EJ</given-names>
          </string-name>
          <string-name>
            <surname>Newman</surname>
          </string-name>
          .
          <article-title>Complex systems: A survey</article-title>
          .
          <source>arXiv preprint arXiv:1112.1440</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>Luca</given-names>
            <surname>Sabatucci</surname>
          </string-name>
          and
          <string-name>
            <given-names>Massimo</given-names>
            <surname>Cossentino</surname>
          </string-name>
          .
          <article-title>From Means-End Analysis to Proactive Means-End Reasoning</article-title>
          .
          <source>In Proceedings of 10th International Symposium on Software Engineering for Adaptive and Self-Managing Systems, May 18-19</source>
          <year>2015</year>
          , Florence, Italy.
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>Luca</surname>
            <given-names>Sabatucci</given-names>
          </string-name>
          , Carmelo Lodato, Salvatore Lopes, and
          <string-name>
            <given-names>Massimo</given-names>
            <surname>Cossentino</surname>
          </string-name>
          .
          <article-title>Towards self-adaptation and evolution in business process</article-title>
          .
          <source>In AIBP@ AI* IA</source>
          , pages
          <fpage>1</fpage>
          -
          <lpage>10</lpage>
          . Citeseer,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <surname>Luca</surname>
            <given-names>Sabatucci</given-names>
          </string-name>
          , Salvatore Lopes, and
          <string-name>
            <given-names>Massimo</given-names>
            <surname>Cossentino</surname>
          </string-name>
          .
          <article-title>Selfconfiguring cloud application mashup with goals and capabilities</article-title>
          .
          <source>Cluster Computing - The Journal of Networks Software Tools and Applications</source>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <surname>Luca</surname>
            <given-names>Sabatucci</given-names>
          </string-name>
          , Patrizia Ribino, Carmelo Lodato, Salvatore Lopes, and
          <string-name>
            <given-names>Massimo</given-names>
            <surname>Cossentino</surname>
          </string-name>
          .
          <article-title>Goalspec: A goal specification language supporting adaptivity and evolution</article-title>
          . In International Workshop on Engineering Multi-Agent
          <string-name>
            <surname>Systems</surname>
          </string-name>
          , pages
          <fpage>235</fpage>
          -
          <lpage>254</lpage>
          . Springer,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>