Non-Concept Software Subsystems: Tangible and Intangible
This work addresses software design challenges for developers by offering a novel approach to manage system variability, though it appears incremental in its application of existing ontology and pattern concepts.
The paper tackles the subtle interpretation of 'Non-' concepts in software, defining tangible and intangible subsystems and proposing pluggable ontologies via Design Sockets for dynamic modification, with implications for product line design and identity-composition debates.
Concepts modified by a Non- prefix apparently denote a negation, an opposite of the concept without this prefix. But, generally the situation is rather subtle: non- implies only partial negation and the concept suggests preserved identity with some reduced quality or absent attribute. In this work tangible and intangible software subsystems based upon Non- concepts are defined and pluggable ontologies are proposed for their representation. Pluggable ontologies are a kind of nano-ontologies, which by their minimal size facilitate fast composition of new software subsystems. These ontologies are made pluggable by Design Sockets, a novel kind of class. These are abstract connectors for removed/added parts, functionalities or identities, and for subdued qualities. Design Sockets are the basis of a Design Pattern for dynamically modifiable software systems. Pragmatic implications of Non- concepts include manageable design of product lines with multiple models. Non- concepts are also relevant to the controversy whether composition is or is not identity. The resolution is not sharp. Identity is entangled with composition, and is preserved to a certain extent, until further removal causes identity breakdown.