środa, 10 kwietnia 2013

Diagramy statyczne nie są drogą do celu

Ostatnio miałem okazję przyglądać się kilku osobom, które nie mają zbyt wielkiego doświadczenia w tworzenia projektów. Posiadają wiedzę na temat programowania obiektowego, znają paradygmaty, wzorce, ogólnie całkiem nieźli z nich programiści, jednak swoją przygodę z tworzeniem designów dopiero zaczynają.
Jedną z obserwacji, która rzuciła mi się w oczy jest sposób w jaki większość z nich rozpoczyna tworzenie projektu. Mianowicie - zaczynają od tworzenia diagramów klas.

Nie wiem skąd bierze się ten podświadomy znak równości pomiędzy produktem, którym jest projekt, a diagramem klas? Dlatego, że najczęściej one pojawiają się w książkach programistycznych?
Diagramy klas, w ogóle - diagramy statyczne, służą do przedstawienia budowy klas, interfejsów itp. Budowy! A projekt, to przede wszystkim próba przedstawienia zachowania, funkcjonalności, procesów, które mają zostać zaimplementowane w aplikacji. Nie da się tego zrobić jedynie za pomocą wyżej wspomnianych diagramów.

Nie twierdzę, że te diagramy są niepotrzebne, wręcz przeciwnie, gdy już wszyscy wiedzą jak cała nowa funkcjonalność powinna działać, to w oparciu o nie, dużo łatwiej jest stworzyć kod.
Tylko, że najpierw trzeba wiedzieć, jak to wszystko ma działać:)

Do tego celu najlepiej wykorzystać diagramy dynamiczne. Służą one do przedstawienia funkcjonalności, zachowania. To na ich podstawie buduje się diagramy klas. To za ich pomocą tłumaczy się działanie, powiązania i zależności. To dzięki nim łatwo je zrozumieć. Diagramy klas są po prostu... skupione na budowie, a nie na zachowaniu, a skoro projekt to reprezentacja jakichś procesów, to należy przedstawić te procesy w taki sposób, aby były zrozumiałe.

Polecam wszystkim, którzy stawiają pierwsze kroki w projektowaniu, na samym początku stwórzcie sobie tabelę (jedną bądź kilka) i zbierzcie wszystkie informacje, które potrzebujecie bądź posiadacie na obecnym etapie. Zastanówcie się czy czegoś Wam brakuje. Jak już macie wszystkie dane, postarajcie się wyłapać jakieś wspólne rzeczy/części, a następnie rozpoczynajcie. Tylko zacznijcie od diagramów dynamicznych (sekwencji, aktywności, stanu - w zależności od tego, co potrzebujecie) i na ich podstawie wyjdą Wam wszystkie statyczne diagramy, których tak bardzo pragniecie:)