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.