Since returning to academia in 2008, I have had a strong focus on the processes used to develop and maintain software. These include the more traditional lifecycle models but also contemporary approaches to software development, including agile, lean and continuous software evolution. I successful defended my PhD thesis in 2012, the focus of which was the interaction between software process adaptation and business performance (some details of which may be accessed here:https://www.computer.org/csdl/trans/ts/2015/12/07214314.html or http://doras.dcu.ie/20983/). Thereafter, I contributed to the safety critical software domain as Research Manager on the development of MDevSPICE® - the medical device software process assessment framework (a position which also included authorship on editorial roles on international standards and technical reports).
More recently, I am leading an international consortium that is focused on obtaining funding to examine and improve the use of terminology in software development, a project which includes multiple specialisms, ranging from computational linguistics, to terminology and ontology expertise, and also knowledge management skill-sets. I have also successfully led an industry and academia combined consortium to the successful award of €2.1M in 2018, this fund coming primarily from the Disruptive Technologies and Innovation Fund (c. 8% success rate). Our industry partners include FINEOS and fourTheorem Ltd..
As a Lecturer, I am also actively involved in the very important activity of teaching in Dublin City University, including modules such Building Better Software, Software Process, Software Quality, Software Testing, Managing Projects and Change, and Object Oriented Programming.
My research is currently focused in the following areas:
(1) Software System Automated Architectural Transformation
(2) Complexity Theory and Software Development Processes.
(3) Software Development Process Terminology.
(4) Continuous Software Engineering.
(5) Software Process Adaptation.
(6) Human factors in Software Engineering & SE Education.
1. Software System Automated Architectural Transformation.
With the era of serverless computing emerging, there is a need to transform established monolith based software architectures into distributed software architectures. Such transformation tasks are presently largely manual, slow, expensive and risky. In an effort to reduce the effect of these concerns, we have proposed the use of dynamic and static system and code analysis in combination with other data sources of value, for example source code repository metrics. To support this research, we have secured a Disruptive Technologies and Innovation Fund (DTIF) grant of c.€2.1M together with FINEOS ltd and fourTheorem ltd.
2. Complexity Theory and Software Development Processes. Work to examine the relationship between situational factors and software development processes suggests that the design and adaptation of processes is similar to behaviour observed in complex adaptive systems. Further information is available at: Related research paper on complexity theory and software development processes.
3. Software Development Process Terminology. A great deal of process innovation has been proposed over the decades, up to the present time where we witness an explosion of lean and agile software development methodologies. With the passing of time, new terminology has been introduced, sometimes to refer to new concepts, other times just new terms for preexisting concepts. Our work in this areas seeks to understand the scale of terminological confusion and to examine its impact. Our terminology research is closely related to core software engineering process theory research which is concerned with the identification of universal concerns in software development (for example, we will always have at least one iteration, and we must always have some requirements, and we must always produce some code). Further information is available at: Related research paper on software development process evolution and Related research paper on software development process terminological confusion.
4. Continuous Software Engineering.In recent years, tooling has enabled software development to speed up. Tools now exist to allow us to rapidly deploy to target operational environments and to automatically perform a whole host of testing. These tooling advances - when coupled with emerging microservices architectures and container technology - allow for rapid and reliable new feature delivery. We term our research in this space Continuous Software Engineering. Further information is available at: Related research paper on continuous software engineering.
5. Software Process AdaptationIn common with some earlier software dev