Dynamic reconfiguration refers to the ability of changing properties and structure of a distributed system, while it is running. It is essential when designing applications that need to adapt to unpredictable events, run on non-dedicated environments; for which configuration cannot be statically determined, or may change at runtime. Grid computing also gave new emphasis to the topic, being based on dynamic environments by definition. The first part of this work tries to give a definite organization to known literature and existing experiments, providing a general overview of the problem. Then we describe our approach to dynamicity in the context of the ASSIST programming environment and show how it is able to provide users with many of the required abstractions to develop adaptive, high-performance, distributed applications.