Il design richiede più tempo dello sviluppo del codice? [duplicare]

2

Una volta ho sentito che se passi il 90% del tuo tempo a sviluppare il design del tuo programma, la parte di codifica richiederà solo il 10% delle volte. Ho trovato molto più successo nello spendere circa il 30% del mio tempo a progettare l'architettura rispetto a quando spendevo lo 0% in design. Di conseguenza, i miei programmi sembrano evitare accoppiamenti non necessari e sono ora più flessibili da cambiare prima che avvenga il ri-factoring.

Solitamente finisco la fase di progettazione una volta che ho un'idea chiara di cosa devono essere chiamati tutti gli oggetti (sono davvero schizzinoso riguardo alla denominazione degli oggetti) e quale singola responsabilità avrà ciascuno. Una volta che avrò fiducia nel mio design e mi sentirò pronto per iniziare a costruire il software, ci sarebbe qualche vantaggio nel prendere più tempo per continuare a ripensare il design? Per me potrebbe sembrare che potrebbe essere eccessivo.

Che cos'è un design efficace per codificare il rapporto temporale di sviluppo e il tempo di progettazione dovrebbe essere maggiore del tempo di sviluppo del codice?

    
posta Korey Hinton 22.05.2013 - 16:15
fonte

4 risposte

7

Quando faccio stime tradizionali, la mia esperienza è che la distribuzione degli sforzi è di circa il 30% di progettazione, 40% di implementazione, 30% di test e solitamente il design è considerato completo quando hai identificato le classi rilevanti, le loro responsabilità e opzionalmente i metodi principali .

Uno dei rischi che correte quando si esegue un progetto completo e completo è che è possibile eseguire Analisi Paralisi , il che significa che non si ottiene mai nulla, perché continui a "migliorare" il tuo design senza un chiaro vantaggio per la situazione attuale.

Quindi, c'è sicuramente un ottimo livello nella quantità di design da fare, e quella bugie ottimali intorno al punto in cui ti senti a tuo agio che il tuo progetto risponde ai requisiti pertinenti ed è sufficientemente dettagliato da fungere da guida durante l'implementazione.

    
risposta data 23.05.2013 - 12:22
fonte
3

In primo luogo, dipende dal tipo di progetto. È simile a qualcosa che hai già fatto, ripetutamente? Quindi la parte di codifica può essere estremamente breve. D'altra parte, se è completamente nuovo, con molte nuove funzionalità, allora probabilmente dovrai codificare molte funzionalità. (Bene, o utilizzare una libreria esistente.) Che deve essere testato. Il test di una nuova libreria è considerato parte dello sviluppo?)

In secondo luogo, qual è esattamente la tua definizione di "design" e "sviluppo"? Ad esempio, una persona disegna le classi in UML e alla fine le compila in codice. Un'altra persona crea classi in IDE e le rifiuta, ma non scrive ancora i corpi dei metodi. Il lavoro del primo sarebbe probabilmente classificato come "design" e il secondo come "sviluppo", ma stanno facendo la stessa cosa, usando solo strumenti diversi. (Una persona più filosofica potrebbe forse argomentare che tutto la codifica è design.)

In terzo luogo, probabilmente dipende dal linguaggio di programmazione, dalla metodologia utilizzata, ecc. Poco a poco - se hai fatto un errore nella fase di progettazione, sarebbe facile o difficile da notare? Perché se non lo noti nella fase di progettazione, dovrai trovarlo e risolverlo durante il periodo di sviluppo ufficiale speso.

    
risposta data 23.05.2013 - 10:37
fonte
1

Non penso che devi usare un "90%" come regola d'oro, usa solo ciò che è meglio per TE. Lo considererei come una linea guida per dedicare più tempo a pensare a come farlo, invece di provare per permutazione.

Pronuncia semplicemente NO a "regole d'oro", usale come indicatori, sì, non applicale mai.

    
risposta data 23.05.2013 - 10:54
fonte
1

Tendo a pianificare di più nei progetti, che sono simili a quelli che ho già fatto. Perché so cosa ha funzionato l'ultima volta e cosa no, quindi posso approfondire i dettagli nella pianificazione dell'architettura.

Quando faccio qualcosa di nuovo, ho una vaga idea di cosa devo fare. Ma iniziare subito a scrivere codice e buttare fuori le idee sbagliate in anticipo ha dimostrato di essere un'idea migliore che pianificare un sacco di cose e implementarle in seguito, solo per vedere che i piani erano imperfetti al primo posto.

Quindi più conosco il software che implementerò, più dedico alla pianificazione.

    
risposta data 23.05.2013 - 12:38
fonte

Leggi altre domande sui tag