This issue applies to several UAF classes & stereotypes but will be illustrated with two – “Person” and “ActualPerson” as defined in UAF…
UAF::Person: A type of a human being used to define the characteristics that need to be described for ActualPersons (e.g. properties such as address, telephone number, nationality, etc).
UAF::ActualPerson: An individual human being.
We also note a common definition (dictionary.com): 1. a human being, whether an adult or child: 2. a human being as distinguished from an animal or a thing.
Therefor the common concept for the term “Person” is what is defined in UAF as “ActualPerson”. This pattern is consistent in UAF. While consistent it would seem confusing to most.
What then, is a UAF::Person? What is a “Type of human being”? Nationality? Age? Capability? These are things one would expect as properties of a person type. We don’t normally recognize subtypes of people.
Perhaps UAF::Person is a role or phase of a person like “Policeman” or “Teenager”? If so, this would seem to conflate the concept of person with roles they play, and UAF already provides for roles?
Perhaps it is an extension mechanism, just there to add properties or relationships not in UAF? If so, would not a simple subclass suffice?
Consulting the example for guidance we see “<<Person>> Marine Radio Operator”, <<Person>> Qualified Lifeboat Driver”. These are clearly roles of a person. Clearly separating what an entity is (A person) from roles they play (Marine Radio Operator) is fundamental to good architecture at any level.
Recommendation 1: UAF should clearly distinguish rigid(a) types (like “Person”) from non-rigid(a) roles and phases. Name the classes and stereotypes appropriately using terms like role and phase. Have a unifying concept of “A role of something”, add “Role of a person” only if clarifying.
Recommendation 2: UAF should use the common term for entities – e.g. “UAF::Person” should correspond to what is currently UAF::ActualPerson. If there is a necessity for a metaconcept, that concept should have a specialized prefix or suffix such as “Type”, “Kind” or “Role”.
Recommendation 3: Should it be required to add properties to a type like “actual person”, just use generalization – no additional mechanism should be required.
(a): Terms referenced are defined in: http://doc.utwente.nl/50826/