Virtual Component A Design Pattern for Memory-Constrained Embedded Applications