Modifiability: Or is there Design in Agility?
Oto fragmentaryczne notatki z prezentacji:
OOD/OOP/DDD
Symulacja problemu zbudowana na podstawie wymagań pozwala współdzielić z klientem proces zmian modelu. Oznacza to, że kiedy klient zmieni zdanie, zmieniając model swojego biznesu, nasza symulacja będzie wymagać niewielkich zmian. Co ważne, będziemy mieli dokładne informacje, które części wymagają zmiany, ponieważ nasz model zbudowany jest na bazie tego samego, wspólnego języka. Z drugiej strony, gdybyśmy oparli swoje rozwiązanie na podstawach czysto technicznych, nie byłoby możliwości powiązania zmian w biznesie ze zmianami w symulacji. Szybki wniosek z tej opowieści: Trzymaj swój model tak blisko modelu biznesu, jak to tylko możliwe.
Model domeny powinien być wolny od kwestii technicznych, aby móc podążać za zmieniającym się modelem biznesu.
(Z późniejszej części prezentacji) Ideałem dla Farley-a jest kod tak czytelny, że osoba nieteczniczna potrafi zrozumieć jego ideę. Sposobem na osiągnięcie tego idału jest maksymalna enkapsulacja.
Dla Dan-a North kluczem w Domain Driven Design jest odkrycie, jak wygląda model biznesu, i przetłumaczenie go, najwierniej, jak to możliwe, na działające oprogramowanie. Dzięki DDD unikamy słynnego dylematu z odraczaniem decyzji do ostatniego dobrego momentu. Decyzja o tym, jak wygląda model biznesowy została zwykle podjęta przez naszego klienta 10 lat temu i nowe oprogramowanie jej nie zmieni. Jego zadaniem jest jedynie usprawnić wykonywanie tego modelu.
Martin Fowler, podsumowując, stwierdza, że często najważniejszą kwestią jest podjęcie decyzji o tym, kiedy należy podjąć tę czy inną konkretną decyzję.
Co zrobić, kiedy spóźniłem się z decyzją?
Eric Doernenburg podaje przykład swojego projektu, jako lekcję jak rozpoznawać ostatni dobry dla podjęcia decyzji moment. W jego przypadku była to decyzja dotycząca charakteru (WWW, standalone) aplikacji zasilającej bazę danych. Na początku baza zasilana była plikami Excel, później, gdy oczekiwania wzrosły, zastosowano proste strony HTML. Osteczną decyzję wciąż odkładano, ponieważ dotychczasowe rozwiązania wiązały się z niewielkim nakładem prac. Kiedy okazało się, że te proste strony się nie sprawdzają, postanowiono wreszcie podjąć decyzję. Zrobiono to, ponieważ każda z potencjalnych opcji (jeden z toolkitów JS, klient Swing) wiązała się z tak dużym nakładem pracy, że dalsze odkładanie decyzji byłoby już marnotrastwem.
Mam nadzieję, że tą krótką notatką zachęciłem Was do obejrzenia prezentacji. Naprawdę warto!



