main properties and how an intelligent agent can be
applied in the software engineering domain.
2.1 Intelligent Agents
The essence of an intelligent agent is formalized by
Franklin, when he defines it as an entity situated
within and a part of an environment, that monitors
that environment and acts on it over time, in pursuit
of its own plan and so as to change what it monitors
in the future (Franklin 1996).
Franklin also identifies the properties that may
have an agent:
Reactive: responds in a timely fashion to
changes in the environment;
Autonomous: exercises control over its own
actions;
Goal-oriented: may act following a plan;
Temporally continuous: is a continuous running
process;
Communicative: can establish dialogs with
other agents including people;
Adaptive: sensitive to each user´s strengths and
weaknesses;
Mobile: able to transport itself from one
machine to another;
Flexible: actions are not scripted;
Character: apparent personality and emotional
state.
The intelligent agent definition given above satisfies
the first four properties. Adding other properties
may produce useful types of agents for example,
mobile learning agents.
2.2 Applying Agents to Engineer
Software
Effective intelligent agents must deal with the grey
areas of the incomplete function for which it is an
approximation. Software engineering is one of these
grey areas where the adequate output for a given
input is context-dependent. That is, there are
different solutions for the same software problem
(requirements) and the suitability of a solution
(design) depends on the context (project constraints).
The knowledge for building software is buried in
books and manuals or in the heads of software
engineering experts, and how to find and get access
to it is a challenging task. Frequently the software
engineer is blocked in one step of the development
process, having no access to the human expert that
can help and suggest what the software engineer
needs to know at this particular situation.
The availability of a personal computerized tutor
is not time restricted and can help the software
engineer in three ways: by capturing a significant
part of the developing process knowledge; by
reasoning based on this knowledge and received
events; and by automating the application of this
knowledge to the software under development.
Presenting relevant information and proposing
suggestions eases the decisions made by the
software engineer.
Figure 1 represents the interaction of the
computerized tutor, the software engineer and the
CASE tool in the scenario of generic software
development process. The computerized tutor asks
questions to the software engineer and receives
responses from him. The computerized tutor checks
the software models and receives events from the
CASE tool, for example when a new building
element is dragged and dropped in a diagram.
Following the development goals and reacting to
events, the computerized tutor sends suggestions to
the software engineer. So, the expert is available
when the software engineer has a need.
Figure 1: Computerized Tutor in Software Development.
The feasibility of the usage of computerized tutors is
also supported by recent experiences, which have
similarities and differences in goals, scope and
implementation with respect to our computerized
tutor.
Diaz Pace and Campolo report an expert system
being constructed that will support design
modifiability (Diaz Pace 2003). Bachmann, Bass,
Klein and Shelton propose an expert system that
collaborates with the architect to produce a design of
an architecture that supports an expected change
(Bachmann 2004). This rule based architecture
design assistant uses architecture modifiability
attribute models viewed as frames. The next
ICSOFT 2007 - International Conference on Software and Data Technologies
368