Design the application as a plugin architecture so that the functionality can be extended more easily.
Design the software architecture of the system based on software architecture patterns.
Develop an HPC application according to a reference architecture and adhering to the standards/guidelines given by the reference architecture.
Implement component-based software architecture for scientific applications.
Apply component-based architecture design.
Detect architecture bad smells.
Identify sub-optimal design decisions in architecture designs (e.g. sub-optimal communication between components).
Describe the software architecture of a scientific applications, what the most critical architecture decisions are, what the main structures of the system are, what the interfaces of the systems are, how they are designed and how components communicate with each other.
Discuss which software architecture patterns are typical for a specific type of scientific application and which aspects (e.g. quality attributes) they address.
Apply design patterns to HPC, e.g. patterns for coding of parallel algorithms and their mapping to various architectures.
Reference architectures for scientific applications.
Identify architectural tactics for performance, scalability, etc.
Apply software architecture principles during the architecture design.
Interpret the characteristics and the architectural challenges of data-intensive and compute-intensive software systems and how they can be appropriately addressed.