Coordinating Software Evolution via Two-Tier Programming

  • Amnon H. Eden
  • Jens Jahnke
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2315)


Progress in the science of programming is reflected by the evolution of programming languages. We propose that the next step in this evolution is a more comprehensive kind of programs: To redefine the way programs are perceived and, consequently, to redefine what constitutes the activity of programming. Rather than treating architectural specifications as separate, we argue that they need be treated as part of the program. Thus, a program is specified through two tightly integrated representations:
  1. 1.

    Intentional tier: A generic (“abstract”) representation of design and architectural properties (constraints) of the program which, in conformance with the principle of least constraint [15], is phrased in generic terms.

  2. 2.

    Extensional tier: The second specification layer which consists of the traditional source code. As software evolves continuously, our approach stresses the relevance of the design and architectural specifications throughout the evolution of a program.



Source Code Programming Language Design Pattern Software Architecture Intentional Specification 
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.
    R. Allen, D. Garlan. “A Formal Basis For Architectural Connection.” ACM Transactions on Software Engineering and Methodology, Vol. 6, No. 3, July 1997, pp. 213–249.CrossRefGoogle Scholar
  2. 2.
    J. Coker (1997). “Keeping Objects In Sync.” In: Java Developer Connection,
  3. 3.
    J. Bosch. “Relations as Object Model Components.” Journal of Programming Languages, Vol. 4, No. 1, 1996, pp. 39–61.MathSciNetGoogle Scholar
  4. 4.
    E. R. Comer. 1997. “Alternative Software Life Cycle Models.” In Software Engineering, Dorfman, Merlin; Thayer, Richard, pp. 404–414. Piscataway, NJ: IEEE Computer Society Press.Google Scholar
  5. 5.
    J. Coplien, D. Schmidt, eds. (1995). Pattern Languages of Program Design. Reading, MA: Addison-Wesley.Google Scholar
  6. 6.
    A. H. Eden. “LePUS: A Formal Specification Language of Object Oriented Design and Architecture.” 2002 NSF Design, Service, and Manufacturing Grantees and Research Conference, Jan. 7–10, 2002, San Juan, Puerto Rico.Google Scholar
  7. 7.
    A. H. Eden, Y. Hirshfeld. “Principles in Formal Specification of Object Oriented Architectures.” CASCON 2001, November 5–8, 2001. Toronto, Canada.Google Scholar
  8. 8.
    A. H. Eden (2002). “LePUS: A Visual Formalism for Object-Oriented Architectures.” The 6th World Conference on Integrated Design and Process Technology, Pasadena, California, June 26–30, 2002.Google Scholar
  9. 9.
    E. Gamma, R. Helm, R. Johnson, J. Vlissides (1994). Design Patterns: Elements of Reusable Object Oriented Software. Addison-Wesley.Google Scholar
  10. 10.
    D. Garlan, M. Shaw (1993). “An Introduction to Software Architecture.” In V. Ambriola, G. Tortora, eds., Advances in Software Engineering and Knowledge Engineering, Vol. 2, pp. 1–39. New Jersey: World Scientific Publishing Company.Google Scholar
  11. 11.
    W. W. Gibbs (1994). “Software’s Chronic Crisis.” Scientific American, Vol. 271, No. 3, pp. 86–95.CrossRefGoogle Scholar
  12. 12.
    D. C. Luckham, J. J. Kenney, L. M. Augustin, J. Vera, D. Bryan, W. Mann. “Specification and Analysis of System Architecture Using Rapide.” IEEE Transactions on Software Engineering, Special Issue on Software Architecture, Vol. 21, No. 4, pp. 336–355, April 1995.CrossRefGoogle Scholar
  13. 13.
    N. Medvidovic, R. N. Taylor (1997). “A Framework for Classifying and Comparing Architecture Description Languages”. In Proceedings of the Sixth European Software Engineering Conference, together with Fifth ACM SIGSOFT Symposium on the Foundations of Software Engineering, Zurich, Switzerland, September 22–25, 1997, pp. 60–76.Google Scholar
  14. 14.
    MegaLang Institute. “Fundamentals of JFC/Swing, Part II”.
  15. 15.
    M. O’Cinnéide, P. Nixon. “A Methodology for the Automated Introduction of Design Patterns.” Proceedings of the IEEE International Conference on Software Maintenance, 30 August–3 September, 1999.Google Scholar
  16. 16.
    D. E. Perry, A. L. Wolf (1992). “Foundation for the Study of Software Architecture”. ACM SIGSOFT Software Engineering Notes, 17 (4), pp. 40–52.CrossRefGoogle Scholar
  17. 17.
    W. W. Royce (1970). “Managing the Development of Large Software Systems: Concepts and Techniques.” 1970 WESCON Technical Papers, Vol. 14, Western Electronic Show and Convention.Google Scholar
  18. 18.
    M. Shaw, D. Garlan (1995). “Formulations and Formalisms in Software Architecture,” chap. in Computer Science Today, Lecture Notes in Computer Science Vol. 1000. Berlin: Springer-Verlag.CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2002

Authors and Affiliations

  • Amnon H. Eden
    • 1
  • Jens Jahnke
    • 2
  1. 1.Dept. of Computer ScienceConcordia UniversityMontrealCanada
  2. 2.Dept. of Computer ScienceUniversity of VictoriaVictoriaCanada

Personalised recommendations