Course Overview

Your Course Goal: Refine your methdology of building software in a team

Engineering design methodology

Let us first consider how "real engineers" work: its time to build a bridge/robot/building.
  1. Get the requirements the bridge is supposed to meet
  2. Make a complete design (blueprints, materials, building method, etc)
  3. Build (implement) it
  4. Test it to make sure its going to work.

Building software is not building bridges

Modern Software Design Methodology

Here is a summary of the way good software is designed today

The Tasks of Software Design

Let us reflect on everything we are spending time on when developing software -- we want to better organize these activities.

The four core production tasks are again:

Produce requirements; design; implement; test.

Other tasks include

Schools of Object-Oriented Software Development

In this course we cover ideas representing a synthesis of best practices from many schools, including:

Extended Syllabus and Project iterations

Here we give a more wordy version of the syllabus and of the project iteration structure. The lecture topics and project iterations are in synch.

See the projects homepage for details beyond what is covered here »

Requirements (Project Iteration 1)

Find out from the customers what the software product really should do.

Use-case-driven requirements

Design (Project Iteration 2)

Find and refine the classes/packages/architecture, starting from requirements.

Related design topics

Implementation and Testing (Project Iterations 3-6)

Implementation

Unit Testing

Iterating