Marcin Wudarczyk

Nr albumu: 23974

Recenzja książki

Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides

Design Patterns
Elements of Reusable Object-Oriented Software

O Autorach

Autorzy są znani jako „The Gang of Four”, a to właśnie za sprawą książki „Design Patterns”, której wydanie spowodowało małą rewolucję kulturalną w środowisku projektantów oprogramowania.

Erich Gamma, którego uważa się za przywódcę „gangu”, jest doktorem Uniwerstytetu w Zurichu. Przez dwa lata pracował w firmie Taligent i zajmował się rozwijaniem ich środowiska projektowania obiektowego. Jest jednym z twórców ET++, przenośnej biblioteki służącej do tworzenia graficznych interaktywnych aplikacji. Aktualnie pracuje w grupie konsultingowej w Zurichu.

Richard Heim jest doktorem informatyki Uniwersytetu w Melbourne w Australii. Ma na swoim koncie wiele międzynarodowych publikacji, jest członkiem komitetu programowego OOPSLA (Object-Oriented Programming, Systems, Languages, and Applications). Aktualnie pracuje w IBM w dziale Object Technology Practice.

Ralph Johnson zdobył doktorat na Cornell University, NY, USA. Zajmuje się technologiami obiektowymi od dziesięciu lat, brał udział w wielu projektach, takich jak system operacyjny zorientowany obiektowo (Choices), kompilator (SmallTalk z silną typizacją), system syntezy dźwięku (Kyma), a aktualnie pracuje nad biblioteką wspomagającą księgowość. Pracuje na Wydziale Informatyki Uniwersytetu Illinois i wspomagał organizację wielu konferencji OOPSLA.

John Vlissides jest doktorem inżynierii elektrycznej Stanford University. Aktualnie pracuje w IBM w dziale badań. Interesuje się narzędziami i technikami projektowania obiektowego i wizualizacją programów.

Tematyka i zawartość

Książka ta ma na celu uporządkowanie i skatalogowanie podstawowych struktur używanych często w fazie projektowania obiektowego (wzorców projektowych). Przeznaczona jest dla głównie dla projektantów i programistów, ze względu na mnogość przykładów w C++ i Smalltalku, jakkolwiek przedstawione w książce wzorce mogą być zastosowane w każdej dziedzinie, w której można zastosować projektowanie obiektowe.

Podstawową ideą, do której chcą przekonać nas autorzy, to konieczność stosowania wzorców projektowych (ang. design patterns) przy tworzeniu dużych systemów informatycznych. Pomysł ten został zaadoptowany już wcześniej przez wiele dyscyplin projektowania (np. istnieje specjalny język wzorców przy projektowaniu miast i budynków), a książka ta jest właśnie próbą przeniesienia dorobku projektantów z innych dziedzin do projektowania systemów obiektowych.

Książka składa się z dwóch części. Pierwsza z nich opisuje naturę i własności wzorców projektowych, oraz pokazuje, jak ich użycie pomaga w projektowaniu oprogramowania zorientowanego obiektowo. Znajduje się tam również bardzo pomocny przykład procesu projektowania z wykorzystaniem wzorców (projekt edytora WYSIWYG). W drugiej części znajduje się właściwy katalog wzorców. Każdy z nich ma nadaną jednoznaczną nazwę, aby ułatwić porozumiewanie się pomiędzy członkami zespołu projektowego. Do każdego wzorca dołączono szczegółowe informacje o wadach i zaletach, konsekwencjach użycia, wpływie na projekt, alternatywach. Zwykle można tez znaleźć przykład implementacji w jednym z obiektowych języków projektowania.

Ocena

Jak przekonują czytelników autorzy, prawidłowe projektowanie oprogramowania zorientowanego obiektowo jest trudne, zaś projektowanie oprogramowania, którego komponenty można powtórnie użyć, jest jeszcze trudniejsze. To, co według autorów odróżnia ekspertów w tej dziedzinie od nowicjuszy to doświadczenie. Eksperci nie tworzą projektu od nowa, opracowują go używając rozwiązań, które stworzyli wcześniej i które okazały się dobre. Autorzy dzięki tej książce chcą przekazać nowicjuszom wiedzę potrzebną, by stać się ekspertem.

Według mnie książka tylko częściowo może zastąpić doświadczenie, jakie nabywa się, samemu tworząc projekty i ucząc się na własnych błędach. Jeżeli odbywa się to jeszcze w trakcie nauki, błędy nie mają katastrofalnych następstw, natomiast takie podejście uczy kreatywności, wymyślania własnych rozwiązań i ich oceny. Także niebezpieczeństwo wpadnięcia w schemat, zamknięcia umysłu na nowe, niekonwencjonalne rozwiązania zostaje znacznie zmniejszone.

Tak wiec wydaje mi się, że książka ta może być użyteczna w dwóch aspektach: po pierwsze jako pomoc przy kształceniu projektantów i nauce projektowania obiektowego, po drugie jako katalog, służący ujednoliceniu pojęć, terminów i koncepcji projektowania w zespole projektowym, co w dużym stopniu ułatwia komunikację oraz poprawia jakość projektów.