MAnaging SPEcialization/Generalization HIerarchies

In object-oriented approaches (modeling, programming, databases, knowledge representation), the core of systems is, most of the time, a specialization hierarchy, that organizes concepts of the application domain or software artifacts useful in the development. These concepts are usually known as classes, interfaces and types. Software Engineering methods for design and analysis are concerned by application domain modeling as well as transferring the model into the target programming language chosen for implementation. For programming languages and database systems, the specialization hierarchy is implemented by inheritance, that also supports feature (specification or code) sharing and reuse. In Knowledge Representation and data-mining approaches, the modeling aspect of a class hierarchy prevails, whereas its main purpose is to guide the process of reasoning and rule discovery.