Introduction to Software Engineering
Software engineering is the systematic application of engineering principles to software development. It emerged in response to the software crisis of the 1960s — projects over budget, late, and unreliable.
Software Characteristics
Software is intangible, doesn't wear out, and is complex. It requires maintenance throughout its life. Software types include system software, application software, embedded software, web applications, AI software, and scientific software.
Software Process
A software process is a structured set of activities: specification, design, implementation, validation, and evolution. Process models provide frameworks for organising these activities.
Waterfall Model
The Waterfall model follows sequential phases: requirements → design → implementation → testing → deployment → maintenance. Each phase completes before the next begins. It works well for stable requirements but is inflexible to change.
Iterative and Incremental
Iterative development revisits phases in cycles. Incremental development delivers the system in pieces. The Spiral model combines iteration with risk analysis. Prototyping builds quick models for feedback before full development.
Agile Methods
Agile values individuals and interactions, working software, customer collaboration, and responding to change. Scrum uses sprints, daily standups, and retrospectives. XP (Extreme Programming) emphasises pair programming, TDD, and continuous integration.
SDLC Overview
The Software Development Life Cycle encompasses all activities from inception to retirement. Choosing the right model depends on project size, requirements stability, team experience, and risk tolerance.
Summary
Software engineering applies systematic methods to build reliable software. Understanding process models — waterfall, iterative, spiral, and agile — is fundamental to managing software projects effectively.