What:

It’s not just coding. When you’re doing it, split it up into multiple bits.

1. Requirements Capture

Process:
  • Identify what the software must do.
    • Functional Requirements: What the system should do
    • Non-Functional Requirements: How it should be: How fast it should be, show seldom it should fail etc. (Informally called ‘ilities’ - efficiency, security, portability etc.)
Where to get Requirements:
  • Goals
  • Stakeholders
  • Business Rules - I.E. The uni may not allow you to do certain things with your code

Ensure your requirements are verifiable, possible (given time / money budget) etc.

2. Designing

Think of the following:

  • Requirements: What must the software do. Incredibly Important
  • Design: How should it do that
    • High level - UML

3. Construction

  • Coding
  • Testing
  • Documentation

4. Maintenance

  • Stopping Software Rot
  • Coping in an evolving world

Interesting Note:

TCO (Total Cost of Ownership) of a system often dwarfs dev costs.