Menu

Person2Person

Alcino Cunha

Person2Person

Description

This is a very simple benchmark example illustrative of a non information preserving transformation.

A companion pfd document with more information about this benchmark example (including a complete mathematical formalization) will be added soon.

Left meta-model

The left model is a set of persons, each with a name and age. The name is unique and the age is a positive integer. Using UML class diagrams and OCL constraints it can be defined as follows:

Left meta-model

context Person
    inv: Person.allInstances->forAll(x | 
             Person.allInstances->forAll(y | x <> y implies x.name <> y.name))
    inv: self.age >= 0

This meta-model is available in the following formats:

Left models

The repository includes the following instances of this meta-model:

  1. Empty instance (.xmi)
  2. Two persons (.xmi)
  3. Eight persons, including one with age 0 (.xmi)
  4. Three persons with names differing only in case and spaces (.xmi)

Right meta-model

The right model is a set of persons, each with a name. The name is unique. Using UML class diagrams and OCL constraints it can be defined as follows:

Left meta-model

context Person
    inv: Person.allInstances->forAll(x | 
             Person.allInstances->forAll(y | x <> y implies x.name <> y.name))

This meta-model is available in the following formats:

Right models

The repository includes the following instances of this meta-model:

  1. Empty instance (.xmi)
  2. Two persons (.xmi)
  3. Eight persons (.xmi)
  4. Three persons with names differing only in case and spaces (.xmi)

Consistency relation

The two models are consistent if the name of every person in the left model appears in the right model and vice-versa.
This consistency relation can be expressed in terms of a consistency relation between elements of the models (traceability relation) that relates persons with the same name in both models.
Whenever new persons are created in the left model, their age should be set to the default value of 18.

An executable implementation of the consistency relation will be added soon.

Classification

This is an example of a consistency relation that is:

  • Left-total
  • Right-total
  • Not left-unique
  • Right-unique

Test cases

Here is a summary of the existing test cases for this benchmark:

Test case Status Operational mode Kind Measured features
Person2Person.BCF Draft Batch forward propagation Conformance Correctness, Completeness
Person2Person.BCB Draft Batch backward propagation Conformance Correctness, Completeness
Person2Person.BSF Draft Batch forward propagation Performance Runtime (scalability), Memory (scalability)
Person2Person.BSB Draft Batch backward propagation Performance Runtime (scalability), Memory (scalability)
Person2Person.MCB Draft State-based backward propagation Conformance Correctness, Completeness, Hippocraticness

Only test cases marked as final can be referenced in publications.

Conformance of batch forward propagation

The goal of this test case is to assess the conformance of a batch forward propagation of type:

fwd :: Left -> Right

This test case shall be identified as Person2Person.B.CF, and benchmarked tools shall report the percentage of successful runs.

Each of the following runs is successful if the propagation always succeeds (completeness) and the produced right model is consistent with the input left model (correctness).

Run Propagation Input left model
Person2Person.BCF.1 fwd Left 1 (.xmi)
Person2Person.BCF.2 fwd Left 2 (.xmi)
Person2Person.BCF.3 fwd Left 3 (.xmi)
Person2Person.BCF.4 fwd Left 4 (.xmi)

Conformance of batch backward propagation</>

The goal of this test suite is to assess the conformance of a batch backward transformation of type:

bwd :: Right -> Left

This test case shall be identified as Person2Person.B.CB, and benchmarked tools shall report the percentage of successful runs.

Each of the following runs is successful if the propagation always succeeds (completeness) and the produced left model is consistent with the input right model (correctness).

Run Propagation Input right model
Person2Person.BCB.1 bwd Right 1 (.xmi)
Person2Person.BCB.2 bwd Right 2 (.xmi)
Person2Person.BCB.3 bwd Right 3 (.xmi)
Person2Person.BCB.4 bwd Right 4 (.xmi)

Performance (scalability) of batch forward propagation

The goal of this test case is to assess the performance of the forward propagation run in batch mode. This test case shall be identified as Person2Person.BSF, and benchmarked tools shall report runtime and memory scalability (O-notation) taking into account runs with increasing left-model sizes, starting from 100 and at least up to 1000.

Performance (scalability) of batch backward propagation

The goal of this test case is to assess the performance of the backward propagation run in batch mode. This test case shall be identified as Person2Person.BSB, and benchmarked tools shall report runtime and memory scalability (O-notation) taking into account runs with increasing right-model sizes, starting from 100 and at least up to 1000.

Conformance of state based backward propagation

The goal of this test case is to assess the conformance of a state based backward propagation. This test suite shall be identified as Person2Person.MCB, and benchmarked tools shall report the percentage of successful runs.

This test case can be applied to tools providing the following interface, allowing the propagation of updates from the right model to the left one in the the style of constraint maintainers (where only the result state of updating the right model is known). Since the right model contains strictly less information than the left one, the dual test case is equivalent to batch forward propagation and thus is omitted.

bwd :: Left -> Right -> Left

Each of the following runs is successful if the backward propagation succeeds in producing a model (completeness), the output (updated) left model is consistent with the input right model (correctness) and, when the input original left model is already consistent with the input right model, the output left model should be equal (or isomorphic) to the input one (hippocraticness). Creation of default ages cannot be checked in general for this scenario, since deletion and posterior creation of a person in the right model is indistinguishable from name modification.

Run Propagation Input left model Input right model
Person2Person.MCB.1 bwd Left 1 (.xmi) Right 1 (.xmi)
Person2Person.MCB.2 bwd Left 1 (.xmi) Right 2 (.xmi)

Related

Wiki: Home

MongoDB Logo MongoDB