Download presentation
Presentation is loading. Please wait.
Published byRafe Bryant Modified over 9 years ago
1
Mid-term Presentation Validation of Architecture Rules & Design Patterns 25 th May Shravan Shetty &Vinod J Menezes Supervised by, Prof. Dr. M. v. d. Brand Company Supervisors, Albert Faber Kasper Van Wouw
2
Research Question?? Analyzing and verifying architectural rules and design patterns for medical imaging software. Kick-off presentation: Basics of Design Patterns Few example patterns Ideas for a formal specification Possible toolset Mid term presentation: Recap First order Predicate logic CodeRush Architecture of the tool Demo Implementation Planned Activities
3
Introduction What are Architectural rules & Design Patterns?? Reusable solution to a commonly occurring problem. Provides a template to solve a particular problem. Architectural rules are at system level. Design patterns are at the component level. Advantages: Simplifies a complex system. Easy to extend and implement unforeseen requirements. Easy to debug & analyze and maintain. Already proven solution. Consistency.
4
WPF (Windows Presentation Foundation) XAML Declarative language Decoupling presentation aspects from application logic. Provides a data binding mechanism to couple the UI logic with the application logic.
5
MVVM design pattern View Layer UI Logic. Does not have any application logic or state. View-Model Layer Application logic and state. Philips specific rule: Depends only on Model layer interfaces and not on objects. Model Layer Business logic.
6
Approach Class DiagramsGEBNF Design Pattern Catalogue Developing Predicates Formal Specification Tool Development Purely Informal, English likeSemi Formal Fully Formal
7
Preparation of Catalogue Textual specification of 6 design patterns. Design patterns described by Philips. Informal representation of the rules.
8
GEBNF notion CD ::= classes : Class +, inters : Interface*, deps : (Classifier, Classifier)*, calls : (Operation, Operation)* Classifier ::= Namespace | Class | Interface Class ::= name : String, namespace : String, attrs : Property*, meth : Methods*, modifier : Modifier, isAbstract : Boolean Interface ::= name : String, namespace : String, attrs : Property*, meth : Methods*, modifier : Modifier Property ::= name : String, type : Type, modifier : Modifier, Methods ::= name : String, inParams : Parameter*, returnParam : Parameter, modifier : Modifier, isLeaf : Boolean Etc..
9
First order Predicate logic Then the DP can be specified as: ∀ y ⊂ classes. ∀ C ∈ y. ∀ CL ∈ classes. CL ⇢ * C ∈ deps → ∃ façade ∈ classes. facade ∉ y. CL ⇢ façade ∈ deps ∧ façade ⇢ * C ∈ deps Façade DP: A facade is an object that provides a simplified interface to a larger body of code, such as a class library. This can be formalized by using the following predicates: classes denotes the set of classes in the system. deps denotes a binary relation on classes
10
Dispose Pattern
11
Example DP Dispose Pattern: Part I: For any class implementing the IDisposable interface, Dispose() method must not belong to the View Layer. ∀ c ∈ classes. isViewClass(c) → ∀ m ∈ meth. m ∈ c ∧ name(m) ≠ “Dispose” Part II: Dispose() method definition with parameter in any class, must either be virtual or overridden. ∀ m ∈ meth. ∀ c ∈ classes. m ∈ c. name(m) = “Dispose” ∧ inParams(m) ≠ ∅ → modifier(m) = override ∨ modifier(m) = virtual
12
iXR specific Notation More Abstraction by using predicates for most common patterns. E.g: class ::= classLayer : Layer, parentImpl : String. classLayer ::= View | ViewModel | Model classLayer(c) = View ≡ ∀ c ∈ classes. ∀ d ∈ classes. c ⇢ d ∈ assocs → (names(d) = “Interactors” | “Animations”) ∨ namespace(c) = “View” parentImpl(c) = “IDisposable” ≡ ∀ c ∈ classes. ∃ i ∈ inters. c ⇢ i ∈ assoc → name(i) = ”IDisposable” ∨ ∀ c’ ∈ classes. c ⇒ c’ ∈ geners ∧ parentImpl(c’) isDispose(m,c) = true ≡ ∀ c ∈ classes. ∃ m ∈ meth. m ∈ c. name(m) = “Dispose” Methods ::= isDispose : bool.
13
Abstract Pattern Specification Dispose Pattern: Part I: For any class implementing the IDIsposable interface, Dispose() method must not belong to the View Layer. ∀ c ∈ classes. classLayer(c) = View → ∀ m ∈ meth. ¬isDispose(m,c) Part II: Dispose() method definition with parameter in any class, must either be virtual or overridden. ∀ c ∈ classes. ∀ m ∈ meth. isDispose(m,c) ∧ inParams(m) ≠ ∅ → isOverride(m) ∨ isVirtual(m)
14
Presentation Flow Tool Survey Architecture of Tool Implementation Planning
15
Tool Selection Requirements for a Tool Tool that can handle C# code. On the fly static code analysis. Allows to build plug-in for Visual studio. Ease of use and programming. Lifetime. Licensing.
16
Limitations of tools NDepend On the fly static code analysis Resharper Lifetime. Ease of use. −Philips patterns and ReSharper errors may look similar, chances of ignoring few pattern violations. Ease of programming. DXCore & CodeRush. Licensing (But XPress edition is free.)
17
CodeRush DXCore Built in parser. Allows to build console application. −Unit testing. Flexible −Can be used with ReSharper also with a help of few API’s. CodeRush APIs and events to create a plug-in to visual studio. Different outputs available. CodeRush DXCore
18
Presentation Flow Tool Survey Implementation Planning Architecture of the tool
19
Architecture Of the Tool Fact Extractor Rule Builder Plug-in DXCore Visual Studio CodeRush Built in parser Basic C# elements Basic function to extract information. Basis for rule formulation Functions are reusable Rules for each pattern. Uses functions from fact extractor. Plug-in uses these rules.
20
Implementation Tool Survey Planning Implementation Architecture of the tool
21
Implementation For any class implementing the IDisposable interface, Dispose() method must not belong to the View Layer. DisposeViewLayer( CurrentClass) { If(GetLayer(class)==VIEW) { If(IDisposable ∈ GetImplementedInterfaces(class)) && Dispose ∈ GetMethods(class)) { return false; //Pattern violation }
22
Implementation Fact Extractor DisposeViewLayer( CurrentClass) { If( GetLayer(class) ==VIEW) { If(IDisposable ∈ GetImplementedInterfaces(class) ) && Dispose ∈ GetMethods(class)) { return false; //Pattern violation } GetLayer(class) {……} GetMethods(class) {……} GetImplementedInterfaces(class) {…} Rule Builder Plug-in
23
Output Many visual styles available.
24
Planned Activities Work on different outputs Severity of pattern Provide links to documentation during pattern violation. Additional methods and classes for fact extractor. Testing: Unit Testing. Few test samples to verify pattern violations. Test for false positives. Report generation. Refining the rules based on testing.
25
Report Generation Fact Extractor Rule Builder Plug-in DXCore Visual Studio CodeRush
26
Report Generation Console application. Report for the nightly batch build. Verify entire solution. Locations where Violations detected. Summarizing all violations caught.
27
Conclusion Prepared a design pattern catalogue. Formalization of patterns using first order logic. Implementation of pattern using CodeRush. Three level plug-in architecture. Flexible Architecture aids future extensions
28
THANK YOU
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.