Page 231 -
P. 231

216     PASTOR,  MOLINA,  AND  IBORRA
                      In MDA terms, we could say that OLIVANOVA Modeler is a tool for the edition and validation
                    of PIMs. The tool implements a model repository that can be exported to an XML (XML, 2006)
                    format for interchange with other tools.
                      As discussed above, an OO-Method conceptual model comprises four model views: objects,
                    dynamic, functional, and presentation. Thus, the tasks of the analyst typically involve the defini-
                    tion of the system from these four complementary viewpoints.

                    Defining the Objects Model View

                    The first task an analyst takes care of when creating an OO-Method conceptual model is the
                    definition of the objects model view. This view captures the static aspects of the system in terms
                    of which entities (classes) comprise the system (e.g., Vehicle, Client, Invoice, etc.), which are the
                    relevant properties of each entity (e.g., InvoiceNumber, InvoiceDate, InvoiceAmount, InvoicePay-
                    mentDate, IsPaid, etc.) and the relevant relations between entities (e.g., each Invoice corresponds
                    to one and only one Client, which can have zero or many invoices).
                      Integrity constraints can be defined for classes to state the conditions that must be fulfilled
                    by instances of a class at any time in order to enforce the consistency of the data managed by
                    the system (e.g., “InvoiceAmount > 0” states that the amount of an invoice must always be
                    greater than zero and thus prevents the existence of an invoice whose amount is, for instance,
                    negative).
                      Once the structure of the data to be managed by the system has been defined, the analyst
                    typically moves on to define the services (the equivalent to UML operations) that will oper-
                    ate on that data. For example, in the Invoice class, the analyst will define services such as
                    “newInvoice” to create an invoice, with arguments “invoiceNo” (invoice number), “client”
                    (client to be invoiced), “invoiceDate” and “invoiceAmount”; or a service such as “pay” to
                    mark an invoice as paid, with arguments “invoice” (the current invoice to be marked as paid)
                    and “paymentDate.”
                      If the execution of a service requires some conditions to be verified, these preconditions can be
                    associated to the given service in this objects model view. For instance, if the payment date of an
                    invoice must be later than its creation date, the analyst would associate the following precondition
                    to the “pay” service: “invoice.InvoiceDate < paymentDate.”
                      The complete specification of the objects model view is usually achieved through a series of
                    iterations before moving on to the definition of the other three views or after a series of iterations
                    covering the definition of this and the other three views.

                    Defining the Dynamic Model View

                    Once the analyst has defined (or after editing or deleting the definition of ) services in the objects
                    model view, s/he can proceed to define when the occurrence of these services can take place in
                    the dynamic model view. This is done through the use of State Transition Diagrams that represent
                    what states are reached by an object upon the execution of a service on it, depending on which
                    state that object is in.
                      For instance, when an invoice is created upon the execution of its “newInvoice” service, that
                    invoice reaches the “Unpaid” state. The execution of its “pay” service will change the state of that
                    invoice from the “Unpaid” to the “Paid” state. An invoice can be destroyed either when it is in
                    the “Unpaid” or in the “Paid” state, but it cannot be paid again if it is already in the “Paid” state.
                    This example is illustrated in the (partial) state transition diagram in Figure 11.6.
   226   227   228   229   230   231   232   233   234   235   236