The increasing number of robots around us will soon create a demand for connecting these robots in order to achieve goal-driven teamwork in heterogeneous multi-robot systems. In this paper, we focus on robot teamwork specifically in dynamic environments. While the conceptual modeling of multi-agent teamwork has been studied extensively during the last two decades, related engineering concerns have not received the same degree of attention. Therefore, this paper makes two contributions. The analysis part discusses general design challenges that apply to robot teamwork in dynamic application domains. The constructive part presents a review of existing engineering approaches for challenges that arise with dynamically changing runtime conditions. An exhaustive survey of robot teamwork aspects would be beyond the scope of this paper. Instead, we aim at creating awareness for the manifold dimensions of the design space and highlight state-of-the-art technical solutions for dynamically adaptive teamwork, thus pointing at open research questions that need to be tackled in future work. 2 increasing number of partially autonomous robots for lawn mowing, vacuum cleaning, window cleaning, and even for caretaking and medical applications.Achieving effective multi-robot teamwork raises big research challenges. Our particular focus in this paper is on the software that enables adaptive teamwork. Comprehensive support for designing the interaction, coordination and decision-making is essential to exploit the potential of multi-robot teams. For example, consider a large-scale emergency scenario where robots of different rescue organizations come together and collaborate spontaneously to search and rescue victims. Clearly, in the first place, we need communication channels between the robotsjust like for the human rescue forces. Based upon the basic communication capabilities coordination of task assignment, execution, and monitoring is required. In dynamic, error-prone application environments support for adaptive task allocation and decentralized decision-making is crucial to determine who does what and when in a team of autonomous robots. Heterogeneity of robot hardware and software may further add to the complexity. When engineering a software framework for the teamwork of autonomous robots all of these challenges, and more, have to be addressed and solved.The goal of this paper is to explore the design space for the engineering of robot teamwork and to present solution approaches for dynamic application scenarios. We highlight the spectrum of application requirements and identify challenges for the engineering of teamwork solutions in multi-robot systems. This leads us to research questions that future research needs to tackle.The analysis part discusses general design challenges that apply to robot teamwork in dynamic application domains. The constructive part presents a survey of existing engineering approaches for challenges that arise with the dynamically changing runtime conditions. This paper makes two main contribution...