CSCE 315 Lecture 12

From Notes
Jump to navigation Jump to search

« previous | Wednesday, February 15, 2012 | next »


... debugging is NOT a random process:

  1. Stabilize the error
  2. Locate the source
  3. Fix the defect
  4. Test the fix
  5. 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:

  1. Customer's needs → Requirement Engineering
  2. Requirement specification → Design
  3. Design Specification →Programming
  4. Executable Modules →Integration
  5. Integrated Software →Delivery
  6. Delivered Product →Maintenance
  7. New Requirements

Useful on large projects, but does not allow for much feedback and requirements changes