Open Development

43
OPEN DEVELOPMENT Open 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

description

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

Transcript of Open Development

Page 1: 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

Page 2: Open Development

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”

Page 3: Open Development

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?

Page 4: Open Development

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

Page 5: Open Development

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

Page 6: Open Development

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

3 COMPONENTIOPEN SOURCE - OPEN STANDARDS - OPEN ARCHITECTURE

Page 7: Open Development

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

1. OPEN SOURCE

Page 8: Open Development

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

Page 9: Open Development

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

Page 10: Open Development

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

Page 11: Open Development

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

Page 12: Open Development

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

1. VISIONE

2. AGGIORNAMENTI

3. AIUTO

4. ARCHIVI

WORKSPACE CONDIVISO

Page 13: Open Development

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

1. VISIONE

2. AGGIORNAMENTI

3. AIUTO

4. ARCHIVI

WORKSPACE CONDIVISO

Page 14: Open Development

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

CODICE

TEST

BACHI

DECISIONI

MAILING LIST

ISSUE TRACKER

BLOGINFORMAZIONI DINAMICHE

Page 15: Open Development

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

CODICE

TEST

BACHI

DECISIONI

MAILING LIST

ISSUE TRACKER

BLOG

INFORMAZIONI DINAMICHE

Page 16: Open Development

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

2. OPEN STANDARDS

Page 17: Open Development

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

Page 18: Open Development

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

Page 19: Open Development

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

Page 20: Open Development

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

Page 21: Open Development

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

Page 22: Open Development

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

Page 23: Open Development

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

Page 24: Open Development

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

Page 25: Open Development

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

Page 26: Open Development

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

Page 27: Open Development

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

Page 28: Open Development

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

Page 29: Open Development

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

3. OPEN ARCHITECTURE

Page 30: Open Development

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

Page 31: Open Development

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

Page 32: Open Development

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

Page 33: Open Development

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

Page 34: Open Development

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

Page 35: Open Development

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

Page 36: Open Development

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)

Page 37: Open Development

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

Page 38: Open Development

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

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

Page 39: Open Development

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

Page 40: Open Development

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

Page 41: Open Development

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

Page 42: Open Development

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

Page 43: Open Development

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

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

[email protected]