$$% Arcus cosine. \def\acos{\cos^{-1}} % Vector projection. \def\projection#1#2{{proj_{#1}\left(#2\right)}} % Vector rejection. \def\rejection#1#2{{rej_{#1}\left(#2\right)}} % Norm. \def\norm#1{{\left\|#1\right\|}} % Cross product. \def\cross#1#2{\mathit{cross}\left(#1,#2\right)} % Dot product. \def\dot#1#2{{#1 \cdot #2}} % Magnitude. \def\mag#1{{\left|#1\right}} \def\group#1{\left(#1\right)}} \def\sbgrp#1{\left\{#1\right\}}$$

## Design Rational

### Modules: Support for large-scale software development

The concept of modules was introduced as the C programming language does not provide relevant reifications for structuring large-scale programs into modular pieces which each can be maintained and consumed individually. For our pieces of software, we decided to introduce the concept of modules to give our programs (libraries and executables) a modular structure. A module provides a compile-time and run-time protocol for its consumption by other programs. The foremost goal of these modules are that each of them can be maintained and consumed individually.