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