Abstract
A software product is software that is built for nobody in particular but is sold multiple times. A software product is typically highly customizable, or adaptable, to particular use contexts; moreover, such a software product can typically be thought of as a common kernel plus a number of customizations, one for each use context. A successful software product will be used for many years, and hence the kernel must evolve to accommodate changing demands and environments. The subject of this paper is the conflict between the customizations made for each use context and the evolution of the kernel over time. As a case study we consider Microsoft Dynamics AX and Dynamics NAV, highly customizable enterprise resource planning (ERP) software systems, for which upgrades are traditionally costly. We study the challenges related to the customization/evolution conflict and present some software engineering approaches, programming language constructs and software tools that attempt to address these problems, and discuss whether they could be brought to bear on the conflict.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
C# language specification. ECMA Standard 334 (June 2005)
Allen, E.: Object-oriented programming in Fortress. FOOL/WOOD 2007, (January 2007), http://www.cs.hmc.edu/
Allen, E., et al.: The Fortress language specification. Technical report, Sun Microsystems (March 2008), http://research.sun.com/projects/plrg/
Batory, D.: Feature oriented programming for product-lines. Slide set for tutorial, OOPSL 2004, Vancouver, Canada (October 2004)
Batory, D.: Multilevel models in model-driven engineering, product lines, and metaprogramming. IBM Systems Journal 45(3), 527–539 (2006)
Batory, D., Lofaso, B., Smaragdakis, Y.: JTS, tools for implementing domain specific languages. In: Fifth International Conference on Software Reuse, pp. 143–153 (1998)
Batory, D., O’Malley, S.: The design and implementation of hierarchical software systems with reusable components. ACM Transactions on Software Engineering and Methodology 1(4), 355–398 (1992)
Batory, D., Singhal, V., Sirkin, M., Thomas, J.: Scalable software libraries. In: SIGSOFT, pp. 191–199 (1993)
Bergel, A., Ducasse, S., Nierstrasz, O., Wuyts, R.: Stateful traits and their formalization. Computer Languages, Systems & Structures 34(2-3), 83–108 (2008)
Dittrich, Y., Vaucouleur, S.: Customization and upgrading of ERP systems. an empirical perspective. Technical Report TR-2008-105, IT University of Copenhagen, Denmark (March 2008)
Ducasse, S., Nierstrasz, O., Schärli, N., Wuyts, R., Black, A.P.: Traits: A mechanism for fine-grained reuse. ACM Transactions on Programming Languages and Systems 28(2), 331–388 (2006)
Eaddy, M., Aho, A.: Statement annotations for fine-grained advising. In: ECOOP Workshop on Reflection, AOP and Meta-Data for Software Evolution (RAM-SE 2006), Nantes, France, (July 2006)
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns. Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading (1994)
Greef, A., et al.: Inside Microsoft Dynamics AX 4.0. Microsoft Press (2006)
JSR-277Â Expert Group. Jsr-277: Java module system. Technical report, Sun Microsystems (October 2006), http://jcp.org/en/jsr/detail?id=277
Hyper, J.: Home page, http://www.alphaworks.ibm.com/tech/hyperj
Software Engineering Institute.Software product lines, http://www.sei.cmu.edu/productlines/
Johansen, R., Sestoft, P., Spangenberg, S.: Zero-overhead composable aspects for.NET. In: Börger, E., Cisternino, A. (eds.) Software Engineering. LNCS, vol. 5316, pp. 186–216. Springer, Heidelberg (2008)
Johansen, R., Spangenberg, S.: Yiihaw. an aspect weaver for .NET. Master’s thesis, IT University of Copenhagen, Denmark (February 2007), http://www.itu.dk/people/sestoft/itu/JohansenSpangenberg-Aspects-2007.pdf
Kennedy, A., Russo, C.: Generalized algebraic data types and object-oriented programming. In: OOPSLA, San Diego, California, October 2005, pp. 21–40 (2005)
Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C.V., Loingtier, J.-M., Irwin, J.: Aspect-oriented programming. In: Aksit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 220–242. Springer, Heidelberg (1997)
Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An overview of aspectJ. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 327–353. Springer, Heidelberg (2001)
Lehman, M.M.: Rules and tools for software evolution planning and management. Annals of Software Engineering 11(1), 15–44 (2001)
Lehman, M.M.: Programs, life cycles, and laws of software evolution. Proceedings of the IEEE, 68(9), 1060–1076 (September 1980)
Mens, T., Buckley, J., Zenger, M., Rashid, A.: Towards a taxonomy of software evolution. In: International Workshop on Unanticipated Software Evolution, Warsaw, Poland (April 2003)
Microsoft. Microsoft Dynamics AX. Homepage, http://www.microsoft.com/dynamics/ax/
Microsoft. Microsoft Dynamics NAV. Homepage, http://www.microsoft.com/dynamics/nav/
Mortensen, F.: Software development with Navision. Talk, ERP Crash Course, University of Copenhagen, January 31 (2007), http://www.3gerp.org/Documents/ERP
Odersky, M.: The Scala language specification, version 2.0. Technical report, École Polytechnique Féderale de Lausanne, Switzerland (January 2007), http://www.scala-lang.org/
Ossher, H., Tarr, P.: Hyper/J: multi-dimensional separation of concerns for Java. In: ICSE 2001: 23rd International Conference on Software Engineering, Toronto, Canada, pp. 821–822. IEEE Computer Society, Los Alamitos (2001)
Parnas, D.L.: On the criteria to be used in decomposing systems into modules. Communications of the ACM 15(12), 1053–1058 (1972)
Parnas, D.L.: On the design and development of program families. IEEE Transactions on Software Engineering SE2(1), (1976)
Perlis, A.J.: Epigrams on programming. SIGPLAN Notices 17(9), 7–13 (1982)
Pontoppidan, M.F.: Smart customizations. Screen cast (2006), http://channel9.msdn.com/Showforum.aspx?forumid=38&tagid=94
Prehofer, C.: Feature-oriented programming: A fresh look at objects. In: Aksit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 419–443. Springer, Heidelberg (1997)
Rogerson, D.: Inside COM. Microsoft’s Component Object Model. Microsoft Press (1997)
Stroustrup, B.: The C++ programming language. Addison-Wesley, Reading (2000)
D. Studebaker. Programming Microsoft Dynamics NAV. Packt Publishing (2007)
Tourwé, T., Brichau, J., Gybels, K.: On the existence of the AOSD-evolution paradox. In: AOSD 2003 Workshop on Software-engineering Properties of Languages for Aspect Technologies, Boston, USA (2003)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2008 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Sestoft, P., Vaucouleur, S. (2008). Technologies for Evolvable Software Products: The Conflict between Customizations and Evolution. In: Börger, E., Cisternino, A. (eds) Advances in Software Engineering. Lecture Notes in Computer Science, vol 5316. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-89762-0_8
Download citation
DOI: https://doi.org/10.1007/978-3-540-89762-0_8
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-89761-3
Online ISBN: 978-3-540-89762-0
eBook Packages: Computer ScienceComputer Science (R0)