Software Maintenance

What counts as maintenance?

  • bug fixes (aka corrective maintenance, especially after release)
  • adapt to env changes (aka adaptive maintenance, such as version changes, tool, etc)
  • preventive maintenance (better handle version breaks, things outside the software will change)

The software lifecycle

Fixing problems earlier in the process reduces costs and risks. This faith brings the test-driven development.

  • Requirement specs - what to build A good requirements doc include:
  • Features we must have (MVP)
  • Features we really want
  • Features nice to have
  • Design - capture designs at all levels (high level, individual module, component)

Source of truth

  • No documentation or too many documentations but not in sync are both bad
  • The source of truth of what the software actually does is always the code.
  • Differences between code and documentation are bugs or undocumented changes.

Steps to build web apps State machine Patterns of Enterprise Application Architecture

References

CS self-learning path