University College London
ResearchSoftware Systems Engineering is the branch of systems engineering concerned with the development of large and complex software intensive systems. It focuses on: the real-world goals for, services provided by, and constraints on such systems; the precise specification of system structure and behaviour, and the implementation of these specifications; the activities required in order to develop an assurance that the specifications and real-world goals have been met; the evolution of such systems over time and across system families. It is also concerned with the processes, methods and tools for the development of software intensive systems in an economic and timely manner.
The context of software system development is changing. Systems are rarely developed from scratch; most system development involves extension of preexisting systems and integration with 'legacy' infrastructure. These systems are embedded in complex, highly dynamic, decentralised organisations; they are required to support business and industrial processes which are continually reorganised to meet changing consumer demands. The services that such a system provides must, for the life of the system, satisfy the requirements of a diverse and shifting group of stakeholders. There is a shift towards client and user centred approaches to development and an accompanying shift from a concern with whether a system will work towards how well it will work. Overall, fewer 'bespoke' software systems are being constructed. Instead, generic components are built to be sold into markets. Components are selected and purchased 'off the shelf' with development effort being refocussed on configuration and interoperability. The resulting systems are composed from autonomous, locally managed, heterogeneous components, which are required to cooperate to provide complex services. They are, in general, distributed and have significant non-functional constraints on their operation.
This context raises a set of tightly intertwined research issues in the areas of requirements engineering, software processes and software architecture which I am concerned to address. My orientation is towards engineering solutions which are lightweight, and are carefully targeted towards "real" industrial problems. Often this entails thorough problem analysis. I am very interested in constructing solutions that exploit emerging standards and work hard to build on the work of others. My research approach is driven by case studies combined with rigorous analysis and validated in practice through collaboration and consultancy with industry. My work can therefore be regarded as both experimental and applied. I am particularly aware of the need for software systems engineering techniques, methods and tools to scale and to be simple enough that they can be adopted in practice.
I believe it is important to do work which tackles important societal issues: health, poverty, security and democracy. I also believe that software systems engineering has a major opportunity to contribute to the physical and life sciences both by assisting in the construction of the large scale software infrastructure that these sciences require and by developing new modelling and model management techniques.