Classifications are symbolic tools designed on purpose and their relevancy should be assessed accordingly.
Partitions as Symbolic Representations
Partitions are symbolic constructs that divide a set of objects or activities into subsets using some arbitrary criterion. As the only unbiased approach to abstraction, partitions are arguably the best stairways to heavens:
- Since they fall short of full abstractions, partitions are completely neutral regarding the structure of symbolic representations.
- Every configuration of generalization or specialization can be introduced through partitions.
- Partitions can be applied to any kind of target: structural or functional, static or dynamic.
To be of any use as stairways to abstraction, partitions must be unambiguous about overlapping and changes.
At first, before symbolic representations and abstraction are considered, partitions are the only concrete way to describe variants between objects.
- Exclusive partitions define non overlapping subsets, otherwise the same objects may belong to more than one subset.
- Under mutable partitions objects can move across subset during their life-cycle, otherwise the partition is structural and bound to object identities.
It’s has to be noted that partitions are not abstractions since they can be mapped to actual collections of objects or phenomenons. Moreover, when those collections are associated with values and rules to be applied to their elements, they are explicitly represented by symbolic containers and directly mapped into system symbolic representations called power-types, as any documental objects.
Variants of objects and activities must be described uniformly if their consolidation and validation is ever to be considered. That can be achieved if partitions are applied to activity variants, more precisely to the sequences of extension points whose value will set the execution paths:
- Exclusive partitions define non overlapping execution paths, otherwise the same sequence may be associated to more than one variant.
- Under mutable partitions some extension points can be set “on-the-fly”, otherwise they can all be decided up front and therefore paths can be set once for all without being affected afterwards.
Actual vs Symbolic Partitions
Whether they target actual or symbolic objects or activities, partitions are themselves symbolic constructs.
A consistent description of variants encompassing objects as well as behaviors provides a perfect bridge between requirements and analysis models as they bring different subsets of objects or activities under a shared description. That will prepare the ground for their consolidation into abstract surrogates without introducing them prematurely.
From Partitions to Specialization
The confusion between analysis and design models is a recurring pitfall for UML users, especially when specialization is considered. But that difficulty can be overcome by introducing a distinction between partition and specialization.
Taking for example (Cris Kobryn on UML forum), a General Practitioner specialized by Cardiologist, Orthopedic Surgeon, and Psychiatrist. From a requirements perspective it must be stressed that every option is possible and can only be decided by stakeholders according the regulatory and organizational context, e.g:
- Mutability: a professional capability will certainly be mutable, but one can imagine a sacerdotal one obtained by birth once and for all.
- Exclusivity: whatever the nature, professional or otherwise, exclusivity can be set for the whole or decided on a case-by-case basis.
As far as analysis is concerned, requirements can be fully expressed using partitions; but that’s not the case when design is considered because decisions are to be made about symbolic representations of agents and capabilities and their specialization:
- With non mutable and exclusive partitions both agents and capabilities can be represented by a single specialized class of practitioners.
- Otherwise specialization will be applied to capabilities that will be referenced by practitioners according exclusivity and mutability constraints.