Navigation
  • Home
  • Recent
  • Most Active
  • Popular
  • Blog
  • Credits
  • RSS
  •   Interaction
  • Register
  • Statistics
  •   Help
  • Suggestions
  • Contact Us
  • How to Edit
  • Help



  • [Edit]


    Vienna Development Method (VDM) is a program development method based on formal specification using the VDM specification language (VDM-SL), with tool support. There is an object-oriented extension, VDM++.

        Vienna Development Method
            The development cycle
                Data Reification
                    Example data reification
                Books

    top

    The development cycle
    Use of VDM starts with a very abstract specification and, develops this into an implementation. Each step involves Data Reification, then Operation Decomposition.

    Data reification develops the abstract data types into more concrete data structures, while operation decomposition develops the (abstract) implicit specifications of operations and functions into algorithms that can be directly implemented in a computer language of choice.



    top

    Data Reification

    Data reification involves finding a more concrete representation of the abstract data types used in a specification
    There may be several steps before an implementation is reached. Each step involves:
      Given an abstract data representation "ABS_REP", find a new representation "NEW_REP".
      Find a "retrieve function" that relates ABS_REP to NEW_REP, i.e. retr
      NEW_REP → ABS_REP
      Prove that NEW_REP is sufficient for representing ABS_REP, i.e. prove that orall a in ABS_REP ullet exists r in NEW_REP ullet a = retr(r)
      Rewrite the operations and functions in terms of NEW_REP
      Prove that the new operations and functions preserve any data-type invariants of the new representation
      Prove that the new operations and functions model those found in the original specification. This involves two rules:
        Domain rule: orall r in NEW_REP ullet mboxOPA(retr(r)) Rightarrow mboxOPR(r)
        Modelling rule: orall eginleftharpoonup \ r end, r in NEW_REP ullet mboxOPA(retr(eginleftharpoonup \ r end)) land mboxOPR(eginleftharpoonup \ r end, r) Rightarrow mboxOPA(retr(eginleftharpoonup \ r end), retr(r))

    top

    Example data reification
    In a business security system, workers are given ID cards; these are fed into card readers on entry to and exit from the factory.
    Operations required:
      INIT() — initialises the system, assumes that the factory is empty
      ENTER(p
      Person) — records that a worker is entering the factory; the workers' details are read from the ID card)
      EXIT(p
      Person) — records that a worker is exiting the factory
      IS-PRESENT(p
      Person) r
      mathbb — checks to see if a specified worker is in the factory or not

    Formally, this would be:

    types

    Person = To be defined

    Workers = Person-set

    state AWCCS of

    pres
    Workers

    end

    operations

    INIT()

    ext wr pres
    Workers

    post pres = ;


    ENTER(p
    Person)

    ext wr pres
    Workers

    pre p

    otin pres


    post pres = eginleftharpoonup \ pres end cup ;


    EXIT(p
    Person)

    ext wr pres
    Workers

    pre p in pres

    post pres = eginleftharpoonup \ pres end - ;


    IS-PRESENT(p
    Person) r
    mathbb

    ext rd pres
    Workers

    post r Leftrightarrow p in pres


    As most programming languages have a concept comparable to a set (often in the form of an array), the first step from the specification is to represent the data in terms of a sequence. These sequences must not allow repetition, as we do not want the same worker to appear twice, so we must add an invariant to the new data type. In this case, ordering is not important, so ''a'', ''b'' is the same as ''b'', ''a''.

    The Vienna Development Method is valuable for model-based systems. It is not appropriate if the system is time-based. For such cases, the Concurrent Calculus System (CCS) is more useful.

    top

    Books

      Cliff Jones, Systematic Software Development using VDM, Prentice Hall 1990. ISBN 0-13-880733-7. Also available on-line and free of charge: http://www.csr.ncl.ac.uk/vdm/ssdvdm.pdf.zip




     
    Search more:
     

       
    Source Privacy License Download Contact Us Atlas
    Scientus.org Dictionary (Yet Another Wiki) RC : 1.39
    MIT OpenCourseWare
    This article is licensed under the GNU Free Documentation License [copyleft]. It uses material from the Wikipedia article "Vienna Development Method". link