Using Stepwise Feature Introduction in Practice: An Experience Report

  • Ralph-Johan Back
  • Johannes Eriksson
  • Luka Milovanov
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3943)


Stepwise Feature Introduction is an incremental method and software architecture for building object-oriented system in thin layers of functionality, and is based on the Refinement Calculus logical framework. We have evaluated this method in a series of real software projects. The method works quite well on small to medium sized software projects, and provides a nice fit with agile software processes like Extreme Programming. The evaluations also allowed us to identify a number of places where the method could be improved, most of these related to the way inheritance is used in Stepwise Feature Introduction. Three of these issues are analyzed in more detail here: diamond inheritance, complexity of layering and unit testing of layered software.


Software Architecture Unit Testing Software Project Experience Report Feature Combination 
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.
    Back, R.J.: Software construction by stepwise feature introduction. In: Bert, D., Bowen, J.P., Henson, M.C., Robinson, K. (eds.) B 2002 and ZB 2002. LNCS, vol. 2272, pp. 162–183. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  2. 2.
    Back, R.J.J., Akademi, A., Wright, J.V.: Refinement Calculus: A Systematic Introduction. Springer-Verlag New York, Inc., Secaucus (1998)CrossRefMATHGoogle Scholar
  3. 3.
    Back, R.J.: Incremental software construction with refinement diagrams. Technical Report 660, TUCS – Turku Centre for Computer Science, Turku, Finland (2005)Google Scholar
  4. 4.
    Back, R.J., Sere, K.: Superposition refinement of reactive systems. Formal Aspects of Computing 8, 324–346 (1996)CrossRefMATHGoogle Scholar
  5. 5.
    Back, R.J., Milovanov, L., Porres, I.: Software development and experimentation in an academic environment: The Gaudi experience. In: Bomarius, F., Komi-Sirviö, S. (eds.) PROFES 2005. LNCS, vol. 3547, pp. 414–428. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  6. 6.
    Beck, K.: Extreme Programming Explained: Embrace Change. The XP Series. Addison-Wesley, Reading (1999)Google Scholar
  7. 7.
    Anttila, H., Back, R.J., Ketola, P., Konkka, K., Leskela, J., Rysä, E.: Coping with increasing SW complexity - combining stepwise feature introduction with user-centric design. In: Human Computer Interaction, International Conference (HCII 2003), Crete, Greece (2003)Google Scholar
  8. 8.
    Back, R.J., Milovanov, L., Porres, I., Preoteasa, V.: An experiment on extreme programming and stepwise feature introduction. Technical Report 451, TUCS – Turku Centre for Computer Science, Turku, Finland (2002)Google Scholar
  9. 9.
    Lutz, M.: Programming Python. O’Reily, Sebastopol (1996)MATHGoogle Scholar
  10. 10.
    Eriksson, J.: Development of a mathematical derivation editor. Master’s thesis, Åbo Akademi University, Department of Computer Science (2004)Google Scholar
  11. 11.
    Back, R.J., Björklund, D., Lilius, J., Milovanov, L., Porres, I.: A workbench to experiment on new model engineering applications. In: Stevens, P., Whittle, J., Booch, G. (eds.) UML 2003. LNCS, vol. 2863, pp. 96–100. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  12. 12.
    Meyer, B.: Object-Oriented Software Construction, 2nd edn. Prentice Hall, Englewood Cliffs (1997)MATHGoogle Scholar
  13. 13.
    Back, R.J., Hirkman, P., Milovanov, L.: Evaluating the XP customer model and design by contract. In: Proceedings of the 30th EUROMICRO Conference. IEEE Computer Society, Los Alamitos (2004)Google Scholar
  14. 14.
    Meyer, B.: Eiffel: The Language, 2nd edn. Prentice Hall, Englewood Cliffs (1992)MATHGoogle Scholar
  15. 15.
    Back, R.J., Milovanov, L., Porres, I., Preoteasa, V.: XP as a framework for practical software engineering experiments. In: Proceedings of the Third International Conference on eXtreme Programming and Agile Processes in Software Engineering - XP 2002(2002)Google Scholar
  16. 16.
    Singh, G.B.: Single versus multiple inheritance in object oriented programming. SIGPLAN OOPS Mess. 6, 30–39 (1995)CrossRefGoogle Scholar
  17. 17.
    Simionato, M.: The Python 2.3 method resolution order (2003),
  18. 18.
    Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading (1995)MATHGoogle Scholar
  19. 19.
    Institute of Electrical and Electronics Engineers: IEEE Standard Computer Dictionary: A Compilation of IEEE Standard Computer Glossaries. New York (1990)Google Scholar
  20. 20.
    Beck, K., Gamma, E.: Test-Infected: Programmers Love Writing Tests. Java Report, 37–50 (1998)Google Scholar
  21. 21.
    Purcell, S.: PyUnit (2004),
  22. 22.
    Bezault, E.: Gobo Eiffel Test (2001),

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Ralph-Johan Back
    • 1
  • Johannes Eriksson
    • 1
  • Luka Milovanov
    • 1
  1. 1.Department of Computer ScienceTurku Centre for Computer Science, Åbo Akademi UniversityTurkuFinland

Personalised recommendations