Which goals in a software project are significantly influenced by whether it is a multicore design with safety and security aspects?
The three classic goals in a software project are: Quality requirements for the project, the Costs for Development and maintenance as well as the available development time (Time to Market).

Image 1: The three classic goals for the software project
Software architecture provides the blueprint and corresponding behavior of the software. It describes the fundamental components and their interactions within a software system. As part of software design, it represents the first decision-making step for the software design process. The compilation of software requirements simultaneously serves as input for the design of the software architecture, which in turn forms the basis for the design and implementation of the software.
The role of the software architect falls to the task of developing the software architecture. Software quality criteria serve as essential foundations for this. These are also referred to as non-functional properties and are defined according to ISO/IEC 9126/25010 as quality requirements for the software project:
Modifiability or maintainability
- Analyzability, conformity, modifiability, stability and testability of the software
Usability
- Attractiveness, usability, learnability, conformity and comprehensibility
Efficiency
- Conformity: meets software standards and efficiency agreements
- Timing behavior: appropriate processing and response times
- Consumption patterns: Resource consumption, CPU load
Functionality
- Appropriateness: The functions fulfill specified tasks.
- Security: The system can detect and prevent unauthorized access.
- Interoperability: The software can work correctly with predefined systems.
- Compliance: The software complies with standards, regulations, and legal provisions.
- Compliance: The software meets application-specific standards, regulations, and legal provisions.
- Accuracy: The system delivers correct or agreed-upon results.
Transferability
- Adaptability, interchangeability, installability, coexistence and conformity of the software
The key tasks of software architecture
Software architecture forms the basis for the work of software developers and software testers. It creates a fundamental understanding of the software system, the dependencies of the software components on each other, and the structures, and is a crucial part of quality assurance. It preserves the acquired knowledge in the architecture documentation.

Image 2: The software architecture – fit for the project
In agile software projects, the software architecture is developed evolutionarily, based, among other things, on test-driven software development methods. Two different development approaches predominate:
- Functional architecture: Here, the software system is represented in terms of functions or features and their dependencies.
- Component architecture: Develops a rough draft as well as several detailed drafts that contain a fine-grained structure of the software.
UML is very often used to represent software components and their dependencies (relations).Unified Modeling Llanguage) used.
The graphical UML modeling language allows for the simplified visualization of design elements within a software architecture using UML diagrams. UML facilitates the transferability, readability, understanding, and testability of software results and forms the basis for simplified software reuse.
Reference architectures or reference models and architectural patterns can be designed as a basis for reuse.
The use of multicore architectures and requirements for different safety goals of the components (components with SIL1 – SIL3 or ASIL-A to ASIL-D) and security requirements have a direct influence on the architecture of a software project.

Figure 3: Influence of Safety & Security on the software project
This manifests itself in a stricter subdivision, delimitation, and implementation of software structures. For example, specific safety levels have security requirements, including the possibility of access control for software modules to data in memory and peripheral modules.
This must also be reflected in the software implementation (e.g., controlled by Memory Mmanagement Units, MMUs, or. Memory Predaction Units, MPUs) are guaranteed by functionalities of error detection and by the necessary error handling.
Conclusion
If we use multicore systems and want to implement system safety through safety and security requirements in the software project, the software architecture represents a crucial building block for project success.
The other parts of this series on this topic Embedded software development considering multicore, safety, and security aspects They deal in more detail with current influences and challenges, software architecture and software testing. Part 1 This article examines how multicore technology, safety, and security aspects are changing today's software projects. Part 2 Learn how to avoid typical errors by using comprehensive software requirements.
Gain the right knowledge about embedded software development, multicore, and safety & security. MicroConsult offers professional training and coaching on these topics – in live online and in-person formats.
Further information
MicroConsult Expertise: Multicore & Microcontrollers
MicroConsult Training & Coaching: Multicore & Microcontrollers
MicroConsult Expertise: Embedded Software Development
MicroConsult Training & Coaching: Embedded SW development
MicroConsult expertise: Safety & Security

