Open Development

Post on 08-May-2015

1.503 views 0 download

description

[Italian lang] Open Development as a model for building enterprise system.

Transcript of Open Development

OPEN DEVELOPMENTOpen Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

Un modello ideale per costruire un prodotto enterprise.

Immagini tratte da chromasia.com

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

http://www.melconway.com/research/committees.htmlLEGGE DI CONWAY

“OGNI ORGANIZZAZIONE CHE PROGETTA UN SISTEMA,

PRODURRA’ INEVITABILMENTE UN DESIGN CHE RISPECCHIA

LA STRUTTURA DI COMUNICAZIONE DELL’ORGANIZZAZIONE STESSA”

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

QUALE STRUTTURA DI COMUNICAZIONE (COLLABORAZIONE) DEVE AVERE UN’ORGANIZZAZIONE PER CREARE UN PRODOTTO APERTO, MODULARE, ESTENDIBILE?

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

1. OBIETTIVO comune

2. DECISIONI Condivisione dei criteri decisionali

3. WORKSPACE Condivisione dello spazio di lavoro

4. INFORMAZIONI Scambio dinamico delle informazioni

5. PARALLELIZZAZIONE

COLLABORAZIONECARATTERISTICHE DI UN MODELLO CHE FUNZIONA

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

1. OBIETTIVO comune

2. DECISIONI Condivisione dei criteri decisionali

3. WORKSPACE Condivisione dello spazio di lavoro

4. INFORMAZIONI Scambio dinamico delle informazioni

5. PARALLELIZZAZIONE

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

3 COMPONENTIOPEN SOURCE - OPEN STANDARDS - OPEN ARCHITECTURE

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

1. OPEN SOURCE

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

1. più UTENTI ETEROGENEI2. più OCCHI PUNTATI3. più CASI D’USO4. più IDEE5.

120 PROGETTI 330 MEMBRI

2500 COMMITTERNO F-2-F (o quasi) NESSUN UFFICIO

3TB/gg di traffico web444 liste 2500+ email/gg

+ RISORSE

più 11.000.000

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

1. più UTENTI ETEROGENEI2. più OCCHI PUNTATI3. più CASI D’USO4. più IDEE5.

120 PROGETTI 330 MEMBRI

2500 COMMITTERNO F-2-F (o quasi) NESSUN UFFICIO

3TB/gg di traffico web444 liste 2500+ email/gg

+ RISORSEpiù 1

1.000.000

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

1. più UTENTI ETEROGENEI2. più OCCHI PUNTATI3. più CASI D’USO4. più IDEE5.

120 PROGETTI 330 MEMBRI

2500 COMMITTERNO F-2-F (o quasi) NESSUN UFFICIO

3TB/gg di traffico web444 liste 2500+ email/gg

+ RISORSE+ 1

1.000.000

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

1. più UTENTI ETEROGENEI2. più OCCHI PUNTATI3. più CASI D’USO4. più IDEE5.

120 PROGETTI 330 MEMBRI

2500 COMMITTERNO F-2-F (o quasi) NESSUN UFFICIO

3TB/gg di traffico web444 liste 2500+ email/gg

+ RISORSE+ 1

1.000.000-ESIMO COMMIT - SETTEMBRE 2010

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

1. VISIONE

2. AGGIORNAMENTI

3. AIUTO

4. ARCHIVI

WORKSPACE CONDIVISO

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

1. VISIONE

2. AGGIORNAMENTI

3. AIUTO

4. ARCHIVI

WORKSPACE CONDIVISO

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

CODICE

TEST

BACHI

DECISIONI

MAILING LIST

ISSUE TRACKER

BLOGINFORMAZIONI DINAMICHE

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

CODICE

TEST

BACHI

DECISIONI

MAILING LIST

ISSUE TRACKER

BLOG

INFORMAZIONI DINAMICHE

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

2. OPEN STANDARDS

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

1. PATTERN DI COMUNICAZIONE

2. REGOLE ARCHITETTURALI

3. INTERFACCE COMUNI

http

jcr

json

jsop

cmis

URI

OBIETTIVO COMUNE

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

1. PATTERN DI COMUNICAZIONE

2. REGOLE ARCHITETTURALI

3. INTERFACCE COMUNI

http

jcr

json

jsop

cmis

URI

OBIETTIVO COMUNE

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

1. PATTERN DI COMUNICAZIONE

2. REGOLE ARCHITETTURALI

3. INTERFACCE COMUNI

http

jcr

json

jsop

cmis

URI

JCR✴ Implementation independent

✴ bi-directional access to a Content Repository

✴ Nodes & properties in rich data types

✴ Everything is content

✴ NoSQL

OBIETTIVO COMUNE

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

1. PATTERN DI COMUNICAZIONE

2. REGOLE ARCHITETTURALI

3. INTERFACCE COMUNI

http

jcr

json

jsop

cmis

URI

JCR

OBIETTIVO COMUNE

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

1. PATTERN DI COMUNICAZIONE

2. REGOLE ARCHITETTURALI

3. INTERFACCE COMUNI

http

jcr

json

jsop

cmis

URI

JCR

OBIETTIVO COMUNE

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

1. PATTERN DI COMUNICAZIONE

2. REGOLE ARCHITETTURALI

3. INTERFACCE COMUNI

http

jcr

json

jsop

cmis

URI

OBIETTIVO COMUNE

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

1. PATTERN DI COMUNICAZIONE

2. REGOLE ARCHITETTURALI

3. INTERFACCE COMUNI

http

jcr

json

jsop

cmis

URI

OBIETTIVO COMUNE

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

1. PATTERN DI COMUNICAZIONE

2. REGOLE ARCHITETTURALI

3. INTERFACCE COMUNI

http

jcr

json

jsop

cmis

URI

JSOP✴ Serialization to JSON (opt YAML, XML)

✴ GET (batch/hierarchical)

✴ PUT (batch/hierarchical)

✴ PATCH (JSON diff cont type)

✴ Support for binary as multipart

OBIETTIVO COMUNE

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

1. PATTERN DI COMUNICAZIONE

2. REGOLE ARCHITETTURALI

3. INTERFACCE COMUNI

http

jcr

json

jsop

cmis

URI

Request:GET /myfolder.4.json HTTP/1.1Response:{ "createdBy" : "uncled", "name" : "myfolder", "id" : "50d9317a-3a95-401a-9638-333a0dbf04bb" "type" : "folder" "child1" : { "grandchild11" : { "depth3" : { "depth4 : { ... } } } }}

JSOP

OBIETTIVO COMUNE

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

1. PATTERN DI COMUNICAZIONE

2. REGOLE ARCHITETTURALI

3. INTERFACCE COMUNI

http

jcr

json

jsop

cmis

URI

PUT /myfolder HTTP/1.1{ "createdBy" : "uncled", "name" : "myfolder", "id" : "50d9317a-3a95-401a-9638-333a0dbf04bb" "type" : "folder" "child1" : { "grandchild11" : { "depth3" : { "depth4 : { ... } } } }}

JSOP

OBIETTIVO COMUNE

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

1. PATTERN DI COMUNICAZIONE

2. REGOLE ARCHITETTURALI

3. INTERFACCE COMUNI

http

jcr

json

jsop

cmis

URI

PATCH /myfolder HTTP/1.1

+newdoc : { "type" : "document", "createdBy" : "me" }-olddoc>movingdoc : /otherfolder/mydocument^lastModifiedBy : "me"

JSOP

OBIETTIVO COMUNE

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

1. PATTERN DI COMUNICAZIONE

2. REGOLE ARCHITETTURALI

3. INTERFACCE COMUNI

http

jcr

json

jsop

cmis

URI

OBIETTIVO COMUNE

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

3. OPEN ARCHITECTURE

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

OBIETTIVO COMUNE

1. Il RIUSO richiede STRUTTURE PULITE

2. PIU’ CASI D’USO richiedono GENERALIZZAZIONE

3. ESTENDIBILITA’ richiede MODULARIZZAZIONE

RESTOSGI

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

OBIETTIVO COMUNE

1. Il RIUSO richiede STRUTTURE PULITE

2. PIU’ CASI D’USO richiedono GENERALIZZAZIONE

3. ESTENDIBILITA’ richiede MODULARIZZAZIONE

RESTOSGI

OSGI

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

OBIETTIVO COMUNE

1. Il RIUSO richiede STRUTTURE PULITE

2. PIU’ CASI D’USO richiedono GENERALIZZAZIONE

3. ESTENDIBILITA’ richiede MODULARIZZAZIONE

RESTOSGI

OSGI✴OSGI migliora la modularità

✴Codice meglio strutturato

✴Servizi dinamici

✴Plugins

✴Isolare il codice legacy

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

OBIETTIVO COMUNE

1. Il RIUSO richiede STRUTTURE PULITE

2. PIU’ CASI D’USO richiedono GENERALIZZAZIONE

3. ESTENDIBILITA’ richiede MODULARIZZAZIONE

RESTOSGI

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

OBIETTIVO COMUNE

1. Il RIUSO richiede STRUTTURE PULITE

2. PIU’ CASI D’USO richiedono GENERALIZZAZIONE

3. ESTENDIBILITA’ richiede MODULARIZZAZIONE

RESTOSGI

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

OBIETTIVO COMUNE

1. Il RIUSO richiede STRUTTURE PULITE

2. PIU’ CASI D’USO richiedono GENERALIZZAZIONE

3. ESTENDIBILITA’ richiede MODULARIZZAZIONE

RESTOSGI

REST✴ Client-Server

✴ Stateless

✴ Cachable

✴ Layered systems

✴ Uniform interface

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

OBIETTIVO COMUNE

1. Il RIUSO richiede STRUTTURE PULITE

2. PIU’ CASI D’USO richiedono GENERALIZZAZIONE

3. ESTENDIBILITA’ richiede MODULARIZZAZIONE

RESTOSGI

REST✴Scalabilità

✴Generalizzazione delle interfacce

✴Deployment indipendente delle componenti

✴Intermediazioni (-latenza, +security, -legacy)

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

OBIETTIVO COMUNE

1. Il RIUSO richiede STRUTTURE PULITE

2. PIU’ CASI D’USO richiedono GENERALIZZAZIONE

3. ESTENDIBILITA’ richiede MODULARIZZAZIONE

RESTOSGI

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

UN ESEMPIO: CRXjackrabbit, felix, sling / HTTP, JCR, JSON / OSGI, REST

OSGI framework (felix)

JCR repository (jackrabbit)

JCR api

Application framework (sling)

HTTP

CRX, architettura (semplificata) - in stile ‘chi fa cosa’

‣ manages bundles as app components‣ provides system services to bundles

‣ stores the content

‣ processes HTTP requests in a RESTful way

specification implementation

architectural style

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

0. CLOSED SOURCE

1. OPEN RELEASES Codice aperto.

2. OPEN DEVELOPMENT Workspace aperto.

3. OPEN COMMUNITY Perdita del controllo.

4. OPEN CORE + CLOSED LAYERS

MODELLI DI APERTURATRATTO DA JUKKAZ.WORDPRESS.COM

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

0. CLOSED SOURCE

1. OPEN RELEASES Codice aperto.

2. OPEN DEVELOPMENT Workspace aperto.

3. OPEN COMMUNITY Perdita del controllo.

4. OPEN CORE + CLOSED LAYERS

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

0. CLOSED SOURCE

1. OPEN RELEASES Codice aperto.

2. OPEN DEVELOPMENT Workspace aperto.

3. OPEN COMMUNITY Perdita del controllo.

4. OPEN CORE + CLOSED LAYERS

Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe

CRX downloadhttp://bit.ly/crx-download

paolo.mottadelli@adobe.com