Evolutionary software engineering: a component-based approach

  • P. Klint
  • C. Verhoef
Part of the IFIP Advances in Information and Communication Technology book series (IFIPAICT)


A software industry producing high-quality components that can be reused in many ways is an—unfulfilled—dream as old as the field of “software engineering” itself. In this paper we present an evolutionary approach to software development based on the following premises:
  • software systems are unavoidably heterogeneous and distributed;

  • development and implementation techniques may be different for various parts of a system;

  • the parts may be in different phases of their life-cycle;

  • the parts—implemented as components in different languages—should be coordinated and exchange information in a standardized fashion;

  • reengineering and system renovation form an integral part of software development.


Evolutionary development software components coordination architectures heterogeneous systems integrating forward engineering and system renovation case studies 


  1. Arnold, B.R.T., A. van Deursen & M. Res (1995), An algebraic specification of a language for describing financial products, in ‘ICSE-17 Workshop on Formal Methods Application in Software Engineering’, IEEE, pp. 6–13.Google Scholar
  2. Baeten, J.C.M. & C. Verhoef (1995), Concrete process algebra, in ‘Handbook of Logic in Computer Science, Volume IV, Syntactical Methods’, Oxford University Press, pp. 149–268.Google Scholar
  3. Baeten, J.C.M. & W.P. Weijland (1990), Process Algebra, Cambridge Tracts in Theoretical Computer Science 18, Cambridge University Press.Google Scholar
  4. Basili, V.R., G. Caldiera & G. Cantone (1992), ‘A reference architecture for the component factory’, ACM TOSEM 1(1), 53–80.Google Scholar
  5. Bassett, P.G. (1996), Framing Software Reuse, Yourdon Press, Prentice-Hall.Google Scholar
  6. Bergstra, J.A. & P. Klint (1996a), The TooLBus coordination architecture, in P.Ciancarini & C.Hankin, eds, ‘Coordination Languages and Models’, Vol. 1061 of LNCS, pp. 75–88.CrossRefGoogle Scholar
  7. Bergstra, J.A. & P. Klint (1996b), The discrete time TooLBus, in M.Wirsing & M.Nivat, eds, ‘Algebraic Methodology and Software Technology’, Vol. 1101 of LNCS, Springer-Verlag, pp. 286–305.CrossRefGoogle Scholar
  8. van den Brand, M.G.J., A. van Deursen, P. Klint, S. Klusener & E. van der Meulen (1996), Industrial applications of ASF+SDF, in M.Wirsing & M.Nivat, eds, ‘Algebraic Methodology and Software Technology’, Vol. 1101 of LNCS, Springer-Verlag, pp. 9–18.CrossRefGoogle Scholar
  9. van den Brand, M.G.J., M.P.A. Sellink & C. Verhoef (1997a), Control flow normalization for COBOL/CICS legacy systems, Technical Report P9714, University of Amsterdam, Programming Research Group.Google Scholar
  10. van den Brand, M.G.J., M.P.A. Sellink & C. Verhoef (1997b), Generation of components for software renovation factories from context-free grammars, in I.Baxter, A.Quilici & C.Verhoef, eds, ‘Proceedings of the Fourth Working Conference on Reverse Engineering’, pp. 144–153.CrossRefGoogle Scholar
  11. van den Brand, M.G.J., M.P.A. Sellink & C. Verhoef (1997c), Obtaining a COBOL grammar from legacy code for reengineering purposes, in M.Sellink, ed., ‘Proceedings of the 2nd International Workshop on the Theory and Practice of Algebraic Specifications’, Electronic Workshops in Computing, Springer Verlag. To appear.Google Scholar
  12. van den Brand, M.G.J., P. Klint & C. Verhoef (1996), Core technologies for system renovation, in K.Jeffrey, J.Krâl & M.Bartosek, eds, ‘SOFSEM ’86: Theory and Practice of Informatics’, LNCS, Springer-Verlag, pp. 235–254.CrossRefGoogle Scholar
  13. van den Brand, M.G.J., P. Klint & C. Verhoef (1997), ‘Reverse engineering and system renovation-an annotated bibliography’, ACM Software Engineering Notes 22 (1), 57–68.CrossRefGoogle Scholar
  14. van den Brand, M.G.J., T. Kuipers, L. Moonen Si P. Olivier (1997), Implementation of a prototype for the new ASF+SDF meta-environment, in M.Sellink, ed., ‘Proceedings of the 2nd International Workshop on the Theory and Practice of Algebraic Specifications’, Electronic Workshops in Computing, Springer Verlag. To appear.Google Scholar
  15. Cederqvist, Per (1993), Version Management with CVS, Signum Support AB, Box 2044, S-580 02 Linkoping, Sweden.Google Scholar
  16. Chikofsky, E.J. & J.H. Cross (1990), ‘Reverse engineering and design recovery: A taxonomy’, IEEE Software 7 (1), 13–17.CrossRefGoogle Scholar
  17. Cleaveland, J. Craig (1988), ‘Building application generators’, IEEE Software 5 (4), 25–33.CrossRefGoogle Scholar
  18. Cox, B. (1996), Superdistribution: Objects as Property on the Electronic Frontier, Addison-Wesley.Google Scholar
  19. van Deursen, A., J. Heering Si P. Klint (1996), Language Prototyping: An Algebraic Specification Approach, Vol. 5 of AMAST Series in Computing, World Scientific Publishing Co.CrossRefzbMATHGoogle Scholar
  20. van Deursen, A. & P. Klint (1998), ‘Little languages: Little maintenance?’, Journal of Software Maintenance. To appear.Google Scholar
  21. van Deursen, A. & T. Kuipers (1997), Finding classes in legacy code using cluster analysis, in S.Demeyer & H.Gall, eds, ‘Proceedings ESEC/FSE 97 Workshop on Object–Oriented Reengineering’, Technical Report TUV1841–97–10, pp. 1–5.Google Scholar
  22. Fayad, M.E. & D.C. Schmidt (1997), ‘Special issue on object-oriented application frameworks’, Communications of the ACM 40 (10).Google Scholar
  23. Frakes, W.B. & C.J. Fox (1995), ‘Sixteen questions about software reuse’, Communications of the ACM 38 (6), 75–87.CrossRefGoogle Scholar
  24. Hoare, C.A.R. (1996), How did software get so reliable without proof?, in M.-C.Gaudel & J.Woodcock, eds, ‘Proceedings of the Third International Symposium of Formal Methods Europe: Industrial Benefit and Advances in Formal Methods’, Vol. 1051 of Lecture Notes in Computer Science, Springer Verlag, pp. 1–17.CrossRefGoogle Scholar
  25. Horowitz, Ellis, Alfons Kemper & Balaji Narasimhan (1985), ‘Survey of application generators’, IEEE Software 2 (1), 40–54.CrossRefGoogle Scholar
  26. Kelly, K. (1994), Out of Control: The New Biology of Machines, Social Systems, and the Economic World, Addison-Wesley.Google Scholar
  27. Klint, P. (1993), ‘A meta-environment for generating programming environments’, ACM TOSEM 2 (2), 176–201.Google Scholar
  28. Krueger, C.W. (1992), ‘Software reuse’, ACM Computing Surveys 24 (2), 131–183.CrossRefMathSciNetGoogle Scholar
  29. Lientz, B.P. & E.B. Swanson (1980), Software Maintenance Management—A Study of the Maintenance of Computer Application Software in 487 Data Processing Organizations, Reading MA: Addison-Wesley.Google Scholar
  30. Lim, W.C. (1994), ‘Effects of reuse on quality, productivity, and economics’, IEEE Software 11 (5), 23–30.CrossRefGoogle Scholar
  31. Mayrand, J., C. Leblanc & E.M. Merlo (1996), Experiment on the automatic detection of function clones in a software system using metrics, in S.Bohner & C.A, eds, ‘International Conference on Software Maintenance’, IEEE, pp. 244–253.Google Scholar
  32. McConnell, S. (1993), Code Complete, Microsoft Press.Google Scholar
  33. McConnell, S. (1996), Rapid Development, Microsoft Press.Google Scholar
  34. Mcllroy, M.D. (1969), Mass produced software components, in P.Naur & B.Randell, eds, ‘Software Engineering’, pp. 138–150.Google Scholar
  35. Naur, P. & B. Randell, eds (1969), Software Engineering—Report on a conference sponsored by the NATO SCIENCE COMMITTEE, NATO Science Committee, Garmisch, Germany, 7–11 October, 1968.Google Scholar
  36. Olivier, P. (1997), Debugging distributed applications using a coordination architecture, in D.Garlan & D. L.Métayer, eds, ‘Coordination Languages and Models’, Vol. 1282 of LNCS, pp. 9–114.CrossRefGoogle Scholar
  37. OMG (1996), CORBA: Architecture and Specification, Object Management Group (OMG).Google Scholar
  38. Prieto-Diaz, R. & P. Freeman (1987), ‘Classifying software for reusability’, IEEE Software 4 (1), 6–16.CrossRefGoogle Scholar
  39. Rekers, J. (1992), Parser Generation for Interactive Environments, PhD thesis, University of Amsterdam.Google Scholar
  40. Reutter, J. (1981), Maintenance is a management problem and a programmer’s opportunity, in A.Orden & M.Evens, eds, ‘1981 National Computer Conference’, Vol. 50 of AFIPS Conference Proceedings, AFIPS Press, Arlington, VA, pp. 343–347.Google Scholar
  41. Ritchie, D.M. & K. Thompson (1974), ‘The UNIX time-sharing system’, Communications of the ACM 17 (7), 365–375.CrossRefGoogle Scholar
  42. Yourdon, E. (1993), Decline and Fall of the American Programmer, Prentice-Hall.Google Scholar
  43. Yourdon, E. (1996), Rise and Resurrection of the American Programmer, Prentice-Hall.Google Scholar

Copyright information

© IFIP 1998

Authors and Affiliations

  • P. Klint
    • 1
  • C. Verhoef
    • 2
  1. 1.Centrum voor Wiskunde en InformaticaUniversity of AmsterdamAmsterdamThe Netherlands
  2. 2.University of AmsterdamAmsterdamHolland

Personalised recommendations