Lecture Notes for CS 325
Logical Design, 12 March 2001
- what does
system design say about modules
- module specifications
- behavior specifications of varying degrees of formality
-
all together now: module specs should be complete, unambiguous, and
understandable
- module specifications should be implementation
independent - don't over-constrain the implementer
- but,
operational specifications are helpful too - less ambiguity, better
analysis, more automation
- functional specifications
- a black box with inputs and outputs
- the module
transforms inputs to outputs
- the module spec describes the
input-output transformation
- axiomatic specifications
- descriptions of input and output state
- precondition
must be true before the module executes
- postconditions will be
true when module terminates
- writing complete and consistent
pre- and postconditions is tricky
- failure to met conditions is
an exceptional condition
- class specifications
- methods are functions, so functional approaches work
-
classes are not only methods, however
- system design
goes upto the module interface - what else
- describe little
big details - how do i read that password
- describe important
algorithmic details - writing secure software
- describe
algorithmic constraints - performance in time, space
- why
bother
- minimize misinterpretations between designer and
implementer
- specify behaivor, suggest implementation
-
good module specifications of behavior promote better validation,
verification, and metrics
- logical (or detailed) design
- shares techniques with design specification
-
program description language
- structured engilsh + pseudo
code
- translation to programming languages
- successive
refinement to increase the level of detail
- algorithm
design
- an algorithm is a complete description of a
computation
- who does algorithms: the system designers or the
implementors
- algorithm design is a technical skill
- modeling class state
- classes are extra-functional
- focus on class state and changes to it via methods
- fsa
are a useful model
- collapse several actual class states into a
single logical state
- use functional design to specify methods
This page last modified on 12 March 2001.