Testing, quality and safety of embedded software
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.
Expertise: Software quality is both the means and the goal of successful software development.
Security challenges for embedded systems
In today's interconnected world, embedded systems are ubiquitous – from automobiles and industrial controls to IoT devices. But with increasing connectivity, security risks also rise. Cyberattacks, data leaks, and insecure implementations can have serious consequences. So how can security risks be minimized and robust systems developed? The answer lies in solid security foundations.
Article: Security challenges for embedded systems
Simple and clever: wogtest is the innovative MicroConsult solution for embedded software testing.
Fields marked with make it easier for developers to integrate Test-Driven Development into embedded projects – without the complexity of Google Test, without time-consuming porting, and free to download.
Article: wogtest is the innovative MicroConsult solution for embedded software testing
Test ended well, all is well.
Black-box tests using white-box metrics do not result in gray-box tests. However, each of the three fulfills an important function in defining the end of the test and minimizing the number of necessary software tests.
Post: Test ended well, all is well.
Design for test and design for safety – Tailor-made software architecture
Our everyday lives are now seamlessly integrated with interconnected devices and systems. Whether using a smartphone to find the fastest route, reading the newspaper on a tablet while relaxing on the sofa, or controlling smart heating via a smartphone app, these systems make our lives more comfortable. However, this increased comfort also necessitates stricter security and safety requirements, which the developers of such systems must meet. This is especially true for autonomous driving – where sound safety concepts are of paramount importance.
Article: Design for Test and Design for Safety
Trends in microelectronics: New perspectives and requirements for mobile devices
Every year, new and even more powerful microcontroller architectures are announced. This paves the way for increasingly convenient and even autonomous transportation devices for our everyday lives. Besides the increased computing power – MIPS per watt – the enormous demands on safety and security are one of the biggest challenges.
Article: Trends in microelectronics
Software development reimagined
The rapid growth of the Internet of Things, the 5G network, artificial intelligence and cloud or edge computing has a major impact on the development of embedded software.
Part 1: How multicore, safety & security aspects are changing today's software projects
Part 2: Avoiding typical errors with comprehensive software requirements
A common language for cybersecurity
What goals, requirements, and guidelines serve as the basis for a shared understanding of the cybersecurity perspective in the development of road vehicles? How are the processes defined and the risks managed in accordance with ISO 31000?
Article: A common language for cybersecurity
TDD – Test-Driven Development of Embedded Systems
Test-Driven Development (TDD) is the implementation of the test-first approach in component testing and involves writing unit test cases before the actual implementation. Adherence to just three rules and a few tricks for dealing with the target hardware bottleneck makes TDD possible even for embedded systems.
Article: Test-Driven Development of Embedded Systems
Test-First = Test first, think later? – Test-Driven Development of Embedded Systems
Many agile development frameworks emphasize the test-first approach, which, regardless of the test level, is based on starting with testing as the first step towards the actual implementation of functionality: testing at a point when one is still focused on the "what" and the "how" is still pending. Test-Driven Development (TDD) is the implementation of the test-first approach in component testing and means writing unit test cases before the actual implementation. Adherence to just three rules and a few tricks for dealing with the target hardware bottleneck also make TDD possible for embedded systems.
Presentation slides: Test-First = Test first, think later (ESE 2019, PDF)
Conference proceedings script: Test-First = Test first, think later (ESE 2019, PDF)
More design flexibility through Secure Exception Priority Boosting
The Armv8-M architecture brings fundamental security to Cortex-M devices, thus enabling greater protection for IoT systems. But how does the “Secure Exception Priority Boosting” feature perform in practice?
Article: More design flexibility through Secure Exception Priority Boosting
Embedded Software Redesign Guide
Sometimes simply extending old code isn't enough: a complete overhaul is needed. This series of articles describes the process of embedded software redesign and explains the concepts of reverse engineering, refactoring, and reengineering.
Article: Embedded Software Redesign Guide
Interview: Clean Code and the ideal workflow for an embedded project
In object-oriented software architecture and design, as well as in object-oriented programming (OOP) as a structured software development methodology, similar tasks and problems repeatedly arise. The use of reusable design patterns (proven solution templates) can prevent repetitive software programming efforts.
Article: Clean Code and the ideal workflow for an embedded project
Secure software from the start – developers under time pressure
Just as dragons plagued humans and threatened their lives in ancient myths, today technically unsafe systems pose a source of danger. The crucial difference: while dragons belong to the realm of fables, technical systems as potential sources of danger are part of our everyday lives.
Article: Taming the Dragon – Secure Software from the Start
Applying Design Patterns Correctly in Practice
Design patterns are solutions for frequently recurring tasks in object-oriented software design. In this sense, they play a similar role to the multiplication tables, which one learns by heart to avoid having to recalculate the results of frequently occurring arithmetic problems every time.
Article: How to correctly apply design patterns in practice
Secure IoT smart grids through modular hardware security
In a highly interconnected world, it is advisable to effectively protect applications against cyberattacks. This requires optimal encryption of data and communication channels. However, the cryptographic algorithms used in software do not always reliably protect devices directly exposed to attacks. A turnkey solution offers a potential way to better protect information.
Article: Secure IoT smart grids through modular hardware security
Save development time with design patterns
In object-oriented software architecture and design, as well as in object-oriented programming (OOP) as a structured software development methodology, similar tasks and problems repeatedly arise. The use of reusable design patterns (proven solution templates) can prevent repetitive software programming efforts.
Article: Saving development time with design patterns
Quality requirements for embedded software
Capturing and managing requirements is a key to project success. Embedded software functionality is easier to describe in requirements than quality attributes. However, quality attributes cannot simply be "tested in" at the end. The more abstract they are, the more complex and time-consuming they are to define. What challenges does this pose for a project?
Article: Quality Requirements Part 1 – Requirements and Myths
Article: Quality Requirements Part 2 – The Recording Method
Article: Quality Requirements Part 3 – A Data Collection Example
Programming guidelines – curse or blessing?
Lectures, articles, and books constantly emphasize that code quality is a crucial factor in a project's success. Therefore, there are ongoing attempts to introduce regulations that improve code quality. However, the code delivered by many developers is anything but elegant. One approach to ensuring code quality is the use of programming guidelines.
Article: Programming guidelines – curse or blessing?
Quality requirements for embedded software: The art of watertight quality requirements
Capturing and managing requirements is a key to project success. Embedded software functionality is easier to describe in requirements than quality attributes. However, quality attributes cannot simply be "tested in" at the end. The more abstract they are, the more complex and time-consuming they are to define. What challenges does this pose for a project?
Presentation: Quality requirements for embedded software, ESE 2018 (PDF)
Development processes as the basis of modern software development
In professional software engineering, the development and process steps prior to software implementation are essential. Terms like software analysis and software design, or high-level software design and detailed software design from development processes (for example, the V-Model XT or the industry-specific V-Model Automotive), represent precisely this.
Article: Development processes as the basis of modern software development
IoT security: "The biggest risk is the human element"
The Internet of Things (IoT) is multiplying the risks of hacking attacks, as every network-connected device is a potential entry point. Peter Siwon, Business Development Manager at MicroConsult, and Michael Schnelle, Consultant at Mixed Mode, describe the biggest risks and explain protection strategies in this interview.
Requirements engineering and management
Capturing and managing requirements is a key to successful projects. Whether in a traditional or agile process environment, professional requirements engineering and management for embedded and real-time systems shortens your project timelines and saves on development and maintenance costs. Take on this challenge!
Article: Requirements Engineering and Management
Functional safety: Mitigating systematic errors through structure and processes
A holistic approach and a thorough understanding of the details are essential when it comes to creating functionally safe systems. Software integrity can be achieved through structured and targeted methods and techniques.
Article: Functional safety through structure and processes
Safety concepts for Aurix microcontrollers
Software and hardware developers appreciate the Safety Management Unit of the Aurix microcontrollers as an independent unit for error handling.
Article: Safety concepts for Aurix
Warning signs of impending software erosion and what you can do about it
Successful embedded software is usually developed over a long period. During this process, relationships may occasionally be introduced into the code that don't belong there. Over time, the software deviates increasingly from the planned architecture – software erosion is well underway.
Article: Indications of impending software erosion
Secure Design Patterns
Adding security to existing embedded systems is not only costly but also methodologically flawed. Instead, security should be an integral part of the development process. The only question is which methods and concepts should be used to achieve security. Secure Design Patterns for software aim to demonstrate widely accepted and relevant solutions.
Presentation – Secure Design Patterns, ESE Congress 2017 (PDF)
Safety & Security: Relying on known and proven methods
The operational reliability of software-intensive embedded systems is closely linked to protection against unauthorized access or targeted attacks. The necessary measures pose significant challenges for both software and hardware developers.
Article: Safety & Security Methods
Safety and security in multicore systems: How to successfully implement them
The demands placed on safety-relevant control systems are constantly increasing. Multicore architectures are best suited to handle these tasks and are therefore being offered and used more frequently.
Article: Safety and Security in Multicore Systems
The Internet of Things – a breeding ground for new opportunities and risks
Many technological success stories are based on the evolutionary principle of emergent properties. This states that by networking units into a system, this system generates new properties and capabilities that did not previously exist and were possibly unpredictable.
Technical knowledge: The Internet of Things (IoT)
Trend Guide „Embedded Safety & Security“
Safety and security describe different properties of embedded software systems. However, a closer look reveals how closely the operational reliability of software-intensive embedded systems is linked to protection against unauthorized access or targeted attacks. The necessary measures pose significant challenges for both software and hardware developers.
Reading sample: Trend Guide Embedded Safety & Security
