Describir: Architecting Embedded Software for Context-Aware Systems