Bashar Nuseibeh MRIA is professor of Software Engineering and Chief Scientist at Lero—the Irish Software Research Centre. He is also a professor of computing with The Open University, an honorary professor at University College London, and a visiting professor at the National Institute of Informatics, Japan
There is a common misconception that software engineering is a discipline for managing the production of programs that run on computers. It is true that a significant artefact that software engineers produce is code: descriptive instructions to machines that enable them to perform what we humans require. The ubiquity of software in society, however, means that we cannot, and should not, think of software purely as a way of mediating between humans and machines. Rather, it is also a reflector, enabler and disrupter of the very way we live our lives. It then follows that software engineering is about representing and extending the lived experience, supported by software but not bounded by it.
Such a framing means that the scope of the discipline—reflected in its various research agendas, its educational offerings and its industrial practice—must continue to extend beyond its traditional technical boundaries, to reflect the inherent socio-technical nature of its processes and outcomes. That is not to say that the foundations of software engineering such as mathematics, logic and analytical methods are less important, but simply to reflect what we have always known: that the human and social context in which people experience life must also be accounted for in the development of software-intensive systems. Such a context requires an engagement with societal concerns in ways that typical software engineering methods neither reflect nor facilitate.
This is not simply a call for inter-disciplinarity—talking to and engaging with social scientists, economists, and ‘end users’ of software is not enough. It is about radically re-thinking the discipline of software engineering itself so that the artefacts it produces are not only a precise set of technical specifications and instructions to a technological machine, but the very embodiment of the psycho-social experience. Representations of the essence of being human and being social, such as our how we see ourselves, our emotions and our values, must have a place in the software programs that we write and the software systems that we assemble.