George Edwards, University of Southern California Chiyoung Seo, University of Southern California Daniel Popescu, University of Southern California Sam Malek , George Mason University Nenad Medvidovic, University of Southern California Abstract Software systems that execute in embedded and pervasive environments are frequently required to be self-monitoring, self-adapting, and self-healing. However, supporting these self-* capabilities in pervasive environments creates a number of unique engineering challenges. This paper first describes the challenges that we believe to be the most significant based on our experience developing real-world pervasive software applications with self-* capabilities. We then discuss each challenge in the context of four strategies commonly employed in self-* systems: dynamic software update, service discovery, transparent replication, and logical mobility. Finally, we explain how each strategy is implemented in our architectural middleware platform, Pri...