Foundations of Software Engineering

Kenneth M. Anderson <>

Lecture 02: Introduction to Software Engineering

Relationship to Textbook

Comparison to other CS Disciplines

Thought Experiment




The Answer

Student Software Industrial-Strength Software
Developer is the User
  • Bugs are tolerable
  • UI not important
  • No documentation
Client is the User
  • Bugs are not tolerated
  • UI is important
  • Lots of documentation
Software not in critical use Supports important business functions
Reliability, robustness not important Reliability, robustness very important
No investment Heavy investment ($5 to $25 per LOC)
Does not care about portability Portability allows a company to market a product on multiple platforms

Key Difference

Quality Attribute Definition
Functionality The system fulfills its requirements
Reliability The system provides consistent performance
Usability The ease at which users can acquire skill with the system
Efficiency The system provides performance relative to its resources
Maintainability The system can be modified to make corrections, improvements, or adaptations
Portability The system can be adapted to other platforms

Historical Background: 38 years

The Problem Domain (1 of 3)

The Problem Domain (2 of 3)

The Problem Domain (3 of 3)

corrective maintenance To fix bugs
adaptive maintenance To respond to changes in the system's environment
perfective maintenance To add new features
preventive maintenance To make a system more maintainable

SE Challenges (1 of 5)

SE Challenges: Scale (2 of 5)

SE Challenges: Quality and Productivity (3 of 5)

SE Challenges: Consistency and Repeatability (4 of 5)

SE Challenges: Change (5 of 5)

The Software Engineering Approach

Phased Development Process

Managing the Process


Coming Up Next