The quality of software design hasimportant consequences that softwaredesigners should be aware of and takeseriously.

7

Software Products

Asoftware product

is an entity comprised of one ormore programs, data, and supporting materials andservices that satisfies client needs and desires either asan independent artifact or as essential ingredient insome other artifact.

8

Software Design Defined

Software designers do what designers inother disciplines do, except they do it forsoftware products.

Software design

is the activity of specifying thenature and composition of software products thatsatisfy client needs and desire, subject to constraints.

9

Design as Problem Solving

An especially fruitful way to think aboutdesign is as problem solving.

Advantages

Suggests partitioning informationbetween problem and solution

Emphasizes that there may be morethan one good solution (design)

Suggests techniques such aschanging the problem, trial and error,brainstorming, etc.

10

Abstraction

Abstraction is an important problem-solvingtechnique, especially in software design.

Abstraction

is suppressing or ignoring some propertiesof objects, events, or situations in favor of others.

11

Importance of Abstraction

Problem simplification

Abstracting allows us to focus on themost important aspects of a problem in(partially) solving it.

Structuring problem solving

Top-down strategy: Solve an abstractversion of the problem, then adddetails (refinement)

Bottom-up strategy: Solve parts of aproblem and connect them for acomplete solution

Modeling

A model represents a target by havingmodel parts corresponding to targetparts, with relationships between modelparts corresponding to relationshipsbetween target parts.

TargetModel13

Modeling in Design

Modeling is used for the following purposes:

Problem understanding

Design creation

Design investigation

Documentation

Modeling works because models abstractdetails of the target.

Models can fail if important and relevantdetails are left out.

14

Static and Dynamic Models

Static model examples include class andobject models.

Dynamic model examples include statediagrams and sequence diagrams.

Astatic design model

represents aspects ofprograms that do not change during programexecution.

Adynamic model

represents what happensduring program execution.

15

Product vs. Engineering Design

Product designers are concerned with styling andaesthetics, function and usability,manufacturability and manageability.