verifier-operation.txt 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. OOA domain model consists of:
  2. - object model (1)
  3. - state models (Mc) <-]--Wouldn't be too interesting if both 0.
  4. - process models (Mc) <-]
  5. Domain model must be verified per metamodel, which implies a verifier/parser of
  6. whole model. Verifier probably is domain of metamodel.
  7. Reporting domain must be a service provided to collect results of verification.
  8. Precedence and AFAIK the only way of verifying is to convert model to some
  9. text-based format.
  10. Once the verifier has the model data it can:
  11. - Flag any unknown elements
  12. - Ensure all model construction rules are obeyed. e.g., when a relationship
  13. must have an associative object.
  14. - Formalize all relationships
  15. - Ensure user-defined types are mapped to a core type
  16. - NOTE: Might allow creation of new core types (???)
  17. - Verify process models with respect to:
  18. - data usage conforms to type
  19. - only supported operations are used
  20. - ensure all expressions conform to type usage
  21. - (???) type conversions
  22. - ensure all relationships are atomically satisfied on instance creation
  23. - ensure instances are created correctly
  24. - subtyping must specify whole branch
  25. - disallow static creation of objects with creation event
  26. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  27. NOTE: Definition objects can be constructed in the verifier for development
  28. purposes to add some clarity, but they must be transformed into bridges in the
  29. metamodel to ensure non-pollution!
  30. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  31. Operation:
  32. 1. Collect and verify datatypes
  33. a. Establish new domain to be modeled
  34. b. Instantiate all core types.
  35. 2. Collect and verify new domain type operators
  36. 3. Collect and partially verify objects
  37. a. Verify non-referential attribute types
  38. b. Verify number of state models
  39. i. Only one instance state model
  40. ii. Only one assigner.
  41. A. Assigners are only allowed on associative objects.
  42. c. Identifier exists
  43. d. All attributes have a unique name.
  44. 4. Collect and verify relationships
  45. a. No duplicate relationship numbers
  46. b. Number of verb phrases.
  47. i. Reflexive can have one or two; all others have two.
  48. c. Multiplicity rules
  49. i. In cases where the model editing tool automatically adds the
  50. referential attributes, this checking could be disabled.
  51. ii. Association objects for M:M, Mc:M, Mc:Mc, 1c:M, and 1c:1c.
  52. iii. Referential attributes exist for each relationship.
  53. A. Two sets in association objects, else one set in involved objects.
  54. B. Set is on proper end of relationship.
  55. 1. 1:1 either end
  56. 2. 1c:1 on c end
  57. 3. 1:M on M end
  58. 4. Note that reflexive relationships will only involve one object.
  59. d. Ensure there are always two subtypes per supertype object.
  60. 5. Collect and verify accessors
  61. a. Verify parameter types
  62. b. Verify return types
  63. c. Ensure no returns on events.
  64. d. Ensure no duplicate accessor names within scope.
  65. i. Object-level names (events and object methods) in different objects
  66. can be duplicates
  67. ii. Object-level names and non-object-level accessor names can be
  68. duplicates
  69. 6. Collect process model translations
  70. a. Might have type-based operations. e.g., OAL uses '=' for assignment, but
  71. also supports create and assign statements, 'create object instance
  72. <varname>'.
  73. 7. Collect and verify all instantiations
  74. a. Instantiations occur on creation transitions or declaration of an
  75. instance variable.
  76. b. Ensure all unconditional relationships are satisfied within the atomic
  77. process that caused instantiation.
  78. i. No asynchronous calls occur before all unconditional relationships are
  79. satisfied.
  80. ii. Creation events atomicity is defined by entry state, but rule on
  81. self-directed events will allow satisfaction to span mutiple states.
  82. c. Identifying creations
  83. i. Instance creation
  84. A. requires an object reference
  85. B. doesn't require variable assignment Ex. <obj ref>[10] could create
  86. 10 unassigned instances.
  87. ii. Event creation
  88. A. Should be identifiable from state model.
  89. B. Might have keyword.
  90. C. Doesn't participate in variable assignment. (asynchronous)
  91. D. Creation state calls within the same state model are part of
  92. atomicity?
  93. EXERCISING VERIFICATION TO BE DONE USING MICROWAVE OVEN
  94. 1. Creation starts with DOM, MDOM, R1
  95. a. NOTE: At this stage of the verification, there is no R105, so don't try to
  96. verify domain, until after at least one object is added!
  97. 2. Map core datatypes in OAL to metamodel
  98. 3. Then proceed from UDTs in sequence.
  99. a. Initial run-through with tube_wattage showed no unsatisfied unconditional
  100. relationships.
  101. b. Creation should be DOMD, TYPE, R401, R412, 5xENUV, 5xR404, 5xENUP, ENUD,
  102. 5xR413, R416, 5xVAL, 5xDUS, 5xR629, 5xR624, 5xR625