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 4 through 7

Productivity

Productivity

Precise definition is difficult

Numerous factors affect productivity

Picking appropriate tools in helpful

Primary bottleneck is communication with teammates

Productive engineers are great learners

Learning Barriers

Design

Selection

Use

Coordination

Comprehension

Transcends individual factors

Transcends team factors

Productivity Factors

Individuals

Team

Architecture

Design

Code

Management

Culture

Productive individuals rarely rescue

Analyze technical waste

Application to the software project

Software Quality

Zen and the Art of Motorcycle Maintenance

Quality

Correctness

Reliability

Robustness

Performance

Learnability ...

Interoperability

Security

Many different characteristics!

Trade-offs?

Internal quality attributes

Role of the project manager

Application to the software project

Requirements

Requirements gathering

Prototyping for feedback

Trade-offs?

Requirements

Explicit goals that must be satisfied for a complete product

Requirements engineering gathers requirements from people

Requirements should be clear and explicit

Requirements, architecture, design, implementation

Requirements and software testing

Requirements

Complete

Precise

Non-conflicting

Verifiable

Analyze the "TODO List" requirements

Consider a real-world program like todo.txt

Application to the software project

Requirements

Address the challenge of organization

Information hiding

Encapsulation

Encapsulation

Functions

Classes

Modules

Packages

Scoping

Architectural Styles

Client/Server

Pipe and filter

Model-view-controller

Peer-to-peer

Event-driven

Architectural mismatch

Refactoring

Programming Styles

"Every design problem has multiple, if not infinite, ways of solving it. Experts strongly prefer simpler solutions over complex ones, for they know that such solutions are easier to understand and change in the future." Petre et al. 2016

Application to the software project

Connections to the other textbooks?