Software Design Main issues: decompose system into parts many attempts to measure the results ...

65
Software Design Main issues: decompose system into parts many attempts to measure the results design as product design as process ©2008 John Wiley & Sons Ltd. www.wileyeurope.com/college/van vliet

Transcript of Software Design Main issues: decompose system into parts many attempts to measure the results ...

Page 1: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Software Design

Main issues: decompose system into parts many attempts to measure the results design as product design as process

©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 2: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Overview

• Introduction

• Design principles

• Design methods

• Conclusion

2©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 3: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Programmer’s Approach to Software Engineering

3

Skip requirements engineering and design phases;

start writing code

©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 4: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Point to ponder

Is this the same as eXtreme Programming?

Or is there something additional in XP?

4©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 5: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Why this programmer’s approach?

• Design is a waste of time

• We need to show something to the customer real quick

• We are judged by the amount of LOC/month

• We expect or know that the schedule is too tight

5©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 6: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

However, ...

The longer you postpone coding, the sooner you’ll be finished

6©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 7: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Up front remarks

• Design is a trial-and-error process

• The process is not the same as the outcome of that process

• There is an interaction between requirements engineering, architecting, and design

7©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 8: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Software design as a “wicked” problem

• There is no definite formulation

• There is no stopping rule

• Solutions are not simply true or false

• Every wicked problem is a symptom of another problem

8©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 9: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Design Principles

9

• Abstraction

• Modularity, coupling and cohesion

• Information hiding

• Limit complexity

• Hierarchical structure©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 10: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Abstraction

• procedural abstraction: natural consequence of stepwise refinement: name of procedure denotes sequence of actions

10

abstraction subproblems

time

©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 11: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Abstraction

• data abstraction: aimed at finding a hierarchy in the data

11

application-orienteddata structures

simpler datastructuregeneral

data structures

©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 12: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Modularity• structural criteria which tell us something about

individual modules and their interconnections

• cohesion and coupling

• cohesion: a measure of the mutual affinity of the elements of a component; the degree of relatedness among elements within the module

• coupling: the strength of the connection between modules; the degree of interaction among modules

12©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 13: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Types of Cohesion

13

• coincidental cohesion• logical cohesion• temporal cohesion

• procedural cohesion

• communicational cohesion

• sequential cohesion

• functional cohesion

• data cohesion (to cater for abstract data types)©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 14: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Cohesion Definitions

• Coincidental: no apparent connection between elements

• Logical: elements perform tasks that can be classified under a broad, general category

• Temporal: elements linked by the time at which they are executed

• Procedural: elements are related by the order of their occurrence

Page 15: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Cohesion Definitions (cont.)

• Communicational: elements all use the same data set, but results of one stage of the process are not passed on to other stages

• Sequential: elements take on a production line interdependence

• Functional: every processing element is essential to the performance of a single function

Page 16: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

How to determine the cohesion type?

• describe the purpose of the module in one sentence

• if the sentence is compound, contains a comma or more than one verb it probably has more than one function: logical or communicational cohesion

• if the sentence contains time-related words like “first”, “then”, “after” temporal cohesion

• if the verb is not followed by a specific object probably logical cohesion (example: edit all data)

• words like “startup”, “initialize” imply temporal cohesion

16©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 17: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Types of Coupling

17

• content coupling

• common coupling

• external coupling

• control coupling

• stamp coupling

• data coupling©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 18: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Coupling Definitions

• Content – when one module uses or modifies code in another module

• Common – when modules reference a global data area

• Control – when one module passes a flag to direct the activity of another module

• Stamp – when information with some structural characteristics is passed

• Data – when information passed is unstructured

Page 19: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Coupling levels are technology dependent

• Data coupling assumes scalars or arrays, not records

• control coupling assumes passing of scalar data

• nowadays:– modules may pass complex data structures– modules may allow some modules access to their

data, and deny it to others (so there are many levels of visibility)

– coupling need not be commutative (A may be data coupled to B, while B is control coupled to A)

19©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 20: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

strong cohesion & weak coupling simple interfaces

• simpler communication

• simpler correctness proofs

• changes influence other modules less often

• reusability increases

• comprehensibility improves

20©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 21: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Information Hiding

21

• each module has a secret

• design involves a series of decisions: for each such decision, wonder who needs to know and who can be kept in the dark

• information hiding is strongly related to– abstraction: if you hide something, the user may abstract from

that fact– coupling: the secret decreases coupling between a module and

its environment– cohesion: the secret is what binds the parts of the module

together©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 22: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Point to ponder• How many lines of code is this:

#include <stdio.h>#define NULL 0main (){int i;for (i=0;i<10;i++) printf(%d”,i);

}

22©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 23: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Complexity

• measure certain aspects of the software (lines of code, # of if-statements, depth of nesting, …)

• use these numbers as a criterion to assess a design, or to guide the design

• interpretation: higher value higher complexity more effort required (= worse design)

• two kinds:– intra-modular: inside one module– inter-modular: between modules

23©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 24: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

intra-modular

• attributes of a single module

• two classes:– measures based on size– measures based on structure

24©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 25: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Sized-based complexity measures

25

• counting lines of code– differences in verbosity– differences between programming languages– a:= b versus while p^ <> nil do p:= p^

• Halstead’s “software science”, essentially counting operators and operands

©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 26: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Software science basic entities

26

• n1: number of unique operators

• n2: number of unique operands

• N1: total number of operators

• N2: total number of operands

©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 27: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Example programpublic static void sort(int x []) {for (int i=0; i < x.length-1; i++) {

for (int j=i+1; j < x.length; j++) {

if (x[i] > x[j]) {int save=x[i];x[i]=x[j]; x[j]=save

}}

}}

27

operator, 1 occurrence

operator, 2 occurrences

©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 28: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

operator # of Occurrences public

sort()

int

[]

{}

for {;;}

if ()

=

<

n1 = 17

114742152…N1 = 39

28©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 29: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Example programpublic static void sort(int x []) {for (int i=0; i < x.length-1; i++) {

for (int j=i+1; j < x.length; j++) {

if (x[i] > x[j]) {int save=x[i];x[i]=x[j]; x[j]=save

}}

}}

29

operand, 2 occurrences

operand, 2 occurrences

©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 30: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

operand # of occurrences

xlengthijsave01n2 = 7

9276212

N2 = 29

30©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 31: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Other software science formulas

31

• size of vocabulary: n = n1 + n2

• program length: N = N1 + N2

• volume: V = N log2n• level of abstraction: L = V*/ V approximation: L’ = (2/n1)(n2/N2)• programming effort: E = V/L• estimated programming time: T ’ = E/18• estimate of N: N ’ = n1log2n2 : n2log2n2

• for this example: N = 68, N ’ = 89, L = .015, L’ = .028©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 32: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Software science

• empirical studies: reasonably good fit

• critique:– explanations are not convincing– results from cognitive psychology used wrongly– is aimed at coding phase only; assumes this is an

uninterrupted concentrated activity– different definitions of “operand” and “operator”

32©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 33: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Structure-based measures

33

• based on– control structures– data structures– or both

• example complexity measure based on data structures: average number of instructions between successive references to a variable

• best known measure is based on the control structure: McCabe’s Cyclomatic Complexity

©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 34: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Example programpublic static void sort(int x []) {

for (int i=0; i < x.length-1; i++) {for (int j=i+1; j < x.length; j++) {

if (x[i] > x[j]) {int save=x[i];x[i]=x[j]; x[j]=save

}}

}}

34

2

1

3

4

5

6

7

8

9

10

11

©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 35: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Cyclomatic complexity

e = number of edges (13)n = number of nodes (11)

CV = e - n + 2 (4) = number of predicates + 1 = number of regions

35

2

1

3

4

5

6

7

8

9

10

11

©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 36: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Intra-modular complexity measures, summary

• for small programs, the various measures correlate well with programming time

• however, a simple length measure such as LOC does equally well

• complexity measures are not very context sensitive• complexity measures take into account few aspects

• it might help to look at the complexity density instead (CV/LOC)

36©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 37: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

System structure: inter-module complexity

• looks at the complexity of the dependencies between modules

• draw modules and their dependencies in a graph• then the arrows connecting modules may denote

several relations, such as:– A contains B– A precedes B– A uses B

• we are mostly interested in the latter type of relation

37©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 38: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

The uses relation

• In a well-structured piece of software, the dependencies show up as procedure calls

• therefore, this graph is known as the call-graph

• possible shapes of this graph:– chaos (directed graph)– hierarchy (acyclic graph)– strict hierarchy (layers)– tree

38©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 39: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

In a picture:

39

chaos

stricthierarchy

hierarchy

tree

©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 40: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Measurements

40

} size# nodes# edges

width

heig

ht

©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 41: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Deviation from a tree

41

stricthierarchy

hierarchy

tree

©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 42: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Tree impurity metric• complete graph with n nodes has n(n-1)/2 edges

• a tree with n nodes has (n-1) edges

• tree impurity for a graph with n nodes and e edges:

m(G) = 2(e-n+1)/(n-1)(n-2)

• this is a “good” measure, in the measurement theory sense

42©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 43: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Desirable properties of any tree impurity metric

• m(G) = 0 if and only if G is a tree

• m(G1) > m(G2) if G1 = G2 + an extra edge

• if G1 and G2 have the same # of “extra” edges wrt their spanning tree, and G1 has more nodes than G2, then m(G1) < m(G2)

• m(G) m(Kn) = 1, where G has n nodes, and Kn is the (undirected) complete graph with n nodes

43©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 44: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Information flow metric

• tree impurity metrics only consider the number of edges, not their “thickness”

• Henri & Kafura’s information flow metric takes this “thickness” into account

• based on notions of local and global flow

• we consider a later variant, developed by Shepperd

44©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 45: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Shepperd’s variant of information flow metric

• there is a local flow from A to B if:– A invokes B and passes it a parameter– B invokes A and A returns a value

• there is a global flow from A to B if A updates some global structure and B reads that structure

• fan-in(M) = # (local and global) flows whose sink is M• fan-out(M) = # (local and global) flows whose source is

M• complexity(M) = (fan-in(M) * fan-out(M))2

• Weakness: all flows count the same

45©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 46: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Object-oriented metrics

46

• WMC: Weighted Methods per Class

• DIT: Depth of Inheritance Tree

• NOC: Number Of Children

• CBO: Coupling Between Object Classes

• RFC: Response For a Class

• LCOM: Lack of COhesion of a Method

©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 47: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Weighted Methods per Class

47

• measure for size of class

• WMC = c(i), i = 1, …, n (number of methods)

• c(i) = complexity of method i

• mostly, c(i) = 1

©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 48: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Depth of Class in Inheritance Tree

• DIT = distance of class to root of its inheritance tree

• DIT is somewhat language-dependent

• widely accepted heuristic: strive for a forest of classes, a collection of inheritance trees of medium height

48©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 49: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Number Of Children

49

• NOC: counts immediate descendants

• higher values NOC are considered bad:– possibly improper abstraction of the parent class– also suggests that class is to be used in a variety of

settings, which will make it more error prone.

©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 50: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Coupling Between Object Classes• two classes are coupled if a method of one class

uses a method or state variable of another class

• CBO = count of all classes a given class is coupled with

• high values: something is wrong

• all couplings are counted alike; refinements are possible

50©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 51: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

More on CBO

• Although all couplings are considered equal, it is reasonable to say:– Access to state variables is worse than mere

parameter passing– Access to elements of a foreign class is worse than

access to elements of a superclass– Passing many complex parameters is worse than

passing a few simple parameters– Messages that conform to Demeter’s Law are

better than those which do not

Page 52: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Demeter’s Law

• The Law of Demeter is a generally accepted design heuristic for OO systems.

• It states that the methods of a class should depend only on the top-level structure of their own class.

• More specifically, in the context of a class C with method M, M should only send messages to – The parameters of C– The state variables of C– C itself

Page 53: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Response For a Class

• RFC measures the “immediate surroundings” of a class• RFC = size of the “response set”• response set = {M} {Ri}, the set of messages that may

potentially be executed if a message is sent to an object of class C.

• Messages are measured one level deep.

53

M1

M3

M2

R1

Larger values of RFC make comprehension of a class more difficult

and increase test time and complexity.

Page 54: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Lack of Cohesion of a Method• cohesion = glue that keeps the module (class)

together• if all methods use the same set of state variables:

OK, & that is the glue• if some methods use a subset of the state variables,

and others use another subset, the class lacks cohesion

• LCOM = number of disjoint sets of methods in a class• two methods in the same set share at least one state

variable• The preferred value for LCOM is 0.

54©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 55: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

OO metrics

• WMC, CBO, RFC, LCOM most useful– Predict fault proneness during design– Strong relationship to maintenance effort

• The merits of DIT and NCO remain somewhat unclear

• Many OO metrics correlate strongly with size• It remains questionable whether these metrics

tell more than a plain LOC code.55

Page 56: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

OOAD Methods

56

• three major steps:

1 identify the objects

2 determine their attributes and services

3 determine the relationships between objects

©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 57: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

(Part of) problem statement

Design the software to support the operation of a public library. The system has a number of stations for customer transactions. These stations are operated by library employees. When a book is borrowed, the identification card of the client is read. Next, the station’s bar code reader reads the book’s code. When a book is returned, the identification card is not needed and only the book’s code needs to be read.

57©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 58: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Candidate objects

58

• software• library• system• station• customer• transaction• book• library employee• identification card• client• bar code reader• book’s code

©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 59: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Carefully consider candidate list• eliminate implementation constructs, such as “software”• replace or eliminate vague terms: “system” “computer”• equate synonymous terms: “customer” and “client” “client”• eliminate operation names, if possible (such as “transaction”)• be careful in what you really mean: can a client be a library employee? Is

it “book copy” rather than “book”?• eliminate individual objects (as opposed to classes). “book’s code”

attribute of “book copy”

59©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 60: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Relationships• From the problem statement:

– employee operates station– station has bar code reader– bar code reader reads book copy– bar code reader reads identification card

• Tacit knowledge:

– library owns computer– library owns stations– computer communicates with station– library employs employee– client is member of library– client has identification card

60©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 61: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Result: initial class diagram

61©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 62: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Usage scenario sequence diagram

62©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 63: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Antipatterns

63

• Patterns describe desirable behavior

• Antipatterns describe situations one had better avoid

• In agile approaches (XP), refactoring is applied whenever an antipattern has been introduced

©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 64: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Example antipatterns• God class: class that holds most responsibilities• Lava flow: dead code• Poltergeist: class with few responsibilities and a

short life• Golden Hammer: solution that does not fit the

problem• Stovepipe: (almost) identical solutions at

different places• Swiss Army Knife: excessively complex class

interface

64©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet

Page 65: Software Design Main issues:  decompose system into parts  many attempts to measure the results  design as product  design as process ©2008 John Wiley.

Conclusion

• Essence of the design process: decompose system into parts

• Desirable properties of a decomposition: coupling/cohesion, information hiding, (layers of) abstraction

• There have been many attempts to express these properties in numbers

65©2008 John Wiley & Sons Ltd.

www.wileyeurope.com/college/van vliet