Newsgroup: it.comp.programmare
Titolo: Team development

Ciao a tutti,
sto progettando lo sviluppo di una web application con un team di
sviluppatori. Mi chiedevo se fosse possibile assegnare una specifica
parte del progetto e del codice, ad uno sviluppatore, senza dargli il
codice dell'intera applicazione.
Spero possiate aiutarmi.
Grazie mille in anticipo!

 
Sicuramente, ma molto dipende da come è organizzata l'applicazione.
Ciao  Manlio

 codice dell'intera applicazione.
S� che � possibile, basta dividere l'app in pi� moduli che comunicano 
attraverso interfacce. Il primo compito in questo caso � quello di 
definire la struttura del software (app base + plugin? motore + moduli + 
dati? gruppo di sotto-app indipendenti che comunicano fra loro?) e le 
interfacce fra i vari moduli. Fatto questo, ogni programmatore ha solo 
bisogno di conoscere l'interfaccia con cui dovr� comunicare il programma 
e niente pi�.
Questo, a grandi linee... poi bisogna vedere se hai delle specifiche 
particolari.

> Sicuramente, ma molto dipende da come è organizzata l'applicazione.
Grazie Manlio, l'applicazione è ancora in fase progettuale, quindi
potrei organizzarla come necessario.
Avresti qualche strategia e/o strumento da suggerirmi per il mio
scopo? Sto utilizzando Subversion come versioning system, ma non credo
possa aiutare allo scopo...

 e niente più.
Grazie Massimo, l'applicazione è ancora in fase progettuale, quindi
potrei organizzarla come necessario.
Si tratta di un ERP web based, da sviluppare con JDeveloper.
Avresti qualche strategia e/o strumento da suggerirmi per il mio
scopo? Sto utilizzando Subversion come versioning system, ma non credo
possa aiutare allo scopo...
Ps. cerco collaboratori per questo progetto, contattatemi se
interessati.

Comunque vedo che una soluzione possibile potrebbe essere dividere la
web app in più moduli che comunicano via interfacce, ma questo non è
automatico e non così semplice.
Una soluzione potrebbe essere utilizzare le autorizzazioni per le
cartelle di Subversion, in modo che io possa gestire le autorizzazioni
degli sviluppatori per l'accesso al codice.
Cosa ne pensate a riguardo?



L'unico strumento che ti serve è quello di avere un buon project manage e 
buoni programmatori :).
Per l'organizzazione dipende, come detto, dal tipo di progetto.
Tanto per farti degli esempi:
* Se alcune funzionalità le puoi sviluppare come librerie esterne, allora
  lascerai lavorare N programmatori a ciascuna libreria.
  Questo è il caso migliore perchè la libreria può essere progettata in
  quasi assoluta indipendenza, ed avrà la sua documentazione e unit test.
  Ogni libreria avrà il suo progetto.
  Con Subversion puoi utilizzare svn:external (o qualcosa di simile, non
  ricordo) per inglobare tutto nel tuo repository principale.
* I template (assumendo tu usi un buon sistema di templating) li puoi
  affidare ai grafici (assumendo che questi conoscano il sistema di
  templating in uso).
  In questo caso, però, devi fare in modo che i grafici possano
  renderizzare i template per vedere fare i test.
* Per altri casi più complessi lascio la parola ad altri, dato che non
  ho esperienze dirette.
Hai motivi particolari per cui non vuoi che un programmatore abbia 
accesso a codice che non sviluppa lui?
Comunque valuta anche l'uso di un versioning system distribuito, che sono 
ormai maturi.
Ciao  Manlio

Il motivo per cui non tutti gli sviluppatori dovrebbero accedere a
tutto il codice è per ragioni di copyright.
Subversion lo ritieni adatto al versioning distribuito?

 Subversion lo ritieni adatto al versioning distribuito?
Per quanto ne so, non lo supporta proprio.
Versioning distribuito significa che molte copie del codice stanno su 
molti computer diversi, tipicamente il server centrale e i pc degli 
sviluppatori. Fai bene attenzione a cosa distribuisci se vuoi mantenere 
il controllo su chi ha il codice di cosa...

 Subversion lo ritieni adatto al versioning distribuito?
No, dato che non è distribuito.
Ciao   Manlio

 interessati.
Puoi fare una progettazione a strati (tipo cipolla), dove ogni strato
rende pubbliche le proprie API.
A parit� di strato ci possono stare piu moduli (tipo un .jar) , e ogni 
strato comunica con lo strato sottostante usando le api (e solo quelle)
delle strato sotto.
Ogni modulo lo puoi dare in carico ad uno o piu programmatori.
Lo strato pi� alto � (o sono) la/le  interfacci(ae)  utente (Ad esempio 
una gui web, oppure dei programmi command line)
IL vantaggio � una progettazione pulit� e versatile; lo svantaggio � una 
progettazione piu accurata.
Tieni conto anche dei tempi di progetto, i costi, i programmatori a tua 
disposizione ed i relativi skill, e soprattutto che tu sei l' 
interfaccia tra il cliente ed i programmatori, nel senso che il cliente 
non dovrebbe mai discutere di progettazione con i programmatori;  loro 
si devono concentrare sul codice e/o la progettazione del db (essendo un 
ERP suppongo che occorra progettarne uno).

 Cosa ne pensate a riguardo?
Can of worms, il copyright non � funzionale.
Pi� che moduli, � meglio parlare di servizi, l'interfaccia � 
tipicamente HTTP. Normalmente � una architettura che si adotta partendo 
da un progetto monolitico in cui si estraggono funzionalmente parti del 
progetto (che normalmente corrispondono ai colli di bottiglia) e si 
isolano.
  ngw
-- 
Nicholas Wieland (ngw)
Zooppa CTO
911 Western Avenue, Suite 420
Seattle, WA  98104  US

JDeveloper, l'IDE che sto utilizzando per lo sviluppo di questa web
app, offre la possibilità di creare componenti riutilizzabili
dell'applicazione sotto forma di jar. Potrei quindi sfruttare questa
capacità per dividere la mia applicazione in componenti e distribuirli
come jar al team. Che ne pensate?