.: topics
The following is a list of suggested PhD topics. Most of these could be reduced in scope to make a MSc dissertation. If you are a student interested in any of these topics, please contact me.
Empirical Evaluation of Model Driven Engineering
The term Model-Driven Engineering (MDE) refers to the systematic use of models as primary artefacts during the engineering process. MDE has recently become popular in both academia and industry as a way to handle the increasing complexity of modern software, and, by many, is seen as the next step in increasing the level of abstraction at which we build, maintain and reason about software. The recent trend towards MDE was triggered by the Object Management Group’s standardization of a particular MDE process, Model Driven Architecture (MDA), in 2001.
MDE claims many potential benefits to software development, the most important of which are gains in productivity, portability, maintainability and interoperability of software-intensive systems. However, there is currently a distinct lack of empirical evidence to support these claims. Rather, companies tend to adopt MDE based not on an analysis of how it will affect their business but on perception or the advice of evangelists.
The aim of this thesis is to provide a scientific foundation for MDE adoption. In essence, it will try to understand empirically which factors lead to successful adoption of MDE and which do not. A secondary aim is to develop a theory of software modellers’ cognitive processes. The former will have immediate impact on MDE tool developers and MDE end-users by cataloguing what works in MDE and what does not work. The latter will have longer term, broader impacts on the entire discipline of software design since its results will inform the future generations of software design tools.
Bio-inspired Software Engineering for Next Generation Open Systems
This thesis will study self-organization in biological organisms as a way to inspire radically
new principles for the software engineering of next generation open software-intensive systems. Open systems
– that is, collections of interacting components allowing modifications not conceived by the original design –
are now widely researched and developed for a variety of contexts, including smart office applications, assisted
living and industrial monitoring systems. The state-of-the-art in open systems development is that, in practice, it
is manually-intensive and time-consuming to modify the component configuration (e.g., to add a component
with a new interface). Human engineers must get involved in complex integration tasks to integrate new components,
as well as challenging retuning tasks to ensure that overall system goals are maintained.
Radically new engineering principles are needed to rethink how we engineer open systems and
provide innovative capabilities that allow them to autonomously self-organize when components are added or
removed, when environmental conditions change, or when retuning of system goals is necessary. Despite advances
in modularization technologies, conventional software engineering techniques do not scale to
support the vision of self-organizing systems because, whenever a new component
is added, unintended side-effects inevitably break existing functionalities. In other words, as open systems grow
to include vast numbers of components, current software engineering technologies will not be able to handle the
inherent complexity.
Complexity and contingency, however, are ubiquitous in biology. There are many examples
of cellular organisms which self-organize but are not structured in a way that maps well to existing computer
science notions. Traditional software engineering techniques are plug and play solutions based on the principle
of divide and conquer. However, biology does not work like this. This is evidence therefore that the self-organizing
capabilities of biological organisms, which are not reflected in mainstream thinking in computing,
could inspire novel organizational rules and patterns. These patterns could represent a step change in software
systems engineering and could enable true self-organization in the systems of tomorrow.
|