Context-Aware Service Discovery in Ubiquitous Computing