30.11.22
Clean Code
Development
Digitization

Sustainable software development: What is meant by it and how to develop sustainably

Sustainable software development is becoming increasingly important to keep pace with the rapid technological advances that digital transformation brings. In fact, this often involves changing customer and market demands that need to be responded to. And such a response cannot always consist of buying or developing a new software solution. This is neither technologically nor economically sustainable. But how can software be developed sustainably? And what does it actually mean?


  1. What does sustainable software development actually mean?
  2. Sustainable software development and software quality
  3. How to develop software sustainably
    3.1 Sustainable software design with flow design
    3.2 Sustainable programming through clean code principles
    3.3 Sustainability through holistic approach
  4. Why don't all software service providers develop sustainably?  
  5. Conclusion

1. What does sustainable software development actually mean?

Sustainability in software development means developing software solutions that can be used over a longer period of time, but above all can also be changed and further developed. After all, software development is also about using resources responsibly. Developing software requires time, money, and energy. From an economic perspective alone, it makes little sense to meet every new requirement with a completely new product. A software solution is sustainable when it is able to be adapted efficiently and easily to new market or customer requirements.

2. Sustainable software development and software quality

If you deal with sustainable software development, you also have to deal with Software quality Distinguish. Because high software quality is the basic requirement for flexibly modifiable and further developable — and therefore sustainable — software. Both internal and external quality are decisive.

At the external software quality It is the driver functionality, scalability and efficiency of an application as well as the usability of the software. It must be possible to modify and extend features in a flexible way, while maintaining the performance and usability of the software solution.

But even more fundamental to sustainability is the internal quality of the software, because it forms the basis of the solution and is a prerequisite for high external quality. This depends on the nature of the source code. Three aspects are important: readability and traceability, testability and evolvability. Source code must be understandable at all times and by all software developers, both in its syntax and in its semantics. This means that it must be clearly legible formally and clearly comprehensible semantically. At the same time, it must be automatically testable in detail through unit tests, as well as in its entirety through integration and system tests. The primary goal is a high degree of software evolvability - that is, the "ability" of the source code to be flexibly modified. High readability, traceability and testability are important cornerstones of this ability, but evolvability also depends on code design. In other words, how the source code is structured and organised. But there are also tools and methods that can be used to ensure a high degree of modifiability from the outset.

Software quality is not the same as software quality: We differentiate between external quality (left) and internal quality (right)

3. How to develop software sustainably

3.1 Software Design with Flow Design

Writing high-quality and therefore sustainable source code starts even before the actual coding. Namely with a well-thought-out software design. This does not mean how the complete solution and system architecture is structured or what the interfaces will look like later, but how the source code is structured. In the end, it's about the question of how to best get from (customer) requirement to code. And it's worth answering that question with the entire dev team even before writing a line of code. A particularly tried and tested technique for such a procedure is the so-called Flow Design.

In flow design, requirements are first broken down hierarchically to work out the primary functions, called dialogs here. A dialogue always consists of one or more interactions, which in turn can be broken down into data flows. These flows are represented graphically by various symbols and arrows. The aim is to solve the problem from the requirement down to the last detail using meaningful data flows in order to be able to determine contracts for classes and methods. The complete structure, including classes, methods, state variables and parameters, is therefore already known and "only" needs to be converted into code.

The benefits of Flow Design:

  • Requirements are broken down into breadth and depth, which means that the source code can be planned down to the last detail, but at the same time the big picture is never lost sight of.
  • The entire team can be involved in the software design process, which has a positive effect on team responsibilities and the readability of the code, among other things.
  • The precise planning is the ideal template for a well-thought-out test suite and thus ensures a high level of test coverage.
Software design in a team: With Flow Design, the entire source code can be planned and structured from scratch — even before a line of code is written

3.2 Sustainable programming with clean code

Clean Code Development is a value system for software developers that is designed to develop flexible source code in the long term. About values and virtues A corresponding mindset is built up among developers, the clean code principles and practices provide useful recommendations for action and tips for everyday work.

Many of the principles of clean code, which aim to make the source code evolvable, can already be taken into account through collaborative code design with flow design. For example, classes can be divided and designed in terms of their tasks and responsibilities so that there are no dependencies. And consistent test coverage can also be planned using Flow Design.

When it comes to actually implementing the code design - i.e. programming - the Clean Code principles and practices on readability and traceability help. For example, developers should adhere to syntactic conventions that allow the code to be read and entered quickly. This ensures that future developers can easily find their way around the code. Another principle is "don't repeat yourself". This means not simply copying sections of code, modifying them slightly, and then reusing them. If a sequence of commands is used more than once, it is usually badly structured. This makes the code unnecessarily long, increases the risk of inconsistency, and makes it harder to change because you have to make changes in several places.

The most important clean code principles for evolvability

  • Don't Repeat Yourself
    Code components must not be duplicated — copy/paste is prohibited
  • Single Responsibility Principle
    A class should only ever have one task/responsibility
  • Open Closed Principle
    A class must be open to extensions but closed to modifications
  • Dependency Inversion Principle
    Classes must not depend on each other, but only on interfaces
Clean Code Development: The value system, divided over five degrees, conveys principles and practices of sustainable software development

3.3 Sustainability through holistic approach

So far we have only looked at the source code of a software solution. However, to be truly sustainable, software development must always be considered holistically. After all, who and what is the software solution being developed for? Whether it is the MVP or subsequent developments, requirements engineering and user experience design are critical to the sustainability of a solution and must go hand in hand with programming. If mistakes are made or wrong assumptions are made, even the cleanest and most sustainable source code won't do much good.

Sustainability through (continuous) requirements engineering

With Flow Design, you get from requirement to code in the most sustainable way. But how do you get to the requirement in the first place? Many companies continue to follow the path of a requirement specification. There is nothing wrong with this approach as a first step, but it is short-sighted to assume that the specification can simply be worked through piece by piece and the perfect software product will be created. This is because there is often a lack of holistic vision, as not all stakeholders are involved in the requirements definition process. However, it is even riskier to view requirements engineering as a single, closed process. Rather, requirements definition must be a continuous part of software development and the actual starting point of each iteration in order to develop a sustainable product.

If the requirements are not understood by all stakeholders and are not validated, questioned and adjusted on a regular basis, the right software product will simply not be developed. Similarly, if the right perspectives and forecasts are lacking and new issues are not responded to in a timely manner, the half-life of the subsequent solution will also be reduced.

Sustainability through user centricity: Enterprise UX

As mentioned earlier, ideally all stakeholders of the future software product need to be involved in the software development process. However, when developing complex business solutions, one important group is often neglected: the future users. The risk is that if they cannot work with the software solution properly, they will be dissatisfied and, in the worst case, will not use the software at all.

In B2C applications, there is much more emphasis on user experience and usability - it's obvious, after all, the users are direct customers. But it is outdated to think that enterprise solutions are primarily designed for the enterprise - that is, to equate the enterprise with the customer. At the end of the day, even in this case, people are using the software product and need to be able to use it - happily, at best. Sustainable software development therefore means involving users (even for enterprise solutions).

The first step is to create user-characteristic prototypes using so-called personas. Based on these personas, user groups can be described in terms of their characteristics, pains and wishes, and interaction concepts can be developed in the next step. It is important to regularly check the assumptions made. Similar to the design of the source code, a high level of test coverage is essential for the user experience. Our Head of UX, Uwe Betzin, explains why usability testing is so important and how you can test your UX design: UX design must work

4. Why don't all software service providers develop sustainably?

The question that remains is why not all software development companies develop sustainably. To answer this question, you have to take different perspectives:

Software developer's perspective:

Sustainable code design and working according to clean code is not (yet) an integral part of training to become a software developer. At the same time, becoming a Clean Coder requires a lot of dedication, diligence, and practice. Developers in a company often simply lack the necessary framework conditions to be able to learn and practice clean code development at all.  

The service provider's perspective:

Creating these framework conditions, investing in sustainable software development, training staff and implementing appropriate quality assurance in projects involves high costs. Many software service providers do not take such a risk for fear of a lack of ROI.

And even the topic of holistic approach cannot be addressed by every software service provider, as not every company provides competencies and personnel across all levels of development.

Client's point of view:

The initial costs for sustainable software solutions are higher. On the one hand, this is due to the holistic approach to continuous requirements engineering and UX design. On the other hand, software development with clean code initially involves a higher investment than conventional development. These additional costs initially scare off many companies.

What is often neglected in this calculation, however, is the actual idea behind sustainable software — and thus a glimpse into the future. Because if you look at the total cost of ownership over the entire product lifetime, a completely different picture quickly emerges. Let's just take the clean code aspect: If little value is placed on high internal software quality during development, it becomes more complex to implement new features with each iteration. The costs do not increase linearly, but exponentially — and in reality this means that at some point the software can no longer be further developed at all.

5. Conclusion

Sustainable software development means the development of long-lasting software products that can be modified and developed flexibly and efficiently. In order to develop sustainable software, the following rules should be observed:

  1. A specification sheet is a good basis for work, but it never replaces iterative requirements engineering with all stakeholders involved.
  2. Before the first line of code is written, the code structure should be planned in detail together with the dev team using tools such as Flow Design and a well-thought-out test suite should be developed.
  3. During programming, clean code principles and practices should be used to write syntactically readable and semantically comprehensible source code that is characterized by a high degree of changeability.
  4. A user experience tailored to users should also be the focus of enterprise solutions and must be continuously tested, just like the code.
Autor
Thomas Bittner
Clean Development Trainer & Softwareentwickler
Autor
Alexander Weber
Head of Marketing

Weitere Artikel

Development
Clean Code
14.7.22

Software quality: criteria for “good” software products and the role of clean code

Which software quality features are important from a technical & economic perspective and how clean code development can help to achieve them

Clean Code
9.9.21

Clean Code Development: The Grades

Clean code development is divided into different grades, which you as a developer climb one by one and repeat in an eternal cycle

How can we advise you?
telephone
Online consultation
Contact request
telephone
We are looking forward to your call
+49 (0) 721-619096-0
+49 (0) 721-619096-19
Available for you from
Monday to Friday 8:00 a.m. to 4:00 p.m.
Online consultation
Book an appointment that's right for you online
We are looking forward to your message
If you would like to know which data we process and how long we store it, you can find further information in our Privacy statement.
Thank you so much! We have received your contact request!
Oh no! Something went wrong. Please try again!
contact