Marcin Wudarczyk
Nr albumu: 23974
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.