Dovrei sempre iniziare con UML come una buona pratica durante la progettazione delle classi?

2

Sono nel mezzo della creazione di un pacchetto per l'applicazione PHP basata su Symfony 2.

Voglio che il bundle sia chiaro e ben progettato, quindi continuo a spostare e refactare il codice, rinominare i metodi, riordinare le classi, spostarle in altre cartelle, aggiungere alcune fabbriche e adattatori, proxy e seguire altri concetti di progettazione oop.

Penso che prima dovrei progettare il diagramma UML, quindi iniziare a lavorare con IDE.

Qual è la migliore pratica per progettare una buona architettura?

Quando inizio con l'estrazione di diagrammi di classe UML prima, quindi dopo la codifica, anche con metodi e test vuoti, smetto di seguire il diagramma che ho disegnato prima, perché ho trovato che non corrisponde a quello che mi serve.

Puoi condividere le buone pratiche per progettare l'architettura per le biblioteche? Non sto parlando di modello (se così potrei seguire DDD).

    
posta Filip Górny 20.02.2014 - 23:54
fonte

2 risposte

6

In una domanda è qualcosa che dovrebbe sempre (o mai ) essere fatto, l'unica risposta ragionevole è: No, ci sono sempre delle eccezioni.

Che sia una buona idea iniziare con un design in UML dipende dalla scala del design, dalle ramificazioni se si sbaglia e dal proprio livello di comfort.

Se decidi di iniziare con un design UML, ci sono ancora due modi per utilizzare UML:

  1. Come linguaggio delle specifiche. In questo caso, i diagrammi UML sono una rappresentazione diretta del tuo codice e contengono lo stesso livello di dettaglio. Spesso, puoi utilizzare gli strumenti RAD per generare codice dai diagrammi UML.

  2. Come strumento di comunicazione. UML è un potente strumento per comunicare i disegni agli altri (o al tuo futuro sé), ma non ci sono requisiti che i diagrammi contengano tutte le minuzie in dettaglio. Per una comunicazione efficace, spesso è ancora meglio non mostrare tutti i dettagli e che include anche cose come le classi di helper o le relazioni che sono irrilevanti al punto che vuoi fare con il diagramma.

Se si utilizza UML nel secondo modo, è molto probabile che il codice risultante assomigli al diagramma a grandi linee solo se si guarda da un miglio di distanza. Un'ispezione più ravvicinata mostrerà grandi differenze, ma ciò non invalida necessariamente il diagramma.

    
risposta data 21.02.2014 - 08:18
fonte
0

Mi scuso - ho intenzione di dire "io" molto perché posso solo parlare della mia esperienza. Prendi "I" come qualificatore piuttosto che il contrario.

Ogni volta che sono in una squadra che ha davvero difficoltà a mettere le mani su un problema, disegno diagrammi di sequenza ( link ROCK - è OK per citarli?). Ciò definisce le interazioni di servizio o le interazioni di classe.

Per coincidenza, le interazioni di servizio definiranno direttamente le chiamate API da implementare, se mostro interazioni tra servizi. O metodi da implementare se mostra le interazioni tra le classi.

(Molti dei requisiti dei dati derivano anche da questo, ma devo ammettere che, per brevità, sono abbastanza bravo nel catturare i metodi ma non così bene nei parametri.)

10 anni fa, ho usato uno strumento di modellazione UML che generava Java dal diagramma delle classi, quindi avrei, di fatto, generato un diagramma UML in primo piano. Beh, almeno allo stesso tempo stavo scrivendo le lezioni.

Da allora, faccio molto raramente diagrammi UML oltre a diagrammi di sequenza. A volte un semplice diagramma di entità-relazione è utile se, di nuovo, il modello sta diventando confuso.

EDIT: In realtà, disegno molto diagrammi di stato. Quindi diagrammi di stato e diagrammi di sequenza possono essere davvero utili. Anch'io disegnavo diagrammi di attività UML, ma i diagrammi di sequenza erano appena usciti. Tuttavia, questo definisce il limite massimo dell'acqua. Nessun altro nel team sta facendo quel livello di diagrammi.

Può essere utile andare dall'altra parte: lanciare uno strumento che genera un diagramma di classe dalle classi. Ogni volta che lo faccio, trovo sempre gli errori di modellazione da correggere. Ma sono solo io. ;)

EDIT EDIT: BTW che tira fuori un bel diagramma di sequenza in un'intervista può avere un grande valore wow. Anche con intervistatori non tecnici. Dì solo

    
risposta data 21.02.2014 - 08:40
fonte

Leggi altre domande sui tag