Development Methods

This unit builds the foundation for core concepts in the Software Engineering knowledge area, most notably in the Software Processes, Software Design and Software Evolution knowledge units.

SDF/Development Methods

Topics:

  • Program comprehension

  • Program correctness

    • Types of errors (syntax, logic, run-time)

    • The concept of a specification

    • Defensive programming (e.g. secure coding, exception handling)

    • Code reviews

    • Testing fundamentals and test-case generation

    • The role and the use of contracts, including pre- and post-conditions

    • Unit testing

  • Simple refactoring

  • Modern programming environments

    • Code search

    • Programming using library components and their APIs

  • Debugging strategies

  • Documentation and program style

Learning Outcomes:

  1. Trace the execution of a variety of code segments and write summaries of their computations. [Assessment]

  2. Explain why the creation of correct program components is important in the production of high-quality software. [Familiarity]

  3. Identify common coding errors that lead to insecure programs (e.g., buffer overflows, memory leaks, malicious code) and apply strategies for avoiding such errors. [Usage]

  4. Conduct a personal code review (focused on common coding errors) on a program component using a provided checklist. [Usage]

  5. Contribute to a small-team code review focused on component correctness. [Usage]

  6. Describe how a contract can be used to specify the behavior of a program component. [Familiarity]

  7. Refactor a program by identifying opportunities to apply procedural abstraction. [Usage]

  8. Apply a variety of strategies to the testing and debugging of simple programs. [Usage]

  9. Construct, execute and debug programs using a modern IDE and associated tools such as unit testing tools and visual debuggers. [Usage]

  10. Construct and debug programs using the standard libraries available with a chosen programming language. [Usage]

  11. Analyze the extent to which another programmer’s code meets documentation and programming style standards. [Assessment}

  12. Apply consistent documentation and program style standards that contribute to the readability and maintainability of software. [Usage]