Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Declaratively Codifying Software Architectures Using Virtual Software Classifications Kim Mens Kim Mens, Roel Wuyts, Theo D’Hondt Programming Technology.

Similar presentations


Presentation on theme: "1 Declaratively Codifying Software Architectures Using Virtual Software Classifications Kim Mens Kim Mens, Roel Wuyts, Theo D’Hondt Programming Technology."— Presentation transcript:

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

13

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


Download ppt "1 Declaratively Codifying Software Architectures Using Virtual Software Classifications Kim Mens Kim Mens, Roel Wuyts, Theo D’Hondt Programming Technology."

Similar presentations


Ads by Google