The design and implementation of hierarchical software systems with reusable components
ACM Transactions on Software Engineering and Methodology (TOSEM)
SIGSOFT '93 Proceedings of the 1st ACM SIGSOFT symposium on Foundations of software engineering
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Inside COM
On the criteria to be used in decomposing systems into modules
Communications of the ACM
Hyper/J: multi-dimensional separation of concerns for Java
ICSE '01 Proceedings of the 23rd International Conference on Software Engineering
The C++ Programming Language
Rules and Tools for Software Evolution Planning and Management
Annals of Software Engineering
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
JTS: Tools for Implementing Domain-Specific Languages
ICSR '98 Proceedings of the 5th International Conference on Software Reuse
Special Feature: Epigrams on programming
ACM SIGPLAN Notices
Generalized algebraic data types and object-oriented programming
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Traits: A mechanism for fine-grained reuse
ACM Transactions on Programming Languages and Systems (TOPLAS)
Multilevel models in model-driven engineering, product lines, and metaprogramming
IBM Systems Journal - Model-driven software development
Inside Microsoft Dynamics AX 4.0
Inside Microsoft Dynamics AX 4.0
On the Design and Development of Program Families
IEEE Transactions on Software Engineering
Stateful traits and their formalization
Computer Languages, Systems and Structures
Zero-Overhead Composable Aspects for .NET
Advances in Software Engineering
Programming Microsoft Dynamics NAV: Create, modify, and maintain applications in NAV 5.0, the latest version of the ERP application formerly known as Navision
Zero-Overhead Composable Aspects for .NET
Advances in Software Engineering
Hi-index | 0.00 |
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.