Where the role of software-intensive systems has shifted from the traditional
one of fulfilling isolated computational tasks, larger collaborative societies
with interaction as primary resource, is gradually taking its place. This can
be observed in anything from logistics to rescue operations and resource
management, numerous services with key-roles in the modern infrastructure.
In the light of this new collaborative order, it is imperative that the tools
(compilers, debuggers, profilers) and methods (requirements, design,
implementation, testing) that supported traditional software engineering values
also adjust and extend towards those nurtured by the online instrumentation of
software intensive systems. That is, to adjust and to help to avoid situations
where limitations in technology and methodology would prevent us from
ascertaining the well-being and security of systems that assists our very lives.
Coupled with most perspectives on software development and maintenance is one
well established member of, and complement to, the development process.
Debugging; or the art of discovering, localising, and correcting undesirable
behaviours in software-intensive systems, the need for which tend to far
outlive development in itself.
Debugging is currently performed based on a premise of the developer operating
from a god-like perspective. A perspective that implies access and knowledge
regarding source code, along with minute control over execution properties.
However, the quality as well as accessibility of such information steadily
decline with time as requirements, implementation, hardware components and
their associated developers, all alike fall behind their continuously evolving
surroundings.
In this thesis, it is argued that the current practice of software debugging is
insufficient, and as precursory action, introduce a technical platform suitable
for experimenting with future methods ...