Download presentation
Presentation is loading. Please wait.
Published byFlora Anthony Modified over 9 years ago
1
kimmens@vub.ac.be1December 2000 Research Overview Dr. Kim Mens Programming Technology Lab Vrije Universiteit Brussel
2
2 Research history n Formal foundations of object orientation u OPUS – a calculus for modeling OO concepts OPUS u Typing dynamic inheritance a novel type system (based on annotated class interfaces) n Software reuse and evolution u Reuse contracts – detecting evolution conflicts Reuse contracts u Architectural conformance checking (PhD) Architectural conformance checking Strong emphasis on: object orientation formal foundations tool support 1994 1995 1996-1998 1999-2000
3
3 OPUS – a calculus for modeling object-oriented concepts n Goal: u study foundations of object-oriented programming languages n A calculus … u very simple syntax u only a few reduction rules n … to model object-oriented concepts: u objects u encapsulation (public/private) u message passing u incremental modification (inheritance)
4
4 Refinement 3 add {+size} Coarsening 3 addMany {-add} Refinement 3 add {+size} Inconsistent Methods addMany needs to be overridden too DesktopFolder xpos, ypos, contents move add addMany {add} SizedFolder add {size} size DesktopFolder xpos, ypos, contents move add addMany SizedFolder add {size} size Reuse contracts – detecting evolution conflicts
5
5 Architectural conformance checking Thesis statement: Focus: u we want an architectural conformance checking approach that is as expressive as possible Restrictions: u object-oriented software (e.g., Smalltalk) u only static structure (i.e., no run-time information) Automated support for checking conformance of the implementation of a software system to its architecture(s) can be achieved in a very expressive way by adopting a declarative meta-programming approach.
6
6 Architectural conformance checking – Conformance mapping Uses Data 1 Uses Data 2 Asks 2 Asks 1 Updates 1 Clause Selector Knowledge Base Rule Interpreter Working Memory ArchitectureImplementationConformance mapping
7
7 Architectural conformance checking – Cross-cutting mappings Uses Data 1 Uses Data 2 Asks 2 Asks 1 Updates 1 Clause Selector Knowledge Base Rule Interpreter Working Memory ArchitectureConformance mapping Implementation qzfdxgf
8
8 Architectural conformance checking – Software classifications Uses Data 1 Uses Data 2 Asks 2 Asks 1 Updates 1 Clause Selector Knowledge Base Rule Interpreter Working Memory ArchitectureImplementation Abstraction Implementation qzfdxgf Architectural Instantiation ruleInterpreter
9
9 Architectural conformance checking – Virtual software classifications classifiedAs(method( ’ruleInterpreter’ ), Method ) :- classifiedAs(class('soul'), Class), interpretingProtocolName(ProtocolName), protocolName(Protocol, ProtocolName), methodInProtocol(Class, Protocol, Method). classifiedAs(method( ’ruleInterpreter’ ), Method ) :- classifiedAs(class('soul'), Class), interpretingProtocolName(ProtocolName), protocolName(Protocol, ProtocolName), methodInProtocol(Class, Protocol, Method). Uses Data 1 Uses Data 2 Asks 2 Asks 1 Updates 1 Clause Selector Knowledge Base Rule Interpreter Working Memory ArchitectureImplementation Abstraction Implementation qzfdxgf Architectural Instantiation
10
10 Architectural conformance checking – Virtual dependencies asks (M1, M2) :- isAskedBy_M_M(M2, M1). isAskedBy_M_M(M2, M1) :- classImplementsMethodNamed(C1, M1N, M1), className(C1, C1N), methodName(M2, M2N), … asks (M1, M2) :- isAskedBy_M_M(M2, M1). isAskedBy_M_M(M2, M1) :- classImplementsMethodNamed(C1, M1N, M1), className(C1, C1N), methodName(M2, M2N), … Uses Data 1 Uses Data 2 Asks 2 Asks 1 Updates 1 Clause Selector Knowledge Base Rule Interpreter Working Memory ArchitectureImplementation Abstraction Implementation qzfdxgf Architectural Instantiation
11
11 Architectural conformance checking – Conformance checking algorithm Uses Data 1 Uses Data 2 Asks 2 Asks 1 Updates 1 Clause Selector Knowledge Base Rule Interpreter Working Memory ArchitectureImplementation Abstraction Implementation qzfdxgf Architectural Instantiation ruleInterpreter ruleSelection asks ( M1, M2 )
12
12 Current research interests Strong emphasis on: object orientation formal foundations tool support
13
13 Declarative meta programming n Meta programming: u allows manipulation of & reasoning about some base language n Declarative programming: u readable, intuitive, intentional, concise u e.g., a logic programming language u a Prolog-like language is typically good at meta programming and language processing reasoning about knowledge unification, backtracking, multi-way reasoning n Declarative meta programming (DMP): u use of a logic programming language to reason about the structural aspects of the source code in some base language u check / search / enforce ( / generate / transform )
14
14 Declarative meta programming – A layered declarative framework
15
15 Co-evolution n Co-evolution u information in implementation and earlier life-cycle phases (e.g., analysis, design) may evolve independently u need to keep information in these phases synchronised u impact analysis / conflict detection / change propagation /... n Co-evolution of u design and implementation u architecture and implementation n Approach u use declarative meta programming u apply reuse contract ideas
16
16 Software architecture n Architectural conformance checking formalism u used a declarative meta-programming approach u 1 st step towards co-evolution of architecture and implementation n Refining the architectural description language architectural styles and patterns; sub-architectures; architectural constraints and architectural correspondences; architectural deviations; architectural specialization n Generalising the formalism to other base languages n More case studies to further validate the u feasibility, efficiency, expressiveness, ease of use, scalability n Using dynamic information
17
17 Software architecture – architectural styles architectural style arch. entitiesOO conceptsST implementation dataflow pipe-and-filter Components: user input state output Connectors: accessing updating creation class variable arguments instance creation initialization message passing getting / setting... new initialize (lazy/explicit) … accessors / mutators class / meta class instance variable class variable method parameters
18
18 Architecture-driven software development n Use table for architecture-driven software development n Define conformance mapping semi-automatically u between a given architecture and implementation u suggest plausible conformance mappings n Forward engineering u implement software conform to a given architecture u generate code (fragments) n Reverse engineering u extract software architecture from source code u “source-code mining”
19
19 An industrial-strength architecture- driven software development tool n Towards an industrial-strength tool: u Visualization tools u Advanced source-code browsers including architecture-driven browsers u Enforcing coding conventions and design styles u Layered library of predicates (declarative framework) u Reverse engineering architecture from source code u Code generation facilities u Co-evolution support architectural deviations resolving conformance conflicts incremental and partial conformance checking algorithm synchronization
20
20 Summary RC PhD
21
21 Other research interests n Aspect-oriented programming (AOP) and multi-dimensional separation of concerns n Logic programming n Functional programming n...
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.