Source: Model Driven Solutions ( Cory Casanave)
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/
Reported: UAF 1.0b1 — Thu, 23 Feb 2017 19:37 GMT
Disposition: Closed; No Change — UAF 1.0
What is a “Person”?
The agreed naming convention in UAF is to name all instances as "Actual something", e.g. "Actual Person". And to name types just simply like Person. We are not using "Type" to name types.
Changing naming convention would destroy compatibility with previous versions of the standard and would confuse current users.
Updated: Mon, 16 Oct 2017 15:16 GMT