Software modular bauen. Ulf Fildebrandt
|
|
- Jeffery Richard
- 5 years ago
- Views:
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 Copyright 2005-2008 SpringSource. Copying, publishing or distributing without express written permission is prohibit Topics in this session Introduction
More informationLiberate 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 informationOSGi 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 informationDESIGN 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 informationThe 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 informationSocket 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 informationDesign 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 informationAbstraction. 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 informationSoftware 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 informationExample 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 informationPatterns 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 informationB. 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 informationPatterns 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 informationJava 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 informationSDC 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 informationArquillian & 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 informationEffective 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 informationImplementation 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 informationBUILDING 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 informationApplication 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 informationWeb 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 informationWeb 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 informationDesign 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 information1 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 informationAsynchronous 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 informationBreaking 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 informationCompsci 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 informationGlassFish 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 informationPrinciples 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 informationSoftware 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 informationUML 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 informationHow-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 informationManaging 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 informationHOW 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 informationWork 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 informationIndex. 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 informationProduced 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 informationFast 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 informationPage 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 informationCOURSE 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 informationTrusted 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 informationGRASP 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 informationEliminate 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 informationEMBEDDED 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 informationConnecting 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 informationOSGi. 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 informationThe 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 informationArchiMate 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 informationAn 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 informationDistributed 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 informationMagento 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 informationOSGi 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 informationDesign 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 informationDesign 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 informationEnterprise 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 informationSoftware 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 informationUNIT 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 informationCreating 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 informationSoftware 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 informationApache 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 informationJSR 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 informationWork 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 informationDesign 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) ~
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 informationJigsaw 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 informationCreational. 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 informationbe 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 informationWelcome 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 informationSAP 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 informationOpen 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 informationEINDHOVEN 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 informationWhat 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 informationNEXOF-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 informationBIG 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 informationSOFTWARE 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 informationTuscany: 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 informationRed 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 informationEnterprise 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 informationIBM 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 informationJava 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 informationTools 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 informationSoftware 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 informationAngelo 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 informationA 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 informationResponsibilities. 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 informationIBM 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 informationCS 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 informationFirst 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 informationDesign 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 informationINTRODUCTION 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 informationJava 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 informationSpring 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 informationObject-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 informationCarsten 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 informationArchitecting 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 informationContainers, 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 informationTo 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 informationVision 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 informationSAP 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 informationEquinox 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