|
Programming Reliable Software
Embedded and Reliable Information Systems
Laboratory
Institute for Complex Engineered Systems
Carnegie Mellon University
|
Reliable Software Seminar
In the process of analyzing and researching reliability in the
software development process, we have discovered a wealth of
information. What do most programmers do wrong? Why are most
schedules inaccurate? What are the common misconceptions
about why a program crashes? This course is
designed to help programmers understand the alternative
problem solving approaches that can be used to debug
application code when something goes wrong -- especially for
code that he or she did not implement. This course teaches an
understanding of what can and does go wrong and then what to
do to fix it. The end result of this course is a more
productive programming staff that can deliver higher quality
software with a more reliable schedule.
The following topics are covered:
Compilation
- Fixing strange compiler problems like "Illegal L-value"
- Control flow analysis, code slicing, pretty printers
- C/C++ preprocessor (lack of) error checking
- How someone gets around semantic error checking
- Why you should not help the compiler optimize your code
- Lint and other helpful tools
- Object files and link error
- Linking misconceptions and replacing runtime routines
- Failures in version control systems
- Errors in code reuse from uninitialized variable
Memory Management
- Virtual memory, page tables and protection
- Runtime system and errors when you debug
- Stack and heap management errors
- Lack of memory protection mechanisms
- Bounds guards and what they actually test
Functional Boundaries
- Subprogram stress testing
- Harness for testing 3rd party libraries
- Operating system routine failures
- Unhandled exceptions
- Value vs. variable testing
- Orthoginal error reporting
Direct comments and questions to:
bigrigg@ices.cmu.edu
pdl-webmaster@ece.cmu.edu
Last updated
27 November, 2002
|