Domanda

Quando si sta iniziando un nuovo progetto, come si fa a pianificare per esso o quanto tempo ci vuole?

Pseudocodice?Diagrammi di flusso?

Non si tenta di pensare a tutte le classi in anticipo?

TBH, non ho mai nulla.Ho diritto a questo e pensare a soluzioni di problemi.Soprattutto perché le poche volte che ho cercato di pianificazione in anticipo, avrei sempre di dimenticare qualcosa di importante, e quindi la logica della pianificazione sarebbe viziata.

È stato utile?

Soluzione

Dopo l'esperienza di un sacco di progetti incompiuti , tendo a implementare una versione semplificata dei miei processi di business nella mia metodologia di sviluppo personale.

In genere seguono la seguente struttura:

  1. Crea una breve quindi ho un obiettivo in mente.
  2. per capire i dati che si occuperà.
  3. Attuare tutte le classi.
  4. Elaborare un caso d'uso Schema di delineare le attività.
  5. patibolo il caso d'uso disagram (in HTML per webapps)
  6. Filo scaffold, attuando unit test e costruzione passarli.
  7. Decidere di rilasciare il prodotto per il successo commerciale, poi dimenticare tutto su di esso.

Altri suggerimenti

molto meno di quanto dovrei

Ho sempre Dive In, sporcarsi e quindi rendo conto di aver fatto un pasticcio. Poi torna indietro e piano, e farlo bene.

ma la fase errori disordinato mi dà grandi idee che io non avrei anche se attraverso un processo di progettazione formale.

Modifica ottengo soprattutto in questo tipo di smash la tastiera pasticci quando si gioca con i più grandi / complessi. Interessante vedere fino a che punto le cose si fanno prima di rendersi conto che il vostro 'è nella mia testa, quindi è ok' design è viziato al 100%.

Probabilmente non è la migliore tecnica ... ma ... Ho in programma in codice .

Spesso mi scopro classe / metodi / etc. che ho bisogno solo facendo in questo modo. Detto questo, ho sempre presumo che il mio codice di pianificazione non sta per essere la soluzione definitiva.

Inoltre voglio scrivere le note in dettaglio "caratteristiche principali" e "funzionalità minori / desiderio".

Quando ero in "cascata" modo di fare le cose vorrei scrivere di diverse centinaia di pagine di documenti che mostrano tutti i dettagli che potrebbe essere scoperto durante la ricerca.Per arrivare a questo enorme tomo di documentazione che ho in genere

  1. incontrare e salutare tutti coloro che sono coinvolti con il progetto
  2. prendere le note copiose per quanto riguarda la percezione dei requisiti
  3. creare lunghi elenchi di requisiti di alto livello
  4. iniziare a rompere i requisiti di alto livello ben definite dettagli
  5. cominciare a compilare il Software requirements Specification modello di word: SRS
  6. creare cornici filo in photoshop, excel, o (il mio preferito) Balsamiq
  7. elenco dei dati che devono essere acquisiti e iniziare a costruire una approssimativa dello schema
  8. elenco della classe di strutture in UML
  9. definire la linea temporale del progetto
  10. bla bla bla
  11. scrivere il codice
  12. la speranza che ciò che è stato richiesto è quello che si voleva ancora quando il codice è completo!

Negli ultimi anni ho seguito con Agile (SCRUM) e hanno adottato un metodo completamente differente.

  1. incontro con il proprietario del prodotto per ascoltare i compiti per essere costruito
  2. scomporre storia in attività (pianificazione di base)
  3. assegnare il tempo per i compiti
  4. fare un po ' più dettagliata pianificazione
  5. -->test di scrittura, la scrittura di codice per superare il test, il refactoring-->check in danza
  6. illustrare l'utilizzo del prodotto/funzione
  7. avvia il processo di sopra

Devo dire che Agile riduce la quantità di tempo speso per scrivere documenti che il decadimento non appena l'inchiostro drys.Il proprietario del prodotto viene a vedere i risultati in modo molto più rapidamente.Il che significa che si arriva a mantenere il progetto andando nella giusta direzione, nel corso del tempo, anche se i cambiamenti di direzione, come ci sono in via di sviluppo.

Tenete a mente che c'è un tempo e un luogo per i due modi di sviluppo.Io non voglio costruire Jet software utilizzando Agile!

Tutto dipende da quanto è grande il progetto di esso. A volte potrebbe richiedere mesi per raccogliere solo tutte le esigenze e sapere esattamente che cosa deve fare.

Quando si tratta di parte di codifica, tutto dipende da quanto è complicato. Se è estremamente complicato, ho Wills iniziare, semplicemente tirando fuori quello che io voglio fare. Poi mi digitare il mio pseudo codice nei commenti. Poi mi codice intorno a quei commenti.

Tuttavia, se si tratta di semplice codifica. Io di solito solo scrivere quello che ho in mente e testarlo.

Usiamo un approccio molto agile che lavoreremo su parti importanti e, naturalmente, le cose sono sempre venuta a pop-up nei requisiti. Così li accoglieremo per quelli come si presentano. Si è mai andare a conoscere appieno esattamente ciò che si vuole creare, all'inizio del ciclo di creazione.

Questa è la mia opinione.

Dipende. La maggior parte delle cose che scrivo sono piuttosto semplici e di un disegno più grande ottiene costruito passo dopo passo e ho notato quello che ancora manca e ciò che è già completo. C'erano un paio di cose più pelose che richiedevano vasta schizzi e pensato per ottenere il diritto, anche se non ho ancora incontrato molti problemi architettonici che ha richiesto in modo (ancora giovane e roba). Per lo più quelle erano cose aritmetici difficili.

A mio stage l'anno scorso, il mio manager rimasto piacevolmente sorpreso che ho usato diagrammi di flusso per un problema. Ha pensato che fosse un'arte perduta con gli studenti in questi giorni. Ero non-così-piacevolmente sorpreso dal fatto che essi erano considerati datati.

In ogni caso, dipende dalla linea temporale del progetto per me, le scadenze sono la cosa più importante, naturalmente.

La maggior parte del tempo, io almeno cerco di avere un generale diagramma (anche solo nella mia testa) di come il modulo e/o il sistema di andare a lavorare.Mi piace sapere che cosa ho intenzione di fare prima di farlo.Rende la programmazione più facile e più veloce (in genere siamo in tempi molto stretti in cui lavoro).Ogni volta che non mi piace, mi imbatto in problemi che in genere mi porta a tirare fuori il codice e mettere da qualche altra parte.Devo ammettere, il mio processo è venuto per amara esperienza e ho avuto davvero bravo con regex in codice insieme globale di ricerca e sostituzione.

Qualcun altro ha portato un buon punto, a volte, di avere davvero un grande sistema e che diventa difficile.Io cerco e dividilo in pezzi.Io lavoro su qualcosa e farlo approfonditi, e lavorare su qualcos'altro per un po ' e vedere come interagiscono.Anche con pianificazione per il futuro, mi mancano le cose e hanno il refactoring di codice, ma almeno non devo rifare tutto, perché ho avuto almeno un qualche tipo di un piano di lavoro.

Dipende da quanto sia complesso il problema è che si sta tentando di risolvere. Se state prendendo su un grande progetto di programmazione, è necessario disporre di un certo grado di pianificazione prima di iniziare. Se non lo fai, avrai orribilmente perde in dettagli di roba che non abbastanza comunicare con le altre parti in pochissimo tempo.

Fondamentalmente, cercare di ottenere una vista a volo d'uccello dei problemi che è necessario risolvere. Vedere se uno dei problemi sono abbastanza piccoli da poterli risolvere e capire cosa potrebbe aver bisogno di comunicare con il resto della vostra soluzione. Pensate a come un black-box con un'API per il mondo esterno.

Dopo aver tutti i blocchi capito, vedere se è necessario dividere il problema in piccoli sotto-problemi, o che hanno una visione abbastanza dettagliata di tutto il progetto che si può iniziare con il codice.

La mia esperienza è che la pianificazione aiuta a prevenire problemi in futuro, farà pensare di più su come si suppone che il codice a crescere in futuro, se avete bisogno di aggiungere nulla, ecc

Nella maggior parte dei casi vi farà risparmiare il tempo speso per la pianificazione, quando si esegue il debug o l'estensione del progetto. Inoltre, avere un layout di massima del progetto significa che sarà più facile per ottenere aiutare la costruzione delle scatole nere è necessario, in modo da poter lavorare su di essa con più persone che solo a se stessi.

A seconda della complessità del progetto, solito inizio con il rilievo e la carta, e scrivere su una specifica, e alcuni pseudo codice del flusso di controllo. Poi posso sempre fare riferimento a che, mentre sto codifica. Rende più facile e richiede meno refactoring perché non hai pensato il problema attraverso.

Personalmente dipende la portata e la complessità del progetto, quante persone con cui sto lavorando su di esso, e le aspettative generali sulla consegna.

E 'molto importante capire le aspettative generali dei partiti che useranno il software. Tutte le persone coinvolte nel progetto dovrebbe avere una comprensione comune di ciò che viene lavorato -. Come che viene comunicata va in molte direzioni

Troppo spesso, le parti coinvolte nello sviluppo di software non si rendono conto che la comunicazione tra le parti è spesso la parte più critica e sottovalutato del progetto -. E la principale causa di incidenti del progetto

I preparo un caffè e mestieri un paio di panini.

In realtà dipende dal progetto. Ho lavorato su alcuni progetti nel settore della difesa che ha avuto 2 anni di pianificazione dettagliata prima di scrivere una sola riga di codice, e ho seduto e sfornato alcune piccole utilità da poche richieste in un'email da un 3D o texture artist in una sola seduta con un sacchetto di salatini e una tazza di Joe.

Essere in grado di sviluppare diagrammi di flusso, diagrammi UML, casi d'uso dizionari, e ampi standard di codifica prima mano è un bel modo per mantenere le cose organizzate, ed è certamente la pena di fare su progetti di grandi dimensioni, le squadre più grandi, e progetti mission-critical. Ma queste cose fanno prendere tempo, e sono spesso eccessivo per i piccoli progetti.

L'unica cosa che dovete veramente per garantire è che avete una comprensione adeguata del dominio del problema. In caso contrario, passare il tempo davanti alla ricerca fino a quando si fa è sempre la pena il tempo.

IMO 5 minuti di pianificazione avanti = 1 ora di codifica ....

Tante volte dobbiamo tornare indietro e ripensare tutta la situazione, perché non abbiamo intenzione di nulla.

La parte più importante dovrebbe essere il diagramma di flusso.

Gli altri dettagli a volte possono essere curati in tempo reale.

Quando si scatta su un problema di qualsiasi dimensione, ho sempre intenzione di scrivere almeno due volte.

Sono ancora all'università e non ho ancora avere esperienza con la creazione di sistemi di software su larga scala, ma ...

La prima cosa che deve essere fatto è quello di capire che cosa sta voleva. Finora per me, questo è normalmente una specifica assegnazione, ma nel mondo reale si tratta di parlare con il cliente. Un sacco.

Poi lavoro come fare ciò che è necessario. Per i relativamente piccoli programmi che ho lavorato su, io normalmente formo nella mia mente una vaga idea di ciò che il mio programma sta andando a guardare come (quali sono le parti importanti del programma sono e come interagiscono tra loro). Questo può comportare picchi se non ho idea di come una parte del programma funzionerà. Non credo che questo approccio (fare tutto nella mia mente) scalerà molto bene, ma la questione è stato chiesto ciò che realmente facciamo ...

Una volta che so più o meno quello che sto cercando di fare, mi siedo e scrivere il codice. E 'qui che scopro problemi in quello che stavo pensando.

Non credo che ho usato ogni pseudocodice per la progettazione di un algoritmo. Credo pseudocodice è troppo basso livello per la progettazione di grandi blocchi di programma.

Ho solo usato un diagramma di flusso in un'occasione per aiutare con la progettazione di un programma - indietro quando stavo imparando assemblaggio ed era abbastanza nuovo per la programmazione (ed era disponibile). The Mythical Man-Month dice il seguente: ". Il grafico dettagliato blow-by-blow flusso, tuttavia, è un fastidio obsoleto, adatto solo per iniziare i principianti a pensare algoritmico ... non ho mai visto un programmatore esperto che abitualmente fatto diagrammi di flusso dettagliati prima di iniziare a scrivere programmi ".

Vorrei attirare vasti diagrammi di flusso e scrivere il codice pseudo per le funzioni più complicate. Mi sento come disegnare il diagramma di flusso mi permette di refactoring senza introdurre bug per caso. Fare un diagramma visivo su carta, come un diagramma di flusso mi aiuta anche a capire se la mia logica è effettivamente corretta. Questo funziona davvero solo per i piccoli -. I progetti di media nei quali siano note la maggior parte delle specifiche

Con più esperienza, la necessità di definire estesi diagrammi di flusso e scrivere il codice pseudo intera funzione diventerà più ridondante ma prima di raggiungere quel punto io consiglio caldamente di piano prima di codice.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top