CS 477 Lecture Notes
Week Thirteen, Tuesday: Implementation Phase
Choice of Programming Language
World's most popular computer language: COBOL. DoD initiated (Admiral Grace Hopper).
Lots of maintenance going on in COBOL and it will continue in the future.
Fourth Generation Languages
SQL (structured query language, standardized by ANSI, pronounced "sequel")
is a common example. You will likely gain at least a little familiarity with
SQL as your career progresses: SQL is essential for client-server database applications.
Structured Programming
Avoid "goto" except for error handling. Structured programming is the writing of
readable code.
Good Programming Practice
Variable naming conventions. Prologue and inline comments. Parameters. Nested if
statements.
Coding Standards
Coding standards are intended to make maintenance easier. Overly restrictive standards
(such as module size limits) can be counterproductive.
Team Organization
In the implementation phase, programmers can work somewhat independently on different
modules.
Democratic Team Approach
"Egoless" programming (Weinberg). Modules belong to the team as a whole.
Classical Chief Programmer Team Approach
Chief programmer is both a manager and a programmer. Reduces communication complexity.
If the chief programmer is competent, the approach works well. The "classical" chief
programmer team is impractical in many ways.
Beyond Chief Programmer and Democratic Teams
Split the chief programmer into two people: team leader and team manager.
Portability
A product is portable it's significantly less costly to adapt the product to a new system
than to write it from scratch. Portability increases the market potential of
products.
Module Test Case Selection
Black Box Module-Testing Techniques
Test to specifications.
Glass Box Module-Testing Techniques
Test to exercise code paths.
Code Walkthroughs and Inspections
Code inspection is at least as effective as either black or glass box module testing.
Cleanroom
In this development technique, programmers never compile or execute their own code.
Code is written, inspected, and passed to a testing team.
Testing Objects
Inheritance is a form of code reuse. Inherited methods do not (usually) need to be
retested.
Management Aspects of Module-Testing
The more faults that are detected in a module, the more likely there are
undetected faults remaining. Sometimes it's better to scrap a module with
a bad fault history and redesign recode it.
Testing Distributed Software
"Heisenbug:" including debug code to observe this fault causes it to be
unobservable.
Testing Real-Time Software
Testing includes structure analysis, correctness proofs, systematic testing,
statistical techniques, and, the most important, simulation.
This page established April 6, 1998; last updated January 17, 2000.