There is only one time in Software Engineering

by Benoit Combemale
12/09/2024
DiverSE Coffee
Rennes, France

Abstract

Software and systems engineering is a complex endeavor that encompass various socio-technical activities. These activities are traditionally orchestrated over a development life cycle from development time to operation time, and applying engineering processes both at design and run times, and at the application and domain levels. This organization of the activities led to well defined life cycles (V-model, Scrum, DevOps, language-oriented programming, etc.) to cope with the complexity of the engineering of software-intensive systems. This organization also structures the available tools and methods we use, and even the various communities among the software and systems engineering one (i.e., The Conway’s law applied to our own discipline!). While such an organization was important at the inception of the discipline (divide and conquer!), I argue during this talk this is now hurting the high degree of adaptability we need in software and systems engineering to face what I call the software hyper agility. In particular, modern systems are evolving at an accelerating pace, operating in increasingly dynamic environments and contending with ever-increasing uncertainty. This requires a continuous (model-based) engineering of such complex cyber-physical, socio-technical, ecosystems. In this context, I will discuss challenges related to variability management and abstraction engineering to better support a feedback-driven software development process, and explore the concepts of engineering forge and digital twins as key enablers.