okladka

Projektowanie i programowanie obiektowe to dziś standard w produkcji oprogramowania. Język UML, powszechnie stosowane narzędzie opisu projektów i architektury oprogramowania, systematyzuje i upraszcza proces projektowania. Projektowanie systemów w oparciu o przypadki użycia oraz role, odpowiedzialność i współpracę obiektów, pozwala na skoncentrowanie się na tym, jak powinien działać system, bez zbyt wczesnego zagłębiania się w szczegóły implementacyjne. Dopiero po opracowaniu prawidłowego projektu można zacząć zastanawiać się, jak zaimplementować projekt przy użyciu klas, interfejsów i hierarchii dziedziczenia.

Książka "Projektowanie obiektowe. Role, odpowiedzialność i współpraca" przedstawia metodykę projektowania obiektowego noszącą nazwę "Projektowania Sterowanego Odpowiedzialnością". Przedstawia praktyczne zasady projektowania obiektów będących integralnymi elementami systemu, w którym każdy obiekt ma specyficzną rolę i zakres odpowiedzialności. Autorzy prezentują najnowsze praktyki i techniki "Projektowania Sterowanego Odpowiedzialnością", a także przedstawiają sposoby ich stosowania w rozwoju nowoczesnych aplikacji obiektowych. Książka przedstawia strategie znajdowania kandydatów na obiekty i zawiera praktyczne przykłady oraz porady, dzięki którym bez problemu wykorzystasz opisywane w niej metody.

  • Stereotypy ról obiektów
  • Analiza opisu systemu
  • Model biznesowy systemu
  • Wyszukiwanie kandydatów na obiekty
  • Przydzielanie odpowiedzialności obiektom
  • Definiowanie współpracy pomiędzy obiektami
  • Przekazywanie sterowania w obiektach i systemie

Przedsłowie autorstwa Ivara Jacobsona (9)
Przedsłowie autorstwa Johna Vlissidesa (11)
Przedmowa (13)
Rozdział 1. Pojęcia używane w projektowaniu (17)
  • Maszyneria obiektowa (17)
  • Role (19)
  • Stereotypy ról obiektów (20)
  • Rola, odpowiedzialność i współpraca (21)
  • Kontrakty obiektów (23)
    • Gwarancje warunków użycia i następstw (23)
  • Obiekty dziedzinowe (24)
  • Obiekty specyficzne dla aplikacji (25)
  • Interfejsy (27)
  • Klasy (28)
    • Dwie role (28)
  • Złożenie (30)
  • Dziedziczenie (31)
  • Organizacje obiektów (32)
  • Komponenty (33)
  • Wzorce (33)
    • Zastosowanie wzorca podwójnego rozdziału (34)
    • Rzeczywiste korzyści z używania wzorców (38)
  • Schematy, sp. z o.o. (38)
  • Architektura (40)
  • Style architektoniczne (41)
    • Sterowanie scentralizowane (43)
    • Sterowanie rozproszone - brak centrów (43)
    • Sterowanie delegowane (44)
    • Badanie interakcji - przykład architektury warstwowej (44)
    • Umieszczanie obiektów w warstwach (46)
  • Opis projektu (47)
  • Podsumowanie (48)
  • Zalecane lektury (48)
Rozdział 2. Projektowanie sterowane odpowiedzialnością (51)
  • Proces widzenia, opisywania i projektowania (52)
    • Uruchamianie produkcji - definicja i planowanie (55)
    • Przygotowanie sceny - wstępny opis (55)
    • Przystępujemy do produkcji - projekt (57)
    • "Widzenie" z wielu perspektyw (59)
  • Pisanie scenariusza - analiza opisów (59)
    • Opisy użytkowania (60)
    • Inne specyfikacje (67)
    • Słowniki (67)
    • Obiekty konceptualne (68)
  • Obsadzanie ról - projektowanie badawcze (69)
    • Karty CRC (70)
    • Rozwiązania - używanie wzorców (72)
    • Poszukiwanie rozwiązania (75)
    • Przeskakiwanie od pomysłów do szczegółów (76)
  • Przed premierą - dopracowywanie projektu (77)
    • Projektowanie a elastyczność i rozszerzalność (79)
    • Projektowanie a niezawodność (80)
    • Tworzenie przewidywalnych, spójnych i zrozumiałych projektów (80)
  • Podsumowanie (81)
  • Zalecane lektury (82)
Rozdział 3. Szukanie obiektów (85)
  • Strategia odkrywania (86)
  • Szukanie obiektów i ról, a następnie klas (87)
  • Po co opis projektu? (88)
  • Strategie poszukiwań (91)
  • Czymże jest nazwa? (93)
  • Opisywanie kandydatów (98)
  • Charakteryzowanie kandydatów (102)
  • Łączenie kandydatów (103)
  • Poszukiwanie wspólnych cech (105)
  • Obrona kandydatów (107)
  • Podsumowanie (109)
  • Zalecana lektura (109)
Rozdział 4. Odpowiedzialność (111)
  • Czym jest odpowiedzialność? (111)
  • Skąd bierze się odpowiedzialność? (113)
  • Strategie przydzielania odpowiedzialności (124)
    • Zapisywanie odpowiedzialności (125)
    • Wstępne przypisywanie odpowiedzialności (127)
    • Wychodzenie z kłopotów (136)
  • Implementacja obiektów i odpowiedzialności (138)
    • Obiekt może grać wiele ról (138)
    • Projektowanie metod obsługujących odpowiedzialność (140)
  • Testowanie jakości kandydatów (141)
  • Podsumowanie (142)
  • Zalecane lektury (143)
Rozdział 5. Współpraca (145)
  • Czym jest współpraca między obiektami? (145)
    • Przygotowanie do współpracy (146)
    • Opisywanie współpracy kandydatów (146)
  • Opis projektu aplikacji "Mów za mnie" (147)
  • Warianty współpracy (148)
    • Kto steruje? (149)
    • Na ile obiekty mogą sobie ufać? (150)
  • Strategie identyfikacji współpracy (152)
    • Badanie roli każdego obiektu - stereotypy implikują współpracę (153)
    • Zakresy odpowiedzialności implikują współpracę (159)
    • Projektowanie szczegółów złożonego zakresu odpowiedzialności (160)
    • Projektowanie współpracy dla konkretnych zadań (162)
    • Identyfikowanie pasujących wzorców projektowych (162)
    • Jak architektura wpływa na współpracę? (164)
    • Rozwiązywanie problemów we współpracy (164)
  • Symulacja współpracy (167)
    • Planowanie symulacji (168)
    • Przeprowadzanie symulacji (170)
  • Projektowanie dobrej współpracy (173)
    • Prawo Demeter - studium przypadku (174)
  • Umożliwianie współpracy (176)
    • Wskazówki dotyczące nawiązywania połączeń (177)
    • Projektowanie niezawodnej współpracy (178)
  • Kiedy możemy uznać, że skończyliśmy? (179)
  • Podsumowanie (180)
  • Zalecane lektury (181)
Rozdział 6. Styl sterowania (183)
  • Czym jest styl sterowania? (183)
  • Warianty stylów sterowania (184)
  • Kompromisy (185)
    • Centralizowanie sterowania (186)
    • Delegowanie sterowania (187)
    • Ograniczenia decyzji sterujących (188)
  • Tworzenie centrów sterowania (191)
  • Studium przypadku - styl sterowania dla zdarzeń użytkownika (192)
    • Centralizowanie sterowania w BudowniczymKomunikatu (195)
    • Przenoszenie podejmowania decyzji do metod stanu w BudowniczymKomunikatu (203)
    • Abstrahowanie od decyzji (204)
    • Delegowanie kolejnych zakresów odpowiedzialności (206)
    • Projektowanie stylu sterowania dla sąsiedztwa Podpowiadacza (208)
    • Projektowanie podobnego centrum sterowania - jak zachować spójność? (211)
  • Podsumowanie (217)
Rozdział 7. Opisywanie współpracy (219)
  • Opowiadanie o współpracy (219)
  • Strategia tworzenia historii o współpracy (220)
  • Ustalanie zakresu, poziomu i tonu historii (221)
  • Lista opisywanych aspektów (222)
  • Określenie poziomu szczegółowości (223)
    • Widok z lotu ptaka (223)
    • Uczestnicy przypadku współpracy (225)
    • Sekwencja interakcji pomiędzy współpracownikami (227)
    • Widok szczegółowy (229)
    • Widok skoncentrowany na interakcji (230)
    • Widok implementacyjny (231)
    • Widok ilustrujący adaptację współpracy (232)
    • Gdy nie wystarczają diagramy sekwencji (234)
  • Wybór odpowiedniej formy (237)
  • Opowiedzmy, narysujmy, opiszmy - wskazówki (239)
  • Organizowanie pracy (244)
    • Wyróżnianie (244)
    • Odsłanianie historii (245)
    • Przekazywanie podstawowych informacji (246)
    • Składanie wszystkiego w całość (247)
  • Konserwacja historii (247)
  • Podsumowanie (248)
  • Zalecane lektury (249)
Rozdział 8. Niezawodna współpraca (251)
  • Zrozumienie konsekwencji awarii (251)
  • Zwiększanie niezawodności systemu (253)
  • Określanie zaufanych współpracowników (254)
    • Współpraca zaufana i niepewna (254)
    • Konsekwencje zaufania (257)
  • Gdzie zwiększać niezawodność? (258)
    • Co wynika z przypadków użycia (258)
    • Rozróżnianie wyjątków i błędów (259)
    • Wyjątki obiektowe a wyjątki z przypadków użycia (260)
    • Podstawy wyjątków obiektowych (260)
    • Strategie obsługi wyjątków i błędów (265)
    • Określanie obiektu odpowiedzialnego za podjęcie działań (267)
  • Projektowanie rozwiązania (269)
    • Burza mózgów na temat wyjątków (270)
    • Ograniczmy zakres (271)
    • Opisywanie strategii obsługi wyjątków (273)
  • Dokumentowanie projektu obsługi wyjątków (273)
    • Określanie formalnych kontraktów (277)
  • Przegląd projektu (279)
  • Podsumowanie (281)
  • Zalecane lektury (281)
Rozdział 9. Elastyczność (283)
  • Co oznacza "bycie elastycznym"? (283)
  • Stopnie elastyczności (285)
  • Konsekwencje elastycznego rozwiązania (286)
  • Określanie wymagań elastyczności (287)
  • Opisywanie zmienności (291)
  • Warianty i ich realizacja (293)
    • Identyfikacja wpływu zmienności (294)
    • Badanie strategii realizacji elastyczności (294)
    • Użycie szablonów i punktów zaczepienia do zapewnienia elastyczności (295)
  • Rola wzorców w elastycznych projektach (302)
    • Zmiana działania obiektu - wzorzec Strategii (302)
    • Ukrycie współpracujących obiektów - wzorzec Mediatora (303)
    • Dopasowywanie istniejących obiektów - wzorzec Adaptera (303)
    • W jaki sposób wzorce zwiększają elastyczność? (305)
  • Jak dokumentować elastyczność projektu? (305)
    • Pamiętajmy o czytelnikach (309)
    • Opisywanie sposobu wprowadzania zmian (310)
  • Zmiana projektu działającego systemu (312)
  • Podsumowanie (314)
  • Zalecane lektury (314)
Rozdział 10. O projektowaniu (317)
  • Natura projektowania oprogramowania (317)
  • Rozwiązywanie problemów dotyczących jądra (318)
  • Określmy ramy problemu (319)
  • Rozwiązywanie problemów odkrywczych (322)
    • Historia o zarządzaniu dzieloną informacją (322)
    • Historia o złożoności problemu komunikacji (324)
    • Historia o problemie projektowym, którego nie dało się uprościć (325)
    • Czy problemy odkrywcze mogą być złośliwe? (326)
  • Strategie rozwiązywania problemów odkrywczych (327)
    • Przeformułowanie problemu (328)
    • Syntezowanie rozwiązania (329)
  • Praca nad resztą problemów (330)
  • Projektowanie odpowiedzialne (331)
  • Zalecane lektury (334)
Dodatek A Bibliografia (335)
Skorowidz (341)