focus distributed systems 0740-7459/04/$20.00 © 2004 IEEE Published by the IEEE Computer Society IEEE SOFTWARE 49 increases, which means a greater number of required fixes. Studies have found that nearly half the software development effort in com- plex distributed systems is devoted to mainte- nance. 1 Furthermore, the industry currently favors iterative and incremental development approaches over the traditional waterfall ap- proach in software engineering to flexibly handle requirements 2 and reduce project risks by deploying smaller changes. 3 These changes are regular and predictable. So, how can we build distributed systems to handle these kinds of changes? The answer, we argue, is dynamic evolution. From a business perspective, dynamic evolution permits frequent upgrades, which reduces the time between re- leases. Dynamic evolution also enhances flexi- bility in implementing changes to unforeseen and fluctuating business requirements. Many specialized distributed systems, in- cluding the kind listed in Table 1, will benefit from factoring dynamic evolution into their designs. We can easily achieve dynamic evolu- tion in a component-based distributed system (see the related sidebar). The abstraction of components and their connectors facilitates system structures to accommodate changes. Perspectives on dynamic evolution We can trace the most popular definition of the term “evolution” to Darwin’s study of species as “the process of developing from a rudimen- Embracing Dynamic Evolution in Distributed Systems D istributed systems aren’t only more widespread than they used to be, but they’ve become more critical than ever, having moved from client-server systems to multitier heterogeneous systems. Many of these applications—such as telephone exchange sys- tems—must be operational 24 hours a day, so shutting them down isn’t a viable option for administrators who must make systemwide changes. As a system becomes larger and more complex, the likelihood of defects The ability to evolve dynamically is an important element of distributed systems that must undergo changes without being shut down. Various technologies exist that support such dynamic evolution. Kam Hay Fung, Graham Low, and Pradeep Kumar Ray, University of New South Wales, Australia