Si eu am fost atrasa la acum multi ani de mirajul UML. Cumva ajunsesem la convingerea ca, daca stiu sa fac acele scheme, voi ajunge sa fac arhitectura. Puneam caruta inaintea boilor fara sa imi dau seama.
Timpul a trecut si am ajuns la concluzia ca, dupa un anumit timp de codat proiecte medii si mai ales mari, anumite lucruri se cristalizeaza si gandesc mai mult decat un modul-doua in avans. Asta a fost la mine momentul in care schitam cateva dreptunghiuri in orice echivalent M$paint si sa petrec timp preocupandu-ma de incapsulare la nivel de serviciu (cat si cum expun, ce footprint vreau sa targetez pentru a asigura viteza, etc).
Apoi am reinceput sa caut scule de modelat (mirror), pentru ca imi era usor sa ma exprim pornind de la user, si sa schitez un flow al experientei acestuia (si imi placea sa vad in diagrama omuletul acela de la care pleca totul, ma tinea focusata pe ce am de rezolvat).
Concluzia e ca am ramas la OmniGraffle ca si tool de baza, pentru ca pot schita rapid atat diagrame UML, cat si folosi diversele extensii pentru chestii funny precum UI mockups pe care mi le infig in corkboard pentru a le avea mereu sub nas.
Folosesc LucidChart sau draw.io (acum mai mult draw, au aplicatie de Windows) pentru diagrame si Sequence diagram-uri. Sequence diagram - Wikipedia (care nu stiam ca e parte din UML)
Nu chiar uml, dar am folosit MySQL Workbench ca sa generez o parte din diagrama unei baze de date ca sa vad cum sunt legate tabelele care m-au interesat.
Plus ca avem integrat ceva asemanator cu draw.io unde mai fac diagrame pentru diverse flow-uri telecom.
Am facut la licenta in 2003 un plugin de Rational Rose pentru Aspect Oriented Programming. Am adaugat un simbol nou acolo in RR si genera ceva cod din diagrama UML.
E intersant AOP asta care zice ca pe langa scopul principal al unei bucati de cod/functii sunt tot felul de aspecte suplimentare care se regasesc peste tot in cod (“cross cutting concearns”). ex.: logging de debug (“am intrat in functie”), authn & authz etc. Si poate le poti trata cumva unitar si separat de codul principal, pentru a avea un cod mai mic, mai curat si sa gestionezi intr-un loc, centralizat aceste aspecte secundare.