Where Did My Architecture Go?
|
|
|
- Theodore Brown
- 10 years ago
- Views:
Transcription
1 Where Did My Architecture Go? Preserving and recovering the design of software in its implementation QCON London March 2011 Eoin Woods
2 Content Losing Design in the Code Key Design Constructs My Example Application Finding and Keeping Design in Code Conventions Dependency analysis Module systems Augmenting the code & checking rules Language extensions Summary
3 Losing Design in the Code
4 Losing the design in the code Good designers talk about many structures that aren t part of mainstream programming languages layers, adapters, proxies, components, brokers,... Yet the code is all that exists at runtime the code doesn t lie But if we ve only got code where does all that design information go?
5 Losing the design in the code./dda/business/common/controller/dtomanager.java./dda/business/common/data/cmp/basedatasupplieradapter.java./dda/business/common/data/cmp/cmpobjectid.java./dda/business/common/dsi/datamanagerfactory.java./dda/business/common/dsi/datamanagerif.java./dda/business/common/dsi/datasupplierif.java./dda/business/common/dsi/datasupplierreadmarker.java./dda/business/common/dsi/domainobject.java./dda/business/common/dsi/domainobjectfactory.java...
6 Problems with Code as Design Only language structures are present language structures are fine grained Fine grained nature is very detailed difficult to discern structure from the details Design structures don t exist need to discern design structure from the code a lot of mapping and assumption required relies on well structured and named code
7 Strengths of Code as Design Interpretation by machine searching checking querying Certainty with respect to runtime the code doesn t lie Integration of different abstraction levels see where a line fits in the overall design
8 Using Code as our Design Notation Need to extend our notion of code Extend languages to allow design elements Sapir-Whorf extend language, influence thinking We can create or use new languages e.g. aspect based languages, ArchJava,... Or extend the ones we have comments, annotations, packages, aspects,... Or use tools to visualise and infer design dependency visualisers, rules checkers,...
9 Key Design Constructs
10 What Do We Mean by Design Information? Many possible types of design information but two broad groups: static and dynamic Static information describes structures visible at design time packages, classes, components, connectors,... Dynamic information describes structures visible at runtime invocations, data flow, sequencing,...
11 Static Design Information Layers Modules (or subsystems ) Components (and component types) Pattern implementations Dependencies e.g. between components or on resources particularly difficult across tiers/technologies Hierarchies and containment (e.g. plugins)
12 Dynamic Design Information Run-time invocations & control flow i.e. do I call X, not can I call X (and when) Size and speed how many times do I do something? how many items are accessed / created /... Design validation does it really do what the design says it should This session s focus is static information
13 An Example Application
14 An Example Application A very, very basic CRM system server + integration test Based on code supplied as a vendor example 6 functional modules + a generic framework CRM Framework Contacts Customers Distribution Partners Enterprise Service Integration (ESI links to other systems) Requests Users Code is organised first by module, then by layer Small, not trivial: 6.5 KLOC, 20K byte codes, 162 types
15 Simple CRM System Layers Controller Domain Service Data Service Interface Persistence
16 Simple CRM Modules Customers Contacts Distribution Partner Requests Users ESI CRM Framework
17 Simple CRM Modules Controller Domain Service DSI Persistence Customers Contacts Distribution Partner Requests Users ESI CRM Framework
18 Finding & Keeping Design in Code
19 Techniques Naming conventions with code & build structure Dependency analysis tools Module systems (Spring, Guice, OSGi,...) Augmenting the code (annotations, rules) checking design rules (Architecture Rules, Macker) Aspects useful for design constructs and checking Special purpose languages (e.g. ArchJava)
20 Naming and Conventions
21 Naming and Conventions Code structure classes, packages,... Build system Maven s module based build dependencies
22 Naming and Conventions Functional areas & layers shown by package naming Identify code element types by name matching Simple stuff but often done badly or not at all
23 Dependency Analysis
24 Dependency Analysis A key element of design is modularisation A key part of modularisation is defining dependencies Poorly designed dependencies make software almost un-maintainable well designed dependencies enable change with a minimum of risk and cost Dependencies are difficult to visualise, analyse and understand from source code A good place to start understanding design and managing design information is dependency analysis
25 Tools 1 Structure & Analysers Understanding Java code using Maven jdepend ClassCycle Structure 101
26 Tools1 Maven and Design Maven is a Java project automation system build, tool integration, doc generation,... a key philosophy is enforcing a set of conventions forces you to consider modularisation & dependencies Maven modules (code trees) have explicit versioned dependencies on each other The structure of a Maven project is almost always comprehensible if you ve seen one before
27 Tools1 - Maven + pom.xml + module1 + module2 - pom.xml - src/main/java/... - src/test/java/... - target/module1-1.0-snapshot.jar - pom.xml - src/main/java/... - src/test/java/... pom.xml declares structure and dependencies at each level - target/module2-1.0-snapshot.jar each module has the same structure 1 module = 1 built target (JAR)
28 Tools1 - Maven <project...>... <groupid>com.artechra.simplecrm</groupid> <artifactid>crm-request</artifactid> <packaging>jar</packaging> <version>1.0-snapshot</version> <name>crm User Request Module</name> <dependencies> <dependency> <groupid>com.artechra.simplecrm</groupid> <artifactid>crm-framework</artifactid> <version>1.0-snapshot</version> </dependency>... </dependencies> </project> An example pom.xml module definition file Explicit dependencies in the build system help to preserve design information
29 Tools 1 - Maven Dependency Analysis $> mvn dependency:tree Dverbose=true com.artechra.simplecrm:crm-itest:jar:1.0-snapshot +- com.artechra.simplecrm:crm-contact:jar:1.0-snapshot:compile +- (com.artechra.simplecrm:crm-framework:jar:1.0-snapshot:compile - +- (com.artechra.simplecrm:crm-esi:jar:1.0-snapshot:compile - omitted for duplicate) \- (log4j:log4j:jar:1.2.9:compile - omitted for duplicate) +- com.artechra.simplecrm:crm-customer:jar:1.0-snapshot:compile +- (com.artechra.simplecrm:crm-framework:jar:1.0-snapshot:compile - +- (com.artechra.simplecrm:crm-contact:jar:1.0-snapshot:compile - +- (com.artechra.simplecrm:crm-user:jar:1.0-snapshot:compile - omitted for duplicate) \- (log4j:log4j:jar:1.2.9:compile - omitted for duplicate) +- com.artechra.simplecrm:crm-distributionpartner:jar:1.0-snapshot:compile +- (com.artechra.simplecrm:crm-framework:jar:1.0-snapshot:compile - +- (com.artechra.simplecrm:crm-request:jar:1.0-snapshot:compile - [trimmed] Generates a dependency tree for the project modules The Maven site report web sites also have dependency reports
30 Tools 2 Dependency Analysers Static dependency checkers Structure 101, Lattix, CppDepend, Ndepend jdepend, ClassCycle, Dependency Finder Reveal real structures via dependency analysis often with checking for simple user defined rules Capabilities and focus vary by tool one common limitation is use of package structure
31 Tools 2 - Dependency Analysers
32 Tools 2 - JDepend Probably the original Java dependency analyzer byte code analysis of coupling and dependencies now extremely stable limited to package level analysis Limited GUI feature set afferent and efferent coupling report with metrics Primarily a library callable from JUnit, other tools, FITness, Ant,... comprehensive XML or text report
33 Tools 2 - JDepend Depends upon analysis Coupling metrics Used by analysis
34 Tools 2 - ClassCycle Similar tool to JDepend extends it with class level dependency analysis adds dependency checking language and engine well documented algorithms a couple of limitations removed XML reporting of dependencies command line or Ant plugin Eclipse plugin is available Nice dependency checking language
35 Tools 2 - ClassCycle Example Rules {base-pkg} = com.artechra [util] = ${base-pkg}.util.* [non-util] = ${package}.* excluding [util] check [util] independentof [non-util] check absenceofpackagecycles > 1 in ${package}.* layer infra = [util] ${base-pkg}.type.* layer persistence = ${base-pkg}.dao.* layer domain-logic = ${package}.domain.* check layeringof basic persistence domain-logic
36 Tools 2 - Structure 101 Commercial dependency analyser Java,.NET, C/C++ and generic versions Desktop tool and optional headless tools with webapp for history and build integration Dependencies, collaborations, metrics basic violation checking via architecture view Rich UI for navigation and analysis separate IDE integration for IntelliJ and Eclipse
37 Tools 2 - Structure 101 Dependency graph Dependency matrix Complexity metrics
38 Tools 2 Structure 101 Dependency graph Dependency matrix Structure Diagram 38
39 Module Systems
40 Module Systems & Structuring Dependency Injection (IoC) containers Java: Spring, Guice,....NET: AutoFac, Spring.NET,... Containers instantiate components & wire together Tendency to end up with very large configurations Tendency to end up with very fine grained components Do allow some degree of system structure to be visible Full blown module systems like OSGi provides a module system for Java based on JAR files a reasonably high commitment technology to adopt can be complicated in a JEE environment explicit declaration of module s exports and imports
41 Java Modules with OSGi OSGi is an example of a full-blown module system defines model of modules, their lifecycle and services specifies a runtime container of standard services allows (functional) structure to be clearly seen makes inter module dependencies very clear Open standard developed by the OSGi Alliance Evolves existing Java technologies JAR files used as the basis of components ( bundles ) Manifest files extended to provide meta-data Bundle services are simply Java interfaces Imports and exports specified by Java packages 41
42 Java Modules with OSGi OSGI Container priceservice jar + META-INF + MANIFEST.MF + com.artechra.pricesvc + PriceService.java + impl + PriceServiceImpl.java + PriceActivator.java calservice jar + META-INF + MANIFEST.MF + com.artechra.calcsvc + CalcService.java + impl + CalcServiceImpl.java + CalcActivator.java Manifest-Version: 1.0 Bundle-Name: priceservice Version: Import-Package: org.osgi.framework, com.artechra.calcsvc;version= 3.0 Export-Package: com.artechra.pricesvc Manifest-Version: 1.0 Bundle-Name: calcservice Version: Import-Package: org.osgi.framework Export-Package: com.artechra.calcsvc
43 Augmenting the Code
44 Augmenting the Code Design information meta-data annotations external meta-data (e.g. declarative design rules) Rules based tools for validation commercial: Structure 101, SonarJ,... open source: Macker, Architecture Rules,... aspect oriented languages: AspectJ,...
45 Meta Data in the Code A number of meta-data systems exist Java annotations &.NET attributes Doxygen comments These can be used to mark design Persistence Current limitation is the lack of tool support except aspects, most tools ignore annotations etc can write own utilities using reflection type APIs feed outputs of proprietary analysis to generic tools
46 Java Metadata - Annotations Annotations allow meta data to be attached to code fields, methods, parameters, classes, interfaces, packages useful information for people, also machine processable Annotations are little classes defined as special interfaces using can contain own data, allowing storage of design information result in objects attached to Java code elements Can define annotations for design level information Include in the code as you write it for packages, remember they re in package-info.java! 46
47 Java Metadata Layer { enum LAYERS {PERSISTENCE, WEBUI, DOMAIN, INTEGRATION, SERVICE} ; Package layer annotation with a layer attribute } LAYERS layer() ; package com.artechra.simplecrm.business ; import com.artechra.layer ; Package p = Package.getPackage(pkgName) ; if (p.isannotationpresent(layer.class)) { Layer l = p.getannotation(layer.class) ; if (l.layer() == Layer.LAYERS.SERVICE) { //... } } Applies the annotation to the package meta-data Reflection allows you to write utilities that see this design information (you can also use aspects or add annotation processors to your build via javac) 47
48 Checking Design Rules
49 Rules Based tools Earlier we saw dependency analysers primarily for extracting dependencies some with interactive analysis most provide basic checking Another approach are the rules checking tools provide a rules language and checking engine Examples for Java are Architecture Rules and Macker (open source) Semmle ODASA and SonarJ (commercial)
50 Tools 3 - Macker Macker is a rules-based structural analyser open source GPL project, analyses Java byte code Rules are described in an XML based language wildcards, inclusion/exclusion, quantifiers,... Macker is a command / Ant target / library to check the rules against a set of classes output to XML or HTML reports or the console Real strength is flexibility and the rule language
51 Tools 3 Macker Enforcing Rules <ruleset> <var name="base-pkg" value="com.artechra.simplecrm" /> <foreach var="module" class="(${base-pkg}.module.*).**"> <pattern name="api" class="${module}.*" /> <pattern name="inside" class="${module}.**" /> <pattern name="outside"> <exclude pattern name="inside" /> </pattern> <access-rule> <message>${from} must access ${module} via its API</message> <deny> <from pattern="outside"/><to pattern="inside" /> </deny> <allow><to pattern="api" /></allow> </access-rule> </foreach> </ruleset>
52 Tools 3 - SonarJ Commercial code analysis tool dependency analysis, metrics, refactoring reporting against a quality model processes Java source code and byte code GUI, command line, Ant and Maven options database option for storing results Allows fine grained dependency rules provision for layering and partitioning
53 Tools 3 - SonarJ Metrics, dependency analysis, code duplication checks,... Architecture slices and layers
54 Extending Programming Languages
55 Extending the Language Sapir-Whorf hypothesis: language affects thought we do see this with software developers implementation language drives vocabulary Design level language == design level thinking? Aspects split code into design oriented slices generate errors and warnings based on structure Special purpose languages Arch Java
56 Aspect Orientation AOP provides two possibilities change the way the code is structured check the code using warning/error advice AOP separates code into modules that are applied across the codebase advice is the code to apply point cuts specify where to put it special AspectJ advice just creates warnings when point cuts match
57 Aspect Orientation A common code pattern: public Person getemployee(string empid) { } log.entering("hrservice", "getemployee", empid) ; if (!SecMgr.checkAccess(Ctx.getCaller(), } new Resource(PERSON, empid), READ)) { throw new AuthorizationException( ) ; Person ret = emprepo.getpersonbyrole(empid,role.employee); log.exiting("hrservice", "getemployee", ret) ; return ret ; The one line of business logic! It s difficult to see your design when so many concerns are tangled together
58 Aspect Orientation AOP allows us to untangle the concerns... public aspect LoggingAspect { Logger _log = Logger.getLogger("MyAppLogger") ; } pointcut loggedcall() : execution(@logpoint * *.*(..)) &&!within(loggingaspect); before() : loggedcall() { } Signature sig = thisjoinpointstaticpart.getsignature(); Object arg = (thisjoinpoint.getargs().length > 0? thisjoinpoint.getargs()[0] : null) ; _log.entering(sig.getdeclaringtype().getname(), sig.getname(), arg); after() returning (Object ret): loggedcall() { } Signature sig = thisjoinpointstaticpart.getsignature(); _log.exiting(sig.getdeclaringtype().getname(), sig.getname(), ret) ;... this can then be applied to code where needed
59 Aspect Orientation The result of using aspects: Cross cutting code replaced access=read) public Person getemployee2(string empid) { } Person ret = emprepo.getpersonbyrole(empid, Role.EMPLOYEE) ; return ret ; Non-functional code factored out to be dealt with separately two aspects, one for logging one for security worth noting that the security one is quite complicated
60 Checking Rules with Aspects As well as applying code, aspects can be used to check code structures and dependencies AspectJ s warning and error advice keywords declare error <pointcut> : error message declare warning <pointcut> : warning msg Create a library of pointcuts that allow the error and warning declarations to be read easily Better suited to some sorts of checks than others e.g. don t call X from Y is easy to do e.g. If I have an X I should have a Y is difficult to express
61 Example Rule Checking Aspect We don t want any classes calling JDBC unless it s part of the DAO layer We do this by creating pointcuts to define the JDBC layer and JDBC calls and combining them public aspect StructureCheckingAspect { pointcut indao() : within(com.myorg.myapp.dao.*) ; pointcut callsjdbc() : call(* java.sql.*.*(..)) call(* javax.sql.*.*(..)) ; } declare error :!indao() && callsjdbc() : "Only call JDBC from DAOs" ;
62 Arch Java Arch Java is a research project from CMU Created as part of Jonathan Aldrich s PhD in 2003 Development continued to 2005, but largely dormant now Not a practical proposition, but a glimpse at the future Seamless extension to Java to add design ideas first class components and connectors provides a compiler to compile to vanilla.class files While not practical for project use, Arch Java does illustrate extending code for design concepts can only hope that an open source project does something similar! 62
63 Arch Java Syntax New keywords added to Java public component class MasterSlave { } private final Master master = new Master(); } connect pattern Master.Request, Slave.Service with AsynchronousConnector { } // connection constructor called to connect to a slave connect(master sender, int id) { // create a new slave component Slave slave = new Slave(id); Vanilla Java syntax still used // create and return an async connection master to slave return connect(sender.request, slave.service) with new AsynchronousConnector(connection); Design concepts introduced into the code as executable statements
64 A Final Tool Code City Visualisation This is Code City primarily showing metrics rather than structure
65 Summary
66 Summary A lot of valuable design gets lost when you move to code Most mainstream tools don t help to prevent this We can keep, check & recover design careful structuring, modularisation and naming dependency analysis and rules checking external design meta-data new code structuring technologies (e.g. aspects) Much of this is new or niche how many projects to do you know with messy design?! Use a combination of tools to maintain, check and retrieve design information in/from code integrate tools into the build as well using them interactively
67 A final Thought...
68 Questions and Comments? Eoin Woods 68
Architecture Rules Enforcement and Governance Using Aspects
Architecture Rules Enforcement and Governance Using Aspects Srini Penchikala SATURN 2009 About the Speaker Enterprise Architect Writer, Speaker, Editor (InfoQ) Detroit Java User Group Leader Working with
Kohsuke Kawaguchi Sun Microsystems, Inc. hk2.dev.java.net, glassfish.dev.java.net. Session ID
1 Kohsuke Kawaguchi Sun Microsystems, Inc. hk2.dev.java.net, glassfish.dev.java.net Session ID 2 What s GlassFish v3? JavaEE 6 API for REST (JAX-RS) Better web framework support (Servlet 3.0) WebBeans,
GlassFish v3. Building an ex tensible modular Java EE application server. Jerome Dochez and Ludovic Champenois Sun Microsystems, Inc.
GlassFish v3 Building an ex tensible modular Java EE application server Jerome Dochez and Ludovic Champenois Sun Microsystems, Inc. Agenda Java EE 6 and GlassFish V3 Modularity, Runtime Service Based Architecture
Build management & Continuous integration. with Maven & Hudson
Build management & Continuous integration with Maven & Hudson About me Tim te Beek [email protected] Computer science student Bioinformatics Research Support Overview Build automation with Maven Repository
Operations and Monitoring with Spring
Operations and Monitoring with Spring Eberhard Wolff Regional Director and Principal Consultant SpringSource Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission
Sonatype CLM for Maven. Sonatype CLM for Maven
Sonatype CLM for Maven i Sonatype CLM for Maven Sonatype CLM for Maven ii Contents 1 Introduction 1 2 Creating a Component Index 3 2.1 Excluding Module Information Files in Continuous Integration Tools...........
Aspect Oriented Programming. with. Spring
Aspect Oriented Programming with Spring Problem area How to modularize concerns that span multiple classes and layers? Examples of cross-cutting concerns: Transaction management Logging Profiling Security
APAC WebLogic Suite Workshop Oracle Parcel Service Overview. Jeffrey West Application Grid Product Management
APAC WebLogic Suite Workshop Oracle Parcel Service Overview Jeffrey West Application Grid Product Management Oracle Parcel Service What is it? Oracle Parcel Service An enterprise application to showcase
Sonatype CLM Enforcement Points - Continuous Integration (CI) Sonatype CLM Enforcement Points - Continuous Integration (CI)
Sonatype CLM Enforcement Points - Continuous Integration (CI) i Sonatype CLM Enforcement Points - Continuous Integration (CI) Sonatype CLM Enforcement Points - Continuous Integration (CI) ii Contents 1
Software infrastructure for Java development projects
Tools that can optimize your development process Software infrastructure for Java development projects Presentation plan Software Development Lifecycle Tools What tools exist? Where can tools help? Practical
Continuous Integration Multi-Stage Builds for Quality Assurance
Continuous Integration Multi-Stage Builds for Quality Assurance Dr. Beat Fluri Comerge AG ABOUT MSc ETH in Computer Science Dr. Inform. UZH, s.e.a.l. group Over 8 years of experience in object-oriented
Hands on exercise for
Hands on exercise for João Miguel Pereira 2011 0 Prerequisites, assumptions and notes Have Maven 2 installed in your computer Have Eclipse installed in your computer (Recommended: Indigo Version) I m assuming
EMC Documentum Composer
EMC Documentum Composer Version 6.5 User Guide P/N 300 007 217 A02 EMC Corporation Corporate Headquarters: Hopkinton, MA 01748 9103 1 508 435 1000 www.emc.com Copyright 2008 EMC Corporation. All rights
Software project management. and. Maven
Software project management and Maven Problem area Large software projects usually contain tens or even hundreds of projects/modules Will become messy and incomprehensible ibl if the projects don t adhere
Mind The Gap! Setting Up A Code Structure Building Bridges
Mind The Gap! Setting Up A Code Structure Building Bridges Representation Of Architectural Concepts In Code Structures Why do we need architecture? Complex business problems too many details to keep overview
Software Quality Exercise 2
Software Quality Exercise 2 Testing and Debugging 1 Information 1.1 Dates Release: 12.03.2012 12.15pm Deadline: 19.03.2012 12.15pm Discussion: 26.03.2012 1.2 Formalities Please submit your solution as
Beginning POJOs. From Novice to Professional. Brian Sam-Bodden
Beginning POJOs From Novice to Professional Brian Sam-Bodden Contents About the Author Acknowledgments Introduction.XIII xv XVII CHAPTER1 Introduction The Java EE Market Case Study: The TechConf Website...
Nexus Professional Whitepaper. Repository Management: Stages of Adoption
Sonatype Nexus Professional Whitepaper Repository Management: Stages of Adoption Adopting Repository Management Best Practices SONATYPE www.sonatype.com [email protected] +1 301-684-8080 12501 Prosperity
Apache Karaf in real life ApacheCon NA 2014
Apache Karaf in real life ApacheCon NA 2014 Agenda Very short history of Karaf Karaf basis A bit deeper dive into OSGi Modularity vs Extensibility DIY - Karaf based solution What we have learned New and
Building a Modular Server Platform with OSGi. Dileepa Jayakody Software Engineer SSWSO2 Inc.
Building a Modular Server Platform with OSGi Dileepa Jayakody Software Engineer SSWSO2 Inc. Outline Complex Systems OSGi for Modular Systems OSGi in SOA middleware Carbon : A modular server platform for
New Generation of Software Development
New Generation of Software Development Terry Hon University of British Columbia 201-2366 Main Mall Vancouver B.C. V6T 1Z4 [email protected] ABSTRACT In this paper, I present a picture of what software development
Maven or how to automate java builds, tests and version management with open source tools
Maven or how to automate java builds, tests and version management with open source tools Erik Putrycz Software Engineer, Apption Software [email protected] Outlook What is Maven Maven Concepts and
Getting Started with the Internet Communications Engine
Getting Started with the Internet Communications Engine David Vriezen April 7, 2014 Contents 1 Introduction 2 2 About Ice 2 2.1 Proxies................................. 2 3 Setting Up ICE 2 4 Slices 2
Decomposition into Parts. Software Engineering, Lecture 4. Data and Function Cohesion. Allocation of Functions and Data. Component Interfaces
Software Engineering, Lecture 4 Decomposition into suitable parts Cross cutting concerns Design patterns I will also give an example scenario that you are supposed to analyse and make synthesis from The
Developing Eclipse Plug-ins* Learning Objectives. Any Eclipse product is composed of plug-ins
Developing Eclipse Plug-ins* Wolfgang Emmerich Professor of Distributed Computing University College London http://sse.cs.ucl.ac.uk * Based on M. Pawlowski et al: Fundamentals of Eclipse Plug-in and RCP
InfoSphere Master Data Management operational server v11.x OSGi best practices and troubleshooting guide
InfoSphere Master Data Management operational server v11.x OSGi best practices and troubleshooting guide Introduction... 2 Optimal workspace operational server configurations... 3 Bundle project build
Software Development Kit
Open EMS Suite by Nokia Software Development Kit Functional Overview Version 1.3 Nokia Siemens Networks 1 (21) Software Development Kit The information in this document is subject to change without notice
Server-side OSGi with Apache Sling. Felix Meschberger Day Management AG 124
Server-side OSGi with Apache Sling Felix Meschberger Day Management AG 124 About Felix Meschberger > Senior Developer, Day Management AG > [email protected] > http://blog.meschberger.ch > VP Apache Sling
FUSE-ESB4 An open-source OSGi based platform for EAI and SOA
FUSE-ESB4 An open-source OSGi based platform for EAI and SOA Introduction to FUSE-ESB4 It's a powerful OSGi based multi component container based on ServiceMix4 http://servicemix.apache.org/smx4/index.html
Software project management. and. Maven
Software project management and Maven Problem area Large software projects usually contain tens or even hundreds of projects/modules Will become messy if the projects don t adhere to some common principles
ARM-BASED PERFORMANCE MONITORING FOR THE ECLIPSE PLATFORM
ARM-BASED PERFORMANCE MONITORING FOR THE ECLIPSE PLATFORM Ashish Patel, Lead Eclipse Committer for ARM, IBM Corporation Oliver E. Cole, President, OC Systems, Inc. The Eclipse Test and Performance Tools
Developing modular Java applications
Developing modular Java applications Julien Dubois France Regional Director SpringSource Julien Dubois France Regional Director, SpringSource Book author :«Spring par la pratique» (Eyrolles, 2006) new
Rapid Application Development. and Application Generation Tools. Walter Knesel
Rapid Application Development and Application Generation Tools Walter Knesel 5/2014 Java... A place where many, many ideas have been tried and discarded. A current problem is it's success: so many libraries,
Continuous integration in OSGi projects using Maven (v:0.1) Sergio Blanco Diez
Continuous integration in OSGi projects using Maven (v:0.1) Sergio Blanco Diez December 1, 2009 Contents 1 Introduction 2 2 Maven 4 2.1 What is Maven?..................................... 4 2.2 How does
Best Practices for Programming Eclipse and OSGi
Best Practices for Programming Eclipse and OSGi BJ Hargrave Jeff McAffer IBM Lotus IBM Rational Software 2006 by IBM; made available under the EPL v1.0 March 24, 2006 Introduction During the Eclipse 3.0
OUR COURSES 19 November 2015. All prices are per person in Swedish Krona. Solid Beans AB Kungsgatan 32 411 19 Göteborg Sweden
OUR COURSES 19 November 2015 Solid Beans AB Kungsgatan 32 411 19 Göteborg Sweden Java for beginners JavaEE EJB 3.1 JSF (Java Server Faces) PrimeFaces Spring Core Spring Advanced Maven One day intensive
Unit Testing. and. JUnit
Unit Testing and JUnit Problem area Code components must be tested! Confirms that your code works Components must be tested t in isolation A functional test can tell you that a bug exists in the implementation
HPC Portal Development Platform with E-Business and HPC Portlets
HPC Portal Development Platform with E-Business and HPC Portlets CHIEN-HENG WU National Center for High-Performance Computing, Hsin-Chu, 300, Taiwan E-mail: [email protected] Abstract HPC Portal Development
zen Platform technical white paper
zen Platform technical white paper The zen Platform as Strategic Business Platform The increasing use of application servers as standard paradigm for the development of business critical applications meant
Introduction to OSGi and Modularity. InfoSphere MDM, Version 11.x Dany Drouin, Senior Software Engineer MDM
Introduction to OSGi and Modularity InfoSphere MDM, Version 11.x Dany Drouin, Senior Software Engineer MDM Please Note: 1 Agenda Part 1: Introduction to OSGi Part 2: MDM and OSGi Part 3: izing and extending
OXAGILE RESUMES SUMMARY OF QUALIFICATIONS TECHNICAL SKILLS SENIOR JAVA SOFTWARE ENGINEER
OXAGILE RESUMES SENIOR JAVA SOFTWARE ENGINEER SUMMARY OF QUALIFICATIONS Over 4 years of solid experience in software development, application programming and engineering Strong expertise in J2EE architectures,
Core Java+ J2EE+Struts+Hibernate+Spring
Core Java+ J2EE+Struts+Hibernate+Spring Java technology is a portfolio of products that are based on the power of networks and the idea that the same software should run on many different kinds of systems
Aspect-Oriented Programming
Aspect-Oriented Programming An Introduction to Aspect-Oriented Programming and AspectJ Niklas Påhlsson Department of Technology University of Kalmar S 391 82 Kalmar SWEDEN Topic Report for Software Engineering
Generating Aspect Code from UML Models
Generating Aspect Code from UML Models Iris Groher Siemens AG, CT SE 2 Otto-Hahn-Ring 6 81739 Munich, Germany [email protected] Stefan Schulze Siemens AG, CT SE 2 Otto-Hahn-Ring 6 81739 Munich,
Eclipse 4 RCP application Development COURSE OUTLINE
Description The Eclipse 4 RCP application development course will help you understand how to implement your own application based on the Eclipse 4 platform. The Eclipse 4 release significantly changes
Content. Development Tools 2(63)
Development Tools Content Project management and build, Maven Version control, Git Code coverage, JaCoCo Profiling, NetBeans Static Analyzer, NetBeans Continuous integration, Hudson Development Tools 2(63)
Case Studies of Running the Platform. NetBeans UML Servlet JSP GlassFish EJB
September Case Studies of Running the Platform NetBeans UML Servlet JSP GlassFish EJB In this project we display in the browser the Hello World, Everyone! message created in the session bean with servlets
Creating an application with the Virgo Web Server
Creating an application with the Virgo Web Server GreenPages: a demonstration Christopher Frost Ben Hale Rob Harrop Glyn Normington Steve Powell Andy Wilkinson 2.1.0.M02-incubation Abstract Spring application
Upping the game. Improving your software development process
Upping the game Improving your software development process John Ferguson Smart Principle Consultant Wakaleo Consulting Email: [email protected] Web: http://www.wakaleo.com Twitter: wakaleo Presentation
WELCOME TO Open Source Enterprise Architecture
WELCOME TO Open Source Enterprise Architecture WELCOME TO An overview of Open Source Enterprise Architecture In the integration domain Who we are Fredrik Hilmersson Petter Nordlander Why Open Source Integration
Glassbox: Open Source and Automated Application Troubleshooting. Ron Bodkin Glassbox Project Leader [email protected]
Glassbox: Open Source and Automated Application Troubleshooting Ron Bodkin Glassbox Project Leader [email protected] First a summary Glassbox is an open source automated troubleshooter for Java
CI/CD Cheatsheet. Lars Fabian Tuchel Date: 18.March 2014 DOC:
CI/CD Cheatsheet Title: CI/CD Cheatsheet Author: Lars Fabian Tuchel Date: 18.March 2014 DOC: Table of Contents 1. Build Pipeline Chart 5 2. Build. 6 2.1. Xpert.ivy. 6 2.1.1. Maven Settings 6 2.1.2. Project
GECKO Software. Introducing FACTORY SCHEMES. Adaptable software factory Patterns
Introducing FACTORY SCHEMES Adaptable software factory Patterns FACTORY SCHEMES 3 Standard Edition Community & Enterprise Key Benefits and Features GECKO Software http://consulting.bygecko.com Email: [email protected]
Builder User Guide. Version 6.0.1. Visual Rules Suite - Builder. Bosch Software Innovations
Visual Rules Suite - Builder Builder User Guide Version 6.0.1 Bosch Software Innovations Americas: Bosch Software Innovations Corp. 161 N. Clark Street Suite 3500 Chicago, Illinois 60601/USA Tel. +1 312
PERFORMANCE COMPARISON OF COMMON OBJECT REQUEST BROKER ARCHITECTURE(CORBA) VS JAVA MESSAGING SERVICE(JMS) BY TEAM SCALABLE
PERFORMANCE COMPARISON OF COMMON OBJECT REQUEST BROKER ARCHITECTURE(CORBA) VS JAVA MESSAGING SERVICE(JMS) BY TEAM SCALABLE TIGRAN HAKOBYAN SUJAL PATEL VANDANA MURALI INTRODUCTION Common Object Request
Exam Name: IBM InfoSphere MDM Server v9.0
Vendor: IBM Exam Code: 000-420 Exam Name: IBM InfoSphere MDM Server v9.0 Version: DEMO 1. As part of a maintenance team for an InfoSphere MDM Server implementation, you are investigating the "EndDate must
Oracle WebLogic Foundation of Oracle Fusion Middleware. Lawrence Manickam Toyork Systems Inc www.toyork.com http://ca.linkedin.
Oracle WebLogic Foundation of Oracle Fusion Middleware Lawrence Manickam Toyork Systems Inc www.toyork.com http://ca.linkedin.com/in/lawrence143 History of WebLogic WebLogic Inc started in 1995 was a company
1. Introduction... 1 1.1. What is Slice?... 1 1.2. Background... 1 1.3. Why Slice?... 1 1.4. Purpose of this Document... 1 1.5. Intended Audience...
Slice Documentation Slice Documentation 1. Introduction... 1 1.1. What is Slice?... 1 1.2. Background... 1 1.3. Why Slice?... 1 1.4. Purpose of this Document... 1 1.5. Intended Audience... 1 2. Features
CSE 308. Coding Conventions. Reference
CSE 308 Coding Conventions Reference Java Coding Conventions googlestyleguide.googlecode.com/svn/trunk/javaguide.html Java Naming Conventions www.ibm.com/developerworks/library/ws-tipnamingconv.html 2
Developer s Guide. How to Develop a Communiqué Digital Asset Management Solution
Developer s Guide How to Develop a Communiqué Digital Asset Management Solution 1 PURPOSE 3 2 CQ DAM OVERVIEW 4 2.1 2.2 Key CQ DAM Features 4 2.2 How CQ DAM Works 6 2.2.1 Unified Architecture 7 2.2.2 Asset
CatDV Pro Workgroup Serve r
Architectural Overview CatDV Pro Workgroup Server Square Box Systems Ltd May 2003 The CatDV Pro client application is a standalone desktop application, providing video logging and media cataloging capability
PROGRAMMERS GUIDE. Version 1.x
2013 PROGRAMMERS GUIDE Version 1.x 6 th September 2009 This document is intended for developers to understand how to use SdmxSource in a real life scenario. This document illustrates how to use SdmxSource
Pipeline Orchestration for Test Automation using Extended Buildbot Architecture
Pipeline Orchestration for Test Automation using Extended Buildbot Architecture Sushant G.Gaikwad Department of Computer Science and engineering, Walchand College of Engineering, Sangli, India. M.A.Shah
Ikasan ESB Reference Architecture Review
Ikasan ESB Reference Architecture Review EXECUTIVE SUMMARY This paper reviews the Ikasan Enterprise Integration Platform within the construct of a typical ESB Reference Architecture model showing Ikasan
Client-Server Architecture & J2EE Platform Technologies Overview Ahmed K. Ezzat
Client-Server Architecture & J2EE Platform Technologies Overview Ahmed K. Ezzat Page 1 of 14 Roadmap Client-Server Architecture Introduction Two-tier Architecture Three-tier Architecture The MVC Architecture
CHAPTER 1 - JAVA EE OVERVIEW FOR ADMINISTRATORS
CHAPTER 1 - JAVA EE OVERVIEW FOR ADMINISTRATORS Java EE Components Java EE Vendor Specifications Containers Java EE Blueprint Services JDBC Data Sources Java Naming and Directory Interface Java Message
An Eclipse Plug-In for Visualizing Java Code Dependencies on Relational Databases
An Eclipse Plug-In for Visualizing Java Code Dependencies on Relational Databases Paul L. Bergstein, Priyanka Gariba, Vaibhavi Pisolkar, and Sheetal Subbanwad Dept. of Computer and Information Science,
Settlers of Catan Phase 1
Settlers of Catan Phase 1 Objective In this phase you will design, implement, and test the following subsystems: 1. Catan Model 2. Server Proxy 3. Server Poller Catan Model The Catan Model will be at the
irods and Metadata survey Version 0.1 Date March Abhijeet Kodgire [email protected] 25th
irods and Metadata survey Version 0.1 Date 25th March Purpose Survey of Status Complete Author Abhijeet Kodgire [email protected] Table of Contents 1 Abstract... 3 2 Categories and Subject Descriptors...
000-420. IBM InfoSphere MDM Server v9.0. Version: Demo. Page <<1/11>>
000-420 IBM InfoSphere MDM Server v9.0 Version: Demo Page 1. As part of a maintenance team for an InfoSphere MDM Server implementation, you are investigating the "EndDate must be after StartDate"
Java (12 Weeks) Introduction to Java Programming Language
Java (12 Weeks) Topic Lecture No. Introduction to Java Programming Language 1 An Introduction to Java o Java as a Programming Platform, The Java "White Paper" Buzzwords, Java and the Internet, A Short
BDD FOR AUTOMATING WEB APPLICATION TESTING. Stephen de Vries
BDD FOR AUTOMATING WEB APPLICATION TESTING Stephen de Vries www.continuumsecurity.net INTRODUCTION Security Testing of web applications, both in the form of automated scanning and manual security assessment
San Jose State University
San Jose State University Fall 2011 CMPE 272: Enterprise Software Overview Project: Date: 5/9/2011 Under guidance of Professor, Rakesh Ranjan Submitted by, Team Titans Jaydeep Patel (007521007) Zankhana
Builder User Guide. Version 5.4. Visual Rules Suite - Builder. Bosch Software Innovations
Visual Rules Suite - Builder Builder User Guide Version 5.4 Bosch Software Innovations Americas: Bosch Software Innovations Corp. 161 N. Clark Street Suite 3500 Chicago, Illinois 60601/USA Tel. +1 312
Java Generation from UML Models specified with Alf Annotations
Université de Franche-Comté Supervisers : Fabien Peureux, Isabelle Jacques Java Generation from UML Models specified with Alf Annotations Supervised project report Alexandre Vernotte Jean-Marie Gauthier
Meister Going Beyond Maven
Meister Going Beyond Maven A technical whitepaper comparing OpenMake Meister and Apache Maven OpenMake Software 312.440.9545 800.359.8049 Winners of the 2009 Jolt Award Introduction There are many similarities
Oracle WebLogic Server
Oracle WebLogic Server Configuring and Using the WebLogic Diagnostics Framework 10g Release 3 (10.3) July 2008 Oracle WebLogic Server Configuring and Using the WebLogic Diagnostics Framework, 10g Release
Encapsulating Crosscutting Concerns in System Software
Encapsulating Crosscutting Concerns in System Software Christa Schwanninger, Egon Wuchner, Michael Kircher Siemens AG Otto-Hahn-Ring 6 81739 Munich Germany {christa.schwanninger,egon.wuchner,michael.kircher}@siemens.com
Onset Computer Corporation
Onset, HOBO, and HOBOlink are trademarks or registered trademarks of Onset Computer Corporation for its data logger products and configuration/interface software. All other trademarks are the property
NON-INTRUSIVE TRANSACTION MINING FRAMEWORK TO CAPTURE CHARACTERISTICS DURING ENTERPRISE MODERNIZATION ON CLOUD
NON-INTRUSIVE TRANSACTION MINING FRAMEWORK TO CAPTURE CHARACTERISTICS DURING ENTERPRISE MODERNIZATION ON CLOUD Ravikumar Ramadoss 1 and Dr.N.M.Elango 2 1 Technology Architect, Infosys, Bangalore, Karnataka,
SOFTWARE TESTING TRAINING COURSES CONTENTS
SOFTWARE TESTING TRAINING COURSES CONTENTS 1 Unit I Description Objectves Duration Contents Software Testing Fundamentals and Best Practices This training course will give basic understanding on software
Introducing Apache Pivot. Greg Brown, Todd Volkert 6/10/2010
Introducing Apache Pivot Greg Brown, Todd Volkert 6/10/2010 Speaker Bios Greg Brown Senior Software Architect 15 years experience developing client and server applications in both services and R&D Apache
Customer Bank Account Management System Technical Specification Document
Customer Bank Account Management System Technical Specification Document Technical Specification Document Page 1 of 15 Table of Contents Contents 1 Introduction 3 2 Design Overview 4 3 Topology Diagram.6
Oracle Data Integrator: Administration and Development
Oracle Data Integrator: Administration and Development What you will learn: In this course you will get an overview of the Active Integration Platform Architecture, and a complete-walk through of the steps
Oracle WebLogic Server 11g Administration
Oracle WebLogic Server 11g Administration This course is designed to provide instruction and hands-on practice in installing and configuring Oracle WebLogic Server 11g. These tasks include starting and
Copyright 2013 Consona Corporation. All rights reserved www.compiere.com
COMPIERE 3.8.1 SOAP FRAMEWORK Copyright 2013 Consona Corporation. All rights reserved www.compiere.com Table of Contents Compiere SOAP API... 3 Accessing Compiere SOAP... 3 Generate Java Compiere SOAP
Agile Best Practices and Patterns for Success on an Agile Software development project.
Agile Best Practices and Patterns for Success on an Agile Software development project. Tom Friend SCRUM Master / Coach 1 2014 Agile On Target LLC, All Rights reserved. Tom Friend / Experience Industry
SCADE System 17.0. Technical Data Sheet. System Requirements Analysis. Technical Data Sheet SCADE System 17.0 1
SCADE System 17.0 SCADE System is the product line of the ANSYS Embedded software family of products and solutions that empowers users with a systems design environment for use on systems with high dependability
Open Source egovernment Reference Architecture Osera.modeldriven.org. Copyright 2006 Data Access Technologies, Inc. Slide 1
Open Source egovernment Reference Architecture Osera.modeldriven.org Slide 1 Caveat OsEra and the Semantic Core is work in progress, not a ready to use capability Slide 2 OsEra What we will cover OsEra
Determine the process of extracting monitoring information in Sun ONE Application Server
Table of Contents AboutMonitoring1 Sun ONE Application Server 7 Statistics 2 What Can Be Monitored? 2 Extracting Monitored Information. 3 SNMPMonitoring..3 Quality of Service 4 Setting QoS Parameters..
Application Architectures
Software Engineering Application Architectures Based on Software Engineering, 7 th Edition by Ian Sommerville Objectives To explain the organization of two fundamental models of business systems - batch
Web Application Development for the SOA Age Thinking in XML
Web Application Development for the SOA Age Thinking in XML Enterprise Web 2.0 >>> FAST White Paper August 2007 Abstract Whether you are building a complete SOA architecture or seeking to use SOA services
Requirements engineering
Learning Unit 2 Requirements engineering Contents Introduction............................................... 21 2.1 Important concepts........................................ 21 2.1.1 Stakeholders and
Adam Rauch Partner, LabKey Software [email protected]. Extending LabKey Server Part 1: Retrieving and Presenting Data
Adam Rauch Partner, LabKey Software [email protected] Extending LabKey Server Part 1: Retrieving and Presenting Data Extending LabKey Server LabKey Server is a large system that combines an extensive set
