Using a Reference Application with Design Patterns to Produce Industrial Software

  • Marek Vokáč
  • Oluf Jensen
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3009)


System architectures are described in abstract terms, often using Design Patterns. Actual reuse based on such descriptions requires that each development project derive a concrete architecture from the chosen Patterns, and then implement it in code.

This paper describes a case study of an industrial development project that adopted a reference application as a starting point, in order to avoid the need to design a complete architecture. Reference applications are usually made by platform or component vendors. Such applications are used to provide executable examples of best practices, for a particular platform, component set, or other technology. In this case study, the Pet Store application for the J2EE platform was chosen. Pet Store is documented by Design Patterns and is also available as source code. The development consisted of replacing the application logic, while keeping the architecture intact. The project was thus transformed from an ab initio development project into a major reuse/modification project. This development project was part of a software process improvement effort looking at processes for and with reuse.

Our results indicate that this approach works well, provided that the functional and non-functional requirements of the project match those of the reference application. The development time was shortened by approximately one third relative to the original estimate, and a well-designed application was produced despite lack of experience with the platform and n-layer architectures. Surprisingly, the production deployment to a different application server was still problematic, even though the original reference application was available as a sample for that server.


Design Pattern Application Server Product Family Reference Architecture Software Process Improvement 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Aeinehchi, N.: Do NOT use WebSphere unless you are BLUE (2002),
  2. 2.
    Almaer, D.: Making a Real World PetStore, TSS Newsletter #31, The Server Side (2002),
  3. 3.
    Alur, D., Crupi, J., Malks, D.: Core J2EE Patterns, p. 460. Sun Microsystems, Inc. (2001)Google Scholar
  4. 4.
    Apache Jakarta Project, STRUTS home page (2003),
  5. 5.
  6. 6.
    Bernus, P., Nemes, L.: A framework to define a generic enterprise reference architecture and methodology. Computer Integrated Manufacturing Systems 9(3), 179–191 (1996)CrossRefGoogle Scholar
  7. 7.
    Brooks, F.P.J.: No silver bullet: Essence and accidents of Software Engineering. IEEE Computer (1987)Google Scholar
  8. 8.
    Buschmann, F., et al.: Pattern-Oriented Software Architecture. Wiley, Chichester (1996)Google Scholar
  9. 9.
    Ciancarini, P., et al.: Coordinating multiagent applications on the WWW: A reference architecture. IEEE Transactions on Software Engineering 24(5), 362–375 (1998)CrossRefGoogle Scholar
  10. 10.
    Ditzel, C.: Charles’s Corner: Java Technology Pointers, Sun (2003),
  11. 11.
    Frederick, C.: Extreme Programming: Growing a Team Horizontally. In: XP/Agile Universe 2003, Springer, Heidelberg (2003)Google Scholar
  12. 12.
    Gamma, E., et al.: Design Patterns: Elements of reusable object-oriented software. Addison-Wesley, Reading (1995)Google Scholar
  13. 13.
    Hallsteinsen, S., Swane, E.: Handling the diversity of networked devices by means of a product family approach. In: Software Product-Family Engineering, pp. 264–281 (2002)Google Scholar
  14. 14.
    Henry, E., Faller, B.: Large-scale industrial reuse to reduce cost and cycle time. IEEE Software 12(5), 47–53 (1995)CrossRefGoogle Scholar
  15. 15.
    Infragistics, Expense Application - reference application, Infragistics (2003),
  16. 16.
    ISO, ISO/IEC 10746: Information technology – Open Distributed Processing – Reference model (1998),
  17. 17.
    Kassem, N.: Designing Enterprise Applications with the J2EE Platform, p. 368. Addison-Wesley Pub Co., Reading (2000)Google Scholar
  18. 18.
    Larman, C.: Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process, 2nd edn., p. 656. Prentice Hall, Englewood Cliffs (2001)Google Scholar
  19. 19.
    van der Linden, F.: Software product families in Europe: the Esaps & Cafe projects. IEEE Software 19(4), 41–49 (2002)CrossRefMathSciNetGoogle Scholar
  20. 20.
    van der Linden, F., Muller, J.K.: Composing product families from reusable components. In: Proceedings of the 1995 International Symposium and Workshop on Systems Engineering of Computer Based Systems (1995)Google Scholar
  21. 21.
    McIlroy, D.: Mass produced software components. In: NATO Conference, Garmisch, Germany (1968)Google Scholar
  22. 22.
    Microsoft: Application Architecture for.NET: Designing Applications & Services. Microsoft Press, Redmond (2003)Google Scholar
  23. 23.
  24. 24.
  25. 25.
    Ngu, A.: CS5369A Enterprise Application Integration, Department of Computer Science, Southwest Texas State University (2003),
  26. 26.
    Oracle, Oracle9iAS Containers for J2EE User’s Guide Release 2 (9.0.2), Oracle Inc. (2003),
  27. 27.
    Rational Inc., PearlCircle Online Auction for J2EE, Rational Inc. (2003),
  28. 28.
    Reimer, D., Srinivasan, H.: Analyzing Exception Usage in Large Java Applications. In: ECOOP workshop on Exception Handling, Dramstadt (2003)Google Scholar
  29. 29.
    Rising, L.: The Patterns Handbook. Cambridge University Press, Cambridge (1998)Google Scholar
  30. 30.
    Singh, I., et al.: Designing Enterprise Applications with the J2EE Platform, p. 352. Addison-Wesley, Reading (2002)Google Scholar
  31. 31.
    Sun, J2EE Patterns Catalog, Sun Microsystems, Inc. (2002),
  32. 32.
    Sun, Java Pet Store Demo 1.1.2, Sun (2003),
  33. 33.
    Thomas, W.T., Delis, A., Basili, V.R.: An analysis of errors in a reuse-oriented development environment, University of Maryland, Institute of Advanced Computer Studies (1995)Google Scholar
  34. 34.
    Yin, R.K.: Case Study Research, Design and Methods, 3rd edn. Sage Publications, Thousand Oaks (2003)Google Scholar
  35. 35.
    Öberg, R.: Review of The Petstore Revisited: J2EE vs.NET Application Server Performance Benchmark, Rickard Öberg (2003),

Copyright information

© Springer-Verlag Berlin Heidelberg 2004

Authors and Affiliations

  • Marek Vokáč
    • 1
  • Oluf Jensen
    • 2
  1. 1.Simula Research Laboratory 
  2. 2.EDB Business Consulting 

Personalised recommendations