Designing Ubiquitous Systems through Architectural Reflection