We present design concepts, programming constructs, and automatic verification techniques to support thedevelopment of adaptive Wireless Sensor Network (WSN) software. WSNs operate at the interface betweenthe physical world and the computing machine, and are hence exposed to unpredictable environment dynamics.WSN software must adapt to these dynamics to maintain dependable and efficient operation. Whilesignificant literature exists on the necessary adaptation logic, developers are left without proper support inmaterializing such a logic in a running system. Our work fills this gap with three key contributions: i) designconcepts help developers organize the necessary adaptive functionality and understand their relations,ii) dedicated programming constructs simplify the implementations, iii) custom verification techniques allowdevelopers to check the correctness of their design before deployment. We implement dedicated toolsupport to tie the three contributions, facilitating their practical application. Our evaluation considers representativeWSN applications to analyze code metrics, synthetic simulations, and cycle-accurate emulationof popular WSN platforms. The results indicate that our work is effective in simplifying the developmentof adaptive WSN software; for example, implementations are provably easier to test and to maintain, therun-time overhead of our dedicated programming construct is negligible, and our verification techniquesreturn results in a matter of seconds.