Classification and Ontological Aspects in Software Engineering

The organization of objects into classes and categories is an essential task in the process of forming concepts. Within computer science, this classification activity must be supported by a well-founded representation system; among the alternatives, ontologies appear as a particularly suitable choice. Classification has therefore an ontological nature, as it both defines a system of categories, in the philosophical sense, and is founded by some ontology, in the computational sense. However, there is an implicit duality; classes are both conceived within an ontological hierarchy and expressed as a linguistic structure. These often conflict. Our proposal is to tackle this problem by definining two orthogonal dimensions, namely an ontological one and a metalingistic one, to separate these perspectives. But once dimensions have been defined, some other proposals appear. For instance, different ontological hierarchies are perceived from different viewpoints and domains; a subjective dimension is therefore provided to include them. Similarly, the evolution of elements though the software lifecycle suggests to classify the outcomes of different phases; then a time-aware evolutionary dimension is also defined. These four coordinates provide a precise and flexible classification framework. We suggest that recent advances in Software Engineering, particularly model-driven approaches, require the definition of such a framework.