Ubiquitous (or Pervasive) Computing is a new domain in Computer Science resulting from the emergence and evolution of both distributed systems and mobile computing. Technology is moving beyond the personal computer towards a growing trend of embedded microprocessors in everyday objects and is demanding an unobtrusive connectivity between them in order to serve users at anytime and anywhere. The main objective of a ubiquitous computing system is to provide adaptive services proactively, without explicit user intervention and according to the user's current context. Despite interesting previous research works, there is still a lack of software tools and related research in terms of comprehensive context modeling, architecture of context-aware ubiquitous systems, and dynamic adaptation approaches in ubiquitous service computing environments. This chapter proposes a conceptual architecture to provide dynamic adaptability in ubiquitous services based on context-awareness and user preferences. As part of this proposal, the authors detail an ontology-based context modeling approach, a multi-agent architecture to support the development of ubiquitous computing applications, and a case-based reasoning method for service adaptation.