This lesson is in the early stages of development (Alpha version)

Design: Glossary

Key Points

Introduction
  • Investing in design is critical for reliable, maintainable and extensible software

General Design Principles
Design Principles Application
  • Understanding process of software design with a simple application

Design Principles for Reserach software
  • Design principles need to be adapted for research software

Research Software Design Example
  • More complex requirements gathering and connectivity and -implications on design

Challenges of Heterogeneity
  • More computations rely on accelerators, software design should be cognizant of added constraints

Design for Heterogeneity
  • More separation of concerns and abstractions are needed

Conclusions
  • Investing in design is critical for reliable, maintainable and extensible software

Glossary

https://en.wikipedia.org/wiki/Design_Patterns https://www.geeksforgeeks.org/principles-of-software-design/ https://adevait.com/software/solid-design-principles-the-guide-to-becoming-better-developers https://ieeexplore.ieee.org/document/6301346 https://www.dotnettricks.com/learn/designpatterns/different-types-of-software-design-principles https://doi.org/10.6084/m9.figshare.13283714.v1 https://bssw.io/blog_posts/performance-portability-and-the-exascale-computing-project https://www.exascaleproject.org/event/kokkos-class-series https://ieeexplore.ieee.org/abstract/document/9459442 https://journals.sagepub.com/doi/full/10.1177/1094342017747692