Software modular bauen. Ulf Fildebrandt

Size: px
Start display at page:

Download "Software modular bauen. Ulf Fildebrandt"

Transcription

1 Software modular bauen Ulf Fildebrandt

2 Some words before This presentation should give some insights in big software products and how the structure of these products is managed

3 About the presenter Ulf Fildebrandt Studied computer science Works for SAP since 1998 Starting with C++, once SAP decided to use Java part of the Java stack Product architect of SAP Netweaver Composition Environment (Java stack) Program architect of SAP Netweaver 7.30 Program architect of Integration on Java on demand stack

4 Agenda Problem statement Goals Means to explain Basics of modularity with OSGi Principles and patterns Design Patterns (GoF) SOLID System architecture (for decoupling) Comparison of frameworks

5 In every phenomenon the beginning remains always the most notable moment. Thomas Carlyle Findbugs Analysis by Structure 101 SAP Netweaver Structure Problem statement

6 Findbugs Analysis Famous analysis done by Ian Sutton Can be found at are-erosion-findbugs/ Uses Structure 101 (see also JAX 2012 innovation award for Restructure 101)

7 Findbugs 0.7.2

8 Findbugs 0.8.6

9 Findbugs 0.8.7

10 Findbugs 1.0.0

11 Findbugs 1.3.0

12 Findbugs 1.3.5

13 Server Analysis Own analysis tool of SAP Java server Structure of current Netweaver server is shown Not only Java dependencies (packages) difference to Structure 101 Usage Types Software Components Packages

14 Structure of Complex System I Overview of product en/dbg/java/packaged/full/_doc_pkg/content/index.html

15 Structure of a Complex System II Basic Scenario

16 Structure of a Complex System III Detailed dependencies

17 ...it is almost always incorrect to begin the decomposition of a system into modules on the basis of a flowchart. We propose instead that one begins with a list of difficult design decisions or design decisions which are likely to change. Each module is then designed to hide such a decision from the others. David Parnas Substitutability Extensibility Goals

18 Extensibility Mo dule A Mo dule E Mo dule B Mo dule D Mo dule F Mo dule C A module is a self-contained component of a system, often interchangeable, which has a well-defined interface to the other components.

19 Substitutability Mo dule A Mo dule E Mo dulemo D dule B Mo dule D Mo dule C A module is a self-contained component of a system, often interchangeable, which has a well-defined interface to the other components.

20 Goal: Sustainable Software Mo dule A Mo dule E Mo dule B Mo dule D Mo dule F Mo dule C System can evolve over time and modules can be replaced without impacting the other modules.

21 Programming without an overall architecture or design in mind is like exploring a cave with only a flashlight: You don't know where you've been, you don't know where you're going, and you don't know quite where you are. Danny Thorpe Levels of Architecture Web Application as an example Means to explain

22 Levels of Architecture Same principles can be applied on all levels of architecture Systemarchitek tur Komponentenarchitektur CodingArchitektur Facade Factory Dependency Injection Liskov

23 Web Application o m e D

24 Good fences make good neighbors. Robert Frost Packages Services Lifecycle Modularity Maturity Model Basic modularity with OSGi

25 Package Structure of a Bundle Bundle exports only defined packages Exported Package Packages can be imported from other archives (bundles) Exported Package (Internal Packages) Bundle Imported Package Imported Package All other packages are only visible inside the bundle

26 Package Dependencies of a Bundle Bundle Imported Package Imported Package Exported Package Exported Package Bundle

27 Service Structure of a Bundle Exposed Service Exposed Service Bundle Used Service Used Service A service is an implementation of a Java interface Bundle exposes services to service registry Used services are taken from service registry

28 Service Dependencies of a Bundle Exposed Service Exposed Service Bundle Used Service Used Service Exposed Service Exposed Service Bundle Service implementations are taken from service registry (not shown here) Bundle

29 Lifecycle of a Bundle install installed start starting resolve uninstall resolved uninstall uninstalled active stop stopping

30 How to achieve modularity... OSGi is a framework on top of Java Complements Java very good...but modularity does not come for free

31 Modularity Maturity Model I Level 1: Ad Hoc At the Ad-hoc level, there isn't any formal modularity. A flat class path issued with a bunch of classes with no, or limited, structure.they may use 'library JARs' to access functionality but typically results in a monolithic application. Benefits The main benefit of this is the low cost and low barrier to entry. Level 2: Modules Modules are explicitly versioned and have formal module identities, instead of merely classes (or JARs of classes). In particular, and a key point of this, is that dependencies are done against the module identity (including version) rather than the units themselves. Maven, Ivy, RPM and OSGi are all examples of where dependencies are managed at the versioned identity level instead of at the JAR level. Benefits Decouple module from artefact Clearer view of module assembly Enables version awareness through build, development and operations Enables module categories

32 Modularity Maturity Model II Level 3: Modularity Modules are declared via module contracts, not via artefacts. The private parts of the modules are an implementation detail. In this level, dependency resolution comes first and module identity is of lesser importance. Benefits Fine-grained impact awareness (for bug fixes, implementation or client breaking changes) System structure awareness Client/provider independence Requirement-based dependency checking Level 4: Loose coupling There is a separation of interface from implementation; they are not acquired via factories or use constructors to access the implementations. This provides a services-based module collaboration (seen in OSGi, but also present in some other frameworks like Spring or JNDI to hide the construction of the services from the user of those services).in addition, the dependencies must be semantically versioned. Benefits Implements a client/provider independence

33 Modularity Maturity Model III Level 5: Devolution At the devolved level, artefact ownerships are devolved to modularity-aware repositories. They may support collaboration or governance for accessing the assets by relation to the services and capabilities required. Benefits Greater awareness of existing modules Reduced duplication and increased quality Collaboration and empowerment Quality and operational control Level 6: Dynamism Provides a dynamic module life-cycle, which allows modules to participate in the life cycle events (or initiate them). Will have operational support for module addition/removal/replacement. Benefits No brittle ordering dependencies Ability to dynamically update Can allow fixes to be hot-deployed and to extend capabilities without needing to restart the system

34 Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice. Christopher Alexander Facade Factory Principles and patterns - Design Pattern (GoF)

35 Factory I A factory is an object for creating other objects. It is an abstraction of a constructor. t) A factory externalizes the creation of objects Creation and usage of objects is decoupled Pattern definition works for coding Without factory: DataAggregator da = new DataAggregator(); With factory: IDataAggregator aggregator = DataAggregatorFactory.getInstance();

36 Factory II Apply on component level Externalization of creation of objects is a general pattern How can OSGi help: Service registry provides an abstraction between provider and consumer of a service (object instance) Creation of instances of a service can be handled by frameworks: Declarative services Blueprint

37 Facade I A facade is an object that provides a simplified interface to a larger body of code, such as a class library. Facade: rn public interface IDataAggregator { public List<IDataItem> get(); } Implementation of facade: final class IdentityDataAggregator extends DataAggregator public ArrayList<IDataItem> get() { List<IDataItem> itemlist = new ArrayList<IDataItem>();... return itemlist; } }

38 Facade II Apply on component level Access to a component as a general pattern How can OSGi help: 1. Services are Java interfaces 1. Service implementations are accessed via interface = facade 2. Exported packages are the only external visible entities of a bundle 1. Not exported packages are not accessible 2. Clear definition of a facade of the bundle

39 Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice. Christopher Alexander Dependency Injection (SOLID) Liskov (SOLID) Principles and patterns - SOLID

40 Dependency Injection I Dependency injection involves at least three elements: a dependent consumer, a declaration of a component's dependencies, defined as interface contracts, an injector (sometimes referred to as a provider or container) that creates instances of classes that implement a given dependency interface on request. The dependent object describes what software component it depends on to do its work. The injector decides what concrete classes satisfy the requirements of the dependent object, and provides them to the dependent. n

41 property method method property method method method property method Class 1 method property method Dependency Injection II Class 2

42 Dependency Injection III Apply on component level Reverse the dependency is a general pattern How can OSGi help: Service registry provides an abstraction between provider and consumer of a service (object instance) Injecting dependencies can be handled by additional frameworks Declarative services Blueprint

43 Web Application e v i t a r a l c e s D e c i v o r m e S De

44 Liskov Let q(x) be a property provable about objects x of type T. Then q(y) should be provable for objects y of type S where S is a subtype of T. Facade = T: ple public interface IDataAggregator { public List<IDataItem> get(); } Implementation of facade = S: final class IdentityDataAggregator extends DataAggregator public ArrayList<IDataItem> get() { List<IDataItem> itemlist = new ArrayList<IDataItem>();... return itemlist; } }

45 Example to apply coding patterns

46 Definition of a Composite Application Wikipedia: A Composite Application is an application built by combining multiple existing functions into a new application. Extended Definition: Composite Applications are user centric applications supporting highly collaborative and dynamic business processes which span beyond functional, system, and organizational boundaries by using data and functions provided as services by platforms and applications. SAP AG All rights reserved. / Page 46

47 COMPOSITE APPLICATION Anatomy of Composite Applications Role 2 Role 1 Step 1 Workcenter Step 2 UI Remote Services Step 3 Step 4 UI UI Business Entities Composite Process User Interfaces Local Services Business Entities, Services Remote Local Enterprise Service Bus BACKEND (optional) SAP AG All rights reserved. / Page 47 Services CRM Services Services BW ERP Service Enablement Systems

48 DEMO Composite Application Structure

49 Simple approach: build a framework on top of the tools, but Installation problem All or nothing -approach, because all tools have to be installed Integration Framework R Domain Tool Domain R Domain Tool Domain R Domain Tool Domain New tools The integration framework does not have a reference to the new tool Domain Tool Domain Note: same problem appears by integrating all domains with a common layer at the bottom, e.g. modeling framework/repository SAP 2007 / Page 49

50 Adapter Basic principle: Adapter mediates between tool and capability Target is exposing interfaces and extension points (Eclipse) Source is implementing extensions and using public APIs Adapter connects tool and capabilities Tool does not reference the capability functionality integration is completely done by the adapter Adapter is completely separated from tool tool is built on minimal requirements tool is able to run without integration SAP 2007 / Page 50 Source Target

51 Consistent visualization of a Composite Application Graphical overview and relations Display consistency or inconsistencies between parts of a Composite Application Integration Framework (Composite Designer) Pluggable infrastructure to integrate separated tools Optional extensions to allow step-wise integration Tools can start with a basic integration and extend it later Tool provides extension points SAP 2007 / Page 51 Domain Domain Domain Tool R Domain Tool R Adapter R Domain Tool R Adapter R Capability Integration Framework Facade Domain Adapter R Integration framework provides extension points

52 SAP 2008 / Page 52

53 Main element factory provider registration <extension point="com.sap.ide.comp.pers.core.modeler.graphicalelementfactories " id="wd" name="wd Content in Overview"> <factory dctype="web Dynpro" class = "com.sap.ide.comp.pers.adapter.wd.wdgraphicalelementfactory" layer="user Interface"/> </extension> Signature of: Interface IGraphicalElementFactory java.util.list<iresolvedelement> getmainelements(igraphicscontext context) Public interface IElement Factory Base protocol for all entities that Composite Designer can deal with. Elements can appear in two basic forms: Resolved: such elements point to an entity from a concrete domain (e.g. J2EE, Web Dynpro). They usually appear in the form of an graphical element. Unresolved: such elements cannot be resolved in the adapter which created them, but usually in a different adapter. For example the Process Composer adapter could create an unresolved element for a Web Dynpro Component by just specifying its key, and only the Web Dynpro adapter is able to resolve it into a complete (resolved) element. SAP 2008 / Page 53

54 SAP 2008 / Page 54

55 Dependency contributor registration <extension point="com.sap.ide.comp.pers.api.dependencycontributors"> <contributor class="com.sap.ide.comp.pers.adapter.wd.wddependencycontributor"/> </extension> Signature of: Interface IDependencyContributor java.util.list<iresolvedelement> getincomingelements(iresolvedelement element) java.util.list<ielement> getoutgoingelements(iresolvedelement element) IResolvedElement resolveelement(iresolutioncontext context) Separated interface Public interface IElement Base protocol for all entities that Composite Designer can deal with. Elements can appear in two basic forms: Resolved: such elements point to an entity from a concrete domain (e.g. J2EE, Web Dynpro). They usually appear in the form of an graphical element. Unresolved: such elements cannot be resolved in the adapter which created them, but usually in a different adapter. For example the Process Composer adapter could create an unresolved element for a Web Dynpro Component by just specifying its key, and only the Web Dynpro adapter is able to resolve it into a complete (resolved) element. SAP 2008 / Page 55

56 Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice. Christopher Alexander Architecture Layer SEDA System Architecture - for decoupling

57 Architecture Layer I Package Module Sub system System Layer System Platform A platform (in terms of runtime framework) hosts a system and is a versioned artifact A system consists of a set of sub-systems and is a versioned artifact running on a platform A system layer groups sub-systems providing structure and direction in terms of dependencies and is a layer which has no associated versioned artifact A system layer incarnation is the bill of materials or assembled sub-systems of a system layer relevant for a specific use case A sub-system consists of a set of modules and is a versioned artifact A module contains packages and is a versioned artifact A package contains components A component is a File A file is of type resource or source

58 Architecture Layer (as is) II Package Module = Subsystem = Bundle Package analysis of web application Uses Structure 101 (see also JAX 2012 innovation award for Restructure 101) System Layer

59 Architecture Layer (to be) III Data Display (Servlet) Data Aggregator 1 Aggregator Data Source 1 Data Source 2 Data Aggregator 2 Data Provider Data Aggregator Interface Data Aggregator Interface Data Source Interface UI Data Source Interface

60 Architecture Layer IV ConQAT (to-be diagram) ConQAT ( Compared to Structure 101: extensible because of open source Used to implement modularity metrics Easy integration in build process (Maven) automatic check of to-be and as-is

61 Modularity Metrics I Coupling: determines the coupling of this component to other components and is computed based on instability (Robert C. Martin). I = Ce / (Ca+Ce) 1..0 (Ce (efferent) = outgoing, Ca (afferent) = ingoing) Consequence: the more components THIS component depends upon, the more instable it is (0= stable, 1=instable) Ca = usages of exported packages Exported Package Exported Package (Internal Packages) Bundle Imported Package Imported Package Ce = imported classes in packages

62 Modularity Metrics II Relational Cohesion: a component should consist of cohesive elements, otherwise, it should be splitted. Average number of internal relationships per type. rc = Td / T (Td.. type relationships that are internal to this component; T.. number of types within the component) As classes inside an assembly should be strongly related, the cohesion should be high. On the other hand, too high values may indicate overcoupling. A good range for RelationalCohesion is 1.5 to 4.0. Assemblies where RelationalCohesion < 1.5 or RelationalCohesion > 4.0 might be problematic. Therefore rci is the normalized RC, having value 1 for 1.5 to 4, decreasing to 0 outside this range based on gaussian bell curve.

63 Modularity Metrics III Encapsulation: Components should encapsulate knowledge and offer a slim interface. ep = pt / T (pt = private Types, T = all types) pt = types in internal packages, T = types in internal packages + types in exported packages Exported Package Exported Package (Internal Packages) Bundle Imported Package Imported Package The Overall Modularity Score is now defined as: M = ((1-I) + rci + ep) / 3.0

64 Demo ConQAT I b e w n o o ti m a De pplic a

65 Demo ConQAT II r e v r e s AP o S m De m o fr

66 Don ts in Layering I Class 1 verwendet Parameter Class Schicht ruft auf Class 2 Schicht ruft per Reflection auf

67 Don ts in Layering II Class 1 Eclass 1 ruft auf Class 2 referenziert Strin g Strin g Eclass 2 Schicht referenziert Schicht

68 SEDA Functional modularization Queue Thread Thread Thread Thread Thread Thread Thread... Stage Queue Thread... Stage Queue Thread... Stage

69 Old protected void doget(httpservletrequest req, HttpServletResponse resp) throws ServletException, IOException { StringBuilder buffer = new StringBuilder(200); PrintWriter writer = resp.getwriter(); renderheader(buffer); List<List<String>> list1 = dataaggregateservice.getdata(req.getparameter("type")); TableObject analyzedtable = new TableObject(list1, DisplayServlet.ANALYZED_DATA, buffer); rendertable(analyzedtable); List<List<String>> list2 = dataaggregateservice.getdata("identity"); TableObject originaltable = new TableObject(list2, ORIGINAL_DATA, buffer); rendertable(originaltable); renderfooter(buffer); writer.write(buffer.tostring()); }

70 Old protected void doget(httpservletrequest req, HttpServletResponse resp) throws ServletException, IOException { StringBuilder buffer = new StringBuilder(200); PrintWriter writer = resp.getwriter(); renderheader(buffer); List<List<String>> list1 = dataaggregateservice.getdata(req.getparameter("type")); TableObject analyzedtable = new TableObject(list1, DisplayServlet.ANALYZED_DATA, buffer); rendertable(analyzedtable); List<List<String>> list2 = dataaggregateservice.getdata("identity"); TableObject originaltable = new TableObject(list2, ORIGINAL_DATA, buffer); rendertable(originaltable); renderfooter(buffer); writer.write(buffer.tostring()); }

71 Rendering protected void doget(httpservletrequest req, HttpServletResponse resp) throws ServletException, IOException { StringBuilder buffer = new StringBuilder(200); PrintWriter writer = resp.getwriter(); renderheader(buffer); t.setdataaggregateservice(dataaggregateservice); triggerrendering(req.getparameter("type"), DisplayServlet.ANALYZED_DATA); triggerrendering("identity", DisplayServlet.ORIGINAL_DATA); String message1 = getresult(); StringTokenizer tokenizer1 = new StringTokenizer(message1, "\n"); String type1 = tokenizer1.nexttoken(); String body1 = tokenizer1.nexttoken(); String message2 = getresult();

72 Trigger Rendering private void triggerrendering(string type, String header) { Connection connection = null; // Create the connection. try { ActiveMQConnectionFactory connectionfactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, ActiveMQConnection.DEFAULT_BROKER_URL); connection = connectionfactory.createconnection(); connection.start(); // Create the session Session session = connection.createsession(false, Session.AUTO_ACKNOWLEDGE); destination = session.createqueue(in); // Create the producer. MessageProducer producer = session.createproducer(destination); producer.setdeliverymode(deliverymode.non_persistent); TextMessage message = session.createtextmessage(type + "\n" + header); producer.send(message);

73 Get Result ActiveMQConnectionFactory connectionfactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, ActiveMQConnection.DEFAULT_BROKER_URL); connection = connectionfactory.createconnection(); connection.start(); // Create the session Session session = connection.createsession(false, Session.AUTO_ACKNOWLEDGE); Queue destination = session.createqueue(out); // Create the consumer MessageConsumer consumer = session.createconsumer(destination); Message message = consumer.receive(); if ( message instanceof TextMessage ) { TextMessage textmessage = (TextMessage)message; text = textmessage.gettext(); } return text;

74 Dispatcher Thread while(true) { Queue destination = session.createqueue(in); MessageConsumer consumer = session.createconsumer(destination); Message message = consumer.receive(); Queue destination = session.createqueue(out); MessageProducer producer = session.createproducer(destination); TextMessage message = session.createtextmessage(type + "\n" + body); producer.send(message); }

75 Example: OSGi vs. Maven + Spring Comparison of frameworks

76 Criteria for Comparison Modules: software is structured in clearly separated units. Decoupling: software modules have clearly defined interfaces and frameworks support development based on interfaces. Repository: software modules are decoupled entities that can be stored in a repository. Versioning: software modules are versioned and framework can handle multiple versions.

77 OSGi vs. Maven + CDI Versioning Repository Versioning Decoupling Module OSGi Repository 0 Module Decoupling OSGi is not the only technology, other technologies serve the same purpose Maven CDI

78 Summary

79 Key take-aways Big software systems have to be structured, but more high-level than packages Additional frameworks support modularity (e.g. OSGi, Maven, Spring, CDI implementations ) Modularity can be measured by metrics

Modular Java Applications with Spring, dm Server and OSGi

Modular Java Applications with Spring, dm Server and OSGi Modular Java Applications with Spring, dm Server and OSGi Copyright 2005-2008 SpringSource. Copying, publishing or distributing without express written permission is prohibit Topics in this session Introduction

More information

Liberate your components with OSGi services

Liberate your components with OSGi services Liberate your components with OSGi services One products journey through the Modularity Maturity Model Alasdair Nottingham (not@uk.ibm.com) WebSphere Application Server V8.5 Liberty Profile Development

More information

OSGi on the Server. Martin Lippert (it-agile GmbH)

OSGi on the Server. Martin Lippert (it-agile GmbH) OSGi on the Server Martin Lippert (it-agile GmbH) lippert@acm.org 2009 by Martin Lippert; made available under the EPL v1.0 October 6 th, 2009 Overview OSGi in 5 minutes Apps on the server (today and tomorrow)

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

The Java EE 6 Tutorial

The Java EE 6 Tutorial 1 of 8 12/05/2013 5:13 PM Document Information Preface Part I Introduction 1. Overview 2. Using the Tutorial Examples Part II The Web Tier 3. Getting Started with Web Applications 4. JavaServer Faces Technology

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

Design Patterns. An introduction

Design Patterns. An introduction Design Patterns An introduction Introduction Designing object-oriented software is hard, and designing reusable object-oriented software is even harder. Your design should be specific to the problem at

More information

Abstraction. Design fundamentals in OO Systems. Fundamental Software Development Principles

Abstraction. Design fundamentals in OO Systems. Fundamental Software Development Principles Abstraction Design fundamentals in OO Systems Tool for abstraction: object Object structure: properties and values for those properties operations to query and update those properties We refer to the collection

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

Example simple-mdb can be browsed at https://github.com/apache/tomee/tree/master/examples/simple-mdb

Example simple-mdb can be browsed at https://github.com/apache/tomee/tree/master/examples/simple-mdb Simple MDB Example simple-mdb can be browsed at https://github.com/apache/tomee/tree/master/examples/simple-mdb Below is a fun app, a chat application that uses JMS. We create a message driven bean, by

More information

Patterns and Best Practices for dynamic OSGi Applications

Patterns and Best Practices for dynamic OSGi Applications Patterns and Best Practices for dynamic OSGi Applications Kai Tödter, Siemens Corporate Technology Gerd Wütherich, Freelancer Martin Lippert, akquinet it-agile GmbH Agenda» Dynamic OSGi applications» Basics»

More information

B. Assets are shared-by-copy by default; convert the library into *.jar and configure it as a shared library on the server runtime.

B. Assets are shared-by-copy by default; convert the library into *.jar and configure it as a shared library on the server runtime. Volume A~B: 114 Questions Volume A 1. Which component type must an integration solution developer define for a non-sca component such as a Servlet that invokes a service component interface? A. Export

More information

Patterns and Best Practices for Dynamic OSGi Applications

Patterns and Best Practices for Dynamic OSGi Applications Patterns and Best Practices for Dynamic OSGi Applications Kai Tödter, Siemens Corporate Technology Gerd Wütherich, Freelancer Martin Lippert, akquinet it-agile GmbH Agenda» Dynamic OSGi applications» Basics»

More information

Java J Course Outline

Java J Course Outline JAVA EE - J2SE - CORE JAVA After all having a lot number of programming languages. Why JAVA; yet another language!!! AND NOW WHY ONLY JAVA??? CHAPTER 1: INTRODUCTION What is Java? History Versioning The

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

Arquillian & ShrinkWrap

Arquillian & ShrinkWrap Arquillian & ShrinkWrap Integration testing made simple November 2014 What do they do? ShrinkWrap to package your test artifacts Arquillian deploys the package to target container Arquillian enriches and

More information

Effective Web Dynpro - Adaptive RFC Models

Effective Web Dynpro - Adaptive RFC Models Effective Web Dynpro - Adaptive RFC Models Bertram Ganz, NWF Web Dynpro Foundation for Java Overview In many Web Dynpro applications, backend access is based on RFC modules in SAP systems. The Web Dynpro

More information

Implementation Architecture

Implementation Architecture Implementation Architecture Software Architecture VO/KU (707023/707024) Roman Kern ISDS, TU Graz 2017-11-15 Roman Kern (ISDS, TU Graz) Implementation Architecture 2017-11-15 1 / 54 Outline 1 Definition

More information

BUILDING MICROSERVICES ON AZURE. ~ Vaibhav

BUILDING MICROSERVICES ON AZURE. ~ Vaibhav BUILDING MICROSERVICES ON AZURE ~ Vaibhav Gujral @vabgujral About Me Over 11 years of experience Working with Assurant Inc. Microsoft Certified Azure Architect MCSD, MCP, Microsoft Specialist Aspiring

More information

Application Architectures, Design Patterns

Application Architectures, Design Patterns Application Architectures, Design Patterns Martin Ledvinka martin.ledvinka@fel.cvut.cz Winter Term 2017 Martin Ledvinka (martin.ledvinka@fel.cvut.cz) Application Architectures, Design Patterns Winter Term

More information

Web Application Development Using JEE, Enterprise JavaBeans and JPA

Web Application Development Using JEE, Enterprise JavaBeans and JPA Web Application Development Using JEE, Enterprise Java and JPA Duration: 35 hours Price: $750 Delivery Option: Attend training via an on-demand, self-paced platform paired with personal instructor facilitation.

More information

Web Application Development Using JEE, Enterprise JavaBeans and JPA

Web Application Development Using JEE, Enterprise JavaBeans and JPA Web Application Development Using JEE, Enterprise Java and JPA Duration: 5 days Price: $2795 *California residents and government employees call for pricing. Discounts: We offer multiple discount options.

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

1 Software Architecture

1 Software Architecture Some buzzwords and acronyms for today Software architecture Design pattern Separation of concerns Single responsibility principle Keep it simple, stupid (KISS) Don t repeat yourself (DRY) Don t talk to

More information

Asynchronous Messaging. Benoît Garbinato

Asynchronous Messaging. Benoît Garbinato Asynchronous Messaging Benoît Garbinato Fundamental idea Provide a communication abstraction that decouples collaborating distributed entities Time decoupling asynchrony Space decoupling anonymity Asynchrony

More information

Breaking Apart the Monolith with Modularity and Microservices CON3127

Breaking Apart the Monolith with Modularity and Microservices CON3127 Breaking Apart the Monolith with Modularity and Microservices CON3127 Neil Griffin Software Architect, Liferay Inc. Specification Lead, JSR 378 Portlet 3.0 Bridge for JavaServer Faces 2.2 Michael Han Vice

More information

Compsci 290/Mobile, Java

Compsci 290/Mobile, Java Compsci 290/Mobile, Java Owen Astrachan Landon Cox January 16, 2018 1/16/2018 Mobile 290, Spring 2018, Java 1 Java Classes and Objects Class encapsulates state and behavior State is typically private Android

More information

GlassFish V3. Jerome Dochez. Sun Microsystems, Inc. hk2.dev.java.net, glassfish.dev.java.net. Session ID YOUR LOGO HERE

GlassFish V3. Jerome Dochez. Sun Microsystems, Inc. hk2.dev.java.net, glassfish.dev.java.net. Session ID YOUR LOGO HERE YOUR LOGO HERE GlassFish V3 Jerome Dochez Sun Microsystems, Inc. hk2.dev.java.net, glassfish.dev.java.net Session ID 1 Goal of Your Talk What Your Audience Will Gain Learn how the GlassFish V3 groundbreaking

More information

Principles of Object-Oriented Design

Principles of Object-Oriented Design Principles of Object-Oriented Design Part II 1 The Law of Demeter Any object receiving a message in a given method must be one of a restricted set of objects. 1. Strict Form: Every supplier class or object

More information

Software Engineering

Software Engineering Software ngineering Software Architecture for nterprise Information Systems Guido Menkhaus and milia Coste Software Research Lab, University of Salzburg References References Floyd Marinescu, JB Design

More information

UML and Design Patterns Prof. Dr. Eric Dubuis, V. June Engineering and Information Technology. On Package Design

UML and Design Patterns Prof. Dr. Eric Dubuis, V. June Engineering and Information Technology. On Package Design On Package Design Berner Fachhochschule Engineering and Information Technology Prof. Dr. Eric Dubuis Software Engineering and Design Version June 2008 1 Content Package Design: Basic Principle Dependency

More information

How-To Guide SAP NetWeaver Document Version: How To... Configure CM Services in SAP NetWeaver 7.3 and up

How-To Guide SAP NetWeaver Document Version: How To... Configure CM Services in SAP NetWeaver 7.3 and up How-To Guide SAP NetWeaver Document Version: 1.0-2014-07-03 How To... Configure CM Services in SAP NetWeaver 7.3 and up Document History Document Version Description 1.0 First official release of this

More information

Managing Installations and Provisioning of OSGi Applications. Carsten Ziegeler

Managing Installations and Provisioning of OSGi Applications. Carsten Ziegeler Managing Installations and Provisioning of OSGi Applications Carsten Ziegeler cziegeler@apache.org About Member of the ASF Current PMC Chair of Apache Sling Apache Sling, Felix, ACE, Portals (Incubator,

More information

HOW TO USE THE WEB DYNPRO CONTENT ADMINISTRATOR. SAP NetWeaver 04 SP Stack 9 JOCHEN GUERTLER

HOW TO USE THE WEB DYNPRO CONTENT ADMINISTRATOR. SAP NetWeaver 04 SP Stack 9 JOCHEN GUERTLER HOW TO USE THE CONTENT ADMINISTRATOR. SAP NetWeaver 04 SP Stack 9 JOCHEN GUERTLER Contents Introduction... 3 Prerequisites... 3 Overview... 4 Enable and disable Web Dynpro applications... 4 Some general

More information

Work groups meeting 3

Work groups meeting 3 Work groups meeting 3 INF5040 (Open Distributed Systems) Sabita Maharjan sabita@simula.no Department of Informatics University of Oslo September 07, 2009 Design Patterns J2EE Design Patterns Outline EIS

More information

Index. Index. More information. block statements 66 y 107 Boolean 107 break 55, 68 built-in types 107

Index. Index. More information. block statements 66 y 107 Boolean 107 break 55, 68 built-in types 107 A abbreviations 17 abstract class 105 abstract data types 105 abstract method 105 abstract types 105 abstraction 92, 105 access level 37 package 114 private 115 protected 115 public 115 accessors 24, 105

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

Fast Track to EJB 3.0 and the JPA Using JBoss

Fast Track to EJB 3.0 and the JPA Using JBoss Fast Track to EJB 3.0 and the JPA Using JBoss The Enterprise JavaBeans 3.0 specification is a deep overhaul of the EJB specification that is intended to improve the EJB architecture by reducing its complexity

More information

Page 1

Page 1 Java 1. Core java a. Core Java Programming Introduction of Java Introduction to Java; features of Java Comparison with C and C++ Download and install JDK/JRE (Environment variables set up) The JDK Directory

More information

COURSE 9 DESIGN PATTERNS

COURSE 9 DESIGN PATTERNS COURSE 9 DESIGN PATTERNS CONTENT Applications split on levels J2EE Design Patterns APPLICATION SERVERS In the 90 s, systems should be client-server Today, enterprise applications use the multi-tier model

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

GRASP Design Patterns A.A. 2018/2019

GRASP Design Patterns A.A. 2018/2019 GRASP Design Patterns A.A. 2018/2019 Objectives Introducing design patterns Introduzione ai design pattern Designing objects and responsibilities GRASP design patterns A long corridor A passage room Does

More information

Eliminate enterprise software design instability - protect variations! Nickolay Kofanov

Eliminate enterprise software design instability - protect variations! Nickolay Kofanov Eliminate enterprise software design instability - protect variations! Nickolay Kofanov Owning a hammer doesn't make one an architect. Responsibility-Driven-Design The way of thinking about the design

More information

EMBEDDED MESSAGING USING ACTIVEMQ

EMBEDDED MESSAGING USING ACTIVEMQ Mark Richards EMBEDDED MESSAGING USING ACTIVEMQ Embedded messaging is useful when you need localized messaging within your application and don t need (or want) an external message broker. It s a good technique

More information

Connecting the RISC Client to non-javascriptinterfaces

Connecting the RISC Client to non-javascriptinterfaces Connecting the RISC Client to non-javascriptinterfaces Motivation In industry scenarios there is the necessity to connect the RISC client to client side subdevices or interfaces. Examples: serial / USB

More information

OSGi. Building and Managing Pluggable Applications

OSGi. Building and Managing Pluggable Applications OSGi Building and Managing Pluggable Applications What A Mess Billing Service Orders Shipping Accounting Workflow Inventory Application From The View Of... Building monolithic applications is evil nuf

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

ArchiMate 2.0. Structural Concepts Behavioral Concepts Informational Concepts. Business. Application. Technology

ArchiMate 2.0. Structural Concepts Behavioral Concepts Informational Concepts. Business. Application. Technology ArchiMate Core Structural Concepts Behavioral Concepts Informational Concepts interaction Technology Application Layer Concept Description Notation Concept Description Notation Actor An organizational

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

Distributed Systems. Messaging and JMS Distributed Systems 1. Master of Information System Management

Distributed Systems. Messaging and JMS Distributed Systems 1. Master of Information System Management Distributed Systems Messaging and JMS 1 Example scenario Scenario: Store inventory is low This impacts multiple departments Inventory Sends a message to the factory when the inventory level for a product

More information

Magento Technical Guidelines

Magento Technical Guidelines Magento Technical Guidelines Eugene Shakhsuvarov, Software Engineer @ Magento 2018 Magento, Inc. Page 1 Magento 2 Technical Guidelines Document which describes the desired technical state of Magento 2

More information

OSGi Best Practices. Emily

OSGi Best Practices. Emily OSGi Best Practices Emily Jiang @IBM Use OSGi in the correct way... AGENDA > Why OSGi? > What is OSGi? > How to best use OSGi? 3 Modularization in Java > Jars have no modularization characteristics No

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

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

Enterprise Development

Enterprise Development Enterprise Development with What needs to be done to run JEE like applications inside Karaf? @anierbeck - Karaf PMC, Apache Member - OPS4j Pax Web Project Lead - Senior IT Consultant @codecentric - co-author

More information

Software Engineering Fall 2015 (CSC 4350/6350) TR. 5:30 pm 7:15 pm. Rao Casturi 11/03/2015

Software Engineering Fall 2015 (CSC 4350/6350) TR. 5:30 pm 7:15 pm. Rao Casturi 11/03/2015 Software Engineering Fall 2015 (CSC 4350/6350) TR. 5:30 pm 7:15 pm Rao Casturi 11/03/2015 http://cs.gsu.edu/~ncasturi1 Object Design Software Engineering -CSC4350/6350 - Rao Casturi 2 Object Design Close

More information

UNIT V *********************************************************************************************

UNIT V ********************************************************************************************* Syllabus: 1 UNIT V 5. Package Diagram, Component Diagram, Deployment Diagram (08 Hrs, 16 Marks) Package Diagram: a. Terms and Concepts Names, Owned Elements, Visibility, Importing and Exporting b. Common

More information

Creating a Lattix Dependency Model The Process

Creating a Lattix Dependency Model The Process Creating a Lattix Dependency Model The Process Whitepaper January 2005 Copyright 2005-7 Lattix, Inc. All rights reserved The Lattix Dependency Model The Lattix LDM solution employs a unique and powerful

More information

Software Engineering Fall 2014

Software Engineering Fall 2014 Software Engineering Fall 2014 (CSC 4350/6350) Mon.- Wed. 5:30 pm 7:15 pm ALC : 107 Rao Casturi 11/03/2014 Re Cap - Object Design Close the gap between the application objects and the off-the shelf components.

More information

Apache Felix. Richard S. Hall. A Standard Plugin Model for Apache. Atlanta, Georgia U.S.A. November 13th, 2007

Apache Felix. Richard S. Hall. A Standard Plugin Model for Apache. Atlanta, Georgia U.S.A. November 13th, 2007 Apache Felix A Standard Plugin Model for Apache Richard S. Hall Atlanta, Georgia U.S.A. November 13th, 2007 Agenda Why OSGi technology? OSGi technology overview Apache Felix status Example application

More information

JSR 311: JAX-RS: The Java API for RESTful Web Services

JSR 311: JAX-RS: The Java API for RESTful Web Services JSR 311: JAX-RS: The Java API for RESTful Web Services Marc Hadley, Paul Sandoz, Roderico Cruz Sun Microsystems, Inc. http://jsr311.dev.java.net/ TS-6411 2007 JavaOne SM Conference Session TS-6411 Agenda

More information

Work groups meeting 3

Work groups meeting 3 Work groups meeting 3 INF5040 (Open Distributed Systems) Amir Taherkordi amirhost@ifi.uio.no Department of Informatics University of Oslo September 18, 2008 Design Patterns J2EE Design Patterns AntiPatterns

More information

Design Patterns V Structural Design Patterns, 2

Design Patterns V Structural Design Patterns, 2 Structural Design Patterns, 2 COMP2110/2510 Software Design Software Design for SE September 17, 2008 Department of Computer Science The Australian National University 19.1 1 2 Formal 3 Formal 4 Formal

More information

~ Ian Hunneybell: CBSD Revision Notes (07/06/2006) ~

~ Ian Hunneybell: CBSD Revision Notes (07/06/2006) ~ 1 Component: Szyperski s definition of a component: A software component is a unit of composition with contractually specified interfaces and explicit context dependencies only. A software component can

More information

Jigsaw and OSGi: What the Heck Happens Now?

Jigsaw and OSGi: What the Heck Happens Now? Jigsaw and OSGi: What the Heck Happens Now? Neil Bartlett neil.bartlett@paremus.com Jigsaw and OSGi: WTF Happens Now? Neil Bartlett neil.bartlett@paremus.com Agenda WTF is a Module System? How do OSGi

More information

Creational. Structural

Creational. Structural Fitness for Future of Design Patterns & Architectural Styles Design patterns are difficult to teach, so we conducted a class collaboration where we all researched and reported on a variety of design patterns

More information

be used for more than one use case (for instance, for use cases Create User and Delete User, one can have one UserController, instead of two separate

be used for more than one use case (for instance, for use cases Create User and Delete User, one can have one UserController, instead of two separate UNIT 4 GRASP GRASP: Designing objects with responsibilities Creator Information expert Low Coupling Controller High Cohesion Designing for visibility - Applying GoF design patterns adapter, singleton,

More information

Welcome to Design Patterns! For syllabus, course specifics, assignments, etc., please see Canvas

Welcome to Design Patterns! For syllabus, course specifics, assignments, etc., please see Canvas Welcome to Design Patterns! For syllabus, course specifics, assignments, etc., please see Canvas What is this class about? While this class is called Design Patterns, there are many other items of critical

More information

SAP Edge Services, cloud edition Edge Services Predictive Analytics Service Guide Version 1803

SAP Edge Services, cloud edition Edge Services Predictive Analytics Service Guide Version 1803 SAP Edge Services, cloud edition Edge Services Predictive Analytics Service Guide Version 1803 Table of Contents MACHINE LEARNING AND PREDICTIVE ANALYTICS... 3 Model Trained with R and Exported as PMML...

More information

Open Cloud Engine - An Open Source Cloud Native Transformer

Open Cloud Engine - An Open Source Cloud Native Transformer DDD Spring Cloud DevOps Open Cloud Engine - An Open Source Cloud Native Transformer AS-IS: Pain-points in service operation Requests for Service upgrade is too frequently, it brings over-time working everyday.

More information

EINDHOVEN UNIVERSITY OF TECHNOLOGY

EINDHOVEN UNIVERSITY OF TECHNOLOGY EINDHOVEN UNIVERSITY OF TECHNOLOGY Department of Mathematics & Computer Science Exam Programming Methods, 2IP15, Wednesday 17 April 2013, 09:00 12:00 TU/e THIS IS THE EXAMINER S COPY WITH (POSSIBLY INCOMPLETE)

More information

What is a Pattern? Lecture 40: Design Patterns. Elements of Design Patterns. What are design patterns?

What is a Pattern? Lecture 40: Design Patterns. Elements of Design Patterns. What are design patterns? What is a Pattern? Lecture 40: Design Patterns CS 62 Fall 2017 Kim Bruce & Alexandra Papoutsaki "Each pattern describes a problem which occurs over and over again in our environment, and then describes

More information

NEXOF-RA NESSI Open Framework Reference Architecture IST- FP

NEXOF-RA NESSI Open Framework Reference Architecture IST- FP NEXOF-RA NESSI Open Framework Reference Architecture IST- FP7-216446 Deliverable D7.4 RA Specification Sample Siemens AG HP Engineering Thales Due date of deliverable: 01/03/2009 Actual submission date:

More information

BIG MODELS AN ALTERNATIVE APPROACH

BIG MODELS AN ALTERNATIVE APPROACH 2. BIG MODELS AN ALTERNATIVE APPROACH Whitepaper Eclipse Summit 2008 Modeling Symposium Jos Warmer, Ordina (jos.warmer@ordina.nl) Abstract Scaling up modeling within project runs into many practical problems.

More information

SOFTWARE ARCHITECTURE INTRODUCTION TO SOFTWARE ENGINEERING PHILIPPE LALANDA

SOFTWARE ARCHITECTURE INTRODUCTION TO SOFTWARE ENGINEERING PHILIPPE LALANDA SOFTWARE ARCHITECTURE INTRODUCTION TO SOFTWARE ENGINEERING PHILIPPE LALANDA PURPOSE OF THIS CLASS An introduction to software architecture What is an architecture Why it is important How it is represented

More information

Tuscany: Applying OSGi modularity after the fact

Tuscany: Applying OSGi modularity after the fact Tuscany: Applying OSGi modularity after the fact Luciano Resende lresende@apache.org http://lresende.blogspot.com Raymond Feng rfeng@apache.org Agenda Introduction and Motivation Status of current Tools

More information

Red Hat JBoss Fuse Service Works Integration Recipes, Best Practices & Cheat Codes

Red Hat JBoss Fuse Service Works Integration Recipes, Best Practices & Cheat Codes Red Hat JBoss Fuse Service Works Integration Recipes, Best Practices & Cheat Codes Keith Babo SwitchYard Project Lead, Red Hat There is Still Time To Leave We will be talking integration and SOA If your

More information

Enterprise Java Development using JPA, Hibernate and Spring. Srini Penchikala Detroit JUG Developer Day Conference November 14, 2009

Enterprise Java Development using JPA, Hibernate and Spring. Srini Penchikala Detroit JUG Developer Day Conference November 14, 2009 Enterprise Java Development using JPA, Hibernate and Spring Srini Penchikala Detroit JUG Developer Day Conference November 14, 2009 About the Speaker Enterprise Architect Writer, Speaker, Editor (InfoQ)

More information

IBM Rational Software

IBM Rational Software IBM Rational Software Development Conference 2008 Introduction to the Jazz Technology Platform: Architecture Overview and Extensibility Scott Rich Distinguished Engineer, Jazz Architect IBM Rational SDP21

More information

Java Training JAVA. Introduction of Java

Java Training JAVA. Introduction of Java Java Training Building or rewriting a system completely in Java means starting from the scratch. We engage in the seamless and stable operations of Java technology to deliver innovative and functional

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

Software Engineering

Software Engineering Software Engineering CSC 331/631 - Spring 2018 Object-Oriented Design Principles Paul Pauca April 10 Design Principles DP1. Identify aspects of the application that vary and separate them from what stays

More information

Angelo Corsaro, Ph.D. Chief Technology Officer! OMG DDS Sig Co-Chair PrismTech

Angelo Corsaro, Ph.D. Chief Technology Officer! OMG DDS Sig Co-Chair PrismTech Angelo Corsaro, Ph.D. Chief Technology Officer! OMG DDS Sig Co-Chair PrismTech angelo.corsaro@prismtech.com! Standards Scopes Standards Compared DDS Standard v1.2 2004 Programming Language Independent

More information

A Reconnaissance on Design Patterns

A Reconnaissance on Design Patterns A Reconnaissance on Design Patterns M.Chaithanya Varma Student of computer science engineering, Sree Vidhyanikethan Engineering college, Tirupati, India ABSTRACT: In past decade, design patterns have been

More information

Responsibilities. Using several specific design principles to guide OO design decisions.

Responsibilities. Using several specific design principles to guide OO design decisions. Designing Objects with Responsibilities Using several specific design principles to guide OO design decisions. Challenge Old-school advice on OOD After identifying i your requirements and creating a domain

More information

IBM Best Practices Working With Multiple CCM Applications Draft

IBM Best Practices Working With Multiple CCM Applications Draft Best Practices Working With Multiple CCM Applications. This document collects best practices to work with Multiple CCM applications in large size enterprise deployment topologies. Please see Best Practices

More information

CS 575: Software Design

CS 575: Software Design CS 575: Software Design Introduction 1 Software Design A software design is a precise description of a system, using a variety of different perspectives Structural Behavioral Packaging Requirements, Test/Validation

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

INTRODUCTION TO SERVLETS AND WEB CONTAINERS. Actions in Accord with All the Laws of Nature

INTRODUCTION TO SERVLETS AND WEB CONTAINERS. Actions in Accord with All the Laws of Nature INTRODUCTION TO SERVLETS AND WEB CONTAINERS Actions in Accord with All the Laws of Nature Web server vs web container Most commercial web applications use Apache proven architecture and free license. Tomcat

More information

Java Message System. Petr Adámek. April 11 th 2016

Java Message System. Petr Adámek. April 11 th 2016 Java Message System Petr Adámek April 11 th 2016 What is this presentation about Why and how to use asynchronous communication. How to use JMS (but not only JMS). Commons mistakes and bests practices when

More information

Spring and OSGi. Martin Lippert akquinet agile GmbH Bernd Kolb Gerd Wütherich

Spring and OSGi. Martin Lippert akquinet agile GmbH Bernd Kolb Gerd Wütherich Spring and OSGi Martin Lippert akquinet agile GmbH lippert@acm.org Bernd Kolb b.kolb@kolbware.de Gerd Wütherich gerd@gerd-wuetherich.de 2006 by Martin Lippert, Bernd Kolb & Gerd Wütherich, made available

More information

Object-Oriented Design

Object-Oriented Design Object-Oriented Design Lecture 14: Design Workflow Department of Computer Engineering Sharif University of Technology 1 UP iterations and workflow Workflows Requirements Analysis Phases Inception Elaboration

More information

Carsten Ziegeler

Carsten Ziegeler Embrace OSGi Change A Developer's Quickstart Carsten Ziegeler cziegeler@apache.org About Member of the ASF Sling, Felix, Cocoon, Portals, Sanselan, Excalibur, Incubator PMC: Felix, Portals, Cocoon, Incubator,

More information

Architecting ios Project. Massimo Oliviero

Architecting ios Project. Massimo Oliviero Architecting ios Project Massimo Oliviero Massimo Oliviero Freelance Software Developer web http://www.massimooliviero.net email massimo.oliviero@gmail.com slide http://www.slideshare.net/massimooliviero

More information

Containers, Serverless and Functions in a nutshell. Eugene Fedorenko

Containers, Serverless and Functions in a nutshell. Eugene Fedorenko Containers, Serverless and Functions in a nutshell Eugene Fedorenko About me Eugene Fedorenko Senior Architect Flexagon adfpractice-fedor.blogspot.com @fisbudo Agenda Containers Microservices Docker Kubernetes

More information

To Mediate is the Message (a brief history of indirection) Glen Daniels Independent Technologist

To Mediate is the Message (a brief history of indirection) Glen Daniels Independent Technologist To Mediate is the Message (a brief history of indirection) Glen Daniels Independent Technologist glen@thoughtcraft.com Your Presenter What You re Going To Learn Today A Brief History of Indirection and

More information

Vision of J2EE. Why J2EE? Need for. J2EE Suite. J2EE Based Distributed Application Architecture Overview. Umair Javed 1

Vision of J2EE. Why J2EE? Need for. J2EE Suite. J2EE Based Distributed Application Architecture Overview. Umair Javed 1 Umair Javed 2004 J2EE Based Distributed Application Architecture Overview Lecture - 2 Distributed Software Systems Development Why J2EE? Vision of J2EE An open standard Umbrella for anything Java-related

More information

SAP NetWeaver Process Integration 7.1. SAP NetWeaver Regional Implementation Group SAP NetWeaver Product Management December 2007

SAP NetWeaver Process Integration 7.1. SAP NetWeaver Regional Implementation Group SAP NetWeaver Product Management December 2007 SAP NetWeaver Process Integration 7.1 Providing Web Services in Java SAP NetWeaver Regional Implementation Group SAP NetWeaver Product Management December 2007 SAP NetWeaver Process Integration 7.1 1 Benefits

More information

Equinox Project Update

Equinox Project Update Equinox Project Update Jeff McAffer, Senior Technical Staff Member Eclipse RCP and Equinox Lead 2007 by IBM Corp; made available under the Creative Commons Att. Nc Nd 2.5 license October 2007 What is Equinox?

More information