‘As the code base grows, software will become more complex’
Jakub Borowczyk, managing director at umlaut and Ernest Wojcik, manager Software Engineering about the growing software complexity and new solutions like model-driven engineering.
Mister Wojcik, Mister Borowczyk, software development will be confronted with ever greater complexity in the coming years. Why?
Ernest Wojcik: Washing machines, smart-home-devices, cars: Software plays a huge, if not the most dominant, role in almost everything that surrounds us today. Herbert Diess, CEO of Volkswagen, once said that about 90 percent of the innovations in the automotive industry originate from software. As the code base grows, it is inevitable that software will become more complex.
Why the constant need for progress? Aren’t previous solutions enough?
Ernest Wojcik: We live in a world that is being digitalised increasingly. In principle, it’s about optimising processes and products, so that people can use their full potential - and of course also about producing faster, better, and cheaper. If we insert new software systems where they can actually help us, incredible possibilities are unveiled.
Jakub Borowczyk: We have customers that produce chemicals in a factory. The production machinery has to be controlled, maintained, and monitored, and procedures documented. When we develop and integrate systems, that can not only optimize the work of the machinery to the maximum capacity, but also control them – working hours can be reduced, ultimately also costs.
Incredible possibilities come with incredible complexity and masses of programmed codes. Which challenges do companies face today?
Jakub Borowczyk: Products, that are brought onto the market today, must be available globally – and thus meet legal requirements as well as the different expectations we have of products in Europe, the USA, China and other parts of the world. Software systems must be adapted locally as flexible as possible. In addition, we have an increasing variety of domains, platforms, programming languages, shorter development cycles, huge data quantity as well as the increasing need for safety-critical software that is trustworthy. So called legacy systems can’t cope with this functional complexity and the requirements of changed business processes.
Meaning: New software solutions must be developed and old legacy systems have to be replaced?
Jakub Borowczyk: In many use cases, there’s a chance for inserting a new and therefore more efficient technology and integrating legacy systems in new applications. New and established systems coexist to a certain extent. The challenge is to design new software solutions in such a way that they can work and communicate with the older ones via a defined interface.
An example for coexistence?
Ernest Wojcik: In the coming years, there will be more and more semi-autonomous, partly driverless cars on the roads that can communicate with each other and help each other locate themselves on the road. At the same time, we have old cars, that don’t have this function, but cannot be replaced fully.
Jakub Borowczyk: Another challenge consists in developing applications, so that they’re platform-independent, let’s say cross-platform applicable. With iOS and Android for example there are two dominant mobile systems on the market. Developing two products – each for iOS and Android – would be too complex and costly.
How can you help companies to cope with increasing complexity?
Ernest Wojcik: There are frameworks and methods that help us do this. One possibility is the so-called model-driven engineering. Models are less bound to the underlying implementation and they are closer to the definition of the problem within a given domain. Applied by us, modelling tools offer an incremental approach of building solutions: we don't act as in old conventional methods to plan and design everything at the beginning and then start development, but we work on quick wins and results and clarify the requirements with the customer in an iterative manner.
Jakub Borowczyk: To guarantee quality and keep the costs for testing and maintaining the software as low as possible, software complexity should already be measured during the development process. Software metrics help with this like static code or also applied by us cyclomatic complexity analysis. If defined recommended values are exceeded, one can intervene and correct the code structure in time.
Ernest Wojcik: Today, software engineers are no longer programmers who sit in the dark in their cubbyhole and type lines of code. Software engineers have become much more like consultants who help customers find solutions. The process of coding is now done by machines based on the models that we develop and test. The model-driven approach for system and software engineering offers the unique opportunity to involve a common domain-specific graphic language that is well understandable by the cross-functional teams. It focuses on the delivery of the software on quality, verifiable from the very beginning, reusable, certifiable, and responsive to business needs implementation.
How does umlaut differ from other providers?
Jakub Borowczyk: umlaut is not a software-engineering-company solely. We bring profound industry-know-how, interdisciplinary teams und many best-practice-examples. In this way, we understand our customer’s problems individually from the ground up – and solve them sustainably. For example, we help OEMs with automating their processes and increase their efficiency clearly. By combining our expertise in user experience, we also design and develop countless mobile applications, websites, and digital experiences, that are used by millions of end users from our customers.
Ernest Wojcik: We first start thinking about the architectural design, before we start writing the codes. Whoever tries to solve single problems in software development without looking at the full software architecture, tends to make codes more complex than they need to be.
Jakub Borowczyk: When we work on software solutions, we look at the whole life cycle. We develop software that goes beyond the original task and maintains our customer’s data in a way so that we can predict future developments – and find the right solutions in case they occur. Our premise: More efficiency today. Less problems tomorrow.
About less problems: Let's beam to the year 2050. Is software complexity still a topic then?
Ernest Wojcik: This can be assumed, yes. The problems and challenges will take on completely different dimensions, be bigger and far-reaching. At the same time, there will be better tools and possibilities to handle that. The biggest challenge will be the legal and ethical questions, which we come in touch with today but still have no clear answers on. When it comes to automated driving, we usually talk about a moral dilemma. How should a “self-thinking” car behave in case of an accident? Programmers have to think about how a vehicle should behave in certain situations. A question that follows up: In case of an accident, who is responsible?
Jakub Borowczyk: I wonder if in 2050 we can still talk about software complexity – or more machinery complexity. Today, we still control the machines, develop them further by creating new software solutions. Maybe one day, machines can develop software themselves - and us humans must understand, how they do it. Our goal and our responsibility are to make exactly that possible.
Thank you for this conversation!