Download presentation
Presentation is loading. Please wait.
Published byOsborne Francis Modified over 9 years ago
1
1 Declaratively Codifying Software Architectures Using Virtual Software Classifications Kim Mens Kim Mens, Roel Wuyts, Theo D’Hondt Programming Technology Lab Vrije Universiteit Brussel Brussels, Belgium TOOLS Europe 1999, June 7-10, Nancy, France
2
2 Research motivation zWe are interested in software evolution z“Reuse contract” approach supports automated checking of evolution conflicts zReuse contracts have been applied to implementation and design level zCan reuse contracts be applied to architectural level? z…
3
TOOLS Europe 1999, June 7-10, Nancy, France 3 Research motivation z... zCan reuse contracts be applied to reason about conflicts in between levels? zPh.D. thesis: yAssess impact of an evolving design or implementation on an existing architecture yAssess impact of an evolving architecture on an existing design or implementation
4
TOOLS Europe 1999, June 7-10, Nancy, France 4 First step: conformance checking to architectures zArchitectural mismatch and erosion yarchitectural models do not match their actual realization in source code ysource code “drifts away” from architecture zA formalism is needed to ycodify software architecture at a sufficiently abstract level yautomatically check conformance of source code to the software architecture
5
TOOLS Europe 1999, June 7-10, Nancy, France 5 Followed approach zArchitectural model ycomponents (primitive and composite) yconnectors (relations between components) ydeclarative mapping to source code zAutomated conformance checking of source code to architectural model zMedium = SOUL, a reflective declarative language implemented in Smalltalk
6
TOOLS Europe 1999, June 7-10, Nancy, France 6 Followed approach: SOUL zSmalltalk Open Unification Language zPROLOG-like declarative programming language zImplemented in Smalltalk (because of its good reflective capabilities) zLogic inferencing over Smalltalk code zIntegrated with Smalltalk development environment
7
TOOLS Europe 1999, June 7-10, Nancy, France 7 SOUL Syntax: facts, rules and queries Fact isArchitectureName(ruleInterpreter). Rule usesMM(?Method1,?Method2) if methodName(?Method2,?MethodName2), isSend(?MethodName2,?Method1). Query isArchitectureName(compiler). Query usesMM(?Method1,?Method2). Query checkArchitecture(ruleInterpreter).
8
TOOLS Europe 1999, June 7-10, Nancy, France 8 SOUL Syntax: symbiosis with Smalltalk Fact defaultTransitiveClosure([3]). Rule class(?C) if constant(?C), [ SOULExplicitMLI current isClass: ?C ]. Rule class(?C) if variable(?C), generate(?C, [ SOULExplicitMLI current allClasses ]). Query method([String],?M), methodName(?M,[#asText]).
9
TOOLS Europe 1999, June 7-10, Nancy, France 9 SOUL: Layered framework of rules zCore layer yprimitive facts and rules of the logic language facts and rules that reify Smalltalk source code artifacts: class(?Class) method(?Class,?Method) zBasic layer implement language-independent predicates usesMM(?M1,?M2)hierarchy(?Super,?Sub) zDesign layer zArchitectural layer
10
TOOLS Europe 1999, June 7-10, Nancy, France 10 Followed approach: architectural model zComponents: yPrimitive components xdefined in terms of virtual classifications yComposite components xdefined in terms of a sub-architecture zConnectors xhigh-level logic relationships among components zDeclarative mapping to source code
11
TOOLS Europe 1999, June 7-10, Nancy, France 11 Architecture of a rule interpreter
12
TOOLS Europe 1999, June 7-10, Nancy, France 12 Primitive components: virtual classifications zSoftware classification yis a set of related software artifacts ycan contain artifacts spread throughout code yone artifact can belong to many classifications z“Virtual” software classifications yare special software classifications that “compute” their elements ymap architectural components to source-code artifacts and dependencies
14
TOOLS Europe 1999, June 7-10, Nancy, France 14 Connector = relationship among virtual classifications zDescribe high level logic relationship such as: “uses”, “creates”, “accesses”, … zRelationships over sets of software artifacts ysimple: based on source code dependencies ymore complex: transitive closures, programming conventions, design styles, … ycombinations of more primitive relationships zHave a source and target cardinality ( , )
15
16
TOOLS Europe 1999, June 7-10, Nancy, France 16 Example: architecture of a rule interpreter
17
TOOLS Europe 1999, June 7-10, Nancy, France 17 Primitive components: virtual classifications Rule methodIsClassifiedAs(?M,ruleSelection) if classIsClassifiedAs(?C,soulClass), classImplements(?C,[#unifyingClauses:],?M). Rule classIsClassifiedAs(?C,input) if classIsClassifiedAs(?C,soulApplication), methodIsClassifiedAs(?M,ruleInterpreter), usesCM(?Class,?Method).
18
TOOLS Europe 1999, June 7-10, Nancy, France 18 Followed approach: conformance checking Query checkArchitecture(ruleInterpreter). uses(all,input,some,queryInterpreter). classification(input,?I), classification(queryInterpreter,?Q) ?A1 ?I : ?A2 ?Q : uses(?A1,?A2) Rule uses(?A1,?A2) if method(?A1), method(?A2), usesMM(?A1,?A2).
19
TOOLS Europe 1999, June 7-10, Nancy, France 19 Composite components: sub-architectures
20
TOOLS Europe 1999, June 7-10, Nancy, France 20 Architectural patterns Rule architecture(pipeAndFilter,?Filters,?Pipes) ifisFiniteList(?Filters), pipeAndFilter(?Filters,?Pipes). Rule pipeAndFilter(, ) ifpipeAndFilter(,?Pipes). Fact pipeAndFilter(,<>).
21
TOOLS Europe 1999, June 7-10, Nancy, France 21 Future work zMore experiments / case-studies needed. zReuse contracts for architectures zPh.D. on unanticipated architectural evolution zSOUL as a general medium to express design as an explicit abstraction of implementation
22
TOOLS Europe 1999, June 7-10, Nancy, France 22 Questions? zE-mail: ykimmens@vub.ac.be yrwuyts@vub.ac.be ytjdhondt@vub.ac.be zURLs: yReuse contracts: progwww.vub.ac.be/pools/rcs/ progwww.vub.ac.be/pools/rcs/ ySOUL: progwww.vub.ac.be/pools/soul/progwww.vub.ac.be/pools/soul/ ? ? ?
23
TOOLS Europe 1999, June 7-10, Nancy, France 23 Architecture of the SOUL rule based system
24
TOOLS Europe 1999, June 7-10, Nancy, France 24 The query interpreter sub- architecture
25
TOOLS Europe 1999, June 7-10, Nancy, France 25 Port bindings for the query interpreter sub-architecture
26
TOOLS Europe 1999, June 7-10, Nancy, France 26 Revised architecture of the SOUL rule based system
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.