È necessario progettare un'applicazione senza prima la prototipazione?

7

Ho appena iniziato a utilizzare un motore grafico popolare e ben documentato, e mi è stato dato un mese per creare alcuni piccoli programmi e familiarizzare con esso.

La biblioteca è enorme e ci sono sezioni che non ho esplorato.

A causa di una crisi di tempo, il mio capo tecnico mi ha chiesto di iniziare a progettare il mio software ( diagrammi di sequenza e classe ) anche per le parti che non ho esplorato, solo guardando il documentazione e capire le capacità di tali classi.

Ho capito che progettare un software richiede una buona conoscenza di come funziona qualcosa. Ha senso creare un design con una vaga comprensione di come funziona una classe, semplicemente guardando la documentazione della classe? Non dovrei fare il prototipo con un piccolo programma, modificarlo qua e là e capire come si comporta e POI fare il disegno per questo?

    
posta Nav 25.01.2012 - 09:39
fonte

5 risposte

7

Probabilmente i tuoi diagrammi di sequenza e classe non dipendono molto da come si comporta il motore grafico. Durante l'implementazione, probabilmente incontrerai piccole stranezze come 'Devo chiamare initFoo () prima di setupBar ()' ma questi dettagli molto probabilmente non influenzano il design delle tue classi. Il tuo capo tecnico ha bisogno del tuo design ora, probabilmente perché gli altri dipendono da questo, quindi ti propongo di crearlo.

    
risposta data 25.01.2012 - 10:06
fonte
2

C'è un rischio: solo perché il motore è popolare e ben documentato, ciò potrebbe non riflettere la realtà. Recentemente ho usato un motore di gioco che utilizzava una wiki per documentare come funzionava il motore. Quello che hai trovato era una miscela di vecchie pagine che non rifletteva la versione più recente, le pagine attuali e quelle che stavano parlando di parti non ancora implementate.

Se mi fosse stato chiesto di progettare l'applicazione, sulla base della sola documentazione, avremmo promesso cose che non sarebbero state disponibili per anni.

    
risposta data 25.01.2012 - 12:16
fonte
2

È importante fornire un progetto perché è necessario un lavoro preliminare per creare un progetto. Mi piace la risposta di ammoQ quando la mette meglio.

Vorrei solo aggiungere che in un mondo ideale avremo tutto il tempo per diventare esperti in un framework o una libreria sconosciuti prima di impegnarci a progettare un software intorno a qualcosa che non è ancora compreso al 100%. Tuttavia, non viviamo in un mondo perfetto.

Ogni documento di progettazione dovrebbe avere una sezione Presupposti che dettagli ogni residuo sconosciuto che abbiamo ancora sugli aspetti del design. Se ad esempio la documentazione per la libreria afferma di avere la funzionalità A, ma non sei riuscito a capirlo ancora nel tuo prototipo, rivendicala come Assunzione e design tenendo conto che è vero.

Di tanto in tanto potresti scoprire che non tutte le tue supposizioni erano corrette, o che forse ne mancavi qualcuno. A questo punto dovrai rivedere il tuo design e citare l'ipotesi fallita come una ragione, oltre a rivedere le stime future.

    
risposta data 25.01.2012 - 14:00
fonte
1

La risposta dipende davvero ...

Se vuoi progettare un software altamente manutenibile, in cui puoi estrarre il motore grafico e inserirne uno nuovo, puoi eseguire un progetto di alto livello senza entrare troppo in dettagli su come utilizzare il motore grafico.

Se vuoi basare il tuo design su quello del motore grafico (alto accoppiamento), allora devi conoscere le sue specifiche in anticipo.

    
risposta data 25.01.2012 - 14:34
fonte
1

Shouldn't I be prototyping it with a small program, tweaking it here and there and understand how it behaves and THEN do the designing for it?

Dipende da cosa vuoi fare

  • se vuoi Big Design Up Front , allora sì - hai bisogno di una comprensione dettagliata di come funzionano le cose
  • se vuoi una sorta di sviluppo iterativo e incrementale agile , allora non hai bisogno di una comprensione dettagliata di come il framework funziona nei dettagli. In questo caso, dovresti creare il tuo design per essere flessibile e aspettarti le modifiche ad esso in futuro

La risposta è su come la tua azienda fa le cose. Personalmente sceglierei il secondo approccio (agile).

A proposito, il tuo design non dovrebbe dipendere tanto dall'implementazione di una libreria.

    
risposta data 25.01.2012 - 10:36
fonte

Leggi altre domande sui tag