Quali sono alcuni degli strumenti richiesti per valutare quanto sarà grande e complesso un prodotto?

3

Diciamo che voglio iniziare a sviluppare un progetto (per esempio, usiamo facebook, ultimate-guitar, e tutte le ricette o AutoCAD, outlook, uccelli arrabbiati). Tutte queste app hanno successo e variano nel grado di "profondità" e complessità.

Come sviluppatori iniziali, la maggior parte di queste app e in particolare le app web sembrano semplicistiche da costruire e progettare, specialmente se si utilizza un buon framework. Come posso valutare, stimare e prevedere la complessità di un progetto?

    
posta dassouki 21.07.2011 - 03:27
fonte

6 risposte

2

Di tanto in tanto le persone mi fanno questa stessa domanda - come puoi immaginare la dimensione di un progetto.

Questa è la prima cosa che faccio sempre - usa il metodo "Tao" (noto anche come metodo "snowflake" o "Fractal") - per favore nota sto mantenendo il semplice sotto e un po 'ingenuo! - hai bisogno di molto di più per costruire un prodotto così complesso:

Dire che voglio costruire un enorme gioco online multiplayer. Questa è una dichiarazione generale del prodotto finale che chiameremo livello uno .

Di cosa ho bisogno per realizzare questo? Solo articoli di alto livello - l'elenco non deve essere più lungo di 5 o più elementi, altrimenti sai che hai iniziato a leggere i dettagli. Diciamo che ho diviso il livello uno nel seguente: a) Ho bisogno di un team di sviluppo, b) un gruppo di server e c) qualcuno che si prenda cura dei server. Mantenere il livello 2 molto semplice (anche se forse non questo di base).

Ora il livello 3 è quello di suddividere ulteriormente ogni elemento nel livello 2 in dettaglio.

Per il team di sviluppo ho bisogno di i) leadership ii) programmatori iii) grafica ragazzi iv) sound guys e infine v) story e level designer.

Per i server di cui ho bisogno i) server Web ii) server di database iii) server di backup iv) server di test.

(... e così via per il livello 2).

Ora proseguo sul livello 3, andando ancora più in dettaglio, ma continuando a mantenerlo piuttosto duro. Esempio utilizzando la voce programmatori dal livello 2: ho bisogno di programmatori di rete, programmatori di database, programmatori grafici 3D, programmatori di motori di gioco generali, programmatori di suoni e possibilmente programmatori di strumenti (i ragazzi che costruiscono i montatori di livello, ecc.)

E faccio quel dettaglio per ogni oggetto nel livello 2.

Poi partirò al livello 4, descrivendo in dettaglio ogni elemento del livello 3 un po 'oltre ...

E poi il livello 5 ... ecc.

Una volta che hai un livello di dettaglio che ritieni abbastanza banale (per il nostro esempio complesso probabilmente hai raggiunto almeno il livello di dettaglio 10), puoi iniziare a calcolare le stime di tempo e denaro per ciascun elemento.

Il totale di cui ti darà una buona idea di cosa ti aspetta ...

Nota: anche una semplice web app avrà da 5 a 7 livelli di iterazione dei dettagli.

Purtroppo non esiste un prodotto che possa essere usato per questo e che sia facile da usare - Ho usato tutto da Excel (abbastanza facile da usare) a MS Project (bonus: hai già l'inizio della tua WBS).

E per favore non pensate di aver bisogno di fare tutti i dettagli da soli (a meno che non siate un team di un solo uomo!) - ottenere esperti in materia per aiutarvi con le sezioni in cui sapete di avere esperienza!

Spero che quanto sopra abbia senso!

    
risposta data 21.07.2011 - 04:20
fonte
1

Vorrei iniziare andando su Source-Fame o su un altro repository open source e trovando applicazioni delle dimensioni di cui si sta parlando. Quindi guarda il codice in questione per avere una migliore gestione della complessità. Ad esempio, Blender è un programma di grafica 3D che probabilmente si sta avvicinando alla complessità di AutoCAD.

La complessità e le sfide varieranno enormemente anche per dominio. Un sistema integrato che controlla una raffineria di gas naturale sarà estremamente complesso nonostante non vi siano quasi componenti visibili oltre i numeri sugli indicatori. La complessità può anche essere esagerata da pratiche di programmazione scadenti o problemi di progettazione (troppo, troppo poco, tipo sbagliato, ecc.). Un gioco come Angry Birds si troverebbe nella parte bassa della scala della complessità del gioco rispetto a qualcosa come World of Warcraft. La complessità deriva anche dalle interazioni, più interazioni hai, più complesso sarà il codice.

Scope e Feature Creep, sono problemi estremamente comuni, anche nei progetti studenteschi e sono enormi fonti di basi di codice in mongolfiera. La semplicità può anche portare alla complessità, come Brian Kernighan ha scherzosamente commentato: "Debugging è due volte più duro di scrivere il codice in primo luogo. Pertanto, se si scrive il codice nel modo più intelligente possibile, per definizione non si è abbastanza intelligenti da eseguire il debug esso ". Quindi potresti scoprire di aver scritto codice così abilmente o così rapidamente a causa di vincoli, che il compito di mantenerlo è molto più complesso di quanto stimato.

L'Iterazione è la chiave qui penso di superarla. Il vecchio adagio, "la pratica rende perfetti", è tanto più reale qui.

    
risposta data 21.07.2011 - 04:05
fonte
1

Inizia a disegnare e poi scrivi il codice. A 6 mesi di distanza avrai una buona idea della complessità e dei 97 compiti e funzionalità che inizialmente non avevi pensato.

    
risposta data 21.07.2011 - 04:19
fonte
1

Non puoi.

La maggior parte degli esperti di domini ha difficoltà a stimare progetti moderatamente complessi e superiori con qualsiasi livello di accuratezza.

Ci sono molte ragioni per questo. Carte scritte. ect. Potresti studiare il problema da secoli.

Se dovessi scegliere un approccio per superare l'intervallo di esperienza, trova un progetto analogo implementato da un team comparabile che lavora all'interno di una società comparabile. Questo probabilmente ti metterà nel parco giusto. La sfida è trovare punti di dati comparabili e come si tenta di definire comparabili. E questo riguarda solo i maggiori fattori di un progetto. Ci sono così tante altre cose che possono influenzare un progetto ... vedi l'effetto Farfalla.

Non è magico, ma è lontano dall'implementazione coerente a meno che tu non abbia già fatto qualcosa di molto simile.

    
risposta data 21.07.2011 - 05:08
fonte
0

Il solo ed unico strumento richiesto è l'esperienza in domini problematici simili.

Anche se qualcuno è un mago del C ++, chiedendo loro di stimare quanto a lungo un componente del sito web prenderà non è qualcosa a cui sarà in grado di rispondere bene.

    
risposta data 21.07.2011 - 04:05
fonte
0

Penso che quello che stai cercando sia qualcosa come COCOMO Prende input relativamente semplici come la qualità della squadra, il numero di schermate di input, ecc. pompa una stima di alto livello del no degli sviluppatori e della durata del progetto. L'ho usato un paio di volte e amp; è abbastanza vicino per un controllo di integrità.

    
risposta data 21.07.2011 - 04:50
fonte

Leggi altre domande sui tag