Myślę, że do dokumentowania kodu należy zawsze używać diagramu klas. Nie sądzę, że jeśli spojrzysz bezpośrednio na kod, zobaczysz pełną architekturę. Zgadzam się, że jeśli sam napisałeś kod lub pracujesz nad nim przez długi czas, możesz zrozumieć, ale za każdym razem, gdy pojawia się nowe żądanie, za każdym razem musisz spojrzeć na kod i szukać, gdzie dodać ten nowy kod.
To, co robimy w naszej firmie, to mieć schematy klasowe naszego projektu. Tak naprawdę nie spędzamy czasu na modelowaniu, ale używamy diagramu klas do wizualizacji kodu po inżynierii odwrotnej. Jeśli kod się zmieni, to istnieje mechanizm scalania, a diagramy moich klas są zawsze aktualizowane.
To, co jest fantastyczne, to możliwość dodawania komentarzy, ograniczeń do diagramu oprócz java doc. Odwracamy projekt, a następnie tworzymy model i ostatecznie wyodrębniamy widoki z modelu wyświetlanego jako diagramy klas UML. Na tym etapie nie koduję, ale otrzymuję niebieski druk z architektury kodu i pracuję nad tym, aby utworzyć lub rozszerzyć moją obecną architekturę. Jeśli mi się podoba, to wciskam przycisk i mój istniejący kod łączy się z moimi diagramami. Mam na myśli scalanie, a na pewno nie pełne generowanie kodu. Zapisywana jest tylko różnica między istniejącym kodem a moimi diagramami, a nie pełny kod za każdym razem.
Studiuję od wielu lat, mam tytuł magistra i nadal koduję, ale nie chcę być tylko pisarzem Java i chciałbym trochę więcej wykorzystać mój mózg. Widoki UML dają mi to, czego potrzebuję, aby myśleć o mojej architekturze, komunikować się z innymi członkami zespołu i tworzyć lepszą architekturę bez korzystania z programowania Model Driven, ale tylko różnicę między istniejącym ręcznie pisanym kodem i graficznie tworzyć diagramy klas. Tworzę moją architekturę na poziomie kodu, a następnie odwracam ją i patrzę na model. Tworzę widoki i próbuję ulepszyć moją architekturę bezpośrednio w kodzie, a następnie ponownie odwrócić i zobaczyć, co się dzieje itp. Jest to ciągła iteracja bez generowania kodu sterowanego przez model, ale synchronizacja na żywo lub scalanie między kodem a UML. Podoba mi się to, że kod napędza UML i na pewno nie jest odwrotnie.