Academia.eduAcademia.edu

Distributed development

2006, Proceeding of the 28th international conference on Software engineering - ICSE '06

The Global Studio Project integrated the work of Software Engineering students spread across four countries into a single project and represented, for most of the students, their first major "real-world" development experience. Interviews indicated that the major areas of learning were informal skills that included learning to establish and work effectively within a team, learning how to react quickly to frequent changes in requirements, architecture and organization, and learning to manage and optimize communications. Since all these skills require rapid reaction to unpredictable factors, we view them as improvisation and discuss the role of experiential education in facilitating improvisation.

Distributed Development – an Education Perspective on the Global Studio Project Ita Richardson Allen E. Milewski Patrick Keil Dept. of CSIS and Irish Software Engineering Research Centre Dept. of Software Engineering Institut für Informatik – I4 Monmouth University Technische Universität München University of Limerick, Ireland 353.61.202765 West Long Branch, NJ, USA 1.732.571.7578 Garching, Germany 49.89.289.17386 [email protected] [email protected] [email protected] Neel Mullick Siemens Corporate Research 755 College Road East Princeton, NJ, USA 1.609.734.3668 [email protected] ABSTRACT 1. INTRODUCTION The Global Studio Project integrated the work of Software Engineering students spread across four countries into a single project and represented, for most of the students, their first major “real-world” development experience. Interviews indicated that the major areas of learning were informal skills that included learning to establish and work effectively within a team, learning how to react quickly to frequent changes in requirements, architecture and organization, and learning to manage and optimize communications. Since all these skills require rapid reaction to unpredictable factors, we view them as improvisation and discuss the role of experiential education in facilitating improvisation. The growth of Global Software Development (GSD) internationally has meant that distributed software teams are now being used widely. The increase in volume and scope of globally distributed development will persist [7], and will have an impact on development processes, project management practices, architecture, maintenance, quality and so forth [16]. With a presence in 190 countries and over 30,000 software developers, it is inevitable that Siemens executes GSD projects. With an expanding global marketplace, a trend towards developing software in low cost countries, and the growing complexity and size of software systems, the percentage of Siemens projects that are globally distributed has been steadily increasing. Siemens Corporate Research, Inc. (SCR) has been doing research aimed at developing a better understanding of the issues and impact of various practices with respect to GSD. Categories and Subject Descriptors K.3.2 [Computers and Education]: Computer and Information Science Education – curriculum. In this paper, we describe part of this research, the Global Studio Project (GSP), which has organized the work of Software Engineering and Computer Science student teams from five Universities in four countries into a single global project. We present and analyze experiences made by teams from three Universities. Since our key focus here is on the educational aspects of GSP, we begin by summarizing previous literature on experiential learning in Software Engineering, especially distributed educational contexts in Software Engineering. Then we describe the GSP process and what it meant for the existing University coursework. Finally, we summarize our insights and those of our students to assess the role that experiences like the GSP can play in professional development. General Terms Management, Design, Experimentation, Human Factors. Keywords Software engineering education, Curriculum, Global Software Development Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. ICSE'06, May 20–28, 2006, Shanghai, China. Copyright 2006 ACM 1-59593-085-X/06/0005...$5.00. 1.1 Teaching the “Real World” When we teach students, we try to give them an insight into what the ‘real-world’ is about. We present material in courses such as software processes, components, architecture design, requirements engineering and human-computer interaction. 679 These academic experiences alone are not sufficient for preparing Software Engineering students for productive careers [19]. Project managers require “a combination of technical, human resources, and management skills coupled with on-the-job experience” [22]. Thus, Universities need to educate professionals to have more than a technical understanding of the personnel and management issues surrounding successful project in real contexts. But Surendran, et al. [24] note that a difficult thing to achieve in a curriculum is realism—real products signifying tangible, relevant achievements and real people signifying collaborative effort. These researchers utilized well known taxonomies of both learning mastery levels and Software Engineering topics [17] to develop a model of professional mastery appropriate for the real world. The model depends on a complex interaction of subject matter and method of instruction. For example, basic factual information about core topics like requirements, design and testing are well suited to traditional classroom instruction because they require only recall and comprehension. However, deeper levels of mastery, such as application of this knowledge, as well as its analysis and synthesis, require extra-classroom experiences such as practicum, apprenticeships and internships. In addition, some critical categories of knowledge are best conveyed in these extraclassroom experiences. For example, how to work efficiently in collaborative teams is a skill that is difficult to teach in the classroom, but can only be practiced effectively in a real-world team-oriented project [1, 23]. definition were both key factors in the teams’ efficiency, effectiveness and level of satisfaction. Although these factors play an important role in any project, the global nature of this study likely increased their importance. The role of less formal factors has also been made clear in the extensive body of research on remote and global collaboration outside of the educational context. Hersleb and Grinter [14] found that while organizations attempt many mechanisms to coordinate cross-site work this is vulnerable to imperfect foresight and unexpected events. Solving these requires workers skilled at informal communication and negotiation. Moreover, GSD makes all these activities more difficult; the lack of subtle modes of communication often results in decreased perception that remote coworkers are helpful, decreased ability to react to changes quickly and increased project delays [15]. GSD has stronger needs for planned communication patterns and – paradoxically – for a higher flexibility and adaptivity of processes. 2. Experiment within Siemens Corporate Research Led by SCR and assisted by Harvard Business School, five Universities internationally set up seven distributed student development teams in order to study the problems of GSD. At the same time, the project allowed the students involved to develop an experiential understanding of GSD. To get results as close as possible to problems appearing in real projects, the GSP was set up to shadow an actual GSD project in Siemens. The project organization, management, and the system being developed largely mirrored that of the real project. This experiment allowed investigation of particular questions without risk to current Siemens business. The SCR central team was responsible for the high-level requirements, software architecture, system test and integration, and project management. Distributed student teams were responsible for design, development and unit test for defined work packages (core modules / sub-systems). The central team included two M.Sc. students from TUM who completed research dissertations. In fact, we believe that there is a substantial set of important “informal” skills that fall into this category. They include the ability to: • • • • quickly learn about a domain or technology to begin project planning figure out an organizational structure well enough to seek needed expertise efficiently assess others’ abilities to support accurate team planning and status assessment and to know when to take the lead react swiftly to project changes. While these skills undoubtedly benefit from classroom training indirectly, many of them have a strong improvisational element and depend on the context at hand. Dawson [9] has vividly summarized several of these skills and has discussed their simulation in software engineering coursework. Reif and Mitri [22] also draw the distinction between traditional classroom training and practical experience with “informal” knowledge. They postulate that senior managers “construct mental models for the project, problems, and opportunities under investigation. Next, they scan their mental experience repository for adequate actions to be taken against problems or to explore opportunities”. The central team modified the requirements from the real project to accommodate student resources available and to allow for development and testing without specialized environments. They defined the architecture keeping in mind both quality requirements and the composition of the student teams. The central team included a build meister and supplier manager. The build meister was responsible for system testing, integration, configuration management, and delivery of artifacts from the teams. Supplier managers managed particular student teams. They were responsible for monitoring progress of the team, being the first point of contact and coordinating the communication between the teams and other project members. Teams, as a rule, were not permitted to communicate directly with one another but spoke directly to their supplier manager. 1.2 Teaching Distributed Development Since GSD is being used increasingly, it is critical that graduates develop relevant skills. Many of the informal skills and knowledge areas described above are complicated significantly in a global context [6, 2]. Bruegge et al. [5] found that even with a rich set of collaboration tools and some face-to-face meetings between certain team members, actual collaboration and information sharing between geographically remote teams was difficult and infrequent. Edwards & Sridhar [11] studied virtual teams of students distributed across different countries and found that trust between the teams and the clarity of task-structure The project plan reflected the iterative nature of the intended development process. Because of the communication issues typically experienced in GSD projects, additional controls were put in place to track progress against the plan and to identify issues early. One of the approaches taken to accomplish this was to define four to six week milestones with clearly defined deliverables by all the teams and an integration task at each of the milestones (engineering releases). The first engineering release 680 was essentially a “hello world” with a minimal delivery due from each team. This ensured that all of the infrastructure was in place, identified any major issues in the development and delivery process and served as a first test for the integration process. Subsequent engineering releases were more closely related to the releases expected from a real-world distributed project. 2.2 Research Project In addition to GSP being an educational experience, research activities focused on global collaboration and engineering process. During the year, students completed interviews and questionnaires designed and conducted by Harvard Business School with input from the research partners. Students completed a weekly on-line questionnaire, which focused on communication patterns and on their perception of the current project status (products, understanding of requirement, etc.). Each group participated in a monthly telephone interview. Additionally, each team member participated either in a semi-structured individual interview or in an open-ended email questionnaire, focusing on the development process within which the students were involved and the educational outcomes from this process. Content analysis to identify overarching themes invoked by the participant themselves was carried out by the authors. A broad analysis of the frequency of different concepts was conducted based on an interrogation of the interview transcripts. The make-up and background of the University teams varied. Monmouth University, New Jersey, U.S.A. had three teams comprised of 5 Masters Students each. The other Universities University of Limerick, Ireland, Technische Universität München, Germany, Carnegie Mellon University, U.S.A., and Indian Institute of Information Technology, India – each had one team. The team in the University of Limerick was composed of 5 M.Sc. in Software Engineering students and the team in Technische Universität München was composed of 3 Masters students. The teams were engaged in the definition phase of GSP. The schedule, available weekly student hours, and the geographic proximity of the teams to the central team were all considered when defining the original work packages which were defined and distributed to all of the teams. The initial work packages contained a partially defined requirements specification, high level architecture, market intent, specification for the protocol used by the field systems, high level project plan, and a description of the tasks to be completed by the team for the first engineering release. 2.3 Educational Value and Insights Motivation for Participating: The main reason GSP students volunteered was that they were interested in getting some ‘real’ development experience. Generally this was driven by a curiosity about environments outside their own academic and employment contexts. For example, one student was eager to work “with a firm that has a great reputation in the software world. I wanted to learn how industries other than government produce software.” Another mentioned that “working with a large-scale company and the possibility to have our work actually be used by the customer in the future was intriguing.” Yet another “liked the ’realness’ of the project as compared to a made-up one”. Several mentioned that it would look good on their CVs. UL tied the GSP to a dissertation and some students participated as it gave them an interesting dissertation topic. These students had to become reflective practitioners on the project studying one chosen process. 2.1 Course Summary The courses participating in the GSP at University of Limerick (UL), Monmouth University (MU) and the Technische Universität München (TUM) have many features in common. First, they are all graduate (M.Sc) classes designed for teams of between three and twelve students with the goal of teaching them “what it means to work in a team and how to go through the whole project life cycle” [13]. Students collect and analyze requirements, create an architecture, detailed software design, and often a user-interface design. Teams also develop the working software, carry out a test plan and provide customer documentation for installation and operation of the product. Typically, projects in these courses develop fairly simple applications. Teams work fairly autonomously; the course instructor serves as an advisor. Students generally enter the courses with some experience, having completed a relevant undergraduate degree. Some of them have recommenced formal education after having spent time in industry. All GSP participants in these courses were volunteers. Teamwork: Some of the students found that working on a team in a real-world environment was much different than what they had previously experienced in class projects. Comments included: “There can be a lot of problems with team dynamics”; “How difficult it is to work in groups, …even organizing times to suit everyone”; “Working in a team – working through problems faced and task allocation”. Depending on previous experiences, some teams had less difficulty with this aspect. “Team had common concept of how well we wanted to get the project done”. “We were able to work together, come up with creative solutions. Some were good at development, some at documentation. One would make a breakthrough, then the others put their shoulders to the wheel”. There were also some differences between participating institutions. For example, at UL, students had additional work, to complete their M.Sc. dissertations. They had to compare an aspect of the GSD process, such as project management, with that local software development, providing insights into differences. At MU, the graduate practicum is a capstone course that also requires a series of team documents, such as project plan, requirements, design and test plans, etc. Many of the GSP participants were employed together as government SE interns, but they were strongly encouraged to interact only within their teams, not across team boundaries. At TUM, after the completion of the project, a report has to be prepared and the results are presented to other students and the chair staff. The team was asked to define, adopt and evaluate its own processes based on agile methods. As only the global process was defined, the students decided on using Extreme Programming and SCRUM as a base for their process. Involvement in a life-cycle: This project gave students the opportunity to be involved in a software project’s complete lifecycle, from where they had to define the partial requirements given by SCR to providing a tested product. In the classroom, it is very difficult to give a project which includes a full life-cycle. Students found that “It was good to figure out how work packages should be delivered”. “How do you go about doing a requirements document? We all knew it needed to be done but how to do it was a problem”. Commencing the Project: One of the most difficult things for the student teams was figuring out how to begin the project. “The 681 what seemed like endless confusion over their software designs. This was recognized to be a useful tactic and was quickly followed by similar requests from all MU teams. In all cases, these visits resulted in a marked improvement in understanding and progress continued after the meetings. Communication may have been especially difficult for the UL team because they did not have a supplier manager responsible for them. All of their communication with central team personnel was on a more ad hoc basis. This caused communication problems - “We felt it came from – we felt isolated – that was part of the project”. “There should be more phone conferences”. “Lots of problems were tactical – like how to communicate with SCR” as the team did not know them personally. Again, faceto-face meetings were critical. Until they had an opportunity to meet face to face, both formally at meetings and socially with SCR personnel, did they relax about communicating regularly with SCR. The TUM team had no supplier manager, but the advantage that a German student joined the SCR team for the second half of the project. Even if their English skills were very high, this eased communication “because some things are easier to explain in German.” At the beginning, though, “communications with the central team was not effective.” After meeting one representative of SCR face-to-face, the students had “a better idea who to ask questions to.” All this shows why – independent of team size and location – face-to-face communication was rated “most effective”. only difficulties I experienced was getting started.” Some of these difficulties even preceded requirements gathering. Among others, students were provided with a very large document describing an industry standard protocol that they were to use, but most students did not read the details. SCR referred them to this document, and eventually, teams found ways to gain expertise on the protocol. For example, one team assigned one team member to read the document as his sole responsibility. Changing requirements: A key insight made by many students concerned the chaotic and frequently-changing nature of real projects and the importance of reacting quickly to these changes. This is a point made often in the classroom, but the GSP experience made it real. “Our customer did not know what he or she wanted- a very common thing in the software world.” “The industry benefit was that we saw how a real project is run- delays, changing requirements, shifting of personnel, etc”. The changes during the project resulted in coordination problems since it got “very hard to resolve open questions via email, especially when you don’t know what you don’t know” and because “you don’t know where to start asking questions” because so many new things came up. Communication: Because of the nature of the research, nearly all extra-team communications were between each student team and the SCR central team, rather than between two or more student teams. Compared with traditional classes and practicum, the GSP was viewed positively because it exercised skills in communicating with other technical people (on the central team). “I got experience in interacting with other software organizations. A very common thing to do in the work environment”. “In this project the customer knew more about the technologies so it was more demanding. It was not easy to get around or fluff at the end.” “The fact that the Siemens representatives themselves were very technical provided some benefit in the fact that they required us to develop things … we were not familiar with. So, we had the opportunity to learn some new concepts/tools.” Communicating with the SCR team, however, was not always smooth. Along with difficulties collecting clear requirements, the most common difficulty reported by participants was communicating with the central team. In some cases this was because of personnel changes midway through the project. In other cases it was because the central team did not have clear answers, because it took substantial time to ramp the project up to a smooth state. In many cases, however, the problem was that the student teams were not proactive in asking questions of the central team or were not adept at integrating answers into their own cognitive frameworks. “We were inexperienced. We didn’t know when to go to SCR.” “At times we did not speak the same terminology and it was confusing. The central team would mention something in talking about design issues and we would not understand because our terminology for that same issue might be different.” 2.4 Improvements and Expansions Scheduling: One of the difficulties the students faced was that they were not a full-time development team, but also had to schedule coursework and other projects while working on the Global Studio Project. This caused difficulties - “Sometimes they (SCR) weren’t happy with us – we didn’t always get back to SCR. We didn’t want to give the time to be available everyday to get back to them”. It is important that we, as project supervisors ensure that the students maintain a balance between what they are doing for SCR and what they are doing for their other coursework: “How to fit this into the course – balancing between getting a project in for 30% and an SCR deliverable”. Development process: SCR provided a development process called MD.RAD (Model Driven Rapid Application Development) that is specifically designed for global projects and which was planned to be applied as a reference process for GSP. In contrast, local teams needed to establish their own processes. There is huge potential for future GSP phases to gather more and deeper insights in the strengths and weaknesses of MD.RAD as well as of local methods. One option could be to ask one or two teams to choose different methods and implement them. For the students, this would result in a deeper understanding of such processes. For the researchers and the instructors, such experiments would lead to improvements in the overall process and would add new experiences on how to plan and control distributed projects. The work package to define, implement and evaluate local methods was planned for the first phase, but its priority was displaced downward when the software implementation phase began. In the context of GSD, face-to-face contact with central team members proved to be extremely important, even though it was infrequent. One student wrote that “it seems that the lack of face-to-face talk can lead to apparent similar perceptions while both parties still have differing “images” of the system. So being precise and verifying even aspects taken for granted is important, which can only be accomplished by intensive communication.” At one point, one MU team requested a visit from their supplier-manager in order to clear up Project planning: Future GSP phases need to provide more robust methods for information sharing and for alerting teams to project changes. “SCR had nothing set up to keep the team informed that things were happening – change to requirements, 682 A key concern of this investigation has been to understand in detail what can be learned in such a real-world project. Student interviews and questionnaires revealed that the major areas of learning were informal skills that included learning to establish and work effectively within a team, learning how to react quickly to frequent changes in requirements, architecture and organization, and learning to manage and optimize communications in the GSD environment. This list of key areas learned may not be surprising in that they are all well-known and critical areas of practice required to be an effective software engineer. What is notable is that these areas are all those that are traditionally thought to be difficult to teach in a standard classroom setting. Their centrality in the GSP is consistent with the framework proposed by Surendren et al, [24]. Students struggled with these areas during their GSP experience but learned something about the behaviors required to react successfully. change to project plan, change in personnel”. “What’s taking up our time is finding out what we are supposed to do.” Provision of Resources within University: A requirement from SCR was that the students’ work was under Non-disclosure agreement. This did not cause a problem in general, but it did require that students were located in a laboratory which gave them some privacy. This is not always an easy task to achieve within a class of people who are also working on projects. Furthermore, at all the Universities, the students were slow to discuss problems with their dissertation supervisor, as this could be seen as a weakness on their part, and might affect their final grade. They need a teaching support person who would be able to help them when their technical skills were weak so that they would not have to call on their supervisor when problems arose. Inter-Team Communication: Some of the communications difficulties resulted from teams being restricted to interactions with the central team; there was a large load on the central team and the level of detail that could be conveyed by this “middleman” was sometimes limited. At one point in the project, a single MU team was allowed to communicate directly with one of the teams of Carnegie Mellon University over the details of a shared interface. In this case, direct communication seemed to simplify communication. Of course, with globally distributed teams, language, distance and cultural differences make such communication more complex. Nonetheless, in the next phase of GSP, inter-team communication will be encouraged and studied and in this sense will be more of a traditionally global collaboration. This will also give students the opportunity to directly perceive cultural differences and their effects and to learn how they can be handled. A useful model for the needed behaviors is that of improvisation, being a complex cognitive process of adapting already-learned material and high-level rules and heuristics to apply to unanticipated events in new situations. Successful improvisation requires that the improviser has a large repertoire of previouslylearned solutions and techniques to draw on and then creatively apply them in reaction to a current, dynamic situation [3]. While improvisation is often associated with artistic endeavors, its value has more recently been realized in domains as diverse as organizational management [3] and emergency-response [20]. Finally, Dybå, [10] has concluded that improvisation is a critical skill for the success of professional software organizationsespecially those that work in small teams. According to Dybå, as software environments become increasingly unpredictable, successful software engineering requires a careful balance between disciplined exploitation of already-learned processes and experimentation with new behaviors. The correct balance depends on the context of the specific project- both team size and project turbulence. Tools: An important side effect of a real-world project like the one presented is “to familiarize students with some of the CASE tools used in the industry” [23]. Therefore, without focusing the project on this, some of the teams could be asked to evaluate different tools (e.g. for configuration management, testing etc.) and configure the ones chosen. This time, the central team took these decisions. We believe that the most significant educational value of the GSP was in the area of improvisation. When students joined the project, they had already experienced most or all of the traditional class work associated with software engineering programs. This gave most of them at least a basic a repertoire of project process models, team organizations, architectural and software design patterns and testing strategies. While stringing these together in a single, complex project provided some educational value in itself, the real discoveries came from the frustrations and anxiety associated with the need to research, plan, communicate and respond to frequent changes quickly in the GSD environment. 3. Conclusion Instructors’ involvement in this project centered on both research and educational perspectives. From the research perspective, this project affords the opportunity to study the effects of GSD and can help answer questions such as: how should project management be different in a local / global environment? How can the software be divided out among teams? How can the software be integrated successfully? What information-seeking strategies are used in global teams? To answer these questions, a huge amount of data was collected and many experiences have been documented for evaluation. Besides the challenges to transfer theoretical knowledge into a realistic project setting, which requires informal skills and improvisation talent, students also learn to integrate and combine their knowledge on different subjects. In a project environment like the one for GSP, students are forced to regard testing not as a problem of models or even tools, but also as a managerial, organizational and technical challenge. From an educational standpoint, instructors’ interest in the GSP centered on its opportunity for real-world experiences. Students had to set up their own project team, appoint a project manager, manage the work coming in from SCR, deliver output, work with modifications required by SCR and communicate with people they had not met. This gives them experiential learning in a global environment. Similarly, most students volunteered for the project in an active attempt to get real experience outside their own academic and employment contexts. From the instructors’ standpoint, it is tempting to try to teach students how to improvise within a software project even before their experience with it. However, this may not be feasible. Improvisation is often believed to be a “learnable” skill; there are educationally-oriented treatments of it in artistic contexts [18]. 683 [10] Dybå, T. Improvisation in Small Software Organizations. IEEE Software. 17, 5 (Sep. 2000), 82-87. Mirvis [21] describes the benefits of practicing improvisation as part of a business education. However, virtually all of these treatments avoid direct instruction in favor of exercises and scenarios where students can practice and gain insight into the skills needed. Drawing on these exercises, students become aware of what needs to be improvised, develop a vocabulary of improvisation to facilitate planning and also become desensitized toward the anxiety associated with the dynamic environments where improvisation is required [21]. We feel these insights are as important for software engineering students as they are for other fields, and that the GSP has provided an useful environment to facilitate their learning. We are also sure that this project increased – ceteris paribus – our students’ ‘market value’ by experiencing a large-scale project and getting insights into the ‘real world’ of globally distributed software development. [11] Edwards, H. K. and Sridhar, V. Analysis of the Effectiveness of Global Virtual Teams in Software Engineering Projects. In Proceedings of the 36th Annual Hawaii international Conference on System Sciences (January 06 - 09, 2003). HICSS. IEEE Computer Society, Washington, DC, 19.2. [12] Favela, J. and Peña-Mora, F. An Experience in Collaborative Software Engineering Education. IEEE Software. 18, 2 (Mar. 2001), 47-53. [13] Gnatz, M., Kof, L., Prilmeier, F. and Seifert, T. A Practical Approach of Teaching Software Engineering. In Proceedings of the 16th Conference on Software Engineering Education and Training (March 20 - 22, 2003). CSEET. IEEE Computer Society, Washington, DC, 120. 4. Acknowledgement [14] Herbsleb, J. D. and Grinter, R. E. Splitting the organization and integrating the code: Conway's law revisited. In Proceedings of the 21st international Conference on Software Engineering (May 16 - 22, 1999). ICSE ‘99. IEEE Computer Society Press, Los Alamitos, CA, 85-95. We would like to thank the students who participated in the project. Participation by UL was funded by Science Foundation Ireland through the GSD for SME project. 5. REFERENCES [15] Herbsleb, J. D., Mockus, A., Finholt, T. A. and Grinter, R. E. Distance, dependencies, and delay in a global collaboration. In Proceedings of the 2000 ACM Conference on Computer Supported Cooperative Work (Philadelphia, PA, United States). CSCW '00. ACM Press, New York, NY, 319-328. [1] Alfonso, M. I. and Mora, F. Learning Software Engineering with Group Work. In Proceedings of the 16th Conference on Software Engineering Education and Training (March 20 22, 2003). CSEET. IEEE Computer Society, Washington, DC, 309. [16] Herbsleb, J. D., Paulish, D. J. and Bass, M. 2005. Global software development at Siemens: experience from nine projects. In Proceedings of the 27th international Conference on Software Engineering (May 15 - 21, 2005). ICSE '05. ACM Press, New York, NY, 524-533. [2] Azadegan, S. and Lu, C. An international common project: implementation phase. In Proceedings of the 6th Annual Conference on innovation and Technology in Computer Science Education (Canterbury, United Kingdom). ITiCSE '01. ACM Press, New York, NY, 125-128. [17] Hilburn, T., Hirmanpour, I., Khajenoori, S., Turner, R. and Qasem, A. A Software Engineering Body of Knowledge, Version 1.0, tech. report CMU/SEI-99-TR-004, Software Eng. Inst., Carnegie Mellon Univ., Pittsburgh, 1999. [3] Barrett, F. J. Creativity and Improvisation in Jazz and Organizations: Implications for Organizational Learning. Organization Science, 9, 5 (Sep/Oct, 1998), 605. [4] Brereton, P., Gumbley, M. and Lees, S. Distributed Student Projects in Software Engineering. In Proceedings of the 11th Conference on Software Engineering Education and Training (February 22 - 25, 1998). CSEET. IEEE Computer Society, Washington, DC, 0004. [18] Johnstone, K. Impro: Improvisation and the Theater, Theatre Arts Books, 1979. [19] McCracken, W. M. Counterpoint-SE Education: What Academia Can Do. IEEE Software. 14, 6 (Nov. 1997), 27. [20] Mendonca, D. and Wallace, W. A. Studying Organizationally-situated Improvisation in Response to Extreme Events. International Journal of Mass Emergencies and Disasters, 22, 2 (August 2004), 5-29. [5] Bruegge, B., Dutoit, A. H., Kobylinski, R. and Teubner, G. Transatlantic project courses in a university environment. In Proceedings of the Seventh Asia-Pacific Software Engineering Conference (December 05 - 08, 2000). APSEC. IEEE Computer Society, Washington, DC, 30 [21] Mirvis, P. H. Practice Improvisation. Organization Science, 9, 5 (Sep/Oct, 1998), 586. [6] Carmel, E. Global Software Teams. Prentice-Hall, Upper Saddle River, NJ, 1999. [22] Reif, H. L. and Mitri, M. How university professors teach project management for information systems. Commun. ACM 48, 8 (Aug. 2005), 134-136. [7] Casey, V. and Richardson, I. Virtual Software Teams: Overcoming the Obstacles, 3rd World Congress on Software Quality, (September 26th-30th, 2005). Munich, to appear. [23] Robillard, P. N. Teaching Software Engineering through a Project-Oriented Course. In Proceedings of the 9th Conference on Software Engineering Education (April 21 24, 1996). CSEE. IEEE Computer Society, Washington, DC, 85. [8] Davison, D. Offshore Outsourcing: Market Overview. METAspectrum. October 2004. [9] Dawson, R. Twenty dirty tricks to train software engineers. In Proceedings of the 22nd international Conference on Software Engineering (June 04 - 11, 2000). ICSE '00. ACM Press, New York, NY, 209-218. [24] Surendran, K., Hays, H. and Macfarlane, A. Simulating a Software Engineering Apprenticeship. IEEE Softw. 19, 5 (Sep. 2002), 49-56. 684