Chapter 16 - Component Level Design
Overview
The purpose of component level design is to translate the design model into
operational software. Component level design occurs after the data,
architectural, and interface designs are established. Component-level design
represents the software in a way that allows the designer to review it for
correctness and consistency, before it is built. The work product produced is
the procedural design for each software component, represented using graphical,
tabular, or text-based notation.
Structured Programming
- Each block of code has a single entry at the top
- Each block of code has a single exit at the bottom
- Only three control structures are required: sequence, condition
(if-then-else), and repetition (looping)
- Reduces program complexity by enhancing readability, testability, and
maintainability
Design Notation
- Flowcharts (arrows for flow of control, diamonds for decisions, rectangles
for processes)
- Box diagrams (also known as Nassi-Scheidnerman charts - process boxes
subdivided to show conditional and repetitive steps)
- Decision table (subsets of system conditions and actions are associated
with each other to define the rules for processing inputs and events)
- Program Design Language (PDL - structured English or pseudocode used to
describe processing details)
Program Design Language Characteristics
- Fixed syntax with keywords providing for representation of all structured
constructs, data declarations, and module definitions
- Free syntax of natural language for describing processing features
- Data declaration facilities for simple and complex data structures
- Subprogram definition and invocation facilities
Design Notation Assessment Criteria
- Modularity (notation supports development of modular software)
- Overall simplicity (easy to learn, easy to use, easy to write)
- Ease of editing (easy to modify design representation when changes are
necessary)
- Machine readability (notation can be input directly into a computer-based
development system)
- Maintainability (maintenance of the configuration usually involves
maintenance of the procedural design representation)
- Structure enforcement (enforces the use of structured programming
constructs)
- Automatic processing (allows the designer to verify the correctness and
quality of the design)
- Data representation (ability to represent local and global data directly)
- Logic verification (automatic logic verification improves testing
adequacy)
- Easily converted to program source code (makes code generation
quicker)