Computer Science 203:

Software Engineering

Gregory M. Kapfhammer

Triangles 1 flickr photo by vincentag shared under a Creative Commons (BY-NC-ND) license

Color Scheme

Key Concept

Corresponding Diagram

In-Class Discussion

In-Class Activity

Details in the Textbook

Cooperative Software Design

Chapters 1 through 3

History of software engineering

Historical Context

Programs did not solve complex problems

Programs aimed to solve problems faster than humans

Programs solved complex problems but did not scale

Programs solved complex problems but did scale

IBM 360 operating system

Now we have software engineering!

Nine times cost increase from program to programming systems product

Many questions quickly developed

Review the questions in chapter one

What questions are most interesting? Challenging?

Human aspects of software engineering

Software organizations

Complexity of software

Complexity of software engineering processes

Complexity of people who engineer software

Software companies aim to provide value, not software!

Established Roles


Product managers

Product designers

Software engineers

Sales people

Support team

Emerging Roles

Engineering Managers

Data scientists

Software researchers

Social behavior and processes

Mitigating risk

What are the risks we must manage?

What is the difference between product and engineering?

Application to the software project


Understanding what you are building and why you are building it!

Ensure that all team members understand company mission

Conceptual integrity

What is conceptual integrity?

Single coherent idea

Brooks: " ... most important consideration in system design"

Aristocracy in System Design

Democracy in System Design

How should we communicate to achieve conceptual integrity?

Communicating with those who communicate differently

Communicating with those who have different areas of expertise

Don't underestimate the importance of communication!

Application to the software project