CSCE 315 Lecture 12
Jump to navigation
Jump to search
« previous | Wednesday, February 15, 2012 | next »
... debugging is NOT a random process:
- Stabilize the error
- Locate the source
- Fix the defect
- Test the fix
- Look for similar errors
Preventing Bugs or Finding Difficult Ones
- Good Design
- Self-checking code (assertion statements within code or test cases)
- Output (print is your friend)
Debugging Tools
- Often integrated into IDE, examine state in great details
- Think about the code for a while before "blind-probing"
Non-traditional:
- diff code comparison
- compiler warning messages
- syntax/logic checkers
- profilers (optimizing time spent in certain functions)
- test frameworks (integrated unit and functional tests)
Software Development Overview
None of these are "clear-cut" ideas
Waterfall Model
"Traditional" software engineering approach.
Series of stages, each of which is a process that converts one product to another:
- Customer's needs → Requirement Engineering
- Requirement specification → Design
- Design Specification →Programming
- Executable Modules →Integration
- Integrated Software →Delivery
- Delivered Product →Maintenance
- New Requirements
Useful on large projects, but does not allow for much feedback and requirements changes