A framework for exploiting emergent behaviour to capture 'best practice' within a programming domain
Inspection is a formalised process for reviewing an artefact in software engineering.
It is proven to significantly reduce defects, to ensure that what is delivered is what is
required, and that the finished product is effective and robust.
Peer code review is a less formal inspection of code, normally classified as
inadequate or substandard Inspection. Although it has an increased risk of not
locating defects, it has been shown to improve the knowledge and programming
skills of its participants.
This thesis examines the process of peer code review, comparing it to Inspection,
and attempts to describe how an informal code review can improve the knowledge
and skills of its participants by deploying an agent oriented approach.
During a review the participants discuss defects, recommendations and solutions, or
more generally their own experience. It is this instant adaptability to new information that gives the review process the ability to improve knowledge. This
observed behaviour can be described as the emergent behaviour of the group of
programmers during the review.
The wider distribution of knowledge is currently only performed by programmers
attending other reviews. To maximise the benefits of peer code review, a
mechanism is needed by which the findings from one team can be captured and
propagated to other reviews / teams throughout an establishment.
A prototype multi-agent system is developed with the aim of capturing the emergent
properties of a team of programmers. As the interactions between the team members
is unstructured and the information traded is dynamic, a distributed adaptive system
is required to provide communication channels for the team and to provide a
foundation for the knowledge shared. Software agents are capable of adaptivity and
learning. Multi-agent systems are particularly effective at being deployed within
distributed architectures and are believed to be able to capture emergent behaviour.
The prototype system illustrates that the learning mechanism within the software
agents provides a solid foundation upon which the ability to detect defects can be
learnt. It also demonstrates that the multi-agent approach is apposite to provide the
free flow communication of ideas between programmers, not only to achieve the
sharing of defects and solutions but also at a high enough level to capture social
information. It is assumed that this social information is a measure of one element of
the review process's emergent behaviour.
The system is capable of monitoring the team-perceived abilities of programmers,
those who are influential on the programming style of others, and the issues upon which programmers agree or disagree. If the disagreements are classified as
unimportant or stylistic issues, can it not therefore be assumed that all agreements
are concepts of "Best Practice"?
The conclusion is reached that code review is not a substandard Inspection but is in
fact complementary to the Inspection model, as the latter improves the process of
locating and identifying bugs while the former improves the knowledge and skill of
the programmers, and therefore the chance of bugs not being encoded to start with.
The prototype system demonstrates that it is possible to capture best practice from a
review team and that agents are well suited to the task. The performance criteria of
such a system have also been captured.
The prototype system has also shown that a reliable level of learning can be attained
for a real world task. The innovative way of concurrently deploying multiple agents
which use different approaches to achieve the same goal shows remarkable
robustness when learning from small example sets.
The novel way in which autonomy is promoted within the agents' design but
constrained within the agent community allows the system to provide a sufficiently
flexible communications structure to capture emergent social behaviour, whilst
ensuring that the agents remain committed to their own goals.