Pluggable Programming Language Features for Incremental Code Quality Enhancement

  • Bernhard G. Humm
  • Ralf S. Engelschall
Conference paper
Part of the Communications in Computer and Information Science book series (CCIS, volume 230)


Evolutionary prototyping is an incremental software development method in which a proof of concept is, step by step, extended towards the final product. This article pleads for a programming approach termed “incremental code quality enhancement” when developing software incrementally. However, current programming languages are not well suited for incremental code quality enhancement. They are inflexible regarding their use of language features like typing, access control, contracts, etc. In some languages, the programmer is forced to use them, in others he may not. This article introduces pluggable programming language features, a concept that allows greater flexibility for application programmers without losing control over the use of those features. The approach is demonstrated exemplary by interface specifications for a business information system.


Programming language features Aspects Flexibility Evolutionary prototyping Plug-in 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Beck, K., Andres, C.: Extreme Programming Explained: Embrace Change, 2nd edn. Addison Wesley, Reading (2005)Google Scholar
  2. 2.
    Berger, H., Beynon-Davies, P., Cleary, P.: The Utility of a Rapid Application Development (RAD) approach for a large complex Information Systems Development. In: Proceedings of the 13th European Conference on Information Systems (ECIS 2004), Turku, Finland (2004)Google Scholar
  3. 3.
    Bracha, G.: Pluggable type systems. In: OOPSLA Workshop on Revival of Dynamic Languages (2004)Google Scholar
  4. 4.
    Bracha, G., Griswold, D.: Strongtalk: Typechecking Smalltalk in a production environment. In: Proc. of the ACM Conf. on Object-Oriented Programming, Systems, Languages and Applications, OOPSLA 1993 (1993)Google Scholar
  5. 5.
    Broy, M., Jarke, M., Nagl, M., Rombach, H.D.: Dagstuhl-Manifest zur Strategischen Bedeutung des Software Engineering in Deutschland. In: Perspectives Workshop Dagstuhl, Germany (2006)Google Scholar
  6. 6.
    Floyd, C.: A systematic look at prototyping. In: Approaches to Prototyping, pp. 1–18 (1984)Google Scholar
  7. 7.
    Fowler, M.: Refactoring: improving the design of existing code. Addison-Wesley Longman Publishing Co., Inc., Boston (1999)zbMATHGoogle Scholar
  8. 8.
    Ghezzi, C., Jazayeri, M., Mandrioli, D.: Fundamentals of Software Engineering. Prentice Hall PTR, Upper Saddle River (2002)zbMATHGoogle Scholar
  9. 9.
    Gordon, V.S., Bieman, J.M.: Reported Effects of Rapid Prototyping on Industrial Software Quality (1993)Google Scholar
  10. 10.
    Hekmatpour, S.: Experience with evolutionary prototyping in a large software project. SIGSOFT Softw. Eng. Notes 12(1), 38–41 (1987)CrossRefGoogle Scholar
  11. 11.
    ISO. TR 9126-4: Software Quality (2004),
  12. 12.
    Kelter, U., Monecke, M., Schild, M.: Do we need ’agile’ Software Development Tools? In: NetObjectDays (2002)Google Scholar
  13. 13.
    Kiczales, G., Lamping, J., Mendhekar, Videira Lopes, C., Loingtier, J.-M., Irwin, J.: Aspect-Oriented Programming. In: Aksit, M., Auletta, V. (eds.) ECOOP 1997. LNCS, vol. 1241, Springer, Heidelberg (1997)Google Scholar
  14. 14.
    Lichter, H., Schneider-Hufschmidt, M., Züllighoven, H.: Prototyping in industrial software projects—bridging the gap between theory and practice. In: ICSE 1993: Proceedings of the 15th International Conference on Software Engineering, pp. 221–229. IEEE Computer Society Press, Los Alamitos (1993)CrossRefGoogle Scholar
  15. 15.
    Liggesmeyer, P.: Software-Qualität. Testen, Analysieren und Verifizieren von Software. Spektrum Akademischer Verlag (2002)Google Scholar
  16. 16.
    Martin, R.C.: Agile Software Development, Principles, Patterns, and Practices. Prentice Hall, Englewood Cliffs (2002)Google Scholar
  17. 17.
    McCarthy, J.: Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I. Communications of the ACM 3(4), 184–195 (1960)CrossRefzbMATHGoogle Scholar
  18. 18.
    Meijer, E., Drayton, P.: Static Typing Where Possible, Dynamic Typing When Needed. In: Workshop on Revival of Dynamic Languages (2005)Google Scholar
  19. 19.
    Meyer, B.: Object-Oriented Software Construction, 1st edn. Prentice-Hall, Inc., Upper Saddle River (1988)zbMATHGoogle Scholar
  20. 20.
    Odersky, M.: An Overview of the Scala Programming Language: EPFL Technical Report IC/2004/64 (2004)Google Scholar
  21. 21.
    Sommerville, I.: Software Engineering, 7th edn. International Computer Science Series. Addison Wesley, Reading (2004)zbMATHGoogle Scholar
  22. 22.
    Szyperski, C.: Component software. Addison-Wesley, Harlow (1998)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2011

Authors and Affiliations

  • Bernhard G. Humm
    • 1
    • 2
  • Ralf S. Engelschall
    • 1
    • 2
  1. 1.Darmstadt University of Applied SciencesDarmstadtGermany
  2. 2.Capgemini, CSD ResearchMunichGermany

Personalised recommendations