Cosa rende grande un progetto? [chiuso]

27

Solo per curiosità qual è la differenza tra un progetto di piccole, medie e grandi dimensioni? È misurato da linee di codice o complessità o cosa?

Sto costruendo un sistema di baratto e finora ho circa 1000 linee di codice per l'accesso / registrazione. Anche se ci sono molti LOC non lo considererei un grande progetto perché non è così complesso, anche se questo è il mio primo progetto quindi non sono sicuro. Come viene misurato?

    
posta Jonathan 05.11.2010 - 19:12
fonte

11 risposte

17

Complessità.

Maggiore è la complessità, più difficile è imparare tutto nel progetto.

    
risposta data 05.11.2010 - 19:17
fonte
26

Approssimativamente come accorderei le cose - tieni presente che questo è più o meno arbitrario. La "dimensione" del progetto in un insieme di altri fattori come la complessità, le linee di codice sorgente, il numero di caratteristiche / valore aziendale, ecc. Un prodotto molto piccolo può fornire una grande quantità di valore, ecc. Detto questo:

  • 2m + sloc è un progetto di grandi dimensioni. Questi sono generalmente così complessi che pochi, se non nessuno, sono "fluenti" nell'intero sistema; piuttosto la responsabilità tende ad essere modularizzata lungo la struttura del codice. Questi progetti offrono spesso un enorme valore commerciale e possono essere mission critical. A volte sono anche sottoposti a una strong tensione dal debito tecnico e ad altre preoccupazioni legali.

  • 100k - 2m sloc è un progetto di medie dimensioni. Questa è la mia via di mezzo: il progetto è abbastanza complesso da richiedere alcune conoscenze specialistiche e probabilmente ha accumulato un certo grado di debito tecnico; è probabile che fornisca anche un certo grado di valore aziendale.

  • 10k - 100k è un piccolo progetto, ma non troppo piccolo per avere una complessità tale da richiedere una considerazione esperta; se sei open source, considera la possibilità di coinvolgere le persone di cui ti fidi per rivedere i tuoi commit.

  • Chiunque abbia meno di 10k sloc è davvero piccolo. Ciò non significa che non possa fornire alcun valore e molti progetti molto interessanti hanno un'impronta molto piccola (es. , la cui origine è ~ 2 kb (!)). I non esperti possono generalmente generare problemi di valore - correggere bug e aggiungere funzionalità - senza dover conoscere troppo il dominio.

risposta data 19.06.2011 - 03:49
fonte
13

La dimensione di un progetto è misurata dal grado di non-sostenibilità.

    
risposta data 05.11.2010 - 19:16
fonte
12

Complessità che può essere stimata in alcuni modi:

  1. Budget. Un progetto con un budget di $ 10.000.000 + è probabilmente molto diverso da uno che è sotto $ 10.000 per esempio. Ciò può includere manodopera, software, hardware e altri costi sostenuti per realizzare un progetto.
  2. Ore di lavoro della persona per completare il progetto. Ci vorranno un milione di ore o qualcos'altro? Questo potrebbe anche essere visto come un fattore di linea temporale in cui alcuni progetti potrebbero richiedere anni che direi grandi se confrontati con altri che potrebbero richiedere meno di una settimana. Si noti che le ore delle persone possono essere fuorvianti, poiché qualcuno potrebbe pensare raddoppiando il personale, quindi il doppio del lavoro sul progetto può essere dimezzato, il che può essere a mio avviso ridotto.
  3. Quantità di hardware, altri sistemi e persone che utilizzano ciò che il progetto sta costruendo. Se qualcosa si lega a 101 sistemi, è probabile che sia più complicato che se si regge da solo e non si lega a nient'altro.

Mentre i requisiti possono sembrare un buon modo per misurare questo, ci sono spesso più requisiti che si troveranno quando un progetto viene fatto assumendo una metodologia non Waterfall, credo.

    
risposta data 05.11.2010 - 21:26
fonte
11

Probabilmente una dimensione del progetto viene misurata in base al numero di requisiti del sistema, in cui i requisiti non possono essere ulteriormente ridotti.

Ovviamente, più requisiti per lo più significano maggiore complessità, ma non è sempre il caso.

    
risposta data 05.11.2010 - 19:20
fonte
4

Misurerei le dimensioni di un progetto per quanto sia difficile vedere l'intero progetto come un'unica grande immagine. Ad esempio, ho una base di codice di esplorazione / prototipazione per un problema di apprendimento automatico su cui sto lavorando. Sono solo 5k di codice, ma sembra un grande progetto. Ci sono tonnellate di opzioni di configurazione che interagiscono in modi imprevedibili. È possibile trovare quasi tutti i pattern di progettazione noti all'uomo da qualche parte nel codebase per gestire tutta questa complessità. Il design è spesso subottimale perché la cosa è cresciuta molto a causa dell'evoluzione e non viene sottoposta a refactoring tutte le volte che dovrebbe. Sono l'unico che funziona su questo codice, ma sono spesso sorpreso dal modo in cui le cose interagiscono.

D'altra parte, uno dei miei progetti hobbistici ha circa 3-4 volte il codice, eppure si sente molto più piccolo perché è fondamentalmente una libreria di funzioni matematiche che sono per lo più ortogonali tra loro. Le cose non interagiscono in modi complessi, ed è bello capire ciascuna funzione da sola. È facile vedere il quadro generale nella misura in cui ce n'è uno, perché non c'è molto da vedere.

    
risposta data 05.11.2010 - 19:39
fonte
3

Risposta arbitraria: quanto è grande il progetto quanto desideri averlo fatto fin dall'inizio con l'event-sourcing e SOA. O che gli autori del sistema avevano letto il libro di Evan "DDD: Affrontare la complessità nel cuore del software";)

    
risposta data 20.02.2011 - 00:29
fonte
2

Compexity & Ambito di applicazione

Complessità e ambito credo che sia ciò che determina quanto è grande un progetto. Tuttavia, ci sono diversi beni immateriali che possono influenzare anche le dimensioni di un progetto.

Requisiti

La più grande rovina che ho dovuto affrontare è stata la mancanza di requisiti. Nella mia situazione particolare, il direttore delle vendite stava determinando i requisiti. Il suo obiettivo era la vendita ... devo ottenere la vendita. Nella sua mente ciò che il cliente stava chiedendo non sembrava tutto così complicato perché avevamo costruito qualcosa di simile. Requisiti vaghi portano a lavori sottovalutati e alle aspettative impegnate.

Mancanza di un CCMU

CCMU è ciò che chiamo " Coo Ca Moo " (Completa intesa reciproca completa). Devi avere un CCMU con il tuo cliente.

Se hai un piccolo progetto con un CCMU scadente, puoi terminare il progetto 2,3,4 o più volte. Così un semplice lavoro di 20 ore si trasforma in un progetto di 60 ore con uno staff stressato e un cliente molto insoddisfatto.

Scope Creep

Questo accade più spesso di quanto pensi. Il cliente decide che dal momento che stai già facendo A, B & C non dovrebbe essere così difficile aggiungere D o addirittura F. Se questo comportamento non è controllato, può anche trasformare un piccolo progetto in un progetto di medie dimensioni. E a seconda di come il direttore delle vendite ha venduto il lavoro, queste aspettative di creep potrebbero sembrare "GRATUITE" al cliente.

    
risposta data 06.11.2010 - 18:55
fonte
1

È strano, leggendo molte di queste risposte. Trovo che io veda le dimensioni di un progetto in modo molto diverso. Forse è il mio lavoro in una grande azienda, ma tendo a vedere le dimensioni di un progetto più come una scala della sua visibilità / desiderabilità per i suoi clienti (a seconda della vostra area di lavoro possono essere colleghi o clienti paganti). / p>     

risposta data 05.11.2010 - 20:59
fonte
1

La complessità è la risposta giusta, ma come stimarla?

I fattori sono:

  1. I punti di estensione contano
  2. I livelli dei moduli contano (funzioni, classi, sistemi di classi, librerie, librerie condivise, applicazioni, applicazioni di rete, ecc.)
  3. Conteggio delle dipendenze (piattaforme incluse)
  4. Conteggio delle interdipendenze.
  5. Risorse non codificabili necessarie (inclusi grafica / arti, script di guida, come script di progettazione dei livelli e altre risorse necessarie per completare una versione dell'applicazione).

Più ne hai, più è complesso il progetto.

    
risposta data 06.11.2010 - 01:32
fonte
0

LOC è notoriamente inaccurato per molte misurazioni, ma penso che tu stia cercando di misurare qualcosa che non esiste un modo preciso per misurare. Forse un'alternativa potrebbe essere complessità ciclomatica .

In definitiva, penso che la "grandezza" di un progetto sia difficile da quantificare. È quasi come chiedere come si determina se un cane è grande o no. Non ci sono solo più modi per misurarlo (massa, volume, ecc.), Ma personalmente non lo trovo molto utile. La realtà è che probabilmente il mio criterio sarà qualcosa del tipo "Quanto posso correre da questo cane se lo vedo in un vicolo buio?"

E per la cronaca, in genere non considererei le righe di codice da 1k molto. Sarebbe un grosso pezzo di codice, ma non sarebbe quello molto nel grande schema delle cose. Certo, suppongo che dipenda dalla lingua. Ad esempio, le righe di codice da 1k sono molto meno codice in una lingua come C che in una lingua come Pyhon.

    
risposta data 05.11.2010 - 20:34
fonte

Leggi altre domande sui tag