Lecture Notes for CS 325

Logical Design, 16 February 2000


  1. behavior specifications of varying degrees of formality

  2. misinterpretations lead to designer-implementer confusion

  3. formal and precise specifications of module behavior

  4. constrain behavioral interpretation, promote implementational interpretation

  5. module specifications

    1. formal specifications fix interpretations

    2. specifications for functionally or data abstract modules

    3. all together now: module specs should be complete, unambiguous, and understandable

    4. module specifications should be implementation independent

    5. but, operational specifications are helpful too

  6. functional specifications

    1. a black box with inputs and outputs

    2. the module transforms inputs to outputs

    3. the module spec describes the input-output transformation

    4. axiomatic specifications

      1. descriptions of input and output state

      2. precondition must be true before the module executes

      3. postconditions will be true when module terminates

      4. writing complete and consistent pre- and postconditions is tricky

      5. failure to met conditions is an exceptional condition

  7. class specifications

    1. methods are functions, so functional approaches work

    2. classes are not only methods, however

    3. adt specification practice provides a basis

  8. logical (or detailed) design

    1. shares techniques with design specification

    2. program description language

      1. structured engilsh + pseudo code

      2. translation to programming languages

      3. successive refinement to increase the level of detail

    3. algorithm design

      1. an algorithm is a complete description of a computation

      2. who does algorithms: the system designers or the implementors

      3. algorithm design is a technical skill

    4. modeling class state

      1. classes are extra-functional

      2. focus on class state and changes to it via methods

      3. fsa are a useful model

      4. collapse several actual class states into a single logical state

      5. use functional design to specify methods


This page last modified on 16 February 2000.