Inaugural Lecture by Professor Yvonne Dittrich


Software development is a cooperative endeavor. To develop both useful and usable software in a sustainable way, people have to cooperate and communicate, across organizational and disciplinary borders. The cooperative and human aspects of software engineering will become even more defining in the future: The development of societal IT infrastructures, the spreading of open source, and the increasing provision of software as a service challenges our conceptualization of software engineering on a deeper level: These developments imply changes to the technical design as well as the social arrangements of how software is developed. We, though, do not have the concepts to understand and support these developments. The current theory of computer science and software engineering, by and large, neglects the cooperative dimension of software development.

The cooperative and human aspects of software engineering have been at the core of my research: I have been part of introducing qualitative social science methods into software engineering and developed Cooperative Method Development, an action research approach tailored to software engineering. Based on the results of several empirical research projects, I challenged the common understanding of software engineering of where, when and how software is developed: software is developed through an interlacing of heterogeneous design and development activities often spread across organizations and continuing throughout the lifetime of software products. End-user development is part of this interlacing that enables organizations to maintain their capability to innovate the way they work together with the supporting IT infrastructure.

I outline three lines of research that I see as necessary to understand and support the industry and society to cope with the challenges outlined above: a.) In order to understand and support continuous software engineering of software as a service, we need to learn how high-performance CSE teams manage; b.) in order to support our society to make use of the data and it-infrastructures we need to find new ways co-design IT; and c.) last but not least, in order to support current and emerging ways in which software engineering is organized, we need to develop our theoretical underpinning to also embrace the cooperative and human aspects of software.