analysis patterns daniel jackson mit lab for computer science 6898: advanced topics in software...

16
analysis patterns Daniel Jackson MIT Lab for Computer Science 6898: Advanced Topics in Software Design March 4, 2002

Upload: milton-ellis

Post on 04-Jan-2016

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Analysis patterns Daniel Jackson MIT Lab for Computer Science 6898: Advanced Topics in Software Design March 4, 2002

analysispatterns

Daniel JacksonMIT Lab for Computer Science

6898: Advanced Topics in Software DesignMarch 4, 2002

Page 2: Analysis patterns Daniel Jackson MIT Lab for Computer Science 6898: Advanced Topics in Software Design March 4, 2002

2

what are analysis patterns?

background› Martin Fowler, 1996› based on experience applying object modelling to

large corporate information systems› focus on models themselves, not process

according to MF› ideas from one context useful in another› useful across business areas (health, finance,

manufacturing)› type models provide ‘language of the business’› modelling = Business Process Reengineering› simple models obvious only in retrospect

Page 3: Analysis patterns Daniel Jackson MIT Lab for Computer Science 6898: Advanced Topics in Software Design March 4, 2002

3

plan

look more deeply into one pattern› “Referring to objects”

apply Alloy› express constraints formally› investigate dynamic aspects too

consider applications of pattern› what problems does this fit?

Page 4: Analysis patterns Daniel Jackson MIT Lab for Computer Science 6898: Advanced Topics in Software Design March 4, 2002

4

example: naming

motivation› systems need to deal with entities using names› humans use names to refer to entities› how names/entities are related can be tricky› (anything object oriented here?)

patterns› Referring to Objects› Identification Scheme› Object Merge

Page 5: Analysis patterns Daniel Jackson MIT Lab for Computer Science 6898: Advanced Topics in Software Design March 4, 2002

5

objects & names

sig Object {}sig Name {}

sig Scheme {objects: set Object,names: set Name,denotes: names -> objects}

Name

names

Object

objectsdenotes

Page 6: Analysis patterns Daniel Jackson MIT Lab for Computer Science 6898: Advanced Topics in Software Design March 4, 2002

6

static constraints

fun UniqueIdentifiers (s: Scheme) {func (s.denotes)}

fun NoAliases (s: Scheme) {inj (s.denotes)}

fun AllNamed (s: Scheme) {s.objects in ran (s.denotes)}

fun AllDenote (s: Scheme) {s.names in dom (s.denotes)}

Page 7: Analysis patterns Daniel Jackson MIT Lab for Computer Science 6898: Advanced Topics in Software Design March 4, 2002

7

play time…

Page 8: Analysis patterns Daniel Jackson MIT Lab for Computer Science 6898: Advanced Topics in Software Design March 4, 2002

8

matching constraints to problemsconstraints› UniqueIdentifiers› NoAliases› AllDenote› AllNamed

problems› machine/mac, machine/IP, machine/domain name› person/social security number› aircraft/flight number› MIT class/class number› medical procedure/health plan treatment code› Java object/heap address› roadway/number

Page 9: Analysis patterns Daniel Jackson MIT Lab for Computer Science 6898: Advanced Topics in Software Design March 4, 2002

9

dynamic constraints

questions› can the name/object mapping change?› if an object exists at two times, are its names the

same?› if a name exists at two times, are its objects the

same?› can names be recycled?

Page 10: Analysis patterns Daniel Jackson MIT Lab for Computer Science 6898: Advanced Topics in Software Design March 4, 2002

10

sample dynamic constraints

fun RetainNames (s, s': Scheme) {all o: s.objects & s'.objects | s.denotes.o = s'.denotes.o}

fun NamesSticky' (s, s': Scheme) {all n: s.names & s'.names |

all o: s.objects & s'.objects |n->o in s.denotes iff n->o in s'.denotes

}

Page 11: Analysis patterns Daniel Jackson MIT Lab for Computer Science 6898: Advanced Topics in Software Design March 4, 2002

11

a generic constraint

fun FixedFor (s, s': Scheme, ns: set Name, os: set Object) {let r = ns->os | s.denotes & r = s'.denotes & r}

says› for the names in ns and objects in os› naming is fixed

symmetrical in s and s’› surprising?

Page 12: Analysis patterns Daniel Jackson MIT Lab for Computer Science 6898: Advanced Topics in Software Design March 4, 2002

12

varieties of dynamic constraintfun NamingFixed (s, s': Scheme) {

FixedFor (s,s',Name,Object)}

fun Sticky (s, s': Scheme) {FixedFor (s,s',s.names & s'.names, s.objects & s'.objects)}

fun NSticky (s, s': Scheme) {FixedFor (s,s',s.names & s'.names, Object)}

fun OSticky (s, s': Scheme) {FixedFor (s,s',Name, s.objects & s'.objects)}

Page 13: Analysis patterns Daniel Jackson MIT Lab for Computer Science 6898: Advanced Topics in Software Design March 4, 2002

13

play time

Page 14: Analysis patterns Daniel Jackson MIT Lab for Computer Science 6898: Advanced Topics in Software Design March 4, 2002

14

identification scheme

sig SchemeName {}

sig World {schemes: set Scheme,names: set Name,scheme: names -> schemes}

constraints› naming constraints across schemes?› how can schemes change?

Page 15: Analysis patterns Daniel Jackson MIT Lab for Computer Science 6898: Advanced Topics in Software Design March 4, 2002

15

a sample operation

code refinement› classification scheme› each name refers to set of objects› find need to refine classification by introducing new

names

fun SameNames (s: Scheme): Object -> Object {result = {o,o': s.objects | s.denotes.o =

s.denotes.o'}}

fun Refines (s, s': Scheme) {s.objects in s'.objectssome SameNames (s) - SameNames (s')NSticky (s, s')AllDenote (s) AllDenote (s')AllNamed (s) AllNamed (s') }

Page 16: Analysis patterns Daniel Jackson MIT Lab for Computer Science 6898: Advanced Topics in Software Design March 4, 2002

16

talking points

“conceptual patterns only useful to software engineers if they can see how to implement them”

“models are not right or wrong; they are more or less useful”

“analysis & design techniques may be rigorous but they don’t have to be”

“I try to develop very conceptual models that focus entirely on the problem, yet my techniques are object oriented, and hence reflect a design approach”