Computer Science 280:

Software Engineering

Gregory M. Kapfhammer


flickr photo by vpickering shared under a Creative Commons (BY-NC-ND) license

Color Scheme

Key Concept

Corresponding Diagram

In-Class Discussion

In-Class Activity

Details in SETP or MMM

Programmer Productivity

May be big differences between extremes

Large teams go slowly because of communication

Small teams of sharp engineers move rapidly

So, why not always use small teams?

Small teams may not be able to build big systems!

A key factor is the time-to-market for software!

Software Teams

Chief Programmer: Designs, codes, tests, and documents

Co-pilot: Supports the Chief Programmer in all tasks

Administrator: Handles money, people, and space

Editor: Revises and improves all documentation

Assistants: Handles all correspondence and files


flickr photo shared by Sebastiaan ter Burg under a Creative Commons ( BY ) license

Software Teams

Program Clerk: Maintains all of the technical records

Toolsmith: Ensures that technical tools are available

Tester: Creates, runs, and reports on test suites

Language lawyer: Understands the programming language

How can we apply these roles in our projects?


flickr photo shared by Sebastiaan ter Burg under a Creative Commons ( BY ) license

Identify the role(s) with which you are best suited!

But, what are the limitations of "process"?

Connection to the main textbook?