09.08.2013 Views

Sam Supakkul -- RE10.. - The University of Texas at Dallas

Sam Supakkul -- RE10.. - The University of Texas at Dallas

Sam Supakkul -- RE10.. - The University of Texas at Dallas

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

An An NFR NFR P<strong>at</strong>tern P<strong>at</strong>tern Approach Approach to to Dealing<br />

Dealing<br />

with with Non Non-Functional Non Functional Requirements<br />

Presenter: <strong>Sam</strong> <strong>Supakkul</strong><br />

Outline Outline<br />

Outline<br />

Motiv<strong>at</strong>ion<br />

<strong>The</strong> Approach<br />

NFR P<strong>at</strong>terns<br />

P<strong>at</strong>tern Organiz<strong>at</strong>ion<br />

P<strong>at</strong>tern Reuse<br />

Tool Support<br />

Case Study<br />

Conclusion<br />

Authors:<br />

<strong>Sam</strong> <strong>Supakkul</strong><br />

Tom Hill<br />

Lawrence Chung<br />

<strong>The</strong> Univ. <strong>of</strong> <strong>Texas</strong> <strong>at</strong> <strong>Dallas</strong><br />

<strong>The</strong>in Than Tun<br />

<strong>The</strong> Open <strong>University</strong>, UK<br />

Is it beautiful to you?<br />

Julio CSP Leite<br />

PUC-Rio, Brazil


Dealing Dealing with with NFRs involves involves many many concepts concepts and<br />

and<br />

activities activities<br />

activities<br />

[altern<strong>at</strong>ives]<br />

[selection]<br />

[criticalityl]<br />

[s<strong>of</strong>tgoal] [side-effect]<br />

!!Aesthetic<br />

++<br />

++<br />

--<br />

+<br />

Cost<br />

++<br />

[side-effect]<br />

! Memorable<br />

Layered shells Dome Pyramid<br />

-<br />

++<br />

++ Make + Help -- Break - Hurt<br />

-<br />

++


Some Some aspects aspects <strong>of</strong> <strong>of</strong> NFRs NFRs are are achieved achieved achieved by<br />

by<br />

mitig<strong>at</strong>ing mitig<strong>at</strong>ing mitig<strong>at</strong>ing known known known problems problems<br />

problems<br />

!! Security <strong>of</strong> credit card info<br />

- / --<br />

Break-in wireless network<br />

Masquerade user login<br />

Steal credit card info<br />

- / --<br />

Password encryption<br />

Biometric authentic<strong>at</strong>ion<br />

2-factor authentic<strong>at</strong>ion<br />

++/+/-/--<br />

!Trustworthiness<br />

++/+/-/--<br />

++ Make + Help -- Break - Hurt<br />

Cost


Having Having Having Having insufficient insufficient insufficient insufficient insufficient knowledge knowledge knowledge knowledge <strong>of</strong> <strong>of</strong><br />

<strong>of</strong><br />

<strong>of</strong> NFRs NFRs<br />

NFRs<br />

NFRs can can can can lead lead lead lead to<br />

to<br />

to<br />

to<br />

dire dire dire dire dire consequences<br />

consequences<br />

consequences<br />

consequences<br />

TJX unable to prevent the hacker<br />

1. Break-in wireless network<br />

2. Masquerade user login<br />

3. Steal credit card info<br />

(2 nd ) Biggest credit card<br />

theft<br />

45.7M credit cards stolen<br />

$20M in fraudulent transactions<br />

TJX used security measures<br />

ID/password authentic<strong>at</strong>ion<br />

D<strong>at</strong>a encryption<br />

But TJX did not know enough<br />

Potential security problems<br />

Applicable mitig<strong>at</strong>ions<br />

Proper trade<strong>of</strong>f among NFRs


Having Having Having Having sufficient sufficient sufficient sufficient knowledge knowledge knowledge knowledge <strong>of</strong> <strong>of</strong><br />

<strong>of</strong><br />

<strong>of</strong> NFRs NFRs<br />

NFRs<br />

NFRs is is is is difficult<br />

difficult<br />

difficult<br />

difficult<br />

because because because because NFR NFR NFR NFR knowledge knowledge knowledge knowledge is<br />

is<br />

is<br />

is<br />

Difficult to capture<br />

Problems, solutions, domain<br />

Complete, correct<br />

Conceptual modeling and reasoning<br />

Difficult to organize<br />

C<strong>at</strong>aloging knowledge<br />

Rel<strong>at</strong>ing similar knowledge<br />

General – Specific<br />

Class – Instance<br />

Combining knowledge<br />

Difficult to reuse<br />

Choosing appropri<strong>at</strong>e knowledge<br />

(Re-)cre<strong>at</strong>ing (Re )cre<strong>at</strong>ing visual models


This This This talk talk presents presents a a p<strong>at</strong>tern p<strong>at</strong>tern-based p<strong>at</strong>tern p<strong>at</strong>tern based approach approach to<br />

to<br />

capturing, capturing, capturing, organizing, organizing, organizing, and and and reusing reusing reusing NFR NFR NFR knowledge knowledge<br />

knowledge<br />

Objective Objective p<strong>at</strong>tern<br />

p<strong>at</strong>tern<br />

Altern<strong>at</strong>ives Altern<strong>at</strong>ives Altern<strong>at</strong>ives p<strong>at</strong>tern p<strong>at</strong>tern<br />

p<strong>at</strong>tern<br />

Selection Selection p<strong>at</strong>tern<br />

p<strong>at</strong>tern<br />

Capturing<br />

Problem Problem p<strong>at</strong>tern<br />

p<strong>at</strong>tern<br />

5 6 7<br />

234 1<br />

instanti<strong>at</strong>ion<br />

generaliz<strong>at</strong>ion<br />

aggreg<strong>at</strong>ion<br />

decomposition<br />

specializ<strong>at</strong>ion<br />

Organizing<br />

Reusing<br />

Tool support<br />

classific<strong>at</strong>ion


4 4 kinds kinds <strong>of</strong> <strong>of</strong> NFR NFR p<strong>at</strong>terns p<strong>at</strong>terns for for capturing capturing different different kinds<br />

kinds<br />

<strong>of</strong> <strong>of</strong> <strong>of</strong> NFR NFR knowledge<br />

knowledge<br />

Objective Objective p<strong>at</strong>tern<br />

p<strong>at</strong>tern<br />

Altern<strong>at</strong>ives Altern<strong>at</strong>ives Altern<strong>at</strong>ives p<strong>at</strong>tern p<strong>at</strong>tern<br />

p<strong>at</strong>tern<br />

Selection Selection Selection p<strong>at</strong>tern<br />

p<strong>at</strong>tern<br />

Capturing<br />

Problem Problem p<strong>at</strong>tern<br />

p<strong>at</strong>tern<br />

5 6 7<br />

234 1


An An objective objective p<strong>at</strong>tern p<strong>at</strong>tern captures captures a a definition definition <strong>of</strong> <strong>of</strong> an<br />

an<br />

NFR NFR as as a a a s<strong>of</strong>tgoal s<strong>of</strong>tgoal (and sub sub-goals) sub<br />

goals) to to to be be achieved<br />

achieved<br />

An objective p<strong>at</strong>tern<br />

Name: Name:<br />

Name:<br />

Name: FISMA Security Objectives<br />

Credential<br />

Credential<br />

Credential<br />

Credential<br />

Sources: US FISMA Act <strong>of</strong> 2002<br />

Authors: <strong>Sam</strong> <strong>Supakkul</strong><br />

Endorsements:<br />

Known uses: US government agencies<br />

Applicability Applicability<br />

Applicability<br />

Applicability (5W2H questions)<br />

Domain (Who): (Who) Government<br />

Topic (Wh<strong>at</strong>): (Wh<strong>at</strong>) Inform<strong>at</strong>ion, d<strong>at</strong>a<br />

Type (Why): (Why) Security<br />

Phase (When): (When) Requirements<br />

Artifact (Where): (Where) World<br />

Applic<strong>at</strong>ion (How): (How) Autom<strong>at</strong>ed<br />

Implic<strong>at</strong>ion (How much): much) Regul<strong>at</strong>ion<br />

Knowledge<br />

Knowledge<br />

Knowledge<br />

Knowledge<br />

World [per the WRSPM ref. model]


In the c<strong>at</strong>alog<br />

Demo Demo Demo video:<br />

video:<br />

applying applying an an objective objective p<strong>at</strong>tern<br />

p<strong>at</strong>tern<br />

During the requirements engineering <strong>of</strong> a project<br />

Tools used<br />

<strong>The</strong> NFR P<strong>at</strong>tern Assistant (utdallas.edu/~supakkul/tools/NFRPassist)<br />

<strong>The</strong> RE-Tools (utdallas.edu/~supakkul/tools/RE-Tools)


A A problem problem problem p<strong>at</strong>tern p<strong>at</strong>tern p<strong>at</strong>tern captures captures s<strong>of</strong>t s<strong>of</strong>t-problems s<strong>of</strong>t problems or<br />

or<br />

obstacles obstacles to to to achieving achieving an an NFR NFR NFR s<strong>of</strong>tgoal<br />

s<strong>of</strong>tgoal<br />

A problem p<strong>at</strong>tern


An An altern<strong>at</strong>ives altern<strong>at</strong>ives p<strong>at</strong>tern p<strong>at</strong>tern captures captures altern<strong>at</strong>ive altern<strong>at</strong>ive means<br />

means<br />

or or altern<strong>at</strong>ive altern<strong>at</strong>ive altern<strong>at</strong>ive solutions solutions solutions with with with side side-effect side side effect effect inform<strong>at</strong>ion inform<strong>at</strong>ion<br />

inform<strong>at</strong>ion<br />

An altern<strong>at</strong>ive-solutions p<strong>at</strong>tern


A A selection selection p<strong>at</strong>tern p<strong>at</strong>tern captures<br />

captures<br />

an an an applic<strong>at</strong>ion applic<strong>at</strong>ion applic<strong>at</strong>ion independent independent independent selection selection selection scheme scheme<br />

scheme<br />

Weight-based quantit<strong>at</strong>ive selection<br />

altern<strong>at</strong>ives<br />

5 6 7<br />

234 1<br />

w(!)=0.5<br />

!<br />

Trustworthiness [Security]<br />

w(+)=0.5 w(++)=1.0<br />

+ ++<br />

Retina authentic<strong>at</strong>ion<br />

Fingerprint authentic<strong>at</strong>ion<br />

w=0.25+... w=0.5+...<br />

!<br />

Trustworthiness [Security]<br />

r(+!)=7 r(++!)=6<br />

+ ++<br />

Retina authentic<strong>at</strong>ion<br />

Fingerprint authentic<strong>at</strong>ion<br />

r=7+... r=6+...<br />

Rank Rank-based<br />

Rank based qualit<strong>at</strong>ive selection<br />

Weight Weight-based<br />

Weight Weight based<br />

Selection Selection = Highest Highest cumul<strong>at</strong>ive weight<br />

weight<br />

weight(Fingerprint) = w(!Trust.) x w(+) + …<br />

= 0.25 + …<br />

Widely used, but subjective<br />

Rank-based<br />

Selection = Best est cumul<strong>at</strong>ive ranking<br />

ranking<br />

rank(Fingerprint) = r(+!Trust.) + …<br />

= 7 + …<br />

Less subjective, but need a ranking scale


Before<br />

After<br />

Demo Demo video:<br />

video:<br />

applying applying applying a a a weight weight-based weight weight based based selection selection p<strong>at</strong>tern p<strong>at</strong>tern<br />

p<strong>at</strong>tern<br />

W+<br />

W+<br />

Tools used<br />

<strong>The</strong> NFR P<strong>at</strong>tern Assistant (utdallas.edu/~supakkul/tools/NFRPassist)<br />

<strong>The</strong> RE-Tools (utdallas.edu/~supakkul/tools/RE-Tools)


P<strong>at</strong>terns P<strong>at</strong>terns may may be be organized organized along along the<br />

the<br />

generaliz<strong>at</strong>ion, generaliz<strong>at</strong>ion, aggreg<strong>at</strong>ion, aggreg<strong>at</strong>ion, aggreg<strong>at</strong>ion, and and and classific<strong>at</strong>ion classific<strong>at</strong>ion classific<strong>at</strong>ion dim.<br />

dim.<br />

Objective Objective p<strong>at</strong>tern<br />

p<strong>at</strong>tern<br />

Altern<strong>at</strong>ives Altern<strong>at</strong>ives Altern<strong>at</strong>ives p<strong>at</strong>tern p<strong>at</strong>tern<br />

p<strong>at</strong>tern<br />

Selection Selection p<strong>at</strong>tern<br />

p<strong>at</strong>tern<br />

Capturing<br />

Problem Problem p<strong>at</strong>tern<br />

p<strong>at</strong>tern<br />

5 6 7<br />

234 1<br />

instanti<strong>at</strong>ion<br />

generaliz<strong>at</strong>ion<br />

aggreg<strong>at</strong>ion<br />

decomposition<br />

specializ<strong>at</strong>ion<br />

Organizing<br />

Reusing<br />

Tool support<br />

classific<strong>at</strong>ion


Generaliz<strong>at</strong>ion<br />

Aggreg<strong>at</strong>ion<br />

Classific<strong>at</strong>ion<br />

A A specialized specialized p<strong>at</strong>tern p<strong>at</strong>tern captures captures more more specific<br />

specific<br />

knowledge knowledge than than than th<strong>at</strong> th<strong>at</strong> <strong>of</strong> <strong>of</strong> <strong>of</strong> the the generalized generalized generalized p<strong>at</strong>tern<br />

p<strong>at</strong>tern<br />

super-p<strong>at</strong>tern sub-p<strong>at</strong>tern<br />

P2<br />

R2<br />

[US FISMA Law]<br />

R1<br />

R3<br />

P1 specializes P2<br />

R4<br />

P1<br />

R1'<br />

R2'<br />

R5<br />

[Payment Card Industry]


Generaliz<strong>at</strong>ion<br />

Aggreg<strong>at</strong>ion<br />

Classific<strong>at</strong>ion<br />

<strong>The</strong> <strong>The</strong> specialized specialized p<strong>at</strong>tern p<strong>at</strong>tern is is more more specific<br />

specific<br />

in in in breadth breadth breadth or or or in in in depth depth<br />

depth<br />

P2<br />

R1<br />

Payment Card Industry (PCI):<br />

Security = Confidentiality<br />

US Law:<br />

Security = Confidentiality, Integrity, Avail.<br />

super-p<strong>at</strong>tern sub-p<strong>at</strong>tern<br />

More More More More specific specific specific specific in in in in breadth breadth<br />

breadth<br />

breadth More More More More specific specific specific specific in in in in depth<br />

depth<br />

depth<br />

depth<br />

P2 P1 P2 P1<br />

R2<br />

R2'<br />

PCI concerned with<br />

Accountability beyond Privacy<br />

R3<br />

R4<br />

P1<br />

R1'<br />

R2'<br />

R5<br />

R5


Generaliz<strong>at</strong>ion<br />

Aggreg<strong>at</strong>ion<br />

Classific<strong>at</strong>ion<br />

A A composite composite p<strong>at</strong>tern p<strong>at</strong>tern assembles assembles smaller smaller p<strong>at</strong>terns p<strong>at</strong>terns to<br />

to<br />

capture capture capture a a a larger larger larger chunk chunk chunk <strong>of</strong> <strong>of</strong> <strong>of</strong> rel<strong>at</strong>ed rel<strong>at</strong>ed rel<strong>at</strong>ed knowledge<br />

knowledge<br />

P1<br />

P4<br />

P3<br />

P1 combines P2,P3,P4<br />

where P2 succeeds P3 and<br />

P3 succeeds P4<br />

P2


Generaliz<strong>at</strong>ion<br />

Aggreg<strong>at</strong>ion<br />

Classific<strong>at</strong>ion<br />

A A p<strong>at</strong>tern p<strong>at</strong>tern can can be be used used used as as a a templ<strong>at</strong>e templ<strong>at</strong>e to<br />

to<br />

instanti<strong>at</strong>e instanti<strong>at</strong>e instanti<strong>at</strong>e occurrence occurrence occurrence p<strong>at</strong>terns p<strong>at</strong>terns<br />

p<strong>at</strong>terns<br />

B1 is a binding specific<strong>at</strong>ion<br />

O1 is a specializ<strong>at</strong>ion <strong>of</strong> M1 or<br />

O1 is sub-goal <strong>of</strong> M1<br />

w.r.t. reference model R1


Dealing Dealing Dealing with with NFR NFR knowledge knowledge is is defined defined by by 5<br />

5<br />

oper<strong>at</strong>ions oper<strong>at</strong>ions<br />

oper<strong>at</strong>ions<br />

Objective Objective p<strong>at</strong>tern<br />

p<strong>at</strong>tern<br />

Altern<strong>at</strong>ives Altern<strong>at</strong>ives Altern<strong>at</strong>ives p<strong>at</strong>tern p<strong>at</strong>tern<br />

p<strong>at</strong>tern<br />

Selection Selection p<strong>at</strong>tern<br />

p<strong>at</strong>tern<br />

Capturing<br />

Problem Problem p<strong>at</strong>tern<br />

p<strong>at</strong>tern<br />

5 6 7<br />

234 1<br />

instanti<strong>at</strong>ion<br />

generaliz<strong>at</strong>ion<br />

aggreg<strong>at</strong>ion<br />

decomposition<br />

specializ<strong>at</strong>ion<br />

Organizing<br />

Reusing<br />

Tool support<br />

classific<strong>at</strong>ion


P<strong>at</strong>tern<br />

P<strong>at</strong>tern<br />

oper<strong>at</strong>ions oper<strong>at</strong>ions<br />

oper<strong>at</strong>ions<br />

Example<br />

Example<br />

Source Model<br />

An An action action-oriented action action oriented perspective<br />

perspective<br />

p<strong>at</strong>ternize<br />

compose<br />

Credentials<br />

Authors<br />

Sources<br />

Applicability<br />

Known Uses Who Wh<strong>at</strong> Why Endorsements<br />

Where How much When<br />

Refinement<br />

Rules<br />

apply<br />

Target Model


We We define define define 25 25 refinement refinement rules rules rules for for for tool tool support<br />

support<br />

2 2 for for Objective, Objective, 8 8 for for Problem, Problem, 10 10 for for Altern<strong>at</strong>ives, Altern<strong>at</strong>ives, 5 5 for for Selection Selec<br />

tion<br />

Objective Objective p<strong>at</strong>tern<br />

p<strong>at</strong>tern<br />

Altern<strong>at</strong>ives Altern<strong>at</strong>ives Altern<strong>at</strong>ives p<strong>at</strong>tern p<strong>at</strong>tern<br />

p<strong>at</strong>tern<br />

Selection Selection p<strong>at</strong>tern<br />

p<strong>at</strong>tern<br />

Capturing<br />

Problem Problem p<strong>at</strong>tern<br />

p<strong>at</strong>tern<br />

5 6 7<br />

234 1<br />

instanti<strong>at</strong>ion<br />

generaliz<strong>at</strong>ion<br />

aggreg<strong>at</strong>ion<br />

decomposition<br />

specializ<strong>at</strong>ion<br />

Organizing<br />

Reusing<br />

Tool support<br />

classific<strong>at</strong>ion


Refinement Refinement rules rules are are extracted extracted by by “p<strong>at</strong>ternize p<strong>at</strong>ternize p<strong>at</strong>ternize” p<strong>at</strong>ternize<br />

and and and used used for for model model transform<strong>at</strong>ion transform<strong>at</strong>ion by by “apply apply apply” apply<br />

Confidentiality<br />

Before After<br />

Security<br />

Target M<br />

Extracted<br />

rule graph<br />

Privacy<br />

succeed<br />

Confidentiality<br />

Proprietary<br />

Transform<br />

Before After<br />

Security<br />

Confidentiality<br />

Security<br />

Integrity<br />

Availability<br />

succeed succeed<br />

Integrity<br />

Integrity<br />

Authenticity Non-repudi<strong>at</strong>ion<br />

Privacy<br />

Confidentiality<br />

NFRDecomposition<br />

Refinement rule<br />

Before After Before After Before After<br />

Availability<br />

Timeliness<br />

Security<br />

Integrity<br />

Availability<br />

Proprietary<br />

Timeliness<br />

Authenticity Non-repudi<strong>at</strong>ion<br />

Availability<br />

Reliability<br />

Reliability<br />

Target M’


<strong>The</strong> <strong>The</strong><br />

<strong>The</strong><br />

<strong>The</strong> NFR NFR NFR NFR NFR P<strong>at</strong>tern P<strong>at</strong>tern P<strong>at</strong>tern P<strong>at</strong>tern Assistant Assistant<br />

Assistant<br />

Assistant for for for for p<strong>at</strong>tern p<strong>at</strong>tern p<strong>at</strong>tern p<strong>at</strong>tern p<strong>at</strong>tern support<br />

support<br />

support<br />

support<br />

<strong>The</strong> <strong>The</strong><br />

<strong>The</strong><br />

<strong>The</strong> RE RE-Tools RE<br />

RE<br />

Tools Tools<br />

Tools<br />

for for for for knowledge knowledge knowledge knowledge modeling<br />

modeling<br />

modeling<br />

modeling<br />

capturing<br />

organizing<br />

reusing<br />

utdallas.edu/~supakkul/tools/NFRPassist<br />

<strong>The</strong> NFR P<strong>at</strong>tern<br />

Assistant<br />

<strong>The</strong> RE-Tools<br />

StarUML<br />

extension<br />

framework<br />

<strong>The</strong> <strong>The</strong> NFR NFR Framework Framework <strong>The</strong> <strong>The</strong> i* i* Framework Framework KAOS KAOS Problem Frames<br />

UML<br />

UML<br />

…(TBD)<br />

utdallas.edu/~supakkul/tools/RE-Tools


<strong>The</strong> <strong>The</strong> <strong>The</strong> <strong>The</strong> approach approach approach approach and and and and the the the the tools tools tools tools have have have have been been been been applied<br />

applied<br />

applied<br />

applied<br />

to to to to the the the the TJX TJX TJX TJX case<br />

case<br />

case<br />

case<br />

Break-in wireless network<br />

Masquerading user login<br />

Steal credit card info<br />

Build for reuse<br />

for<br />

reuse knowledge from TJX<br />

in a different project<br />

1 composite, 5 primitive<br />

<strong>Sam</strong>ple results<br />

Build with reuse<br />

capture reuse


Limit<strong>at</strong>ions Limit<strong>at</strong>ions (future (future (future work)<br />

work)<br />

Tool/usability rel<strong>at</strong>ed<br />

Model elements not captured with the original position<br />

P<strong>at</strong>tern search and selection are currently manual<br />

Some knowledge not captured (need 2 more rules)<br />

Need to support more FRs and NFRs integr<strong>at</strong>ed knowledge<br />

Limited concurrently p<strong>at</strong>tern sharing across groups<br />

Approach rel<strong>at</strong>ed<br />

Costly and time-consuming to learn the not<strong>at</strong>ion and the tool<br />

Need more case studies<br />

Need to support dealing with NFRs during architecture/design


Summary: Summary: <strong>The</strong> <strong>The</strong> difficulty difficulty <strong>of</strong> <strong>of</strong> capturing, capturing, organizing, organizing, reusing reusing <strong>of</strong><br />

<strong>of</strong><br />

NFR NFR NFR knowledge knowledge can can be be allevi<strong>at</strong>ed allevi<strong>at</strong>ed by by the the approach<br />

approach<br />

Difficult to capture<br />

Problems, solutions, domain<br />

Complete, correct<br />

Conceptual modeling and reasoning<br />

Difficult to organize<br />

C<strong>at</strong>aloging knowledge<br />

Rel<strong>at</strong>ing similar knowledge<br />

General – Specific<br />

Class – Instance<br />

Combining knowledge<br />

Difficult to reuse<br />

Choosing appropri<strong>at</strong>e knowledge<br />

Re-cre<strong>at</strong>ing Re cre<strong>at</strong>ing visual models<br />

Fe<strong>at</strong>ures Fe<strong>at</strong>ures Fe<strong>at</strong>ures in in in the the approach approach<br />

approach<br />

Objective, problem, altern<strong>at</strong>ives,<br />

selection p<strong>at</strong>terns<br />

Credentials<br />

Captured s<strong>of</strong>tgoal graphs<br />

By name, type, applicability<br />

Specializ<strong>at</strong>ion, composition,<br />

instanti<strong>at</strong>ion<br />

Applicability info<br />

Refinement rules, tool support


Thank you… Questions & Comments?<br />

Objective Objective p<strong>at</strong>tern p<strong>at</strong>tern<br />

p<strong>at</strong>tern<br />

Altern<strong>at</strong>ives Altern<strong>at</strong>ives Altern<strong>at</strong>ives p<strong>at</strong>tern p<strong>at</strong>tern<br />

p<strong>at</strong>tern<br />

Selection Selection p<strong>at</strong>tern<br />

p<strong>at</strong>tern<br />

Capturing<br />

Problem Problem p<strong>at</strong>tern<br />

p<strong>at</strong>tern<br />

5 6 7<br />

234 1<br />

instanti<strong>at</strong>ion<br />

generaliz<strong>at</strong>ion<br />

aggreg<strong>at</strong>ion<br />

decomposition<br />

specializ<strong>at</strong>ion<br />

Organizing<br />

Reusing<br />

Tool support<br />

classific<strong>at</strong>ion

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!