This page summarises my research career from its beginnings as a PhD student in the 1970s to my retirement from St Andrews University in 2014. I have published lots of papers during that time – my Google Scholar profile includes a reasonably complete list (at least of those papers that are available on the Web).

Early research

I completed my PhD at St Andrews University in 1977 where I worked in the areas of computer architecture and programming languages. My PhD was concerned with developing language-oriented architectures using microprogramming, where I made extensive use of pattern matching systems. Key publications were:  ‘ Towards Machine Independent Microprogramming ‘ and ‘ A Pattern Matching System.

Programming environments

The next phase of my research career started at Strathclyde University where I became interested in software engineering and software engineering environments. My first research grants came from the UK’s Alvey programme which supported the development of Integrated Programming Support Environments (IPSEs). We investigated ways of automatically generating graphical editing systems and, later, in automating some software engineering processes. During this time, I moved from Strathclyde University to take a Chair in Software Engineering at Lancaster University. Key publications were: ‘ The ECLIPSE System Structure Language, Describing Software Design Methodologies, Software Design Automation in an IPSE, Interacting with an active integrated environment ‘, and ‘ An Approach to System Evolution.

Requirements engineering

Following my work on the Alvey programme, I became interested in some of the issues and problems of requirements engineering where we focused on developing viewpoint-oriented approaches to requirements engineering. We extended these approaches to take system wide concerns into account. It was in this work that I started to focus on systems dependability as a principal concern. Key publications were: ‘Viewpoints for Requirements Definition’, ‘Requirements engineering with viewpoints’, ‘ Viewpoints: Principles, problems and a practical approach to requirements engineering, Integrating Safety Analysis and Requirements Engineering, Viewpoints for requirements elicitation: a practical approach ’ and’ An Industrial Experiment in Requirements Engineering Process Assessment and Improvement.

Social analysis for software engineering

During my work on programming environments, I became convinced that we should be looking at both software engineering and requirements engineering as a cooperative process and this led to a groundbreaking collaboration with colleagues from sociology and this inter-disciplinary collaboration has been a feature of all of my research since then.  We carried out innovative work in studies of operational environments and in developing methods and techniques that supported the use of social analysis techniques by software engineers. Key publications from this work were ‘ Sociologists can be Surprisingly Useful in Interactive Systems Design, Ethnographically-informed systems design for air traffic control, The Designers Notepad: Supporting and Understanding Cooperative Design, Coherence: an approach to representing ethnographic analyses in system design, Social Analysis in the Requirements Engineering Process: From Ethnography to Method, and Patterns of cooperative interaction: Linking ethnomethodology and design.

Dependability and socio-technical systems

In 2000, I became involved in a large UK research programme called DIRC (the Dependability Interdisciplinary Research Collaboration) where my role was to lead work at Lancaster University on socio-technical influences on dependability.  Much of our work was concerned with the social analysis of settings where system dependability was important. Key publications from the DIRC work were ” An Integrated Approach to Dependability Requirements Engineering ”, ‘ Applying patterns of interaction to work (re)design: e-government and planning ‘,  ‘ Ethnography and the Social Structure of Work ‘,  ‘ Dependable Domestic Systems Design: A Socio-technical Approach ‘,  Models for Responsibility Assignment ‘, and ‘ Causal Responsibility Models.

Large-scale complex IT systems

In 2006, I moved from Lancaster University to St Andrews University (where it all began) and became involved in a UK Research and Training Initiative in Large-scale Complex IT Systems (LSCITS). Again, the focus of our work was on how socio-technical factors influenced the procurement, design and operation of very large and complex systems. Some key publications from this work were: ‘ Construction by Configuration: Challenges for Software Engineering Research and Practice, Deriving Information Requirements from Responsibility Models, Testing in the Wild: The Social and Organisational Dimensions of Real-World Practice ‘, ‘ Socio-technical systems: From design methods to systems engineering ‘ and ‘ Large-scale Complex IT Systems.

As part of this work, we also developed a Socio-technical Systems Engineering Handbook , which tied together the large body of work that I’ve done in this area over many years.

As part of this work, I became interested in cloud computing and set up the first private cloud in a UK university for experimental purposes. As a PhD project, we developed a system for cloud cost estimation, which led to the establishment of a successful spin-off company called (now taken over by Rightscale). Key publications in cloud computing include ‘ The Cloud Adoption Toolkit: Supporting Cloud Adoption Decisions in the Enterprise ‘ and ‘ An Elastic Virtual Infrastructure for Research Applications (ELVIRA).


I am no longer active in software engineering research but I do write occasional articles.  This one talks about some practical experience in large-scale systems engineering where I found that virtually all software engineering methods and techniques did not work. ‘Designing for the Don’t Cares: A story about a socio-technical system’ .