standard di modellazione software minimalista in sostituzione di UML

-4

Utilizzo UML 2.x da diversi anni e ha funzionato davvero con linguaggi Object-Oriented come C # e Java, specialmente quando il software era abbastanza grande da essere considerato un sistema a livello aziendale.

Ora sto lavorando su diversi sistemi con diversi paradigmi e considerazioni, principalmente usando Python. Il team non è così grande, noi non facciamo RUP e roba, usiamo una modifica di Agile Scrum.

I progetti vengono esternalizzati al nostro team, quindi è necessario documentarli correttamente. Tuttavia, UML sembra troppo e talvolta inappropriato, in particolare nei diagrammi delle classi.

Per maggiore chiarezza, usiamo le docstring e le esportiamo come parte della nostra documentazione. Il problema è presentare il quadro generale.

Qualche raccomandazione?

Grazie,

    
posta Ashkan Taravati 05.06.2018 - 10:13
fonte

2 risposte

0

Va bene. Quindi, espandendo ulteriormente la risposta di @ Ister, in base ai commenti, ho concluso di fare quanto segue:

  • Modella i miei moduli come classi statiche come suggerito da @esoterik.
  • Scegli i diagrammi UML che sembrano pertinenti.
  • Espandi i diagrammi con le mie convenzioni per renderli più descrittivi. come indicato da @DocBrown.
  • Se in ogni caso, l'UML si è rivelato inespressivo, posso inventare la mia notazione. Come @esoterik e @KaspervandenBerg hanno suggerito esplicitamente.

Anche se questo sembra essere piuttosto raro, dato che non abbiamo regole rigide su come utilizzare i diagrammi UML, quindi possiamo utilizzarli intuitivamente per adattarli in base alle nostre esigenze.

There is no "law" which forbids you to replace the names of objects by the names of modules involved.

Il principale punto di confusione era che UML utilizzava effettivamente un approccio di progettazione orientato agli oggetti, mentre python non sempre si adattava a questo, specialmente quando si usano le funzioni standalone. Ma non dovrebbe essere un problema.

Also even if you don't follow OOP principles fully it's good to keep them mostly regardless if the language you use enable that or not. It's beneficiary in the long run (easier maintenance). And in every language, you can write OOP-like style.

Mentre mi dilungavo su come le persone usassero UML con Python, ho raggiunto il fatto che quasi nessuno progetta un software prima che sia sviluppato in python; almeno non con UML! Utilizzano invece i generatori UML quando il codice è pronto, che ha i suoi svantaggi.

Python objects can be extended at runtime, and objects of any type can be assigned to any instance variable. Figuring out what classes an object can contain pointers to (composition) would require a full understanding of the runtime behavior of the program.

    
risposta data 07.06.2018 - 01:01
fonte
0

Utilizza UML, solo le parti di cui hai bisogno.

In generale non è necessario utilizzare la gamma completa di funzionalità UML. In realtà non lo fai mai.

Usa tutto ciò di cui hai bisogno. Anche se la tua funzione non è contenuta in una classe, essa serve effettivamente allo scopo di alcune comunicazioni tra alcune entità. Quindi usa il diagramma di sequenza.

Il vantaggio di tale approccio è che si utilizza uno standard ben definito e sarà facile spiegarlo a chiunque. Inoltre, anche se non segui pienamente i principi OOP, è bene tenerli per lo più indipendentemente dal fatto che la lingua che usi lo abiliti o meno. È un beneficiario a lungo termine (manutenzione più semplice). E in ogni lingua puoi scrivere OOP come stile.

    
risposta data 05.06.2018 - 12:39
fonte

Leggi altre domande sui tag