Myślę, że diagramy UML mogą być użyteczne tylko wtedy, gdy wyrażają coś na wyższym poziomie abstrakcji niż twój kod .
Pisanie UML tylko dla samego pisania UML staje się niepotrzebną biurokracją i sprawia, że projekt i kod są mniej przystosowalne do zmian bez żadnej korzyści.
Na przykład diagram klas UML pokazujący wszystkie klasy w pakiecie, ze wszystkimi ich atrybutami i metodami - czymś, co można łatwo wygenerować automatycznie - nie zawiera żadnej wartości: jest na tym samym poziomie abstrakcji niż kod . Ponadto kod z pewnością będzie lepszym źródłem tych informacji, ponieważ zawsze będzie aktualny i prawdopodobnie zostanie udokumentowany i zorganizowany w sposób łatwiejszy do zrozumienia, które metody / atrybuty / rzeczy są ważniejsze.
Z drugiej strony, jeśli masz pojęcia o wyższym poziomie abstrakcji niż to, co można wyrazić w kodzie, udokumentowanie ich na diagramie może być dobrym pomysłem.
Na przykład schemat przedstawiający moduły abstrakcyjne wyższego poziomu w złożonym systemie, z ich zależnościami i być może krótkim opisem ich obowiązków oraz tego, do jakiego pakietu / przestrzeni nazw odwzorowują w kodzie źródłowym, może być naprawdę przydatny dla nowego członka zespołu które należy wprowadzić do projektu lub można go również wykorzystać do ustalenia, gdzie należy wprowadzić nową klasę / funkcjonalność.
Innym przykładem przydatnego diagramu może być schemat sekwencji pokazujący kroki wysokiego poziomu, które należy podjąć w protokole komunikacyjnym. Być może każdy z nich ma małe dziwactwa i złożoność, ale prawdopodobnie wystarczy je opisać w samym kodzie. Diagram wyższego poziomu może pomóc programiście w łatwym zrozumieniu „dużego obrazu” rzeczy bez konieczności martwienia się o złożoność każdej interakcji.
W każdym razie to tylko niektóre przykłady; istnieje wiele przypadków, w których prosty schemat może być bardzo pomocny. Pamiętaj tylko, że powinieneś to robić tylko wtedy, gdy nie możesz wyrazić czegoś w samym kodzie. Jeśli używasz diagramów UML do wyjaśnienia samego kodu źródłowego, zamiast tego spraw, aby kod soruce był bardziej samo-dokumentujący.
Wreszcie, niektóre ogólne zasady dotyczące kodu mogą również dotyczyć diagramów: unikaj powtarzania się, upraszczaj, nie obawiaj się zmian (tylko dlatego, że coś jest udokumentowane na diagramie UML, nie oznacza, że nie może zmienić) i zawsze pomyśl o tym, kto będzie czytał / utrzymywał te diagramy w przyszłości (prawdopodobnie twoje przyszłe ja), pisząc je :)