Mentre cerco di programmare una soluzione per una richiesta sorgere. Non riesco a separare la differenza tra problemi di implementazione e problemi di progettazione.
In che modo esprimi espressamente il problema di progettazione?
Mentre cerco di programmare una soluzione per una richiesta sorgere. Non riesco a separare la differenza tra problemi di implementazione e problemi di progettazione.
In che modo esprimi espressamente il problema di progettazione?
In primo luogo: il design esamina il sistema da una vista di più alto livello rispetto all'implementazione.
Ogni domanda software ha sia aspetti di progettazione che di implementazione. In termini di design, è necessario sapere in che modo la richiesta si adatta alla tua attuale implementazione. Se non si dispone di un'implementazione corrente (è un nuovo progetto), è necessario ponderare tutti gli aspetti desiderati del progetto per determinare in che modo tutto si adatta. Dovresti farlo prima di preoccuparti dell'implementazione, poiché l'implementazione dipende da questo lavoro.
Dopo aver avuto un'idea di come dovrebbe apparire il sistema, fallo. Inizia a implementare la tua idea della soluzione. Molto probabilmente ti renderai conto durante l'implementazione che ti sei dimenticato di risolvere un problema. Quando ciò accade, basta rallentare, rispondere alla decisione di progettazione e quindi implementarlo.
Se i tuoi clienti ti chiedono richieste di programmazione dirette, non dovresti mai accettare una risposta definitiva senza pensarci da un giorno all'altro. Ciò ti consentirà di prendere in considerazione alternative che potrebbero non aver realizzato. Il cliente può (non sempre, ma potenzialmente) avere sentito parlare di una nuova tecnologia e ha pensato che DEVE averlo. Tu, come lo sviluppatore, hai bisogno di usare le tecnologie per una ragione distinta, e "perché il cliente ha detto che era fantastico" non è un buon motivo.
In piccola parte, tutto nello sviluppo del software è correlato. L'uso della metodologia waterfall (che è ancora utilizzata come base per molte metodologie oggi - forse un argomento per un'altra volta) consente rettifiche a monte piccole, se necessario. Detto questo, il design guarda al sistema da un punto di vista più lontano poi dall'implementazione. Usalo come mezzo per determinare a quale livello si rivolge la domanda.
I problemi di progettazione sono un sottoinsieme di problemi di implementazione dal momento che tecnicamente è un'implementazione.
I problemi di progettazione hanno il chiaro vantaggio di richiedere di modificare ampie sezioni di codice per farlo funzionare. Se devi ricablare metà del tuo programma a causa di questa richiesta, si tratta di un problema di progettazione. Prega che non lo è.
Si può dire: il design è un tipo di problema di implementazione. Ottenete una richiesta e talvolta è un'implementazione semplice (aggiungete X a Y, modificate A, B e C), ma a volte richiede una modifica più ampia (refactoring!) Per renderla semplice. Il primo è un problema di implementazione e il secondo è un problema di progettazione.
Si può dire: l'implementazione è un tipo di problema di progettazione. Hai una richiesta e devi progettare una soluzione. Si incontrano alcuni obiettivi di progettazione (rendere X più veloce o B più utilizzabile) e quindi progettare il resto in modo che funzioni in un modo che non ostacoli gli obiettivi di progettazione in futuro. Il secondo è un'implementazione, ma l'intera cosa è un problema di progettazione.
Puoi esprimere il tuo disegno in UML o schizzi / vignette, quindi puoi dire che un problema di progettazione è qualcosa che devi risolvere per risolvere, mentre un problema di implementazione è qualcosa che scrivi codice da risolvere. Vorresti che il tuo design fosse abbastanza specifico da indicare quali elementi soddisfano le tue esigenze e i tuoi obiettivi, ma non così specifici da ripeterne l'implementazione. L'esatto equilibrio è complicato, dipende dal tuo pubblico (come in tutte le comunicazioni) e richiede tempo per andare bene.
Di solito c'è un disegno prima dell'implementazione, se ricordo la mia metodologia Waterfall. Qual è l'idea generale che viene utilizzata per risolvere il problema è come vedo il design e, possibilmente, scegliere modelli di progettazione o altre soluzioni esistenti ai problemi sono a livello di progettazione. L'implementazione ha tutti i dettagli di prendere ciò che era generale e ipotetico e renderlo reale. Questo è un po 'come la risposta di Neil. Un altro modo per vedere questo è che il design è ciò che un architetto ha quando è fatto mentre l'implementazione è ciò che lo sviluppatore fa, almeno nei progetti più grandi, credo.
Leggi altre domande sui tag design development-process