W oczekiwaniu na przykładową aplikację w metodyce DDD

Pewnie niektórzy stali czytelnicy mojego bloga pamiętają, że jakiś czas temu rozpocząłem cykl o Domain Driven Design. Zaczął się on od prostego wprowadzenia, po którym coraz to bardziej zagłębiałem się w temat od strony teoretycznej, by w pewnym momencie zaanonsować, że niedługo umieszczę przykładową aplikację w PHP napisaną przy pomocy tej metodyki. Ostatni artykuł z tego cyklu umieściłem 12 listopada 2010… (tu zapada niezręczna cisza). Jako, że od tego czasu blog cały czas żył, mogło by się wydawać, że zaniedbuje moich drogich czytelników zainteresowanych tym tematem. Nic bardziej błędnego ! Prawda jest taka, że przez cały czas zgłębiałem swą wiedzę oraz implementowałem konkretną aplikację w metodyce DDD.

Aplikacja, którą tworzyłem, była w istocie tą samą, którą chciałem stworzyć w ramach zapowiedzianego przykładu DDD. Co więcej, jako, że było to już moje drugie podejście do tematu (aplikację w tej samej domenie tradycyjnymi metodami już raz stworzyłem), miałem okazję przyjrzeć się oraz przekonać jakie różnice są między obiema podejściami oraz poznać ich wady i zalety.

Pewnie za jakiś czas zaprezentuje wyniki mojej pracy na forum publicznym, natomiast jak na razie, chciałbym wymienić benefity, których już doświadczyłem, ze względu na zastosowanie DDD:

  • łatwość w modyfikacji
  • łatwość w znajdywaniu i usuwaniu błędów

Powyższe efekty wynikają bezpośrednio z takich cech oprogramowania pisanego w metodyce DDD jak:

  • skupienie się na metodach biznesowych
  • maksymalna enkapsulacja
  • terminy ze słownika domeny użyte w kodzie
  • przejrzysty przepływ sterowania
  • pełna testowalność

Więcej szczegółów ujawni się z pewnością samo, przy okazji oglądania kodu owej aplikacji, gdy już ją opublikuje. Tymczasem zachęcam wszystkich do przeczytania swoistego wstępu do DDD, który ostatnio pojawił się w czasopiśmie Software Developers Journal, gdzie Sławomir Sobótka – znany ekspert w dziedzinie DDD dzieli się swoją wiedzą wraz ze zrozumiałymi przykładami w Javie / C#. Czasopismo oczywiście można pobrać za darmo w formie PDF-a.

  1. Alan Gabriel Bem pisze:

    Pamiętaj, umieść na Githubie :)

  2. Ok, tak btw. zastanawiam się w jakiej formie napisać artykuł o tej przykładowej aplikacji ? Mam taki pomysł, żeby może ją najpierw właśnie opublikować ją na githubie, a wrzucić link ,a później czekać na pytania od publiczności i skompilować z tego FAQ. Co myślisz ?

  3. Alan Gabriel Bem pisze:

    Jestem jak najbardziej za.
    Pierwszy artykuł – opis aplikacji, może jakiś UMLek. Drugi to już konkrety na podstawie komentarzy do pierwszego.

    A kolaboracja na GH może tylko pomóc :)

  4. Poza tym, myślę jeszcze co do implementacji, że nie będę to robił pod żadnym frameworkiem (ZF,Symfony) tylko po prostu napiszę pakiet testów, co sądzisz ?

  5. Alan Gabriel Bem pisze:

    Chyba nawet lepiej – ja DOs tworzę poza środowiskiem frameworka, bo to ogranicza (np. system formów w S2 zupełnie nie nadaje się do pracy z agregatami).

    Schludnie to wygląda, a testy nadadzą przejrzystości.

  6. Więc w sumie widzę to tak:
    1. Artykuł z user stories
    2. User stories -> UML
    3. Repo GITHUB
    4. Testy na podstawie user stories
    5. Stworzenie kodu -> GITHUB
    6. Request For Comments dla kodu
    7. Artykuł podsumowanie/FAQ

  7. Sebastian Tarach pisze:

    Aż mi ślinka już cieknie. Poczytałem trochę na ten temat ( głównie u ciebie 😛 ), ale nie mogłem znaleźć żadnych przykładowych aplikacji.

  8. ;). Największy problem z przykładami w DDD, jest taki, że by pokazać jej zalety należy mieć odpowiednio skomplikowany problem, co wiążę się z pracochłonnością…
    Polecam http://domaindrivendesign.org/examples – kanoniczny przykład stworzony przez twórców DDD (niestety w Javie), oraz prezentacja do której wrzuciłem link w treści tego artykułu :)

  1. There are no trackbacks for this post yet.

Leave a Reply

Informuj mnie o odpowiedziach poprzez e-mail. Możesz również subskrybować wpis bez zostawiania komentarza.