+ All Categories
Home > Documents > Erich Gamma IBM distinguished engineer IBM rational zurich...

Erich Gamma IBM distinguished engineer IBM rational zurich...

Date post: 07-Oct-2020
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
47
© 2010 IBM Corporation Erich Gamma IBM distinguished engineer IBM rational zurich research lab (please contact me if you are interested in a “Praktikum” or full time position) Living Architectures - from eclipse to jazz
Transcript
Page 1: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

© 2010 IBM Corporation

Erich GammaIBM distinguished engineerIBM rational zurich research lab

(please contact me if you are interested in a “Praktikum” or full time position)

Living Architectures - from eclipse to jazz

Page 2: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

© 2010 IBM Corporation

First Assignment: Eclipse

A tools integration platform Scalable

Easy to extend

Enable a tools ecosystem

Goal: Built to last

Page 3: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

© 2010 IBM Corporation

Inspiration: how buildings last

Site

• Stewart Brand: how buildings learn– what happens after they're built

• stuff: furniture • services: electrical, plumbing (7-15y)• structure: foundation, load bearing walls (30-300y)• site: geographical setting (forever)

• layers:

• evolve at different rates during the life of a building• shear against each other as they change at different rates• an adaptive building must allow slippage a building that lasts is adaptive and can change over time lasts for generations without total rebuilding

Page 4: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

© 2010 IBM Corporation

structure foundation

the eclipse plug-in architecture everything is a plug-in

simple and consistent

Page 5: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

© 2010 IBM Corporation

eclipse plug-in architecture

plug-in == component set of contributions

smallest unit of Eclipse function

details spelled out in plug-in manifest

extension point – named entity for collecting contributions

extension – a contribution Example: a specific spam filter tool

runtime – controls and manages contributions

plug-in

platform

plug-in

ExtensionExtension point

runtime

Page 6: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

© 2010 IBM Corporation

scalability

<actiontoolbarPath=“search"icon="icons/opentype.gif“toolTip=“Open Type”class="org.eclipse.jdt.OpenTypeAction"/>

org/eclipse/jdt/OpenTypeAction.class

user visible appearance

contribution implementation

lazily instantiated using reflection

Page 7: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

© 2010 IBM Corporation

services plumbing: APIs

Plug-in dependencies through APIs define APIs for stability

binary compatibility is highest priority

Page 8: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

© 2010 IBM Corporation

APIs first

APIs don’t just happen; we need to design them

specifications with precisely defined behavior what you can assume (and what you cannot)

it works ≠ API compliant

documented classes ≠ API

must have at least one client involved, preferably more

Page 9: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

© 2010 IBM Corporation

example: API evolution in the Java Development Tools

new APIs AST (Abstract Syntax Tree)

AST rewriting code manipulation

open-up contribute to quick fix/quick assist

contribute to code assist

push-down make JDT specific support available to other languages:

template processors linked editing

Page 10: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

© 2010 IBM Corporation

stuff, furniture - UI

eclipse extension architecture is contribution based extensions contribute to the workbench

the workbench manages and presents the contributions

enables UI evolution 3.0 new look

Page 11: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

© 2010 IBM Corporation

API innovation with continuity

sometimes conflicting: innovation vs. API stability goal:

plug-ins that are API compliant with respect to the previous release are expected to work on the latest eclipse release

binary compatible

source compatibility - some work is required porting guide PDE helps out

techniques compatibility layer (new run-time) eclipse extension interface support: IAdaptable I*2 extensions interfaces recover removed interface methods compatibility plug-ins restart in a new package

Page 12: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

© 2010 IBM Corporation

extension interfaces: IAdaptable

adding interfaces to existing types Interface negotiation

<extension point="org.eclipse.core.runtime.adapters"><factory

class="org.eclipse.jdt.internal.ui.JavaElementAdapterFactory" adaptableType="org.eclipse.jdt.core.IJavaElement"><adapter type="org.eclipse.ui.IPersistableElement"/>…

</factory>

Page 13: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

© 2010 IBM Corporation

I*2 extension interfaces

add new methods in extending API interface with extension interfaces avoids breaking existing implementors of an interface

public interface IActionDelegate { … } // original interface

public interface IActionDelegate2 extends IActionDelegate {void dispose();

}

if (d instanceof IActionDelegate2) {IActionDelegate2 d2 = (IActionDelegate2) d;d2.dispose(); // call new method

}

Page 14: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

14 © 2010 IBM Corporation

Key Lessons Modularity matters

Everything is a plug-in “no exceptions”

APIs are a huge commitment we would rather provide less API than desired (and

augment) than provide the wrong (or unnecessary) API and need to support it indefinitely

the tyranny of stable APIs API layers…

the challenge of product developers which API level does our product require and support

n–1, n-2

Page 15: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

15 © 2010 IBM Corporation

Eclipse API Tools (since Eclipse 3.4)

Support to define an API baseline e.g. Eclipse 3.3 when working

on 3.4 Check access restrictions

API javadoc tags:@noimplement, @noinstantiate, @noextend

Detect binary compatibility violations

Detect version problems @since

Problems are reported during builds

Page 16: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

16 © 2010 IBM Corporation

Next assignment: A Tool Integration Platform

Integrate many tools Heterogeneous environments that

are flexible for partners and suppliers

Acquisitions raise expectations for product integrations

Global Connectedness Distributed development, cross site

product development Lifecycle / Agile Methods Flexible tools and process

Tool EUI

LOGIC

DB

UI

LOGIC

DB

UI

LOGIC

DB

UI

LOGIC

DB

UI

LOGIC

DB

Tool B

Tool D

Tool C

Tool A

Page 17: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

17 © 2010 IBM Corporation

Traditional Tool Integration. Ouch.

N2 possible point-to-point connections Limited coverage

Closed APIs Vendor lock-in

Tight Coupling Dependence on internal structures

Lockstep upgrades Version incompatibilities

Need something better…

Page 18: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

IBM Software Group | Rational software

18Innovation for a smarter planet

Jazz is…

Our vision of the future of systems and software delivery

A scalable, extensible team collaboration platform

An integration architecture enabling mashups and non-Jazz products to participate

A community at Jazz.net where Jazz products are built

Jazz is a platform for transforming software delivery

c

Rational Offerings

Third partyOfferings

Business PartnerOfferings

Jazz is a platform for transforming how people work together to deliver greater value and

performance from their software investments.

StorageCollaboration

QueryDiscovery

Administration: Users, projects,

process

Best Practice Processes

Presentation:Mashups

FutureIBM

Capabilities

Product & Project

ManagementCollaborative

Lifecycle Management Engineering

& SoftwareTools

BusinessPlanning &AlignmentYour

existing capabilities 3rd-Party

JazzCapabilities

Compliance& Security

StorageCollaboration

QueryDiscovery

Administration: Users, projects,

process

Best Practice ProcessesBest Practice Processes

Presentation:Mashups

FutureIBM

Capabilities

FutureIBM

Capabilities

Product & Project

ManagementCollaborative

Lifecycle Management Engineering

& SoftwareTools

Engineering& Software

Tools

BusinessPlanning &Alignment

BusinessPlanning &AlignmentYour

existing capabilities

Yourexisting

capabilities 3rd-PartyJazz

Capabilities

Compliance& Security

Page 19: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

IBM Software Group | Rational software

19Innovation for a smarter planet

Inspiration: the Internet

Amazingly scalable

Integrates information on a massive scale

Infinitely extensible

Collaboration on unprecedented scale

World-wide information visibility Web Pageshtml, css, js

Audio/Videomp3, divx, mov

Documentspdf, doc

Indexgoogle, yahoo

HTTPget/put /post

Page 20: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

IBM Software Group | Rational software

20Innovation for a smarter planet

How does this work?

All data are resources with URLs

Resources have representations

Representations are specified independently of tools

Links are embedded URLs

Tools (multiple) access data through HTTP get/put/post/delete

Diagrams

Requirements

ChangeRequests

GlobalIndex

HTTPget/put /post

Page 21: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

21

Living Architectures

Copyright © IBM Corp., 2010. All rights reserved. Licensed under EPL, v1.0.

Jazz architectural principles

Jazz separates the implementation of tools from the definition of and access to the data– Data semantics do not rely on "secret knowledge" embedded in product

code. Jazz can access and integrate data where it resides

– Jazz does not need to import and export data between tools or repositories Jazz assumes an open, flexible, distributed data model.

– Jazz does not assume that there is a single data model that is centrally managed, nor that each tool needs to understand the entire data model in order to participate.

Jazz allows tools to be implemented in any Internet-aware programming language or platform. – Jazz does not impose an implementation framework tied to a particular

language or technology platform – Provide optional toolkits to aid in tool implementation

Page 22: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

22 © 2010 IBM Corporation22

Bus Proc Model

Software & Solution

ArchitectureDevelopmentEnterprise

ArchitectureRequire-ments Test

http://acme.com/paymentService

Data Integration – the new way – “www linked data”

http://acme.com/paymentProcess

about

aboutabout about

HTTP/REST

Page 23: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

23 © 2010 IBM Corporation

Architectural Rules

R1: Independent upgrade R2: Rich Integration R3: Limited application coupling R4: Open world

Page 24: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

24 © 2010 IBM Corporation

R1: Independent upgrade

Customers must be able to upgrade their products one at a timein the order of their choice product teams must commit to managing their dependencies so that

this will always be the case Easy to say; easy to understand; highly motivational Smooth upgrading is a corollary

customers must not feel that they are losing/breaking their applications (or application data) as a side effect of upgrading any of their products.

Client - server compatibility issues are included here.

Page 25: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

25 © 2010 IBM Corporation

25

R2: Rich integration (with loose coupling!)

Rich hovers provide at‐a‐glance, in‐context information 

Link Dialogs enable cross‐repository linking

Dashboards in all products aid in transparency

Page 26: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

26 © 2010 IBM Corporation

Surprise!Surprise!

26

Degree

 of C

oupling

Seamlessness of Interactions

High

Low

Clunky Slick

Import/Export

Traditional Library/API

Framework

REST API

Delegated REST API

Page 27: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

27 © 2010 IBM Corporation

R3: Limited application coupling

Applications will depend on few other applications.

If we’re not careful, we get caught in the dependency web

Yet, applications need to interact

Page 28: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

28 © 2010 IBM Corporation

R4: open world

New products can be integrated after the fact, and their capabilities are reflected in the user and programmatic interfaces

Don’t assume you know everything up front

Page 29: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

29 © 2010 IBM Corporation

Open Services for Lifecycle CollaborationAn initiative aimed at simplifying tool integration across the software delivery lifecycle

Specifications for sharing lifecycle resources

Inspired by Internet architectureLoosely coupled integration with “just enough” standardizationCommon resource formats and services

A different approach to industry-wide proliferation

Open Services for Lifecycle Collaboration

Barriers to sharing resources and assets across the software lifecycleMultiple vendors, open

source projects, and in-house toolsPrivate vocabularies,

formats and storesInextricable entanglement

of tools with their data

29

Page 30: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

30 © 2010 IBM Corporation30

Open Services for Lifecycle CollaborationPutting the approach into practice

Step 1: Internet URLs for resources

Step 2: Shared resource formats

Step 3: Shared resource services

Page 31: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

31 © 2010 IBM Corporation

Community: open-services.net

Started in 2008 Open community

contribution Scenario driven...a

minimalist approach Divided into focus areas Change Management Quality Management Estimation & Measurement, Requirements Management, …

Solving integration in the open

Wiki and mailing lists

License terms Specifications are created

under a Creative Commons Attribution copyright license

Covenant – specification implementers are free from patent claims by contributors

Process Stages Scope (scenarios) Draft Convergence (IP covenant) Final Specification

31

Page 32: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

32 © 2010 IBM Corporation

OSLC at WorkLoosely coupled integration with “just enough”standardization

Change MgmtSystem

Test Management

POST, Query, etcchange requests

•Spec dictates the bare minimal aspects of defect

•QM system posts “seed data”

•QM system gets URL of form; delegates back to CM system

QM system can interface with any OSLC-compliant change management system

Page 33: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

33 © 2010 IBM Corporation

Styles of Integration HTTP REST API – “Rich” style

Web technologies – pervasive support across languages and Operating Systems

Resource-oriented – requires agreement on the resource representations Careful resource design can avoid “closed world” assumptions Exposes details of the data in resource representations Can leverage client libraries, but does they are outside of the API boundary

HTTP REST API “Delegated”/Widget Style Relies on discoverable URLs for services Minimizes dependencies: delegates back to application Introduces out-of-bands communication between delegated form and host

application

33

Page 34: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

34 © 2010 IBM Corporation

OSLC Specification http://open-services.net/bin/view/Main/CmSpecificationV1

Page 35: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

35 © 2010 IBM Corporation

Retrieving a Defect

Page 36: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

36 © 2010 IBM Corporation

Retrieving JSON Representation of a Defect

Page 37: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

37 © 2010 IBM Corporation

Updating a Defect

PUT https://rtc.com:9443/jazz/resource/itemOid/com.ibm.team.workitem.WorkItem/_0J39QJu-Ed6cerS9lb5AWw?oslc_cm.properties=dc:titleAccept: application/x-oslc-cm-change-request+xmlIf-Match: _1am9cFm0Ed6ELJg2MQ68KgContent-Type: application/x-oslc-cm-change-request+xml

<oslc_cm:ChangeRequestxmlns:dc="http://purl.org/dc/terms/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"xmlns:oslc_cm="http://open-services.net/xmlns/cm/1.0/">

<dc:title>My First Major Bug</dc:title>

</oslc_cm:ChangeRequest>

Page 38: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

38 © 2010 IBM Corporation

Creating a Defect

Page 39: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

39 © 2010 IBM Corporation

Service Discovery

1. Discover the existence of the Change Management system itself, known URL E.g. https://rtc:9443/rtc/rootservices

2. Discover the contexts (e.g. projects) in which change requests may exist, e.g project

3. Discover the services that are provided within that context

Page 40: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

40 © 2010 IBM Corporation

Discovering the Creation Dialog

Page 41: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

41 © 2010 IBM Corporation

Pattern: Discovery

Challenge: URLs should be opaque to the clients to avoid

tight coupling Solution: Inspired by the AtomPub specification Discovery documents

Discovery and fetch entry URLs from a discovery document

Discovery document has a well known URL Conceptually similar to the Factory design pattern

Page 42: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

42 © 2010 IBM Corporation

UI Delegation forResource Creationand Selection

Page 43: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

43 © 2010 IBM Corporation4343

Team Concert (delegated UI)

Single URL (OSLC) calls RTC

Creates link on Test Case & Team Concert work-item

OSLC example: What are you testing?

Page 44: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

44 © 2010 IBM Corporation44

OSLC example: Creating Test Cases from Requirements

Page 45: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

45 © 2010 IBM Corporation45

OSLC example: Resource Links in Requirements Tool

Implemented By

Validated By

Back Link

Page 46: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

46 © 2010 IBM Corporation46

What Makes the OSLC Approach Better?

Traditional Approach Brittle integrations, version-

specific APIs Monolithic repository or

import/export “Boil the ocean” meta-model

design Forced migration to a common

code base Premature architectural

decisions A vendor-led “partners”

program

OSLC Approach Loosely-coupled URLs Minimalist Technology-neutral Incremental Open

Page 47: Erich Gamma IBM distinguished engineer IBM rational zurich ...se.inf.ethz.ch/old/teaching/2010-S/0284/Slides/Lecture...A different approach to industry-wide proliferation Open Services

47 © 2010 IBM Corporation

See it live at Jazz.net Transparent development Jazz architecture Jazz products

Self-hosting Using Jazz products… … to develop Jazz products

Learn about Jazz at Jazz.net Participate in the evolution

Try it Sandbox available


Recommended