Software quality is both the means and the goal of successful software development.
Software quality is unfortunately still too often reduced to the formula: "As long as it works!" But anyone with experience working with software that has evolved over years knows the unpleasant consequences of this one-sided view. Precisely because software can be quickly changed and expanded over a long period, its quality must be given special attention.
It's not just about so-called external quality, but also internal quality. External quality primarily refers to fulfilling functional requirements. Internal quality refers to more invisible characteristics, such as clean and understandable coding (clean code), expandability, maintainability, and reusability.
The responsibility for high-quality code lies with everyone who, through their role in the project, has an influence on it: developers, testers, software architects, product managers, quality managers, and project managers. However, we shouldn't forget the customers, superiors, sales representatives, and other stakeholders who significantly shape the framework.
Quality is the result of a process that requires the involvement of many roles. The tester's ultimate task is to determine the extent to which this process functions effectively. Depending on your role, as a quality-conscious project participant, you will need to master the following skills.
They are familiar with the relevant standards.
For software development and software evaluation, for example, the ISO/IEC 9126 standard for product quality is used. Software Engineering They define various quality criteria and characteristics for the software. They clearly divide the criteria and characteristics into functional and non-functional quality aspects:
Criteria for functional properties of the software
What should the software do, and how should it do it?
| Software functionality | This characteristic includes appropriateness, interoperability, regularity, correctness and security (safety). |
Criteria for non-functional properties of the software
How should the software behave during operation?
| Software usability (Software Usability) |
This feature encompasses usability, learnability, and comprehensibility. |
| Software efficiency | This characteristic encompasses consumption and time behavior. |
| Software modifiability | This feature includes the criteria of analyzability, modifiability, testability, and maintainability. |
| Software reliability | This feature encompasses fault tolerance, stability, software maturity, and recoverability. |
| Software portability | This feature includes adaptability, interchangeability, and installability. |
Since some of the quality characteristics are mutually exclusive or mutually influencing, no more than four of the six listed quality criteria can be met simultaneously. You are able to weigh and define the quality criteria in accordance with the project objectives.
If your software development is subject to specific quality requirements, ensure that coding standards such as the MISRA-C Coding standards, CMMI and SPICE or Automotive SPICE must be adhered to.
Especially in software projects subject to safety requirements for functional safety (IEC 61508, ISO 26262), you must provide documentation for all development and testing steps demonstrating that the safety and security requirements were met in all development phases. For example, you must ensure that the system reacts appropriately to errors during operation and, if necessary, is brought to a safe state.
Software quality affects every role and phase of the project.
The process model defines the development steps or project phases to be carried out and their sequence in software projects. There are a number of different process models, e.g., agile software development, eXtreme Programming, Rational Unified Process, spiral model, V-model XT, and waterfall model.
They understand how to integrate the measures for the desired software quality into the chosen process and combine them with the roles in the project team, for example when applying the V-Model XT process model:
Project phases of the V-Model XT
The V-Model XT is a process model for developing systems. It essentially covers the disciplines of project management, quality assurance, tendering and awarding contracts, and system development.

Figure 1: Testing and quality of embedded software – project phases in the V-Model XT
The project phases of the V-Model XT
| System requirements analysis | They determine the system requirements, e.g., what should the system do, in what order does the system execute the individual activities, what are the dependencies of the components within the system, what are the time requirements, etc. These requirements form the basis for systematic system testing and are an indispensable foundation for quality assurance, as they define the quality characteristics. In all subsequent phases, they ensure, through the professional application of methods and tools, that these characteristics are implemented to the best of their ability. |
| Analysis phase | They determine the extent to which the requirements can be implemented with the available resources, the time available until delivery, and the defined budget. If necessary, they work within their means to adjust the requirements or project parameters. |
| System design | They are modularizing the system. |
| Software architecture definition and software design definition | This feature encompasses fault tolerance, stability, software maturity, and recoverability. |
| Software portability | They structure the system. |
| Software design | They program the individual software modules (software units). |
| Unit Test | They test the individual software modules (software unit test). |
| System integration test | They test whether the system requirements are fully met in the real-world environment. |
| Acceptance test | They check whether the client's requirements are fully met; this test may be accompanied by a user manual. |
Comprehensive quality management is the basis of product quality.
The continuous development of high-quality products is the foundation for maximum customer satisfaction. Furthermore, it reduces ongoing development costs, as a clear software structure increases the reusability of individual software modules. Your goal is a consistently high level of quality; this requires appropriate quality management (for example, Total Quality Management, TQM). Only by integrating all project-related individuals, roles, and activities into this quality mechanism will lasting success be possible. To this end, you create a quality assurance plan for both software development and software testing.
The software quality assurance plan defines the tasks for test management.
To ensure software quality, you use a range of software analysis methods for software quality assurance in your project.
As a starting point for quality assurance, you choose a risk analysis, on the basis of which you set the testing priorities.
For the Software test Apply various testing procedures:
- Static and dynamic code analyses, such as code reviews (analysis of programmed code)
- White-box tests (testing based on the software's control flow – including checking statement coverage, branch coverage, condition coverage, and path coverage)
- Black-box tests (function-based testing without knowledge of the internal functions: Does the system behave according to the specification?).
They specify all tests to be performed in a software quality assurance plan and utilize the advantages of test automation. As part of test management, they conduct a test evaluation after the various tests have been carried out.
They are aware of the importance of defining all necessary software quality management processes that must be followed after a software or hardware change. Their key to project success is the discipline of all project participants, because people are the biggest risk factor in a project.
Internally, you will support the definition of a software development process that includes the following steps: requirements management and analysis for the overall system and the software/hardware components/modules (requirements analysis), definition of the architecture and software design, HW/SW implementation and individual test steps.
Especially in software-intensive systems with a high number of lines of code (LOC) (e.g., software-controlled systems in aircraft or cars), software quality processes are essential. You know that malfunctions in delivered systems could endanger people, even leading to death. Troubleshooting (e.g., a recall) can be very costly and destroy your company's painstakingly built reputation.
Investments in software quality pay off for all project participants.
Practical know-how will quickly give you a comprehensive understanding of all aspects of software quality. Therefore, attend our training courses, workshops, seminars, and coaching sessions on this topic. Software test and Software quality at MicroConsult.
Testing, quality and safety of embedded software – our training courses
Do you want to bring yourself up to date with the latest technology?
Then find out more about training courses/seminars/workshops and workshops offered by MircoConsult on this topic. Testing and debugging of embedded software as well as Quality and safety of embedded software.
Testing of embedded software systems
The seminar focuses on practical topics. You will gain an overview of a wide range of industry-relevant methods and, after the seminar, understand the test-relevant content of international standards such as ISO 26262, EN 50716, EN 61508 and ISO 29119.
For training – embedded software testing
Quality, testing and software development in the medical field
This test seminar gives you an overview of the standards and their application in the development of software in the medical field.
Training – Quality, Testing and Software Development in the Medical Field
Agile testing and test-driven development of embedded systems (Agile TDD)
You are familiar with important terms, relationships and methods to make a significant contribution to the design, implementation and execution of agile testing and test-driven development in the creation of your embedded systems (system, hardware and software development).
Training – Agile Testing and Test-Driven Development (TDD)
Legacy Code: How do I test chaotic software?
This seminar deals with the measurement and dynamic testing of legacy code. Here, the term "legacy code" is defined more narrowly as old, inherited program code that has clearly evolved organically rather than being planned, and for which comments and specifications are largely lacking. This seminar aims to raise participants' awareness of this logical "thicket" and introduce them to the problems of its limited manageability. Theoretical and practical exercises familiarize participants with methodologies for measuring this type of code (code metrics) and creating test cases.
Training topic: Legacy Code: How do I test chaotic software?
Continuous Integration: Ensuring software quality on a long-term basis
This practical workshop focuses on the process of continuously integrating components into a system with the goal of improving software quality. Typically, this involves ongoing verification that the application can still be built. To further enhance and consistently ensure software quality, this process should be followed by additional steps such as automated testing.
Training topic: Continuous Integration: Ensuring software quality on an ongoing basis
Software erosion: causes, effects and measures
This training describes static software analyses for ensuring the internal quality of software and their integration into the development process. Based on this information, measures can be derived to stop and eliminate software erosion.
Requirements engineering and management for embedded systems
With the acquired knowledge, you will introduce a requirements process in your company and evaluate, optimize, understand and implement it.
Training – Requirements Engineering and Requirements Management for Embedded Systems
Functional safety (FuSi) of electronics and their software according to IEC 61508 and ISO 26262
This training provides the fundamentals of operational safety (safety) for technical control electronics and their software. It covers everything from understanding the terminology to the objectives of safety, with reference to the requirements of the basic standard IEC 61508. Specific aspects of the derived standard for automobiles, ISO 26262, are addressed alternately. General knowledge of working with other international standards is also imparted.
Training – Functional Safety (FuSi)
Security Engineering: Security Foundations for Embedded Systems
Security must be considered holistically. The foundations lie beyond the actual implementation. This is also reflected in the Cyber Resilience Act (CRA), which focuses on responsibilities and a structured approach to security. How can potential security vulnerabilities in embedded systems be identified and closed after appropriate assessment? This includes the most important cryptographic methods and their applications, as well as selected hardware and software concepts. As a key representative in the standards field, you are intimately familiar with ISO/SAE 21434 and meet its requirements.
Training – Security Engineering: Security Foundations for Embedded Systems
Security: Secure updates and booting for embedded systems
They are aware of potential security vulnerabilities in embedded systems such as IoT and can assess risks using selected methods. Suitable countermeasures are explained using Secure Boot and Update as examples, and their implementation is demonstrated. Finally, an evaluation of effectiveness is conducted.
Training – Security – Secure update and boot for embedded systems
Security: Cryptography and secure systems
You will gain insight into the methods of cryptography and cryptanalysis, but above all, you will learn how to defend against potential or successful attacks. Example programs will help you deepen and illustrate this knowledge.
Training – Security / Cryptography
ISO SAE 21434 Road Vehicles – Cybersecurity Engineering
You are familiar with the current state of ISO SAE 21434 regarding cybersecurity in the automotive environment. You will learn how the cybersecurity perspective should be addressed and considered in the engineering of E/E systems.
For training – ISO SAE 21434 Road Vehicles – Cybersecurity Engineering
All training courses & coaching sessions on this topic:
Testing and debugging of embedded software
Quality and safety of embedded software
Training & coaching on the other topics in our portfolio can be found here. here.
