JWAM and XP: using XP for framework development

We started using the XP techniques for designing and implementing the JWAM framework since the beginning of 1999. With the help of these techniques we succeeded in evolving the JWAM framework from a „student’s project“ into a real-life professional application framework which is used in several commercial applications today. In this paper we report on our experiences with XP in general and with XP for framework development in particular for more than one year. The following sections describe how we use the XP techniques and how we have adapted them to our specific programming domain – the development of application frameworks for large-scale application software. This paper also discusses some of the problems encountered during XP and their potential solutions. History of JWAM JWAM is a Java framework supporting the development of large scale interactive software systems according to the tools & materials approach . T e foundation of the JWAM framework was laid in 1997 by research assistants and students of the Software Engineering Group at the University of Hamburg and it was a pure University project. We used it as a sandbox for gaining some experience with new concepts and with framework development in general. We also used it for teaching purposes. In 1998 we felt that JWAM had the potential for professional software development. We thought it to be a solid technical base for large-scale software development giving support to developers with a proven design. Important steps to commercialize the framework were a redesign of parts of the framework and the explicit definition of a framework development process and its management. Early in 1999 we began to use XP techniques in a team of seven framework developers and redesigned parts of the framework. First, we used refactoring (cf. [Opdyke92], [Fowler99]), pair programming (cf. [Beck99]) and test classes ([Firesmith96], [Junit99]). Then we added the planning game and continuos integration (cf. [Beck99]). The redesign of the framework had one major goal: simplifying the framework. With this goal in mind we refactored the framework and introduced a separation of the framework core from framework components based on this core. Before we began refactoring there was one framework compound with more than 600 classes. After refactoring we had a framework kernel with about 100 classes plus test classes. The rest of the original classes were divided into separate framework components or had become useless during the refactoring process. 1 WAM is the German acronym for tools, automatons, materials. More information about WAM can be found in [RiehleZüllighoven95]. The framework can be downloaded from [JWAM]. Now, in January 2000 three application projects use JWAM. Two of these projects have already shipped operational client/server applications based on JWAM. We use all of the XP techniques and we were quite successful in introducing them to our team. Of course we had to adapt some of the techniques to our situation. Currently, we further develop the JWAM framework in pairs only and nearly every framework class has a test class. If you want to know more about the JWAM framework take a look at [JWAM]. The Setting The JWAM framework is both rooted in the university and has its commercial context. Within the university we use JWAM for teaching and as a sandbox for trying out new concepts. Within the commercial context we have founded the Apcon Workplace Solutions Ltd. The company uses JWAM for professional application development. This combination of an academic and industrial setting gives us the chance to use leading edge concepts in commercial projects very fast. On the other hand the requirements of the industrial projects trigger the research activities at the university. Figure 1 shows the business use case for the development and usage of the JWAM framework. Note that the different actors may map to the same persons.