Skip to content

Unit 0 — Introduction to Software Engineering

Learning objectives

  • Distinguish software engineering from programming alone.
  • Explain why software cost is dominated by change, coordination, and lifecycle concerns.
  • Identify stakeholders, constraints, risks, and quality attributes in a software-intensive system.

Why engineering?

Software is easy to modify syntactically but difficult to modify safely. A local change can affect APIs, data, performance, security, tests, deployment, documentation, and users. Software engineering provides practices for managing this interconnected change.

A useful model is:

Software engineering = technical construction + evidence + coordination + change management.

Essential characteristics

Software engineering work includes:

  • Understanding the problem and stakeholder goals.
  • Managing uncertainty and conflicting requirements.
  • Designing interfaces and system structure.
  • Implementing and integrating increments.
  • Verifying behavior and non-functional qualities.
  • Operating, maintaining, and evolving the system.

Product vs. project success

A team can deliver on time and still build a product nobody needs. A valuable product can also become unsustainable if its architecture, tests, or operational practices cannot support change. Engineering therefore balances delivery pressure with long-term system health.

Class discussion

Choose a familiar application. List three stakeholders, three quality attributes, and three ways a seemingly small feature could create system-wide effects.