Foundations of Software Engineering

Kenneth M. Anderson <>

Lecture 19: Function-Oriented Design

Relationship to Textbook

Software Design

Software Design, continued

Design Methodologies

Design Objectives

Design Principles

Problem Partitioning and Hierarchy



Top-Down vs Bottom-Up Design

Module-Level Concepts

Design Notation and Specification

State Charts

State Chart Example

Statechart 1

Supporting Iteration and Branching

Types of Modules

Design specification

Structured Design


SDM Strategy

Step 1: Restate the problem as a data flow diagram

Step 2: Identify the input and output data elements

Step 3: First-Level Factoring

Step 4: Perform Additional Factoring

SDM Wrap-Up



Network Metrics

Stability Metrics

Information Flow Metrics

Coming Up Next