Thanks everyone for your input so far - please feel free to contribute some more.
Before more formally responding (although in principle, at this point, I agree with Geert) I thought I'd do a bit more digging...
Just as I asked the question "When is a Classifier?" it begs the question: "When is an Instance?"
Until today, I thought that InstanceSpecification was the new UML2 name for an Instance. Indeed, some searching on the Net seems to confirm that: "An object instance may be called an
instance specification or just an
instance." Elsewhere: "In UML models, instance specifications are elements that represent an instance in the modelled system"
However, reading the
UML 2.2 Superstructure (formal) Specification:
[size=14]
6.3.2 Semantic Levels and Naming[/size]
A large number of UML metaclasses can be arranged into 4 levels with metasemantic relationships among the metaclasses in the different levels that transcend different semantic categories (e.g., classifiers, events, behaviors).
[size=18]...[/size] The following 4 levels are important:
Type level – Represents generic types of entities in models, such as classes, states, activities, events, etc. These are the most common constituents of models because models are primarily about making generic specifications.
Instance level – These are the things that models represent at runtime.
[size=18]...[/size] Value specifications – A realization of UML2, compared to UML, is that values can be specified at various levels of precision. The specification of a value is not necessarily an instance; it might be a large set of possible instances consistent with certain conditions. What appears in models is usually not instances (individual values) but specifications of values that may or may not be limited to a single value. In any case, models contain specifications of values, not values
themselves, which are runtime entities.
Individual appearances of a type within a context – These are roles within a generic, reusable context. When their context is instantiated, they are also bound to contained instances, but as model elements they are reusable structural parts of their context; they are not instances themselves.
[size=18]...[/size]We have established the following naming patterns:
Types : Instances : Values : Uses
Classifier, Class : Instance, Object : InstanceSpecification : Part, Role, Attribute,
XXXUse (e.g., CollaborationUse)
Event : Occurrence : OccurrenceSpecification : various (e.g., Trigger)
Behavior : Execution : ExecutionSpecification : various (e.g., ActivityNode, State),
XXXUse (e.g., InteractionUse)
(I've used:
[size=18]...[/size] to remove some text to reduce the size)
Can anyone "unpack" the set of naming patterns above (particularly the second - was it just a typo and InstanceSpecification should have read ValueSpecification)?
Do you believe (or do you have a normative reference for) an InstanceSpecification is/is not an Instance?
Any help/thoughts appreciated...
Paolo