This project (PASTRie) addresses the issue of how to make software development more resilient to constant changes of technology, staff, methods, requirements, expectations, regulations and more. The specific problem for this project is to characterise how automation can best be used to improve socio-technical resilience. The solution, based on interdisciplinary research, will be to provide: instruments for organisations to assess their resilience; and case studies, best practices, guidance and a concrete example (from automated fault localisation) to understand how humans and tools can best work together. In addition, we will advocate for a positive image for software engineering.

So, PASTRie will investigate resilience and automation in the socio-technical system that supports software development, a system that includes people (engineers, users, managers), technical infrastructure (tools, development environments), processes (lean, requirements elicitation) and artefacts (code, wiki, coding standards). Breakdowns in socio-technical systems can cause significant disruption and Resilience Engineering aims to avoid them by emphasising what works, so that resilience can be preserved. From this perspective, resilience is defined as the productive tension between stability and change, always with the aim of producing systems that are “safe”. This view of socio-technical systems is pertinent to modern software engineering where change has become endemic: with changing requirements, advanced technologies, complex infrastructure and new security threats. In addition to the constantly changing environment, software production is increasingly being automated, which requires repeated re-balance of this tension. But what is the relationship between resilience and automation?

While improvements to software development brought by automation are vital to keeping software safe and secure, automation is not a silver bullet. It is said that “Making a system safer involves coupling the capabilities of humans with the technology they work with so that they can stay in control”. What does that mean for software development? Is there something fundamentally human that needs to be retained as part of the software development process? And if so, how can a productive and resilient balance between human control and automation be maintained in the context of constantly increasing automation? How can automation be used to increase socio-technical resilience and what will be the impact on resilience of different levels of automation?

PASTRie aims to address these and related questions. The project will determine and operationalise factors that indicate socio-technical resilience (STR) of software development, drawing on social psychology and resilience engineering, and grounding the research in the concrete development task of automated fault localisation. We will engage with representatives of two developer communities: commercial software engineers and professional end user developers who represent two different development environments. This work will have particular implications for improving STR and the pace and nature of automation in the software development lifecycle.

Planned Impact

Engagement and impact in the proposed project are a substantive thread running through each work package and will span a range of disciplines, and practitioner communities. Academic disciplines include software engineering, resilience engineering and social psychology; practitioner communities include software engineers in commercial settings, professional end user developers, and project managers. Our advocacy activities will impact a wider range of stakeholders including the general public.

We will use traditional channels such as journals, conferences and workshops for achieving academic impact. Our non-academic impact is distinctive in its focus to achieve high impact in both commercial software engineering but also in research software engineering, an under-researched community of software developers. Research software engineers, and professional end user developers more generally (e.g. in accountancy, insurance, nuclear engineering etc) write software to enable other activity to take place. Research Software Engineers, for example, are typically PhD students and post docs writing software to enable science to progress. In addition to addressing the general difficulties common to all software development projects, research software must represent, manipulate, and provide data for complex theoretical constructs. This research will help research software engineers and those they work with to recognise and improve their socio-technical resilience.

Through our advisory board and advocacy activities with a wider range of stakeholders and with the general public, the impact of our project will extend beyond the research results themselves, as we will engage through media (TV, blogs, online learning resources), practitioner events (MeetUps, conferences, specialist workshops) and through our links with policymakers (the Software Sustainability Institute, National Cyber Security Centre) to promote a rounded view of software engineering and what it achieves. Sometimes, people only see the problems connected with the software we use, and forget the wonderful things that software enables, and we will attempt to re-dress that image.