Lecture Notes for CS 325

Logical Design, 12 March 2001


  1. what does system design say about modules

    1. module specifications

      1. behavior specifications of varying degrees of formality

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

      3. module specifications should be implementation independent - don't over-constrain the implementer

      4. but, operational specifications are helpful too - less ambiguity, better analysis, more automation

    2. 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

    3. class specifications

      1. methods are functions, so functional approaches work

      2. classes are not only methods, however

  2. system design goes upto the module interface - what else

    1. describe little big details - how do i read that password

    2. describe important algorithmic details - writing secure software

    3. describe algorithmic constraints - performance in time, space

  3. why bother

    1. minimize misinterpretations between designer and implementer

    2. specify behaivor, suggest implementation

    3. good module specifications of behavior promote better validation, verification, and metrics

  4. 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 12 March 2001.