Chapter 10
Section 10.1
- programs
go through three stages development, use and maintenance
- new
program created in development stage
- version
made available to users is initial release of program
- software
maintenance is process of modifying a program to fix or enhance it
- eventually
programs outlive their usefulness considered programs retirement from
active use
- small
changes during development will greatly reduce effort needed during
maintenance
- goal
of writing good software is to minimize effort to create and maintain a
program, not just minimize time to develop it
- programmers
create initial version, then modify it until it reaches some level of
acceptance build and fix model
- need
to address requirements, design and testing this is waterfall model
- no
matter how carefully a program is designed, there is always a time when
developer realizes a decision was an error, so need flexible development
- need
iterative process so can cycle through development stages waterfall
model with backtracking this will correct problems uncovered during
development
Section 10.2
- a
prototype is a program or representation created to explore some concept
programmers use them to explore ideas of a task
- it can
just be a set of diagrams, or maybe pseudo-code
- discarded
after used not actual program
Section 10.3
- running
a completed program with various inputs to find problems is testing
- can do
walkthroughs on code with a group of people
- try to
test looking for defects defect testing
- test
case is set of inputs, actions and expected output
- should
be properly documented so it can be repeated
- developers
sometimes make entire test suite a set of test cases
- black
box testing treats program as a black box, without regard to whats inside
- white
box testing exercises the internal parts of the program
Section 10.4
- Figure
10.7
- refinement
scope is set of issues addressed in a refinement cycle
- allow
programmer to focus on specific issues, not entire system at once
- can
then begin design stage lay out all requirements and associate them with
the software this defines objects
- then
define classes by finding relationships find inheritance, composition
and general association
- then
identify all methods of classes
- implementing
it, then, should completely represent this design
- then
test