SUMMARYTraditionally, software development environments have tended to treat a system's development-time activities separately from its run-time. After a system is in operation, it frequently needs to be maintained and evolved. In traditional environments, this results in frequent relocations of a system between the disjoint development and run-time environments, which is undesirable for several reasons. A more effective solution is to couple the development and run-time environments to directly monitor and adapt running systems. Given the growing need for interaction between development-time and run-time aspects of modern software systems, it is important to understand development and run-time environments, and their relationship. To this end, we study and classify a wide range of software development environments on the basis of their level of interaction with the corresponding run-time environments. Particularly, we identify, study, and characterize Self-Adaptive Life-cycle Environments (SALEs), an emerging class of modern development environments that are tightly integrated with run-time environments. We reify our study of the development environments into a novel reference architecture, iDARE, that captures and differentiates the architectures of software environments -from those, such as traditional development environments, that have no interaction with the run-time environments, to the ones, such as SALEs, that are tightly integrated with the run-time environments. We use iDARE to highlight several shortcomings of existing SALEs. Adherence to iDARE has the potential to improve certain quality properties of the integrated development and run-time environments, such as adaptability, fault-tolerance, robustness, availability, and resource consumption. We identify a number of opportunities for future research.