Gli sviluppatori di software dovrebbero essere esperti nella progettazione del software?

6

Esiste una fase di analisi e progettazione del ciclo di vita dello sviluppo del software. Gli sviluppatori di software dovrebbero essere abbastanza esperti per svolgere il lavoro svolto durante questa fase, come disegnare diagrammi del flusso di lavoro , diagrammi di flusso dati , ERD , UML e altri modelli?

Ho visto alcuni casi in cui gli sviluppatori possono codificare molto bene data una chiara comprensione di ciò che è richiesto. Tuttavia, quando viene loro richiesto di progettare un sistema, barcollano a volte.

    
posta Shirish11 27.04.2012 - 14:29
fonte

8 risposte

19

La fase di progettazione è una parte vitale del processo di sviluppo del software; se non puoi progettare software, non puoi sviluppare software e non dovresti chiamarti "sviluppatore di software" (il "programmatore" sarebbe più appropriato).

Tuttavia, la progettazione di software non riguarda diagrammi e diagrammi di flusso. Si tratta di trovare soluzioni a un determinato problema a livello astratto e di pianificare come tradurle in un prodotto software reale. Diagrammi e diagrammi di flusso aiutano a comunicare queste soluzioni e piani, e talvolta aiutano a ottenere un'immagine più chiara, ma molti sviluppatori di software hanno solo una conoscenza superficiale di UML, se esiste, eppure progettano un software bellissimo (e, vv., Il semplice fatto che tu 'un asso nel disegnare diagrammi di flusso non dice nulla sulla tua capacità di progettare un buon software). Se riesci a comunicare e progettare bene, qualsiasi strumento andrà bene; la sola lingua inglese lo farà se non è disponibile altro.

TL; DR : Sì, gli sviluppatori di software dovrebbero avere e mantenere competenze di progettazione, e no, UML e.a. non sono requisiti per questo (sebbene possibilmente utili).

    
risposta data 27.04.2012 - 15:27
fonte
7

Gli sviluppatori dovrebbero, a mio parere, essere sempre attivi nel design. Perché? Perché sono quelli che lo implementano. Se hai designer dedicati, questi designer dovrebbero anche programmare. È un po 'come mangiare la tua merda di cane.

Inoltre, non è necessariamente la cosa migliore da fare per un grande progetto iniziale. Lo zio Bob parla molto del design guidato dall'utente e delle storie degli utenti. Suddividendo il sistema in storie di utenti, gli sviluppatori possono vedere più facilmente ciò che è necessario per i diversi scenari utente, e ciò migliorerà il design, così come l'esperienza dell'utente nella maggior parte dei casi. Per essere in grado di farlo, gli sviluppatori devono essere i progettisti del sistema!

EDIT: ho sottolineato che in realtà non ho risposto alla domanda.

Sì, i programmatori dovrebbero essere esperti nella progettazione, ma non necessariamente nel senso tradizionale del diagramma UML di grandi dimensioni.

Se la squadra nel suo complesso ritiene che i diagrammi siano vitali, tutti dovrebbero essere in grado di leggerlo e abbastanza persone dovrebbero essere abili nel crearli. Non sono necessariamente convinto che un diagramma grande e complesso sia ciò che è necessario per completare il lavoro.

    
risposta data 27.04.2012 - 15:11
fonte
3

Should software developers be skilled at software design?

Sì, sicuramente. Tuttavia, il design non è necessariamente una grande fase monolitica, né deve essere scritto come diagrammi molto formalizzati.

Più dettagliato è il design in anticipo, più è probabile che si dimostrino falsi in seguito.

Quindi IMO la capacità di progettare non è di sputare un modello perfetto in abstracto . Si tratta di prendere decisioni pragmatiche, iniziare in piccolo e far emergere il design, perfezionarlo mentre si programma e scoprire ulteriori informazioni sul dominio e le esigenze tecniche.

    
risposta data 27.04.2012 - 16:56
fonte
2

Un buon sviluppatore di software dovrebbe avere familiarità con il lavoro svolto in tutte le fasi del ciclo di vita dello sviluppo del software, dai requisiti alle attività di manutenzione e alle varie attività di supporto che si verificano. Ovviamente è un sacco di argomenti da trattare, quindi non mi aspetterei che una persona sia esperta in tutto questo.

Per quanto riguarda il design, mi aspetto che ogni sviluppatore di software sia in grado di leggere modelli comuni, come i modelli ERD e UML. Ciò include la capacità di capire cosa significano i simboli e come il modello si relaziona con il loro ruolo nel processo, come lo sviluppo o il test. Mi aspetto anche che abbiano abbastanza conoscenze per essere in grado di aggiornare i modelli per corrispondere alla loro implementazione, se necessario, e l'uso degli strumenti utilizzati per creare e mantenere i modelli.

Per quanto riguarda effettivamente l'architettura o la progettazione del sistema, questo è qualcosa che viene con il tempo e l'esperienza. L'unico modo per diventare effettivamente bravo a trasformare i requisiti in un'architettura di sistema o un'architettura di alto livello in un progetto più dettagliato è farlo, valutare il tuo lavoro e imparare da eventuali errori. Non è qualcosa che può essere letto in un libro o insegnato in un corso o due e masterizzato.

    
risposta data 27.04.2012 - 15:14
fonte
1

A mio parere, in generale, qualsiasi grosso problema viene affrontato suddividendolo in problemi più piccoli.

Diagrammi, assisti in questo compito. Forniscono viste / dettagli diversi del sistema. A volte sei interessato a come apparirà lo schema del database, ma altre volte sei interessato a come i componenti si parleranno l'un l'altro. Forse, vuoi vedere i dettagli di come funzionerà un particolare algoritmo. In entrambi i modi, c'è un modo per rappresentare un problema / scenario con un diagramma piuttosto che con un testo.

Il vantaggio di un diagramma è che non devi avere più testo. Picture bieng mille parole e tutto.

Per ogni caso d'uso, c'è un diverso livello di dettaglio, e diversi tipi di cose devono essere pensati.

Quindi, in sintesi, penso che dovrebbe essere un prerequisito per essere in grado di leggere bene questi diagrammi, quindi tutti nel team sono sullo stesso piano. Il vero compito di creare quei diagrammi, alcuni sono più abili di altri, quindi vorrei tracciare una linea di lettura. La creazione sarebbe un bonus.

UML è una notazione popolare. Uno dovrebbe avere familiarità con un sottoinsieme comune che viene usato più frequentemente. Ci sono dettagli nello standard, che probabilmente solo i super esperti conoscono. Uno dovrebbe avere una conoscenza funzionale.

    
risposta data 27.04.2012 - 15:07
fonte
1

Penso che sia bello avere tutti gli sviluppatori allineati (attraverso l'istruzione, la formazione o la lettura) nei vari tipi di diagrammi UML e in ERD e vari documenti come i requisiti (es. il modello di Volere) e dettagli usano gli elenchi dei casi .

Dovrebbero essere in grado di leggerli e usarli per descrivere ciò che stanno pianificando, tuttavia, sono d'accordo con Thomas sul fatto che la creazione di un architetto richiede più di questo (ad es. esperienza e visione sistematica) e non può essere insegnata.

    
risposta data 27.04.2012 - 15:25
fonte
1

Sono un giovane ingegnere del software. Mi sto laureando in una settimana, ma ho lavorato nel campo negli ultimi 2 anni. Sono attualmente in una piccola azienda di software in cui solo 2 di noi sono sviluppatori e i nostri capi non eseguono alcuna progettazione o parte di essa. Ci sediamo e ne parliamo, ma nessuno dei veri progetti software è fatto in questi incontri, o almeno così.

Essendo giovane (e tecnicamente uno stagista), trovo frustrante dare dei progetti senza specifiche scritte, senza specifiche da guardare, solo un risultato finale generale desiderato.

Credo che la mia risposta sia che gli sviluppatori di software apprendono la progettazione del software avendo inizialmente progettato progetti per loro, ma dovresti anche sentire di avere una voce in capitolo su come si svolge il progetto. I designer potrebbero non capire le capacità che hai o le carenze con cui gli sviluppatori stanno lavorando.

    
risposta data 27.04.2012 - 15:51
fonte
0

developers can code very well given a clear understanding of what is required.

Anche se un utente o un analista aziendale può fornire informazioni specifiche sui requisiti dell'applicazione, ciò non dice a un programmatore come costruirlo. La capacità di progettare sarà necessaria a un certo livello. Sono d'accordo con gli altri sul fatto che l'uso formale dei diagrammi non è un requisito.

Un buon chef potrebbe non essere in grado di scrivere un libro di cucina o esibirsi in uno spettacolo di cucina, ma questo non significa che chiedano a qualcun altro anche le ricette.

    
risposta data 27.04.2012 - 22:36
fonte

Leggi altre domande sui tag