The evolution of software process engineering is in a step were the method is divided into fragments and we are obliged to develop the software following several fragments of different methods, and here appears the necessity of distributing process software engineering. Also teamwork is a prerequisite for the development of large complex software systems and for the execution of large process models. In conventional software engineering coordination of teamwork is achieved by exchanging formal documents and by providing support for keeping these documents consistent even while several developers are evolving them. In order to support teamwork more effectively it is important to move the focus beyond coordination towards cooperation. The goal of this paper is to give a support for cooperation in software engineering in two ways. First, by providing a terminological and conceptual foundation for the field of cooperative software engineering that's why we propose a goal driven approach to model cooperative software engineering. Second, by developing tools for computer supported guidance and orchestration of application engineers in the execution of a cooperative process model.