Separazione delle attività in un'app di n-livelli: per modulo o per livello?

7

Sviluppando un'app di n-tier con un team, è meglio dividere le attività in base al modulo o usare il caso (es. Employee 1 crea il modulo Admin, il dipendente 2 crea il modulo Payroll, ecc.) o per livello (es. Employee 1 crea l'interfaccia utente , Employee 2 crea Logic, Employee 3 crea tutto l'accesso ai dati)?

Sono più incline al primo. Penso che sia logico pensare che se sto codificando un intero modulo o almeno casi di utilizzo correlati, sarei in grado di codificare continuamente senza aspettare che gli altri finiscano prima di integrare il mio lavoro.

Ma il contro-argomento, che è il secondo, è che separando i compiti tra i livelli, un programmatore può trarre vantaggio dalla separazione delle preoccupazioni di n-tier e focalizzarsi solo su un livello specifico (per alcuni) con cui hanno familiarità con .

    
posta Jonn 23.01.2011 - 16:18
fonte

3 risposte

5

Non utilizzare l'approccio a livelli. È un biglietto di sola andata all'integrazione dell'inferno. Inoltre, ti rendi conto che non sarai in grado di rilasciare nulla finché tutti i livelli non sono completi, il che di solito significa alla fine del progetto (se non del tutto).

Approccio migliore: concentrarsi sulle funzionalità . Questo è ciò per cui i nostri clienti ci pagano. Crea ogni funzionalità e completala, dall'alto in basso. Fai crescere l'architettura / livelli in base alle funzionalità, utilizzando il refactoring per mantenerlo in buona forma.

Questo approccio consente di rilasciare (o vendere) il sistema ogni volta che viene completata una nuova funzionalità. Questo è fantastico visto che hai ricevuto il feedback degli utenti in precedenza e puoi adattare il progetto in base a ciò. Scommetto che anche il tuo cliente sarà più soddisfatto.

    
risposta data 23.01.2011 - 16:43
fonte
3

Penso che ci sia una terza opzione: crea ogni livello in modo indipendente e estrai il livello sottostante fino a quando non colpisci il fondo. In questo modo tutti possono lavorare su tutti i livelli, uno strato alla volta.

Questo impedisce anche un'eccessiva specializzazione, in cui sei dipendente da una persona che fa una parte specifica dell'applicazione e che nessun altro può ragionevolmente riempire il proprio ruolo in tempo se all'improvviso hai perso lo sviluppatore.

Inoltre, l'interfaccia utente è stata completata e, si spera, presto. Quale, davvero è tutto ciò che conta per un cliente. In questo modo possono "vedere" la funzionalità, anche se in realtà non esiste ancora, il che ti rende più facile la modifica.

    
risposta data 23.01.2011 - 16:31
fonte
2

Penso che tu possa fare 2 analisi:

  1. Obiettivo di Technologie: se ogni parte del team gestisce bene una certa tecnologia, io userei la divisione di livello (generalmente ogni lacrima ha un più o meno un insieme di tecnologie associate). In questo modo puoi utilizzare lo specialista dell'interfaccia utente per occuparti delle interfacce utente e così via.

  2. Obiettivo: se hai un gruppo più omogeneo (ognuno ha le stesse conoscenze nelle tecnologie coinvolte), allora è più complicato ottimizzare la relazione lavoro / persona. Quindi direi che l'approccio al modulo è migliore.

Comunque, questa non è l'unica opzione, ma sarebbe il mio approccio in merito. Spero che questo aiuti!

    
risposta data 23.01.2011 - 16:41
fonte

Leggi altre domande sui tag