Change-Enabled Software Systems

  • Oscar Nierstrasz
  • Marcus Denker
  • Tudor Gîrba
  • Adrian Lienhard
  • David Röthlisberger

Abstract

Few real software systems are built completely from scratch nowadays. Instead, systems are built iteratively and incrementally, while integrating and interacting with components from many other systems. Adaptation, reconfiguration and evolution are normal, ongoing processes throughout the lifecycle of a software system. Nevertheless the platforms, tools and environments we use to develop software are still largely based on an outmoded model that presupposes that software systems are closed and will not significantly evolve after deployment. We claim that in order to enable effective and graceful evolution of modern software systems, we must make these systems more amenable to change by (i) providing explicit, first-class models of software artifacts, change, and history at the level of the platform, (ii) continuously analysing static and dynamic evolution to track emergent properties, and (iii) closing the gap between the domain model and the developers’ view of the evolving system. We outline our vision of dynamic, evolving software systems and identify the research challenges to realizing this vision.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Arévalo, G., Buchli, F., Nierstrasz, O.: Detecting implicit collaboration patterns. In: Proceedings of WCRE 2004 (11th Working Conference on Reverse Engineering), pp. 122–131. IEEE Computer Society Press, Los Alamitos (2004)Google Scholar
  2. 2.
    Balint, M., Gîrba, T., Marinescu, R.: How developers copy. In: Proceedings of International Conference on Program Comprehension (ICPC 2006), pp. 56–65 (2006)Google Scholar
  3. 3.
    Bennis, W., Biederman, P.W.: Organizing Genius — The Secrets of Creative Collaboration. Perseus Books (1997)Google Scholar
  4. 4.
    Bobrow, D.G., Goldstein, I.P.: Representing design alternatives. In: Proceedings of the Conference on Artificial Intelligence and the Simulation of Behavior (July 1980)Google Scholar
  5. 5.
    Carse, J.P.: Finite and Infinite Games — A Vision of Life as Play and Possibility. Ballantine Books (1987)Google Scholar
  6. 6.
    Conway, M.E.: How do committees invent? Datamation 14(4), 28–31 (1968)Google Scholar
  7. 7.
    Costanza, P., Hirschfeld, R.: Language constructs for context-oriented programming: An overview of ContextL. In: Proceedings of the Dynamic Languages Symposium DLS 2005, co-organized with OOPSLA 2005, pp. 1–10. ACM, New York (2005)Google Scholar
  8. 8.
    Denker, M., Ducasse, S., Lienhard, A., Marschall, P.: Sub-method reflection. Journal of Object Technology, Special Issue. Proceedings of TOOLS Europe 2007 6(9), 231–251 (2007)Google Scholar
  9. 9.
    Denker, M., Gîrba, T., Lienhard, A., Nierstrasz, O., Renggli, L., Zumkehr, P.: Encapsulating and exploiting change with Changeboxes. In: Proceedings of the 2007 International Conference on Dynamic Languages (ICDL 2007), pp. 25–49. ACM Digital Library (2007)Google Scholar
  10. 10.
    Denker, M., Greevy, O., Nierstrasz, O.: Supporting feature analysis with runtime annotations. In: Proceedings of the 3rd International Workshop on Program Comprehension through Dynamic Analysis (PCODA 2007), pp. 29–33. Technische Universiteit Delft (2007)Google Scholar
  11. 11.
    Denker, M., Suen, M., Ducasse, S.: The meta in meta-object architectures. In: Proceedings of TOOLS EUROPE 2008. LNBIP, vol. 11, pp. 218–237. Springer, Heidelberg (2008)Google Scholar
  12. 12.
    Dig, D., Manzoor, K., Johnson, R., Nguyen, T.: Refactoring-aware configuration management for object-oriented programs. In: International Conference on Software Engineering (ICSE 2007), pp. 427–436 (2007)Google Scholar
  13. 13.
    Ducasse, S.: Evaluating message passing control techniques in Smalltalk. Journal of Object-Oriented Programming (JOOP) 12(6), 39–44 (1999)Google Scholar
  14. 14.
    Ducasse, S., Lanza, M.: The class blueprint: Visually supporting the understanding of classes. Transactions on Software Engineering (TSE) 31(1), 75–90 (2005)CrossRefGoogle Scholar
  15. 15.
    Ferber, J.: Computational reflection in class-based object-oriented languages. In: Proceedings OOPSLA 1989, ACM SIGPLAN Notices, vol. 24, pp. 317–326 (October 1989)Google Scholar
  16. 16.
    Fowler, M., Beck, K., Brant, J., Opdyke, W., Roberts, D.: Refactoring: Improving the Design of Existing Code. Addison Wesley, Reading (1999)Google Scholar
  17. 17.
    Gîrba, T., Ducasse, S.: Modeling history to analyze software evolution. Journal of Software Maintenance: Research and Practice (JSME) 18, 207–236 (2006)CrossRefGoogle Scholar
  18. 18.
    Gîrba, T., Ducasse, S., Kuhn, A., Marinescu, R., Raţiu, D.: Using concept analysis to detect co-change patterns. In: Proceedings of International Workshop on Principles of Software Evolution (IWPSE 2007), pp. 83–89. ACM Press, New York (2007)Google Scholar
  19. 19.
    Gîrba, T., Ducasse, S., Lanza, M.: Yesterday’s Weather: Guiding early reverse engineering efforts by summarizing the evolution of changes. In: Proceedings of 20th IEEE International Conference on Software Maintenance (ICSM 2004), pp. 40–49. IEEE Computer Society, Los Alamitos (2004)CrossRefGoogle Scholar
  20. 20.
    Gîrba, T., Kuhn, A., Seeberger, M., Ducasse, S.: How developers drive software evolution. In: Proceedings of International Workshop on Principles of Software Evolution (IWPSE 2005), pp. 113–122. IEEE Computer Society Press, Los Alamitos (2005)CrossRefGoogle Scholar
  21. 21.
    Gîrba, T., Lanza, M., Ducasse, S.: Characterizing the evolution of class hierarchies. In: Proceedings of 9th European Conference on Software Maintenance and Reengineering (CSMR 2005), pp. 2–11. IEEE Computer Society, Los Alamitos (2005)Google Scholar
  22. 22.
    Goldstein, I.P., Bobrow, D.G.: Descriptions for a programming environment. In: Proceedings of the First Annual Conference of the National Association for Artificial Intelligence (August 1980)Google Scholar
  23. 23.
    Goldstein, I.P., Bobrow, D.G.: Extending object-oriented programming in Smalltalk. In: Proceedings of the Lisp Conference, pp. 75–81 (August 1980)Google Scholar
  24. 24.
    Goldstein, I.P., Bobrow, D.G.: A layered approach to software design. Technical Report CSL-80-5, Xerox PARC (December 1980)Google Scholar
  25. 25.
    Greevy, O., Gîrba, T., Ducasse, S.: How developers develop features. In: Proceedings of 11th European Conference on Software Maintenance and Reengineering (CSMR 2007), pp. 256–274. IEEE Computer Society, Los Alamitos (2007)Google Scholar
  26. 26.
    Hamou-Lhadj, A., Lethbridge, T.: A survey of trace exploration tools and techniques. In: Proceedings IBM Centers for Advanced Studies Conferences (CASON 2004), Indianapolis IN, pp. 42–55. IBM Press (2004)Google Scholar
  27. 27.
    Hirschfeld, R., Costanza, P., Nierstrasz, O.: Context-oriented programming. Journal of Object Technology 7(3) (March 2008)Google Scholar
  28. 28.
    Hofer, C., Denker, M., Ducasse, S.: Design and implementation of a backward-in-time debugger. In: Proceedings of NODE 2006. Lecture Notes in Informatics, vol. P-88, pp. 17–32. Gesellschaft für Informatik, GI (September 2006)Google Scholar
  29. 29.
    Holzner, S.: Eclipse. O’Reilly, Sebastopol (2004)MATHGoogle Scholar
  30. 30.
    Kersten, M., Murphy, G.C.: Mylar: a degree-of-interest model for ides. In: AOSD 2005: Proceedings of the 4th international conference on Aspect-oriented software development, pp. 159–168. ACM Press, New York (2005)Google Scholar
  31. 31.
    Ko, A.J., Aung, H., Myers, B.A.: Eliciting design requirements for maintenance-oriented ides: a detailed study of corrective and perfective maintenance tasks. In: ICSE 2005: Proceedings of the 27th international conference on Software engineering, pp. 125–135 (2005)Google Scholar
  32. 32.
    Lanza, M., Ducasse, S.: Polymetric views—a lightweight visual approach to reverse engineering. Transactions on Software Engineering (TSE) 29(9), 782–795 (2003)CrossRefGoogle Scholar
  33. 33.
    Lanza, M., Marinescu, R.: Object-Oriented Metrics in Practice. Springer, Heidelberg (2006)MATHGoogle Scholar
  34. 34.
    Lewis, B., Ducassé, M.: Using events to debug Java programs backwards in time. In: OOPSLA Companion 2003, pp. 96–97 (2003)Google Scholar
  35. 35.
    Liblit, B., Naik, M., Zheng, A.X., Aiken, A., Jordan, M.I.: Scalable statistical bug isolation. In: Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation (PLDI 2005), pp. 15–26. ACM, New York (2005)CrossRefGoogle Scholar
  36. 36.
    Lienhard, A., Ducasse, S., Arévalo, G.: Identifying traits with formal concept analysis. In: Proceedings of 20th Conference on Automated Software Engineering (ASE 2005), pp. 66–75. IEEE Computer Society, Los Alamitos (2005)Google Scholar
  37. 37.
    Lienhard, A., Ducasse, S., Gîrba, T.: Taking an object-centric view on dynamic information with object flow analysis. Journal of Computer Languages, Systems and Structures (to appear, 2008)Google Scholar
  38. 38.
    Lienhard, A., Gîrba, T., Greevy, O., Nierstrasz, O.: Test blueprints – exposing side effects in execution traces to support writing unit tests. In: 12th European Conference on Software Maintenance and Reengineering (CSMR 2008), pp. 83–92. IEEE Computer Society, Los Alamitos (2008)CrossRefGoogle Scholar
  39. 39.
    Lienhard, A., Gîrba, T., Nierstrasz, O.: Practical object-oriented back-in-time debugging. In: 22nd European Conference on Object-Oriented Programming (ECOOP 2008). LNCS, vol. 5142, pp. 592–615. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  40. 40.
    Lienhard, A., Greevy, O., Nierstrasz, O.: Tracking objects to detect feature dependencies. In: Proceedings International Conference on Program Comprehension (ICPC 2007), Washington, DC, USA, pp. 59–68. IEEE Computer Society, Los Alamitos (2007)CrossRefGoogle Scholar
  41. 41.
    Maes, P.: Computational Reflection. PhD thesis, Laboratory for Artificial Intelligence, Vrije Universiteit Brussel, Brussels Belgium (January 1987)Google Scholar
  42. 42.
    Nierstrasz, O.: Software evolution as the key to productivity. In: Wirsing, M., Knapp, A., Balsamo, S. (eds.) RISSEF 2002. LNCS, vol. 2941, pp. 274–282. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  43. 43.
    Nierstrasz, O., Bergel, A., Denker, M., Ducasse, S., Gaelli, M., Wuyts, R.: On the revival of dynamic languages. In: Gschwind, T., Aßmann, U. (eds.) SC 2005. LNCS, vol. 3628, pp. 1–13. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  44. 44.
    Nierstrasz, O., Kobel, M., Gîrba, T., Lanza, M., Bunke, H.: Example-driven reconstruction of software models. In: Proceedings of Conference on Software Maintenance and Reengineering (CSMR 2007), pp. 275–286. IEEE Computer Society Press, Los Alamitos (2007)CrossRefGoogle Scholar
  45. 45.
    Parnas, D.L.: On the criteria to be used in decomposing systems into modules. C. ACM 15(12), 1053–1058 (1972)CrossRefGoogle Scholar
  46. 46.
    Pothier, G., Tanter, É., Piquer, J.: Scalable omniscient debugging. In: Proceedings of the 22nd Annual SCM SIGPLAN Conference on Object-Oriented Programming Systems, Languages and Applications (OOPSLA 2007). ACM, New York (to appear, 2007)Google Scholar
  47. 47.
    Renggli, L., Nierstrasz, O.: Transactional memory for Smalltalk. In: Proceedings of the 2007 International Conference on Dynamic Languages (ICDL 2007), pp. 207–221. ACM Digital Library (2007)Google Scholar
  48. 48.
    Robbes, R., Lanza, M.: Characterizing and understanding development sessions. In: Proceedings of ICPC 2007 (15th International Conference on Program Comprehension) (page to be published, 2007)Google Scholar
  49. 49.
    Roberts, D., Brant, J., Johnson, R.E.: A refactoring tool for Smalltalk. Theory and Practice of Object Systems (TAPOS) 3(4), 253–263 (1997)CrossRefGoogle Scholar
  50. 50.
    Robillard, M.P., Murphy, G.C.: Feat: A tool for locating, describing, and analyzing concerns in source code. In: Proceedings of 25th International Conference on Software Engineering, pp. 822–823 (May 2003)Google Scholar
  51. 51.
    Röthlisberger, D., Denker, M., Tanter, É.: Unanticipated partial behavioral reflection: Adapting applications at runtime. Journal of Computer Languages, Systems and Structures 34(2-3), 46–65 (2008)CrossRefGoogle Scholar
  52. 52.
    Röthlisberger, D., Greevy, O., Nierstrasz, O.: Feature driven browsing. In: Proceedings of the 2007 International Conference on Dynamic Languages (ICDL 2007), pp. 79–100. ACM Digital Library (2007)Google Scholar
  53. 53.
    Röthlisberger, D., Greevy, O., Nierstrasz, O.: Exploiting runtime information in the ide. In: Proceedings of the 16th International Conference on Program Comprehension (ICPC 2008), pp. 63–72. IEEE Computer Society, Los Alamitos (2008)CrossRefGoogle Scholar
  54. 54.
    Singer, J., Elves, R., Storey, M.-A.: Navtracks: Supporting navigation in software maintenance. In: International Conference on Software Maintenance (ICSM 2005), pp. 325–335 (September 2005)Google Scholar
  55. 55.
    Smith, B.C.: Reflection and semantics in a procedural language. Technical Report TR-272, MIT, Cambridge, MA (1982)Google Scholar
  56. 56.
    Smith, R.B., Ungar, D.: A simple and unifying approach to subjective objects. TAPOS special issue on Subjectivity in Object-Oriented Systems 2(3), 161–178 (1996)Google Scholar
  57. 57.
    Steele, G.: Growing a language. Higher-Order and Symbolic Computation 12(3), 221–236 (1999)CrossRefGoogle Scholar
  58. 58.
    Tanter, É., Noyé, J., Caromel, D., Cointe, P.: Partial behavioral reflection: Spatial and temporal selection of reification. In: Proceedings of OOPSLA 2003, ACM SIGPLAN Notices, pp. 27–46 (November 2003)Google Scholar
  59. 59.
    Wirsing, M., Hölzl, M. (eds.): Report of the Beyond the Horizon thematic group 6 on Software Intensive Systems (2006)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2008

Authors and Affiliations

  • Oscar Nierstrasz
    • 1
  • Marcus Denker
    • 1
  • Tudor Gîrba
    • 1
  • Adrian Lienhard
    • 1
  • David Röthlisberger
    • 1
  1. 1.Software Composition GroupUniversity of BernSwitzerland

Personalised recommendations