Istnieją różne sposoby korzystania z UML. Martin Fowler wywołuje te tryby UML i identyfikuje cztery: UML jako Notatki , UML jako Szkic , UML jako Projekt i UML jako Język Programowania .
UML jako język programowania nigdy tak naprawdę nie wystartował. W tej dziedzinie pracowano pod różnymi nazwami, np. Architektura oparta na modelu lub Inżynieria oprogramowania oparta na modelu. W tym podejściu tworzysz bardzo szczegółowe modele swojego oprogramowania i generujesz kod na podstawie tych modeli. Mogą być przypadki użycia, w których takie podejście jest przydatne, ale nie w przypadku ogólnego oprogramowania, a zwłaszcza poza dużymi firmami, które mogą sobie pozwolić na narzędzia napędzające to podejście. Jest to również czasochłonny proces - mogę wpisać kod dla klasy szybciej niż mogę stworzyć wszystkie modele graficzne niezbędne do jego wdrożenia.
UML jako plan często wskazuje na projekt „dużego projektu z góry” . Oczywiście nie musi tak być. Model można również w pełni opisać dla konkretnego przyrostu. Ale chodzi o to, że poświęca się czas na tworzenie projektu w postaci modeli UML, które są następnie przekazywane komuś do konwersji na kod. Wszystkie szczegóły są określone, a konwersja na kod jest bardziej mechaniczna.
UML jako Szkic i UML jako Notatki mają podobny charakter, ale różnią się w zależności od tego, kiedy są używane. Użycie UML jako Szkicu oznacza, że będziesz szkicował projekty za pomocą notacji UML, ale diagramy prawdopodobnie nie będą kompletne, ale skupią się na określonych aspektach projektu, które musisz komunikować się z innymi. UML as Notes jest podobny, ale modele są tworzone po kodzie, aby pomóc w zrozumieniu podstawy kodu.
Rozważając to, uważam, że wszystko powyżej jest prawdziwe dla każdego rodzaju notacji modelowania. Można go zastosować do diagramów relacji między bytami, diagramów IDEF , notacji modelowania procesów biznesowych i tak dalej. Bez względu na notację modelowania, możesz wybrać, kiedy ją zastosujesz (wcześniej jako specyfikację, później jako alternatywną reprezentację) i ile szczegółów (pełne szczegóły w kluczowych aspektach).
Drugą stroną tego jest kultura open source.
Często projekty typu open source zaczynają od rozwiązania problemu, z którym boryka się osoba (lub dziś firma). Jeśli jest uruchamiany przez osobę, liczba programistów wynosi 1. W tym przypadku narzut komunikacji jest bardzo niski i nie ma potrzeby komunikowania się na temat wymagań i projektu. W firmie prawdopodobnie będzie mały zespół. W takim przypadku prawdopodobnie będziesz musiał komunikować możliwości projektowania i omawiać kompromisy. Jednak po podjęciu decyzji projektowych należy zachować modele wraz ze zmianą bazy kodu lub je wyrzucić. W Agile Modeling kategoriach, „dokument ciągły” i utrzymanie „jednego źródła informacji” .
Krótko mówiąc, istnieje idea, że kod jest projektem, a modele to tylko alternatywne widoki projektu. Jack Reeves napisał trzy eseje na kodzie jak projektowanie , a tam są dyskusje na wiki C2, jak również, omawiając pomysły, które jest kod źródłowy jest projektowanie , konstrukcja jest kod źródłowy i kod źródłowy i modelowanie . Jeśli zgadzasz się z tym przekonaniem (co ja robię), kod źródłowy jest rzeczywistością, a wszelkie diagramy powinny istnieć, aby zrozumieć kod i, co ważniejsze, uzasadnienie, dlaczego kod jest tym, czym jest.
Udany projekt open source, jak te, o których wspominasz, ma współpracowników na całym świecie. Ci współautorzy są zwykle technicznie kompetentni w zakresie technologii, które zasilają oprogramowanie i prawdopodobnie są również użytkownikami oprogramowania. Współautorzy to ludzie, którzy potrafią czytać kod źródłowy równie łatwo jak modele i mogą używać narzędzi (IDE i narzędzi inżynierii odwrotnej) do zrozumienia kodu (w tym generowania modeli, jeśli czują taką potrzebę). Mogą również samodzielnie tworzyć szkice przepływu.
Z czterech trybów, które opisuje Fowler, nie sądzę, że znajdziesz projekt open source lub bardzo wiele projektów w dowolnym miejscu, które używają języków modelowania jako języków programowania lub planów. To pozostawia notatki i szkicuje możliwe zastosowania UML. Notatki zostałyby utworzone przez autora dla autora, więc prawdopodobnie nie można ich nigdzie załadować. Szkice tracą na wartości, ponieważ kod staje się bardziej kompletny i prawdopodobnie nie zostałby zachowany, ponieważ wymagałoby to tylko wysiłku ze strony autorów.
Wiele projektów typu open source nie ma udostępnionych modeli, ponieważ nie stanowi to wartości dodanej. Nie oznacza to jednak, że modele nie zostały utworzone przez kogoś na początku projektu lub że osoby nie stworzyły własnych modeli systemu. Po prostu więcej czasu zajmuje utrzymanie jednego źródła informacji projektowych: kodu źródłowego.
Jeśli chcesz znaleźć osoby wymieniające się informacjami o projekcie, polecam przejrzenie wszelkiego rodzaju forów lub list mailingowych używanych przez autorów. Często fora i listy mailingowe służą jako dokumentacja projektowa projektów. Możesz nie znaleźć formalnego UML, ale możesz tam znaleźć graficzną reprezentację informacji projektowych i modeli. Możesz również wpaść do czatów lub innych kanałów komunikacji dla projektu - jeśli zobaczysz ludzi rozmawiających o decyzjach projektowych, mogą komunikować się z modelami graficznymi. Ale najprawdopodobniej nie staną się częścią repozytorium, ponieważ nie są cenne, gdy osiągną swój cel w komunikacji.