Eclipse Architecture and Patterns. Mirko Stocker. Advanced Patterns and Frameworks May, 2015 IFS INSTITUTE FOR SOFTWARE

Size: px
Start display at page:

Download "Eclipse Architecture and Patterns. Mirko Stocker. Advanced Patterns and Frameworks May, 2015 IFS INSTITUTE FOR SOFTWARE"

Transcription

1 Eclipse Architecture and Patterns Mirko Stocker Advanced Patterns and Frameworks May, 2015 IFS INSTITUTE FOR SOFTWARE

2 Outline 1 Eclipse Overview 2 SWT and JFace 3 OSGi Bundles and Eclipse Plug-ins 4 Eclipse Core Patterns 5 Language Toolkit LTK Patterns 6 C/C++ Development Tooling Patterns Mirko Stocker Eclipse Architecture and Patterns / 64

3 Outline 1 Eclipse Overview 2 SWT and JFace 3 OSGi Bundles and Eclipse Plug-ins 4 Eclipse Core Patterns 5 Language Toolkit LTK Patterns 6 C/C++ Development Tooling Patterns Mirko Stocker Eclipse Architecture and Patterns / 64

4 Eclipse History Origins 1999 Work begins on Eclipse inside IBM 2001 Eclipse 1.0 released as open source 2002 Eclipse 2.0 released 2004 Eclipse 3.0 released based on OSGi 2012 Eclipse 4.2 released with completely new fundament Mirko Stocker Eclipse Architecture and Patterns / 64

5 Eclipse History Eclipse 1.0 Mirko Stocker Eclipse Architecture and Patterns / 64

6 Eclipse History Eclipse 2.0 Mirko Stocker Eclipse Architecture and Patterns / 64

7 Eclipse Goals Open platform for application development to make building tools easier and to provide common tools Started as an IDE (-framework) but then became a general platform Integration and interaction of various tools and services based on plug-ins Platform independent but native widgets (SWT) The Eclipse platform itself is a sort of universal tool platform it is an IDE for anything and nothing in particular. Mirko Stocker Eclipse Architecture and Patterns / 64

8 Eclipse Components Figure: Source [GammaBeck03] Mirko Stocker Eclipse Architecture and Patterns / 64

9 Eclipse Components Figure: Source Eclipse.org Mirko Stocker Eclipse Architecture and Patterns / 64

10 Project Stats Over 250 projects under development at eclipse.org Yearly releases in June for projects that want to participate Figure: Source [Aniszczyk] Mirko Stocker Eclipse Architecture and Patterns / 64

11 Outline 1 Eclipse Overview 2 SWT and JFace 3 OSGi Bundles and Eclipse Plug-ins 4 Eclipse Core Patterns 5 Language Toolkit LTK Patterns 6 C/C++ Development Tooling Patterns Mirko Stocker Eclipse Architecture and Patterns / 64

12 SWT Building Cross-Platform UIs Native Widgets and mostly written in Java No performance impact from UI Native library and thin JNI layer for each toolkit SWT implementation per platform Why not AWT or Swing? Mirko Stocker Eclipse Architecture and Patterns / 64

13 JFace UI-Toolkit SWT provides basic components JFace builds on top of SWT: Actions, Menus, Dialogs, Wizards, Fonts Figure: Source Eclipse.org Mirko Stocker Eclipse Architecture and Patterns / 64

14 Outline 1 Eclipse Overview 2 SWT and JFace 3 OSGi Bundles and Eclipse Plug-ins 4 Eclipse Core Patterns 5 Language Toolkit LTK Patterns 6 C/C++ Development Tooling Patterns Mirko Stocker Eclipse Architecture and Patterns / 64

15 OSGi Open Services Gateway initiative Specifies a component and service model for Java Components (bundles) can be dynamically installed, started, stopped, and uninstalled Bundles define dependencies and export some of their packages (unlike a JAR) Similar to Java 9 (former 8) Modularization proposal Several OSGi implementations, Eclipse s is Equinox GlassFish, JBoss, WebSphere, IntelliJ, Netbeans, and many others are all based on OSGi Mirko Stocker Eclipse Architecture and Patterns / 64

16 OSGi Bundles Eclipse plug-ins are OSGi bundles! (since Eclipse 3) Packaged as JARs MANIFEST.MF file contains the bundle metadata Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Popup Plug-in Bundle-SymbolicName: com.example.myosgi; singleton:=true Bundle-Version: Bundle-Activator: com.example.myosgi.activator Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime;bundle-version="4.2.0" Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Export-Package: com.example.myosgi Mirko Stocker Eclipse Architecture and Patterns / 64

17 OSGi Services OSGi also offers services to connect bundles Service is a POJO and can be registered at a Service Registry at bundle start For historical reasons, Eclipse does not use OSGi services but Extensions and Extension Points Mirko Stocker Eclipse Architecture and Patterns / 64

18 Extension Points Extension Point collects contributions to the plug-in offering the Extension Point Extension contributes to an Extension Point Each plug-in contributes to at least one Extension Point Optionally declares a new EP Extension Points and Extensions are not part of the Manifest but separate XML files Figure: Source Eclipse.org Mirko Stocker Eclipse Architecture and Patterns / 64

19 Eclipse Plug-ins Plug-ins can add new Actions, Editors, Views, Menus, Perspectives, Preferences Each plug-in gets its own class loader Can only access specified dependencies Mirko Stocker Eclipse Architecture and Patterns / 64

20 Plug-in Example A plug-in has three interesting files: Manifest plugin.xml to wire up the Extension Class that implements the Extension Mirko Stocker Eclipse Architecture and Patterns / 64

21 Plug-in Example Mirko Stocker Eclipse Architecture and Patterns / 64

22 Eclipse Plug-ins Eclipse platform manages plug-ins: discover installed plug-ins from various disk locations builds the extension registry connects extensions and extension points only activates plug-ins when needed Mirko Stocker Eclipse Architecture and Patterns / 64

23 Plug-in Example Mirko Stocker Eclipse Architecture and Patterns / 64

24 Outline 1 Eclipse Overview 2 SWT and JFace 3 OSGi Bundles and Eclipse Plug-ins 4 Eclipse Core Patterns 5 Language Toolkit LTK Patterns 6 C/C++ Development Tooling Patterns Mirko Stocker Eclipse Architecture and Patterns / 64

25 Classical GoF Design Patterns Creational Patterns Factory Builder Singleton... Structural Patterns Adapter Bridge Composite Proxy Façade... Behavioral Patterns Observer Command Memento Strategy Visitor... Mirko Stocker Eclipse Architecture and Patterns / 64

26 Classical GoF Design Patterns Creational Patterns Factory Builder Singleton... Structural Patterns Adapter Bridge Composite Proxy Façade... Behavioral Patterns Observer Command Memento Strategy Visitor... Platform Singleton: getting Workbench, Plug-in Workspace Resources Proxy and Bridge: Accessing File System Composite: the workspace Observer: tracking resource changes Core Runtime IAdaptable and Adapter Factories: Property View SWT SWT Composite: composing widgets Strategy: defining layouts JFace Observer: responding to events Pluggable adapter: Connecting widget to model Strategy: customize a viewer without subclassing Command: Actions UI Workbench Memento: persisting UI state Virtual Proxy: lazy loading with E.P. LTK Template Method, Composite, Memento CDT Visitor: to traverse the AST Mirko Stocker Eclipse Architecture and Patterns / 64

27 Singleton Ensure that a class only has one instance, and provide a global point of access to it: PlatformUI.getWorkbench() Platform.getAdapterManager() ResourcesPlugin.getWorkspace() Mirko Stocker Eclipse Architecture and Patterns / 64

28 Singleton Ensure that a class only has one instance, and provide a global point of access to it: PlatformUI.getWorkbench() Platform.getAdapterManager() ResourcesPlugin.getWorkspace() Problem: coupling, code hard to test Mirko Stocker Eclipse Architecture and Patterns / 64

29 Proxy Files and Resources How can we represent an (external) resource in a progam? 1 Provide a handle for the resource 2 Handle acts as a proxy for the resource Mirko Stocker Eclipse Architecture and Patterns / 64

30 Proxy Provide a surrogate or place holder for another object to control access to it: Figure: Source Wikipedia Mirko Stocker Eclipse Architecture and Patterns / 64

31 Proxy Files and Resources Advantages of the Proxy pattern approach: Small value objects Define behaviour but don t contain any state information Can refer to non-existing resource (file not yet created) Mirko Stocker Eclipse Architecture and Patterns / 64

32 Proxy Lazy Loading The Proxy pattern can also be used to implement lazy-loading: Eclipse only loads a plug-in when it s needed. UI actions are proxies for the real actions that are loaded when used the first time. Mirko Stocker Eclipse Architecture and Patterns / 64

33 Bridge Decouple an abstraction from its implementation so that the two can vary independently: Figure: Source Wikipedia Mirko Stocker Eclipse Architecture and Patterns / 64

34 Bridge API interface is implemented by an internal class that delegates the calls to another implementation. Figure: Source [GammaBeck03] Both Proxy and Bridge patterns are used here. Mirko Stocker Eclipse Architecture and Patterns / 64

35 Adapter Adapt an interface for a class to make it compatible with another class: Figure: Source [DoFactory] Mirko Stocker Eclipse Architecture and Patterns / 64

36 Adapter Pluggable Adapters JFace uses the Adapter pattern prominently: IContentProvider to get at the contents of a domain object ILabelProvider for the text or image to display Figure: Source [IlyaShinkarenko] Mirko Stocker Eclipse Architecture and Patterns / 64

37 Observer Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically. Figure: Source [IlyaShinkarenko] IWorkspace ws = ResourcesPlugin.getWorkspace(); ws.addresourcechangelistener(new IResourceChangeListener() public void resourcechanged(iresourcechangeevent event){ // handle change } }); Mirko Stocker Eclipse Architecture and Patterns / 64

38 Strategy Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it. Figure: Source Wikipedia Mirko Stocker Eclipse Architecture and Patterns / 64

39 Strategy Strategy in SWT Mirko Stocker Eclipse Architecture and Patterns / 64

40 Strategy Strategy in JFace Filtering and sorting of elements in views are als handled by Strategies: Figure: Source [IlyaShinkarenko] Mirko Stocker Eclipse Architecture and Patterns / 64

41 Command Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support for undoable operations. Figure: Source Wikipedia Mirko Stocker Eclipse Architecture and Patterns / 64

42 Command JFace IAction IAction has a run() method encaspulating the code to be executed when it is called by the Invoker. More than just a function: stores additional data (label, icon, state). Can be used (attached) to multiple menus, tool bars, buttons. IAction action = new Action("Exit") public void run() { System.exit(0); } }; action.setdescription("exits the VM"); menu.add(action); Mirko Stocker Eclipse Architecture and Patterns / 64

43 Outline 1 Eclipse Overview 2 SWT and JFace 3 OSGi Bundles and Eclipse Plug-ins 4 Eclipse Core Patterns 5 Language Toolkit LTK Patterns 6 C/C++ Development Tooling Patterns Mirko Stocker Eclipse Architecture and Patterns / 64

44 LTK What is the LTK? Refactoring Language Toolkit (LTK) - a language neutral API for refactorings: Classes for constructing refactoring user interfaces (common L&F for wizards and dialogs) Refactoring wizard with diff preview Classes for modelling resource changes (e. g., "insert method foo into test.java at offset XY") Refactoring participant functionality Scriptable refactorings and refactoring history Used by Java Development Tools (JDT), C/C++ Development Platform (CDT), Eclipse Scala IDE and others Consists of two plug-ins: org.eclipse.ltk.core.refactoring org.eclipse.ltk.ui.refactoring Mirko Stocker Eclipse Architecture and Patterns / 64

45 LTK Refactoring UI Example: Specifying refactoring parameters Figure: LTK wizard for specifying refactoring parameters of "extract interface" Mirko Stocker Eclipse Architecture and Patterns / 64

46 LTK Diff browser: change 1/2 Figure: LTK diff view with change 1/2 of "extract interface" Mirko Stocker Eclipse Architecture and Patterns / 64

47 LTK Diff browser: change 2/2 Figure: LTK diff view with change 2/2 of "extract interface" Mirko Stocker Eclipse Architecture and Patterns / 64

48 LTK Refactoring Lifecycle Overview Figure: Source [Widmer06] Problem: How does the LTK provide a skeleton of this algorithm, while deferring some steps to subclasses? Mirko Stocker Eclipse Architecture and Patterns / 64

49 LTK Template Method Pattern Template method defines the skeleton of an algorithm as an abstract class, allowing its subclasses to provide concrete behavior. Figure: Source Wikipedia Mirko Stocker Eclipse Architecture and Patterns / 64

50 LTK GoF Patterns applied: Template Method public abstract class Refactoring extends PlatformObject { public R e f a c t o r i n g S t a t u s checkallconditions ( IProgressMonitor pm) { R e f a c t o r i n g T i c k P r o v i d e r p r o v i d e r = g e t R e f a c t o r i n g T i c k P r o v i d e r ( ) ; pm. begintask ( " ", p r o v i d e r. getcheckallconditionsticks ( ) ) ; R e f a c t o r i n g S t a t u s r e s u l t = new R e f a c t o r i n g S t a t u s ( ) ; r e s u l t. merge ( c h e c k I n i t i a l C o n d i t i o n s ( ) ) ; i f (! r e s u l t. h asfatalerror ( ) ) { r e s u l t. merge ( checkfinalconditions ( ) ) ; } pm. done ( ) ; return r e s u l t ; } public abstract R e f a c t o r i n g S t a t u s c h e c k I n i t i a l C o n d i t i o n s ( ) ; } public abstract Refac toringst atus checkfinalconditions ( ) ; Mirko Stocker Eclipse Architecture and Patterns / 64

51 LTK Applied code transformations with change objects After all preconditions have been checked AND no errors are detected, LTK calls createchange(iprogressmonitor) on the refactoring createchange yields a Change object Change is used by LTK to genereate a change preview (diff) and to apply the recorded change to the workspace There are different kinds of change objects, e. g.: TextChange: applies a TextEdit to a document MoveResourceChange: used to move a resource UndoTextFileChange: to perform the reverse of a TextFileChange NullChange: refactoring change that does nothing Most refactorings require several changes Changes can be composed to trees of changes Problem: How can we treat these compositions and the individual changes uniformly? Mirko Stocker Eclipse Architecture and Patterns / 64

52 LTK Composite Pattern Compose object into tree structures to represent part/whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly. Figure: Source Wikipedia Mirko Stocker Eclipse Architecture and Patterns / 64

53 LTK GoF Patterns applied: Composite pattern Change perform(iprogressmonitor): Change dispose() 0..* Child fedit: TextEdit TextFileChange perform(iprogressmonitor): Change dispose() CompositeChange changes: List add(change) addall(change[]) perform(iprogressmonitor) dispose() 1 Parent Figure: Composite pattern with LTK s change objects Mirko Stocker Eclipse Architecture and Patterns / 64

54 LTK Participants A refactoring participant can participate in the condition checking and change creation of a refactoring processor Refactorings that change several source files may have impact on some of the other integrated tools Examples: Renaming classes in the Plug-in Development Environment (PDE) Setting breakpoints in a debugger Consistency of C function declarations and their JNI bindings Mirko Stocker Eclipse Architecture and Patterns / 64

55 LTK Refactoring History Refactorings that are intended to participate in the refactoring history and scripting service must implement a descriptor and a contribution object Two scenarios for scriptable refactorings: Reapplying refactorings on a previous version of a code base Composing large and complex refactorings from smaller refactorings Mirko Stocker Eclipse Architecture and Patterns / 64

56 LTK Scriptable Refactorings <?xml version= " 1.0 " encoding= "UTF 8"?> <session version= " 1.0 " > < r e f a c t o r i n g comment= " E x t r a c t i n t e r f a c e f o r class &apos ; Foo&apos ; " d e s c r i p t i o n = " E x t r a c t I n t e r f a c e Refactoring " filename= " f i l e : / tmp / TestLTK / t e s t. cpp " f l a g s = " 4 " name= " IFoo " p r o j e c t = " TestLTK " i d = " ch. hsr. E x t r a c t I n t e r f a c e R e f a c t o r i n g " replace=" t r u e " s e l e c t i o n = " 8,3 " / > < / session> Problem: How can we capture refactoring states externally so that they can be applied to code without user interaction? Mirko Stocker Eclipse Architecture and Patterns / 64

57 LTK Memento Pattern Capture and externalize an objects internal state without violating its encapsulation, so that the object can be returned to this state later. Figure: Source Wikipedia Mirko Stocker Eclipse Architecture and Patterns / 64

58 LTK GoF Patterns applied: Memento LTK s RefactoringDescriptor: Memento that captures the properties of a specific refactoring instance Contains unique refactoring ID, timestamp, description and further refactoring-specific data like selection, file path, chosen user arguments: protected R e f a c t o r i n g D e s c r i p t o r g e t R e f a c t o r i n g D e s c r i p t o r ( ) { Map< String, String > args = new HashMap< String, String > ( ) ; args. put ( CRefactoringDescriptor. FILE_NAME, filename ) ; args. put ( CRefactoringDescriptor. SELECTION, selectedregion. g e t O f f s e t ( ) + ", " + selectedregion. getlength ( ) ) ; args. put ( E x t r a c t C o n s t a n t R e f a c t o r i n g D e s c r i p t o r.name, i n f o. getname ( ) ) ; / / more r e f a c t o r i n g s p e c i f i c i n f o r m a t i o n return new E x t r a c t C o n s t a n t R e f a c t o r i n g D e s c r i p t o r ( p r o j e c t. g e t P r o j e c t ( ). getname ( ), " E x t r a c t Constant Refactoring ", " Create constant f o r " + t a r g e t. getrawsignature ( ), args ) ; } Mirko Stocker Eclipse Architecture and Patterns / 64

59 Outline 1 Eclipse Overview 2 SWT and JFace 3 OSGi Bundles and Eclipse Plug-ins 4 Eclipse Core Patterns 5 Language Toolkit LTK Patterns 6 C/C++ Development Tooling Patterns Mirko Stocker Eclipse Architecture and Patterns / 64

60 CDT Overview First release with Eclipse 2.0 in April 2003 Fully functional C and C++ IDE based on the Eclipse platform Features: Support for project creation and managed build for various toolchains (e. g., GCC, Clang) Standard make build Source navigation Type hierarchy, call graph, include browser, macro definition browser Code editor with syntax highlighting, folding and hyperlink navigation Source code refactoring and code generation Visual debugging tools, including memory, registers, and disassembly viewers Mirko Stocker Eclipse Architecture and Patterns / 64

61 CDT CDT s AST nodes In C/C++, a translation unit (TU) is a source file with all included headers The root node of CDT s abstract syntax tree (AST) has the type org.eclipse.cdt.core.dom.ast.iasttranslationunit In CDT, C and C++ AST nodes are separated (e. g., IASTUnaryExpression and ICPPASTUnaryExpression); C has ~60, C++ ~90 nodes org.eclipse.cdt.core.dom.ast.iastnode is the parent interface of all nodes in the AST The AST can be traversed by calling IASTNode s getparent() and getchildren() methods Calling child/parent methods can get cumbersome We want to decouple the data from the operations that process the data Solution: visitor pattern Mirko Stocker Eclipse Architecture and Patterns / 64

62 CDT Example of an AST Figure: Example of CDT s abstract syntax tree (AST) Mirko Stocker Eclipse Architecture and Patterns / 64

63 CDT Visitor Pattern Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing the classes of the elements on which it operates. Figure: Source Wikipedia Mirko Stocker Eclipse Architecture and Patterns / 64

64 CDT GoF Patterns applied: Visitor To create a visitor, subclass from ASTVisitor ASTVisitor has overloaded visit methods for each node type Each node class has an accept(astvisitor) method (defined in IASTNode) calls visit(this) Example visitor to collect all names: class ASTNameVisitor extends ASTVisitor { List<IASTName> names = new ArrayList<IASTName>(); { this.shouldvisitnames = true; public int visit(iastname name) { names.add(name); return PROCESS_CONTINUE; } } Mirko Stocker Eclipse Architecture and Patterns / 64

65 Bibliography I Erich Gamma and Kent Beck. Contributing to Eclipse: Principles, Patterns, and Plug-Ins. Addison Wesley, Marc Teufel and Dr. Jonas Helming. Eclipse 4: Rich Clients mit dem Eclipse SDK 4.2. entwickler.press, Ilya Shinkarenko. Design Patterns Used in Eclipse Bangalore, Eclipse Summit India Neil Bartlett. A Comparison of Eclipse Extensions and OSGi Services http: // Mirko Stocker Eclipse Architecture and Patterns / 64

66 Bibliography II Adapter Pattern Chris Aniszczyk. Ecipse Juno Released for Friends ecipse-juno-released-for-friends Tobias Widmer. Unleashing the Power of Refactoring. Eclipse Corner Articles, Michael Petito. Eclipse Refactoring. EE564, Various authors. The Architecture of Open Source Applications. Mirko Stocker Eclipse Architecture and Patterns / 64

Eclipse CDT refactoring overview and internals

Eclipse CDT refactoring overview and internals Eclipse CDT refactoring overview and internals Michael Rüegg Institute For Software University of Applied Sciences Rapperswil Parallel Tools Platform (PTP) Workshop, Chicago September, 2012 Outline 1 Refactoring

More information

Getting the Most from Eclipse

Getting the Most from Eclipse Getting the Most from Eclipse Darin Swanson IBM Rational Portland, Oregon Darin_Swanson@us.ibm.com March 17, 2005 What is Eclipse An extensible tools platform Out-of-box function and quality to attract

More information

Design Pattern. CMPSC 487 Lecture 10 Topics: Design Patterns: Elements of Reusable Object-Oriented Software (Gamma, et al.)

Design Pattern. CMPSC 487 Lecture 10 Topics: Design Patterns: Elements of Reusable Object-Oriented Software (Gamma, et al.) Design Pattern CMPSC 487 Lecture 10 Topics: Design Patterns: Elements of Reusable Object-Oriented Software (Gamma, et al.) A. Design Pattern Design patterns represent the best practices used by experienced

More information

SDC Design patterns GoF

SDC Design patterns GoF SDC Design patterns GoF Design Patterns The design pattern concept can be viewed as an abstraction of imitating useful parts of other software products. The design pattern is a description of communicating

More information

Produced by. Design Patterns. MSc in Communications Software. Eamonn de Leastar

Produced by. Design Patterns. MSc in Communications Software. Eamonn de Leastar Design Patterns MSc in Communications Software Produced by Eamonn de Leastar (edeleastar@wit.ie) Department of Computing, Maths & Physics Waterford Institute of Technology http://www.wit.ie http://elearning.wit.ie

More information

20. Eclipse and Framework Extension Languages

20. Eclipse and Framework Extension Languages 20. Eclipse and Framework Extension Languages Prof. Uwe Aßmann TU Dresden Institut für Software und Multimediatechnik Lehrstuhl Softwaretechnologie Version 11-1.0, 12/17/11 Design Patterns and Frameworks,

More information

First Steps in RCP. Jan Blankenhorn, WeigleWilczek GmbH, Stuttgart, Germany. February 19th, 2009

First Steps in RCP. Jan Blankenhorn, WeigleWilczek GmbH, Stuttgart, Germany. February 19th, 2009 First Steps in RCP Jan Blankenhorn, WeigleWilczek GmbH, Stuttgart, Germany February 19th, 2009 Agenda» About us» RCP Architecture and Bundles» Extension Points and Views» Bundle Dependencies 2 Jan Blankenhorn»

More information

Design Patterns Reid Holmes

Design Patterns Reid Holmes Material and some slide content from: - Head First Design Patterns Book - GoF Design Patterns Book Design Patterns Reid Holmes GoF design patterns $ %!!!! $ "! # & Pattern vocabulary Shared vocabulary

More information

Topics in Object-Oriented Design Patterns

Topics in Object-Oriented Design Patterns Software design Topics in Object-Oriented Design Patterns Material mainly from the book Design Patterns by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides; slides originally by Spiros Mancoridis;

More information

The Eclipse Rich Client Platform

The Eclipse Rich Client Platform The Eclipse Rich Client Platform Slides by various members of the Eclipse JDT and Platform teams Slides 2004 IBM Corporation Outline Rich Client Application? The Eclipse Plug-in Architecture Eclipse Plug-ins

More information

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 6: Design Patterns

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 6: Design Patterns EPL 603 TOPICS IN SOFTWARE ENGINEERING Lab 6: Design Patterns Links to Design Pattern Material 1 http://www.oodesign.com/ http://www.vincehuston.org/dp/patterns_quiz.html Types of Design Patterns 2 Creational

More information

Ingegneria del Software Corso di Laurea in Informatica per il Management. Design Patterns part 1

Ingegneria del Software Corso di Laurea in Informatica per il Management. Design Patterns part 1 Ingegneria del Software Corso di Laurea in Informatica per il Management Design Patterns part 1 Davide Rossi Dipartimento di Informatica Università di Bologna Pattern Each pattern describes a problem which

More information

Eclipse (1/3) Deepak Dhungana Institute for System Engineering and Automation

Eclipse (1/3) Deepak Dhungana Institute for System Engineering and Automation Eclipse (1/3) Deepak Dhungana dhungana@ase.jku.at Institute for System Engineering and Automation Thomas Wuerthinger wuerthinger@ssw.jku.at Institute for System Software Johannes Kepler University Linz,

More information

Object-Oriented Oriented Programming

Object-Oriented Oriented Programming Object-Oriented Oriented Programming Composite Pattern CSIE Department, NTUT Woei-Kae Chen Catalog of Design patterns Creational patterns Abstract Factory, Builder, Factory Method, Prototype, Singleton

More information

2.1 Design Patterns and Architecture (continued)

2.1 Design Patterns and Architecture (continued) MBSE - 2.1 Design Patterns and Architecture 1 2.1 Design Patterns and Architecture (continued) 1. Introduction 2. Model Construction 2.1 Design Patterns and Architecture 2.2 State Machines 2.3 Timed Automata

More information

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer i About the Tutorial Eclipse is an integrated development environment (IDE) for Java and other programming languages like C, C++, PHP, and Ruby etc. Development environment provided by Eclipse includes

More information

2.1 Design Patterns and Architecture (continued)

2.1 Design Patterns and Architecture (continued) MBSE - 2.1 Design Patterns and Architecture 1 2.1 Design Patterns and Architecture (continued) 1. Introduction 2. Model Construction 2.1 Design Patterns and Architecture 2.2 State Machines 2.3 Abstract

More information

Index. Symbols. /**, symbol, 73 >> symbol, 21

Index. Symbols. /**, symbol, 73 >> symbol, 21 17_Carlson_Index_Ads.qxd 1/12/05 1:14 PM Page 281 Index Symbols /**, 73 @ symbol, 73 >> symbol, 21 A Add JARs option, 89 additem() method, 65 agile development, 14 team ownership, 225-226 Agile Manifesto,

More information

The Strategy Pattern Design Principle: Design Principle: Design Principle:

The Strategy Pattern Design Principle: Design Principle: Design Principle: Strategy Pattern The Strategy Pattern defines a family of algorithms, encapsulates each one, and makes them interchangeable. Strategy lets the algorithm vary independently from clients that use it. Design

More information

Object-Oriented Design

Object-Oriented Design Object-Oriented Design Lecture 20 GoF Design Patterns Behavioral Department of Computer Engineering Sharif University of Technology 1 GoF Behavioral Patterns Class Class Interpreter: Given a language,

More information

A Tour of the Eclipse Environment

A Tour of the Eclipse Environment A Tour of the Eclipse Environment Stephen Barrett Concordia University What is Eclipse? Depends on who you ask. 2 What is Eclipse? 3 Man on the Street: Java-based development framework Spawned from IBM

More information

Developing Eclipse Rich-Client Applications Tutorial

Developing Eclipse Rich-Client Applications Tutorial Developing Eclipse Rich-Client Applications Tutorial Dr. Frank Gerhardt Gerhardt Informatics Kft. fg@gerhardtinformatics.com Michael Scharf Wind River eclipsecon@scharf.gr 2008 by Frank Gerhardt and Michael

More information

An Introduction to Patterns

An Introduction to Patterns An Introduction to Patterns Robert B. France Colorado State University Robert B. France 1 What is a Pattern? - 1 Work on software development patterns stemmed from work on patterns from building architecture

More information

Slide 1. Design Patterns. Prof. Mirco Tribastone, Ph.D

Slide 1. Design Patterns. Prof. Mirco Tribastone, Ph.D Slide 1 Design Patterns Prof. Mirco Tribastone, Ph.D. 22.11.2011 Introduction Slide 2 Basic Idea The same (well-established) schema can be reused as a solution to similar problems. Muster Abstraktion Anwendung

More information

Workbench and JFace Foundations. Part One, of a two part tutorial series

Workbench and JFace Foundations. Part One, of a two part tutorial series Workbench and JFace Foundations Part One, of a two part tutorial series 2005 by IBM; made available under the EPL v1.0 Date: February 28, 2005 About the Speakers Tod Creasey Senior Software Developer,

More information

DESIGN PATTERN - INTERVIEW QUESTIONS

DESIGN PATTERN - INTERVIEW QUESTIONS DESIGN PATTERN - INTERVIEW QUESTIONS http://www.tutorialspoint.com/design_pattern/design_pattern_interview_questions.htm Copyright tutorialspoint.com Dear readers, these Design Pattern Interview Questions

More information

Advanced User Interface Programming Using the Eclipse Rich Client Platform

Advanced User Interface Programming Using the Eclipse Rich Client Platform Advanced User Interface Programming Using the Eclipse Rich Client Platform Tod Creasey IBM Canada Tod Creasey Advanced User Interface Programming Using the Eclipse Rich Client Platform Page 1 About the

More information

The Eclipse Rich Ajax Platform

The Eclipse Rich Ajax Platform The Eclipse Rich Ajax Platform Frank Appel RAP Tech Lead fappel@innoopract.com Eclipse RAP 1.1 Copyright Innoopract made available under the EPL 1.0 page: 1 The Innoopract pitch Integration & delivery

More information

Socket attaches to a Ratchet. 2) Bridge Decouple an abstraction from its implementation so that the two can vary independently.

Socket attaches to a Ratchet. 2) Bridge Decouple an abstraction from its implementation so that the two can vary independently. Gang of Four Software Design Patterns with examples STRUCTURAL 1) Adapter Convert the interface of a class into another interface clients expect. It lets the classes work together that couldn't otherwise

More information

JClone: Syntax tree based clone detection for Java

JClone: Syntax tree based clone detection for Java Degree Project JClone: Syntax tree based clone detection for Java Muhammed Yasin Bahtiyar 2010-03-30 Subject: Software Technology Level: Master Course code: DA4004 Abstract An unavoidable amount of money

More information

Trusted Components. Reuse, Contracts and Patterns. Prof. Dr. Bertrand Meyer Dr. Karine Arnout

Trusted Components. Reuse, Contracts and Patterns. Prof. Dr. Bertrand Meyer Dr. Karine Arnout 1 Last update: 2 November 2004 Trusted Components Reuse, Contracts and Patterns Prof. Dr. Bertrand Meyer Dr. Karine Arnout 2 Lecture 5: Design patterns Agenda for today 3 Overview Benefits of patterns

More information

IBM Workplace Client Technology API Toolkit

IBM Workplace Client Technology API Toolkit IBM Workplace Client Technology API Toolkit Version 2.5 User s Guide G210-1984-00 IBM Workplace Client Technology API Toolkit Version 2.5 User s Guide G210-1984-00 Note Before using this information and

More information

Design Document CDT Remote Search/Index Framework. Chris Recoskie Vivian Kong Mike Kucera Jason Montojo. IBM Corporation

Design Document CDT Remote Search/Index Framework. Chris Recoskie Vivian Kong Mike Kucera Jason Montojo. IBM Corporation Design Document CDT Remote Search/Index Framework Chris Recoskie Vivian Kong Mike Kucera Jason Montojo IBM Corporation Page 1 of 26 1 Introduction 1.1 Purpose The purpose of this document is to describe

More information

Regular Forum of Lreis. Speechmaker: Gao Ang

Regular Forum of Lreis. Speechmaker: Gao Ang Regular Forum of Lreis Speechmaker: Gao Ang Content: A. Overview of Eclipse Project B. Rich Client Platform C. The progress of ustudio Project D. The development of Grid technology and Grid GIS E. Future

More information

McAffer_Index.qxd 9/20/2005 9:39 AM Page 495. Index

McAffer_Index.qxd 9/20/2005 9:39 AM Page 495. Index McAffer_Index.qxd 9/20/2005 9:39 AM Page 495 Index A Action (in Eclipse) ActionBarAdvisor 51, 227, 261, 280 Action extension points 231 actions in Hyperbola multiple product configurations 388 adding actions

More information

inside eclipse Erich Gamma Eclipse Project Management Committee Member IBM Distinguished Engineer IBM Rational Software

inside eclipse Erich Gamma Eclipse Project Management Committee Member IBM Distinguished Engineer IBM Rational Software inside eclipse Erich Gamma Eclipse Project Management Committee Member IBM Distinguished Engineer IBM Rational Software inside eclipse 2005 IBM Corporation what is eclipse? an IDE and more it s a Java

More information

Smart Client development with the Eclipse Rich Client Platform

Smart Client development with the Eclipse Rich Client Platform Smart Client development with the Eclipse Rich Client Platform Nick Edgar and Pascal Rapicault IBM Rational Software Ottawa, Ontario Eclipse Platform Committers To contact us: news://news.eclipse.org/eclipse.platform.rcp

More information

Programming ArchiTech

Programming ArchiTech Programming ArchiTech The intention of this document is to give a description of the way ArchiTech has been programmed, in order to make anyone who wants to take a look to the code easier to understand

More information

Eclipse Building Commercial-Quality Plug-ins Second Edition

Eclipse Building Commercial-Quality Plug-ins Second Edition Eclipse Building Commercial-Quality Plug-ins Second Edition Eric Clayberg Dan Rubel v:addison-wesley Upper Saddle River, NJ Boston Indianapolis San Francisco New York Toronto Montreal London Munich Paris

More information

Introduction to Eclipse and Eclipse RCP

Introduction to Eclipse and Eclipse RCP Introduction to Eclipse and Eclipse RCP Kenneth Evans, Jr. Presented at the EPICS Collaboration Meeting June 13, 2006 Argonne National Laboratory, Argonne, IL Eclipse Eclipse is an Open Source community

More information

The GoF Design Patterns Reference

The GoF Design Patterns Reference The GoF Design Patterns Reference Version.0 / 0.0.07 / Printed.0.07 Copyright 0-07 wsdesign. All rights reserved. The GoF Design Patterns Reference ii Table of Contents Preface... viii I. Introduction....

More information

Common Navigator Framework

Common Navigator Framework Common Navigator Framework file://c:\d\workspaces\eclipsecnf\org.eclipse.platform.doc.isv\guide\cnf.htm Page 1 of 3 Common Navigator Framework A Viewer provides the user with a view of objects using a

More information

Foundations of User Interface Programming Using the Eclipse Rich Client Platform

Foundations of User Interface Programming Using the Eclipse Rich Client Platform Foundations of User Interface Programming Using the Eclipse Rich Client Platform Tod Creasey IBM Canada Tod Creasey Foundations of User Interface Programming Using the Eclipse Rich Client Platform Page

More information

THOMAS LATOZA SWE 621 FALL 2018 DESIGN PATTERNS

THOMAS LATOZA SWE 621 FALL 2018 DESIGN PATTERNS THOMAS LATOZA SWE 621 FALL 2018 DESIGN PATTERNS LOGISTICS HW3 due today HW4 due in two weeks 2 IN CLASS EXERCISE What's a software design problem you've solved from an idea you learned from someone else?

More information

Software Engineering I (02161)

Software Engineering I (02161) Software Engineering I (02161) Week 10 Assoc. Prof. Hubert Baumeister DTU Compute Technical University of Denmark Spring 2016 Last Time Project Planning Non-agile Agile Refactoring Contents Basic Principles

More information

Design Patterns. Manuel Mastrofini. Systems Engineering and Web Services. University of Rome Tor Vergata June 2011

Design Patterns. Manuel Mastrofini. Systems Engineering and Web Services. University of Rome Tor Vergata June 2011 Design Patterns Lecture 1 Manuel Mastrofini Systems Engineering and Web Services University of Rome Tor Vergata June 2011 Definition A pattern is a reusable solution to a commonly occurring problem within

More information

Object Oriented Paradigm

Object Oriented Paradigm Object Oriented Paradigm Ming-Hwa Wang, Ph.D. Department of Computer Engineering Santa Clara University Object Oriented Paradigm/Programming (OOP) similar to Lego, which kids build new toys from assembling

More information

Eclipse and Framework Extension Languages

Eclipse and Framework Extension Languages Eclipse and Framework Extension Languages Prof. Uwe Aßmann TU Dresden Institut für Software und Multimediatechnik Lehrstuhl Softwaretechnologie Design Patterns and Frameworks, Prof. Uwe Aßmann 1 References

More information

Introduction to Software Engineering: Object Design I Reuse & Patterns

Introduction to Software Engineering: Object Design I Reuse & Patterns Introduction to Software Engineering: Object Design I Reuse & Patterns John T. Bell Department of Computer Science University of Illinois, Chicago Based on materials from Bruegge & DuToit 3e, Chapter 8,

More information

Eclipse Introduction. Zeng Yu

Eclipse Introduction. Zeng Yu Eclipse Introduction Zeng Yu yuzeng@cn.ibm.com IBM Software Group 2004 5 21 1 Presentation Plan What is Eclipse Brief history of Eclipse Concept of Plug-ins Platform Architecture Workspace Workbench (SWT,

More information

Introduction to Eclipse

Introduction to Eclipse Introduction to Eclipse Getting started with Eclipse 05/02/2010 Prepared by Chris Panayiotou for EPL 233 1 What is Eclipse? o Eclipse is an open source project http://www.eclipse.org Consortium of companies,

More information

Applying Design Patterns to accelerate development of reusable, configurable and portable UVCs. Accellera Systems Initiative 1

Applying Design Patterns to accelerate development of reusable, configurable and portable UVCs. Accellera Systems Initiative 1 Applying Design Patterns to accelerate development of reusable, configurable and portable UVCs. Accellera Systems Initiative 1 About the presenter Paul Kaunds Paul Kaunds is a Verification Consultant at

More information

ADT: Eclipse development tools for ATL

ADT: Eclipse development tools for ATL ADT: Eclipse development tools for ATL Freddy Allilaire (freddy.allilaire@laposte.net) Tarik Idrissi (tarik.idrissi@laposte.net) Université de Nantes Faculté de Sciences et Techniques LINA (Laboratoire

More information

Workplace Client Technology, Micro Edition. WCTME Enterprise Offering Application Developer s Guide

Workplace Client Technology, Micro Edition. WCTME Enterprise Offering Application Developer s Guide Workplace Client Technology, Micro Edition WCTME Enterprise Offering Application Developer s Guide Note Before using this information and the product it supports, read the information in Notices, on page

More information

News in RSA-RTE 10.2 updated for sprint Mattias Mohlin, May 2018

News in RSA-RTE 10.2 updated for sprint Mattias Mohlin, May 2018 News in RSA-RTE 10.2 updated for sprint 2018.18 Mattias Mohlin, May 2018 Overview Now based on Eclipse Oxygen.3 (4.7.3) Contains everything from RSARTE 10.1 and also additional features and bug fixes See

More information

Mitglied der Helmholtz-Gemeinschaft. Eclipse Parallel Tools Platform (PTP)

Mitglied der Helmholtz-Gemeinschaft. Eclipse Parallel Tools Platform (PTP) Mitglied der Helmholtz-Gemeinschaft Eclipse Parallel Tools Platform (PTP) April 25, 2013 Carsten Karbach Content 1 Parallel Tools Platform (PTP) 2 Eclipse Plug-In Development April 25, 2013 Carsten Karbach

More information

Mobile Application Workbench. SAP Mobile Platform 3.0 SP02

Mobile Application Workbench. SAP Mobile Platform 3.0 SP02 SAP Mobile Platform 3.0 SP02 DOCUMENT ID: DC-01-0302-01 LAST REVISED: January 2014 Copyright 2014 by SAP AG or an SAP affiliate company. All rights reserved. No part of this publication may be reproduced

More information

About Tom. CEO BestSolution Systemhaus GmbH. Eclipse Committer. Platform UI EMF. Projectlead: UFaceKit, Nebula. Member of the Architectual Council

About Tom. CEO BestSolution Systemhaus GmbH. Eclipse Committer. Platform UI EMF. Projectlead: UFaceKit, Nebula. Member of the Architectual Council State of Eclipse 4.x Tom Schindl - BestSolution Systemhaus GmbH, Eric Moffatt IBM Leuven October 2011 About Tom CEO BestSolution Systemhaus GmbH Eclipse Committer e4 Platform UI EMF Projectlead: UFaceKit,

More information

ECLIPSE RICH CLIENT PLATFORM

ECLIPSE RICH CLIENT PLATFORM ECLIPSE RICH CLIENT PLATFORM DESIGNING, CODING, AND PACKAGING JAVA TM APPLICATIONS Jeff McAffer Jean-Michel Lemieux v:addison-wesley Upper Saddle River, NJ Boston Indianapolis San Francisco New York Toronto

More information

Object-Oriented Design

Object-Oriented Design Object-Oriented Design Lecturer: Raman Ramsin Lecture 20: GoF Design Patterns Creational 1 Software Patterns Software Patterns support reuse of software architecture and design. Patterns capture the static

More information

NetBeans to Eclipse GlassFish Project Converter. Michael Tidd

NetBeans to Eclipse GlassFish Project Converter. Michael Tidd Project Number. GFP 0903 NetBeans to Eclipse GlassFish Project Converter A Major Qualifying Project Report: submitted to the faculty of the WORCESTER POLYTECHNIC INSTITUTE in partial fulfillment of the

More information

Eclipse Platform Technical Overview

Eclipse Platform Technical Overview Eclipse Platform Technical Overview Object Technology International, Inc. February 2003 (updated for 2.1; originally published July 2001) Abstract: The Eclipse Platform is designed for building integrated

More information

Using Design Patterns in Java Application Development

Using Design Patterns in Java Application Development Using Design Patterns in Java Application Development ExxonMobil Research & Engineering Co. Clinton, New Jersey Michael P. Redlich (908) 730-3416 michael.p.redlich@exxonmobil.com About Myself Degree B.S.

More information

Rich Client GUI's with RCP & RAP

Rich Client GUI's with RCP & RAP Rich Client GUI's with RCP & RAP Alexey Aristov WeigleWilczek GmbH aristov@weiglewilczek.com What is Rich Client? A fat client or rich client is a computer (client) in client-server architecture networks

More information

Design patterns. Jef De Smedt Beta VZW

Design patterns. Jef De Smedt Beta VZW Design patterns Jef De Smedt Beta VZW Who Beta VZW www.betavzw.org Association founded in 1993 Computer training for the unemployed Computer training for employees (Cevora/Cefora) 9:00-12:30 13:00-16:00

More information

Design Pattern and Software Architecture: IV. Design Pattern

Design Pattern and Software Architecture: IV. Design Pattern Design Pattern and Software Architecture: IV. Design Pattern AG Softwaretechnik Raum E 3.165 Tele.. 60-3321 hg@upb.de IV. Design Pattern IV.1 Introduction IV.2 Example: WYSIWYG Editor Lexi IV.3 Creational

More information

Outline. Tutorial III. Eclipse. Basics. Eclipse Plug-in Feature

Outline. Tutorial III. Eclipse. Basics. Eclipse Plug-in Feature Outline Tutorial III. Eclipse Basics Eclipse Plug-in feature, MVC How to build Plug-ins Exploring Eclipse source code for Editor Using CVS inside Eclipse Eclipse JDK Tips Basics Eclipse projects: Eclipse

More information

Design Patterns: Structural and Behavioural

Design Patterns: Structural and Behavioural Design Patterns: Structural and Behavioural 3 April 2009 CMPT166 Dr. Sean Ho Trinity Western University See also: Vince Huston Review last time: creational Design patterns: Reusable templates for designing

More information

Implementation of a 2D Graph Viewer

Implementation of a 2D Graph Viewer Degree Project Implementation of a 2D Graph Viewer Javier de Muga 2010-01-29 Subject: computer science Level: master Course code: DA4014 Abstract The VizzAnalyzer tool is a program analysis tool with a

More information

CHAPTER 1: A GENERAL INTRODUCTION TO PROGRAMMING 1

CHAPTER 1: A GENERAL INTRODUCTION TO PROGRAMMING 1 INTRODUCTION xxii CHAPTER 1: A GENERAL INTRODUCTION TO PROGRAMMING 1 The Programming Process 2 Object-Oriented Programming: A Sneak Preview 5 Programming Errors 6 Syntax/Compilation Errors 6 Runtime Errors

More information

Tools to Develop New Linux Applications

Tools to Develop New Linux Applications Tools to Develop New Linux Applications IBM Software Development Platform Tools for every member of the Development Team Supports best practices in Software Development Analyst Architect Developer Tester

More information

CSCI 253. Overview. The Elements of a Design Pattern. George Blankenship 1. Object Oriented Design: Template Method Pattern. George Blankenship

CSCI 253. Overview. The Elements of a Design Pattern. George Blankenship 1. Object Oriented Design: Template Method Pattern. George Blankenship CSCI 253 Object Oriented Design: George Blankenship George Blankenship 1 Creational Patterns Singleton Abstract factory Factory Method Prototype Builder Overview Structural Patterns Composite Façade Proxy

More information

News in RSA-RTE 10.1 updated for sprint Mattias Mohlin, November 2017

News in RSA-RTE 10.1 updated for sprint Mattias Mohlin, November 2017 News in RSA-RTE 10.1 updated for sprint 2017.46 Mattias Mohlin, November 2017 Overview Now based on Eclipse Neon.3 (4.6.3) Many general improvements since Eclipse Mars Contains everything from RSARTE 10

More information

Beware: Testing RCP Applications in Tycho can cause Serious Harm to your Brain. OSGi p2

Beware: Testing RCP Applications in Tycho can cause Serious Harm to your Brain. OSGi p2 JUnit Beware: Testing RCP Applications in Tycho can cause Serious Harm to your Brain Dependencies Debugging Surefire OSGi p2 Mac OS X Update Site Tycho Redistribution and other use of this material requires

More information

JDT Plug in Developer Guide. Programmer's Guide

JDT Plug in Developer Guide. Programmer's Guide JDT Plug in Developer Guide Programmer's Guide Table of Contents Java Development Tooling overview...1 Java elements and resources...1 Java elements...1 Java elements and their resources...3 Java development

More information

RAP (The Rich Ajax Platform)

RAP (The Rich Ajax Platform) RAP (The Rich Ajax Platform) Eclipse Banking Day New York Jochen Krause RAP Project lead jkrause@eclipsesource.com 2008 EclipseSource December 2008 RAP enables building modular applications for web and

More information

News in RSA-RTE 10.1 updated for sprint Mattias Mohlin, January 2018

News in RSA-RTE 10.1 updated for sprint Mattias Mohlin, January 2018 News in RSA-RTE 10.1 updated for sprint 2018.03 Mattias Mohlin, January 2018 Overview Now based on Eclipse Neon.3 (4.6.3) Many general improvements since Eclipse Mars Contains everything from RSARTE 10

More information

OMNeT++ IDE Developers Guide. Version 5.2

OMNeT++ IDE Developers Guide. Version 5.2 OMNeT++ IDE Developers Guide Version 5.2 Copyright 2016 András Varga and OpenSim Ltd. 1. Introduction... 1 2. Installing the Plug-in Development Environment... 2 3. Creating The First Plug-in... 4 Creating

More information

Equinox Framework: How to get Hooked

Equinox Framework: How to get Hooked Equinox Framework: How to get Hooked Thomas Watson, IBM Lotus Equinox Project co-lead Equinox Framework lead developer 2008 by IBM Corp; made available under the EPL v1.0 March 2008 Tutorial Agenda Equinox

More information

Eclipse Plug-ins. Third Edition

Eclipse Plug-ins. Third Edition Eclipse Plug-ins Third Edition Eric Clayberg Dan Rubel :vaddison-wesley Upper Saddle River, NJ Boston Indianapolis San Francisco New York Toronto Montreal London Munich Paris Madrid Capetown Sydney Tokyo

More information

Software Design Patterns. Background 1. Background 2. Jonathan I. Maletic, Ph.D.

Software Design Patterns. Background 1. Background 2. Jonathan I. Maletic, Ph.D. Software Design Patterns Jonathan I. Maletic, Ph.D. Department of Computer Science Kent State University J. Maletic 1 Background 1 Search for recurring successful designs emergent designs from practice

More information

6367(Print), ISSN (Online) Volume 4, Issue 2, March April (2013), IAEME & TECHNOLOGY (IJCET)

6367(Print), ISSN (Online) Volume 4, Issue 2, March April (2013), IAEME & TECHNOLOGY (IJCET) INTERNATIONAL International Journal of Computer JOURNAL Engineering OF COMPUTER and Technology ENGINEERING (IJCET), ISSN 0976- & TECHNOLOGY (IJCET) ISSN 0976 6367(Print) ISSN 0976 6375(Online) Volume 4,

More information

Modellistica Medica. Maria Grazia Pia, INFN Genova. Scuola di Specializzazione in Fisica Sanitaria Genova Anno Accademico

Modellistica Medica. Maria Grazia Pia, INFN Genova. Scuola di Specializzazione in Fisica Sanitaria Genova Anno Accademico Modellistica Medica Maria Grazia Pia INFN Genova Scuola di Specializzazione in Fisica Sanitaria Genova Anno Accademico 2002-2003 Lezione 9 OO modeling Design Patterns Structural Patterns Behavioural Patterns

More information

Using the Plug in Development Environment

Using the Plug in Development Environment IBM Corporation and others 2000, 2005. This page is made available under license. For full details see the LEGAL in the documentation bo Table of Contents Introduction to PDE...1 Preparing the workbench...2

More information

Building JavaServer Faces Applications

Building JavaServer Faces Applications IBM Software Group St. Louis Java User Group Tim Saunders ITS Rational Software tim.saunders@us.ibm.com 2005 IBM Corporation Agenda JSF Vision JSF Overview IBM Rational Application Developer v6.0 Build

More information

Android Apps. with Eclipse. Apress. Onur Cinar

Android Apps. with Eclipse. Apress. Onur Cinar Android Apps with Eclipse Onur Cinar Apress Contents About the Author About the Technical Reviewer Introduction x xi xii Chapter 1: Android Primer 1 Android History 1 Android Versions..2 Android Platform

More information

Introducing HP NonStop Development Environment Version 2.0 for Eclipse (NSDEE 2.0)

Introducing HP NonStop Development Environment Version 2.0 for Eclipse (NSDEE 2.0) Introducing HP NonStop Development Environment Version 2.0 for Eclipse (NSDEE 2.0) Swaroop Dutta Steve Williams Seth Hawthorne May 6, 2010 1 2010 Hewlett-Packard Development Company, L.P. The information

More information

COSC 3351 Software Design. Design Patterns Behavioral Patterns (I)

COSC 3351 Software Design. Design Patterns Behavioral Patterns (I) COSC 3351 Software Design Design Patterns Behavioral Patterns (I) Spring 2008 Purpose Creational Structural Behavioral Scope Class Factory Method Adapter(class) Interpreter Template Method Object Abstract

More information

Design Patterns. (and anti-patterns)

Design Patterns. (and anti-patterns) Design Patterns (and anti-patterns) Design Patterns The Gang of Four defined the most common object-oriented patterns used in software. These are only the named ones Lots more variations exist Design Patterns

More information

Web Applica+on Development. Budapes( Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Web Applica+on Development. Budapes( Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Web Applica+on Development Budapes( Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék UI Development Trends Desktop applica+ons Opera+ng system integra+on Rich set of

More information

e4 Project 0.9 Release Review

e4 Project 0.9 Release Review e4 Project 0.9 Release Review July 30, 2009 Review communication channel: e4-dev@eclipse.org 1 Highlights 0.9 is a technology preview of interesting work happening in the e4 incubator This is not a commercial

More information

Supervisor : Germán Cancio Meliá. Towards a GUI for CDB-CLI

Supervisor : Germán Cancio Meliá. Towards a GUI for CDB-CLI Towards a GUI for CDB-CLI Outline > Overview of CDB-CLI Why a GUI? Investigations Results & Future Work Conclusion Overview of CDB-CLI Command Line Interface for the Configuration DataBase of Quattor $

More information

CSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich

CSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich CSCD01 Engineering Large Software Systems Design Patterns Joe Bettridge Winter 2018 With thanks to Anya Tafliovich Design Patterns Design patterns take the problems consistently found in software, and

More information

Composite Pattern. IV.4 Structural Pattern

Composite Pattern. IV.4 Structural Pattern IV.4 Structural Pattern Motivation: Compose objects to realize new functionality Flexible structures that can be changed at run-time Problems: Fixed class for every composition is required at compile-time

More information

Plug-ins, RCP and SWT. Sample Content

Plug-ins, RCP and SWT. Sample Content Introducing Eclipse Plug-ins, RCP and SWT Sample Content Building On Top Of Eclipse A majority of Java projects use Eclipse as their IDE However there is a big difference between developing with Eclipse

More information

Custom Code Rules Deep Dive

Custom Code Rules Deep Dive Custom Code Rules Deep Dive IDz/RDz Software Analyzer Jon Gellin, Senior Software Engineer 24 October 2017 What we will not be talking about What is IDz/RDz? What are code rules? Why would I want to use

More information

Design Patterns Reid Holmes

Design Patterns Reid Holmes Material and some slide content from: - Head First Design Patterns Book - GoF Design Patterns Book Design Patterns Reid Holmes GoF design patterns $ %!!!! $ "! # & Pattern vocabulary Shared vocabulary

More information

CDT C++ Refactorings

CDT C++ Refactorings HSR University of Applied Sciences Rapperswil Departement of Computer Science - Institute for Software CDT C++ Refactorings Bachelor Thesis: Spring Term 2010 Matthias Indermühle mindermu@hsr.ch Roger Knöpfel

More information

Comparing graphical DSL editors

Comparing graphical DSL editors Comparing graphical DSL editors AToM 3 vs GMF & MetaEdit+ Nick Baetens Outline Introduction MetaEdit+ Specifications Workflow GMF Specifications Workflow Comparison 2 Introduction Commercial Written in

More information

What s new in CDT 4.0 and beyond. Doug Schaefer QNX Software Systems CDT Project Lead

What s new in CDT 4.0 and beyond. Doug Schaefer QNX Software Systems CDT Project Lead What s new in CDT 4.0 and beyond Doug Schaefer QNX Software Systems CDT Project Lead 2007 by QNX Software Systems; made available under the EPL v1.0 October 10, 2007 Where it all began From: "John Duimovich"

More information