Martin Klöckl

Senior Manager Software Development

ZF Friedrichshafen

The questions to be answered: How to secure quality for a highly complex software product developed from scratch?

Usually, software quality has following characteristics (ISO 9126):

  • Functionality
  • Reliability
  • Usability
  • Efficiency
  • Changeability
  • Portability (Customization)

In the special case of the new Automation System A4.0 of ZF, complexity comes from different aspects:

  • Architecture:
    Usually, an Automations System consists of three major sub-systems: Graphical User Interface (GUI), Real Time Engine (RTE), Data Management System (DMS)
    The GUI must provide a unique user experience. The GUI design needs to provide the flexibility to always show the least necessary information for the different user levels and activities
    The RTE is the heart of the automation system. It must handle digital signal processing, high sampling frequencies, high data throughput, short control loops, high frequency limit monitoring, real time reactions.
    The DMS must store all data: system configuration, test configuration and result data. It must be efficient enough to store and provide big data amount at the same time
  • Many different applications:
    0 must cover a big variety of different customer applications. Moreover, it should handle future applications which are not defined in detail now.
  • Automated Migration:
    There is a lot of different customer application in the field. Customers are not willing to re-engineer their application for a new automation system manually. Tools for (semi-)automated migration must be considered.
  • Openness:
    In addition to the standardized industry interfaces, A4.0 must be able to easily integrate new or customer specific interfaces and devices.
  • Flexibility:
    Because a lot of completely different applications need to be covered, the whole system – especially the GUI – must be easily adapted to the distinct requirements. With built-in tools the system can be adapted to specific customer needs without changing the base software. Especially, the design of the Test Run Editor for completely different application tests is a huge challenge.
  • Robustness, reliability, stability:
    Especially for End-of-Line Testing the system needs to be very stable and robust for long period of time. Updates need to be installed silently and without complete system installation
  • Scalability:
    Not all applications need the same computing power. The system must run on different hardware configurations like more processors kernels or even on distributed computer hardware.
  • Safety:
    The automation system must fulfill all safety requirements for the different applications. Protection of people as well as equipment is a supreme requirement in any case and any situation.


Software quality cannot be produced! Software quality cannot be implanted by a system test as the last phase of the software development process! Quality can only be assured if it is considered at every step, in every phase of the software development process.

How to secure software quality

  • Avoid mistakes:
    There is a lot of tools and practices which help to build the system right: development model, development process, development tools, toolchain, internal reviews.
    The question “Do we build the right system?” can only be answered by one stakeholder: the customer. That is why, regular reviews with customers need to be performed.
  • Find Bugs:
    At this stage the classic software test is done. It is important to test on different levels of integration: unit test, integration, system test
  • Safe Introduction:
    Software development does not end with successfully finishing the system test. The success of a new software product depends a lot of the way it is introduced on the market. Training, documentation, support organization and maintenance process are some of the aspects which need to be considered and prepared.
  • 1993 – 1996: Embedded Software Development Engineer
  • 1996 – 2001: Software Development Engineer
  • 2001 – 2008: Department Manager Software Engineering
  • 2008 – 2016: Department Manager System Design Software
  • 2016 – 2019: Segment Manager Systems Engineering
  • Since June 2019: Senior Manager Software Development Testsystems at ZF