Many modern systems must run in continually changing contexts. For example, a computer vision system to detect vandalism in train stations must function during the day and at night. The software components for image acquisition and people detection used during daytime may not be the same as those used at night. The system must adapt by replacing running components such as image acquisition from color to infra-red. This adaptation involves context detection, decision on change in components, followed by seamless execution of a new configuration of components. All this must occur at runtime while minimizing the impact of dynamic change on continuity and loss in performance. We present Girgit, a lightweight Python-based framework for building dynamic adaptive software systems. We evaluate it by building a dynamically adaptive vision system followed by performing rigorous experiments to determine its continuity and performance.