Skip to main content

Software engineering

Overview

Software engineering applies systematic methods to design, build, test, deploy, and maintain software under real constraints: time, budget, regulation, and team skill. It spans requirements, architecture, quality practices, and collaboration—not only writing code.

Key concepts

  • Requirements — Functional vs non-functional (performance, security, compliance).
  • Design & architecture — Modularity, boundaries, and trade-off analysis.
  • Quality — Testing, reviews, static analysis, observability.
  • Delivery — Version control, CI/CD, release management.
  • Operations — On-call, incident response, SLOs, capacity planning.

Feature delivery lifecycle

Sample: definition of done (team checklist)

  • Unit/integration tests added or updated and passing in CI.
  • Documentation or ADR updated when behavior or architecture changes.
  • Security/privacy impact considered (data handling, authz).
  • Feature flag or rollback path defined for risky changes.

References