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.

Slides:



Advertisements
Similar presentations
Expression Blend 4 – deep dive
Advertisements

ARCHITECTURES FOR ARTIFICIAL INTELLIGENCE SYSTEMS
Creation of Automaton Classes from Graphical Models and Automatic Solution for Inverse Problem Yuri A. Gubin student of SPb SU ITMO supervised by Anatoly.
Programming Paradigms and languages
Architecture Representation
Automated creation of verification models for C-programs Yury Yusupov Saint-Petersburg State Polytechnic University The Second Spring Young Researchers.
T-FLEX DOCs PLM, Document and Workflow Management.
2010 Microsoft Student Partners. T OPICS - User Interface and Editor Improvements - New windows: Call Hierarchy, Navigate To - IntelliSense - Generate.
1 © Wolfgang Pelz UML3 UML 3 Notations describe how to use reusable software. Package Component Deployment Node.
Java Programming, 3e Concepts and Techniques Chapter 1 An Introduction to Java and Program Design.
A Formal Foundation Supporting MDD --- ZOOM Approach Hongming Liu Lizhang Qin 11/08/2003.
CS CS 5150 Software Engineering Lecture 13 System Architecture and Design 1.
Presented by IBM developer Works ibm.com/developerworks/ 2006 January – April © 2006 IBM Corporation. Making the most of Creating Eclipse plug-ins.
Building Silverlight Applications Using the MVVM pattern An Introduction by Peter Messenger Senior Developer – Qmastor
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
The course builder architecture & project planning presented by: Bahareh Agha Jafari.
Data Structures and Programming.  John Edgar2.
Copyright © Soyatec. Licensed under the Eclipse Public License 1.0 Yves YANG & Philippe Ombredanne.
UNIT-V The MVC architecture and Struts Framework.
Java Programming, 2E Introductory Concepts and Techniques Chapter 1 An Introduction to Java and Program Design.
A Scalable Application Architecture for composing News Portals on the Internet Serpil TOK, Zeki BAYRAM. Eastern MediterraneanUniversity Famagusta Famagusta.
Outline Introduction Problem Statement Object-Oriented Design Aspect-Oriented Design Conclusion Demo.
Katanosh Morovat.   This concept is a formal approach for identifying the rules that encapsulate the structure, constraint, and control of the operation.
Epydoc API Documentation Extraction in Python Edward Loper.
Designing and Performing Geographic Analysis Processes with GISCASE Cirano Iochpe, Guillermo N. Hess, Cláudio Ruschel, Alécio P. D. Binotto, Luciana V.
Enticy GROUP THE A Framework for Web and WinForms (Client-Server) Applications “Enterprise Software Architecture”
An Introduction to Software Architecture
Virtual techdays INDIA │ Nov 2010 Developing Office Biz Application using WPF on Windows 7 Sarang Datye │ Sr. Consultant, Microsoft Sridhar Poduri.
CHAPTER ONE Problem Solving and the Object- Oriented Paradigm.
StyleCop Breaking down the barriers to entry Gary Ewan Park Twitter: Blog:
Building an Offline Smart Client using Domain-Driven Design Principles Tim McCarthy.
© 2006 IBM Corporation IBM WebSphere Portlet Factory Architecture.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
CSE 219 Computer Science III Program Design Principles.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
1 5 Nov 2002 Risto Pohjonen, Juha-Pekka Tolvanen MetaCase Consulting AUTOMATED PRODUCTION OF FAMILY MEMBERS: LESSONS LEARNED.
Software Design Patterns (1) Introduction. patterns do … & do not … Patterns do... provide common vocabulary provide “shorthand” for effectively communicating.
Object Oriented Software Development
Design Patterns -- Omkar. Introduction  When do we use design patterns  Uses of design patterns  Classification of design patterns  Creational design.
Object-Oriented Modeling: Static Models. Object-Oriented Modeling Model the system as interacting objects Model the system as interacting objects Match.
Cross Language Clone Analysis Team 2 October 13, 2010.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Application of Design Heuristics in the Designing and Implementation of Object Oriented Informational Systems.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
® IBM Software Group © 2004 IBM Corporation Developing an SOA with RUP and UML 2.0 Giles Davies.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
04 |Sharing Code Between Windows 8 and Windows Phone 8 in Visual Studio Ben Riga
Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All rights reserved Chapter 32 JavaBeans and Bean.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 15. Review Interaction-Oriented Software Architectures – MVC.
Formal Verification. Background Information Formal verification methods based on theorem proving techniques and model­checking –To prove the absence of.
2 Software CASE tools state-of-the-art UML modeling Partially automatic code generation Refactoring browsers (occasionally) Context-sensitive search and.
Model View ViewModel Architecture. MVVM Architecture components.
 Description of Inheritance  Base Class Object  Subclass, Subtype, and Substitutability  Forms of Inheritance  Modifiers and Inheritance  The Benefits.
© Copyright SELA software & Education Labs Ltd Baruch Hirsch St.Bnei Brak Israel
Principles of Programming & Software Engineering
INF230 Basics in C# Programming
Modern Systems Analysis and Design Third Edition
Object-Oriented Software Engineering Using UML, Patterns, and Java,
Introduction to Design Patterns
Data Modeling II XML Schema & JAXB Marc Dumontier May 4, 2004
Microsoft Exam Dumps PDF Questions Best Study Material
Designing Software for Ease of Extension and Contraction
Introduction to the MVVM Pattern
Logical architecture refinement
Modern Systems Analysis and Design Third Edition
Modern Systems Analysis and Design Third Edition
Software Design Lecture : 15.
An Introduction to Software Architecture
Presentation transcript:

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

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

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.

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.

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.

Approach Class DiagramsGEBNF Design Pattern Catalogue Developing Predicates Formal Specification Tool Development Purely Informal, English likeSemi Formal Fully Formal

Preparation of Catalogue Textual specification of 6 design patterns. Design patterns described by Philips. Informal representation of the rules.

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..

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

Dispose Pattern

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

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.

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)

Presentation Flow Tool Survey Architecture of Tool Implementation Planning

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.

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.)

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

Presentation Flow Tool Survey Implementation Planning Architecture of the tool

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.

Implementation Tool Survey Planning Implementation Architecture of the tool

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 }

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

Output Many visual styles available.

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.

Report Generation Fact Extractor Rule Builder Plug-in DXCore Visual Studio CodeRush

Report Generation Console application. Report for the nightly batch build. Verify entire solution. Locations where Violations detected. Summarizing all violations caught.

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

THANK YOU