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 Home Eris Home PARIS Home

    pdl-webmaster@ece.cmu.edu
    Last updated 27 November, 2002