Szczegóły ebooka

Zwinne wytwarzanie oprogramowania. Najlepsze zasady, wzorce i praktyki

Zwinne wytwarzanie oprogramowania. Najlepsze zasady, wzorce i praktyki

Robert C. Martin

Ebook

Poznaj nowoczesne sposoby wytwarzania oprogramowania!

Czasy kaskadowego tworzenia projektów odchodzą w niepamięć. Obecne tempo rozwoju aplikacji i rynku nie pozwala poświęcać miesięcy na analizę, tworzenie dokumentacji, projektowanie, a na końcu wytwarzanie, testowanie i wdrażanie. Produkt musi być dostępny błyskawicznie! Pozwala to na natychmiastowe zebranie opinii na jego temat, dostosowanie go do oczekiwań i szybkie reagowanie na wymagane zmiany. Takie założenia może spełnić tylko i wyłącznie zespół wytwarzający oprogramowanie w zwinny sposób!

Ta książka została w całości poświęcona zwinnym praktykom. Sięgnij po nią i przekonaj się, w jaki sposób planować kolejne iteracje, tworzyć kod, a następnie go testować. W kolejnych rozdziałach poznasz praktyczne aspekty zwinnego tworzenia kodu – zobaczysz, jak istotne są zasady: pojedynczej odpowiedzialności, podstawienia Liskov czy odwracania zależności. Znajdziesz tu także zasady projektowania pakietów oraz przydatne wzorce projektowe, omówione na konkretnych przykładach. Książka ta jest obowiązkową lekturą dla wszystkich osób zaangażowanych w wytwarzanie oprogramowania i chcących udoskonalić swój proces.

Dzięki tej książce:

  • poznasz fundamenty zwinnego wytwarzania oprogramowania
  • zaznajomisz się z najlepszymi praktykami
  • przekonasz się, jak refaktoryzować kod
  • wybierzesz właściwe wzorce i unikniesz typowych błędów
  • poprawisz swój proces wytwarzania oprogramowania

Zwinne programowanie = większa szansa na sukces projektu!
 


To jest chyba pierwsza książka, w której ujęto w spójną całość metodykę agile, wzorce projektowe oraz podstawy nowoczesnego wytwarzania oprogramowania. Kiedy Bob Martin mówi, lepiej słuchaj!.

John Vlissides, konsultant i autor książki Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego użytku

Czekałem na tę książkę o wiele za długo. Bob ma ogromną ilość wiedzy do przekazania na temat pragmatyki uprawiania naszego rzemiosła.

Martin Fowler, konsultant i autor książki Architektura systemów zarządzania przedsiębiorstwem. Wzorce projektowe

W książce Zwinne wytwarzanie oprogramowania. Najlepsze zasady, wzorce i praktyki, Bob Martin zaprezentował się zarówno jako mistrzowski programista, jak i nauczyciel. Zachwyca swoją praktyczną wiedzą i pięknym stylem.

Craig Larman, konsultant i autor książki UML i wzorce projektowe. Analiza i projektowanie obiektowe oraz iteracyjny model wytwarzania aplikacji

Słowo wstępne (13)

Przedmowa (14)

O autorach (20)

CZĘŚĆ I. ZWINNE WYTWARZANIE OPROGRAMOWANIA (21)

Rozdział 1. Praktyki agile (23)

  • Agile Alliance (24)
    • Manifest Agile Alliance (24)
  • Zasady (27)
  • Wniosek (29)
  • Bibliografia (29)

Rozdział 2. Przegląd informacji o programowaniu ekstremalnym (31)

  • Praktyki programowania ekstremalnego (31)
    • Klient jest członkiem zespołu (32)
    • Historyjki użytkowników (32)
    • Krótkie cykle (32)
    • Testy akceptacyjne (33)
    • Programowanie parami (33)
    • Programowanie sterowane testami (34)
    • Wspólna własność (34)
    • Ciągła integracja (34)
    • Równomierne tempo (35)
    • Otwarta przestrzeń robocza (35)
    • Gra w planowanie (35)
    • Prosty projekt (36)
    • Refaktoryzacja (37)
    • Metafora (37)
  • Wniosek (38)
  • Bibliografia (38)

Rozdział 3. Planowanie (39)

  • Początkowa eksploracja (40)
    • Tworzenie prototypów, dzielenie i szybkość (40)
  • Planowanie wersji dystrybucyjnych (41)
  • Planowanie iteracji (41)
  • Planowanie zadań (41)
    • Półmetek (42)
  • Przebieg iteracji (42)
  • Wniosek (43)
  • Bibliografia (43)

Rozdział 4. Testowanie (45)

  • Programowanie sterowane testami (45)
    • Przykład projektu w stylu "najpierw test" (46)
    • Izolacja testu (47)
    • Nieoczekiwane wyeliminowanie sprzężeń (48)
  • Testy akceptacyjne (49)
    • Przykład testów akceptacyjnych (50)
    • Architektura "przy okazji" (51)
  • Wniosek (51)
  • Bibliografia (52)

Rozdział 5. Refaktoryzacja (53)

  • Generowanie liczb pierwszych - prosty przykład refaktoryzacji (54)
    • Ostateczny przegląd (59)
  • Wniosek (62)
  • Bibliografia (63)

Rozdział 6. Epizod programowania (65)

  • Gra w kręgle (66)
  • Wniosek (98)

CZĘŚĆ II. PROJEKT AGILE (101)

  • Symptomy złego projektu (101)
  • Zasady (101)
  • Zapachy a zasady (102)
  • Bibliografia (102)

Rozdział 7. Co to jest projekt agile? (103)

  • Co złego dzieje się z oprogramowaniem? (103)
  • Zapachy projektu - woń psującego się oprogramowania (104)
    • Co stymuluje oprogramowanie do psucia się? (106)
    • Zespoły agile nie pozwalają psuć się oprogramowaniu (106)
  • Program Copy (106)
    • Przykład programu Copy wykonanego zgodnie z metodyką agile (109)
    • Skąd deweloperzy agile wiedzieli, co należy zrobić? (110)
  • Utrzymywanie projektu w jak najlepszej postaci (110)
  • Wniosek (111)
  • Bibliografia (111)

Rozdział 8. SRP - zasada pojedynczej odpowiedzialności (113)

  • SRP - zasada pojedynczej odpowiedzialności (113)
    • Czym jest odpowiedzialność? (115)
    • Rozdzielanie sprzężonych odpowiedzialności (115)
    • Trwałość (116)
  • Wniosek (116)
  • Bibliografia (116)

Rozdział 9. OCP - zasada otwarte-zamknięte (117)

  • OCP - zasada otwarte-zamknięte (117)
  • Opis (118)
  • Kluczem jest abstrakcja (118)
  • Aplikacja Shape (119)
    • Naruszenie zasady OCP (120)
    • Zachowanie zgodności z zasadą OCP (121)
    • Przyznaję się. Kłamałem (122)
    • Przewidywanie i "naturalna" struktura (122)
    • Umieszczanie "haczyków" (123)
    • Stosowanie abstrakcji w celu uzyskania jawnego domknięcia (124)
    • Zastosowanie podejścia "sterowania danymi" w celu uzyskania domknięcia (125)
  • Wniosek (126)
  • Bibliografia (126)

Rozdział 10. LSP - zasada podstawiania Liskov (127)

  • LSP - zasada podstawiania Liskov (127)
  • Prosty przykład naruszenia zasady LSP (128)
  • Kwadraty i prostokąty - bardziej subtelne naruszenie zasady LSP (129)
    • Prawdziwy problem (131)
    • Poprawność nie jest wrodzona (132)
    • Relacja IS-A dotyczy zachowania (132)
    • Projektowanie według kontraktu (132)
    • Specyfikowanie kontraktów w testach jednostkowych (133)
  • Realny przykład (133)
    • Motywacja (133)
    • Problem (135)
    • Rozwiązanie niezgodne z zasadą LSP (136)
    • Rozwiązanie zgodne z zasadą LSP (136)
  • Wydzielanie zamiast dziedziczenia (137)
  • Heurystyki i konwencje (139)
    • Zdegenerowane funkcje w klasach pochodnych (140)
    • Zgłaszanie wyjątków z klas pochodnych (140)
  • Wniosek (140)
  • Bibliografia (140)

Rozdział 11. DIP - zasada odwracania zależności (141)

  • DIP - zasada odwracania zależności (141)
  • Podział na warstwy (142)
    • Odwrócenie własności (142)
    • Zależność od abstrakcji (143)
  • Prosty przykład (144)
    • Wyszukiwanie potrzebnych abstrakcji (145)
  • Przykład programu Furnace (146)
    • Polimorfizm dynamiczny i statyczny (147)
  • Wniosek (148)
  • Bibliografia (148)

Rozdział 12. ISP - zasada segregacji interfejsów (149)

  • Zaśmiecanie interfejsów (149)
  • Odrębne klienty oznaczają odrębne interfejsy (150)
    • Siła oddziaływania klientów na interfejsy (151)
  • ISP - zasada segregacji interfejsów (151)
  • Interfejsy klas a interfejsy obiektów (152)
    • Separacja przez delegację (152)
    • Separacja przez wielokrotne dziedziczenie (153)
  • Przykład interfejsu użytkownika bankomatu (153)
    • Poliady i monady (158)
  • Wniosek (159)
  • Bibliografia (159)

CZĘŚĆ III. STUDIUM PRZYPADKU: SYSTEM PŁACOWY (161)

  • Szczątkowa specyfikacja systemu płacowego (162)
    • Ćwiczenie (162)
    • Przypadek użycia nr 1: dodawanie nowego pracownika (162)
    • Przypadek użycia nr 2: usuwanie pracownika (163)
    • Przypadek użycia nr 3: dostarczenie karty pracy (163)
    • Przypadek użycia nr 4: dostarczenie raportu sprzedaży (163)
    • Przypadek użycia nr 5: dostarczenie informacji o opłacie na rzecz związku zawodowego (164)
    • Przypadek użycia nr 6: zmiana danych pracownika (164)
    • Przypadek użycia nr 7: wygenerowanie listy płac na dzień (164)

Rozdział 13. Wzorce projektowe Polecenie i Aktywny obiekt (165)

  • Proste polecenia (166)
  • Transakcje (167)
    • Fizyczny i czasowy podział kodu (168)
    • Czasowy podział kodu (168)
  • Metoda Undo (169)
  • Aktywny obiekt (169)
  • Wniosek (173)
  • Bibliografia (173)

Rozdział 14. Metoda szablonowa i Strategia: dziedziczenie a delegacja (175)

  • Metoda szablonowa (176)
    • Nadużywanie wzorca (178)
    • Sortowanie bąbelkowe (179)
  • Strategia (181)
    • Sortowanie jeszcze raz (183)
  • Wniosek (185)
  • Bibliografia (185)

Rozdział 15. Wzorce projektowe Fasada i Mediator (187)

  • Fasada (187)
  • Mediator (188)
  • Wniosek (190)
  • Bibliografia (190)

Rozdział 16. Wzorce projektowe Singleton i Monostate (191)

  • Singleton (192)
    • Korzyści ze stosowania wzorca Singleton (193)
    • Koszty stosowania wzorca Singleton (193)
    • Wzorzec projektowy Singleton w praktyce (193)
  • Monostate (194)
    • Korzyści ze stosowania wzorca Monostate (196)
    • Koszty stosowania wzorca Monostate (196)
    • Wzorzec projektowy Monostate w praktyce (196)
  • Wniosek (200)
  • Bibliografia (200)

Rozdział 17. Wzorzec projektowy Obiekt Null (201)

  • Wniosek (204)
  • Bibliografia (204)

Rozdział 18. Studium przypadku: system płacowy. Pierwsza iteracja (205)

  • Wprowadzenie (205)
    • Specyfikacja (206)
  • Analiza według przypadków użycia (206)
    • Dodawanie pracowników (207)
    • Usuwanie pracowników (208)
    • Dostarczenie karty pracy (209)
    • Dostarczenie raportów sprzedaży (209)
    • Dostarczenie informacji o opłacie na rzecz związku zawodowego (210)
    • Zmiana danych pracownika (210)
    • Wypłaty (212)
  • Refleksja: czego się nauczyliśmy? (214)
  • Wyszukiwanie potrzebnych abstrakcji (214)
    • Abstrakcja harmonogramu (214)
    • Sposoby wypłaty (215)
    • Przynależność do związków zawodowych (216)
  • Wniosek (216)
  • Bibliografia (216)

Rozdział 19. Studium przypadku: system płacowy. Implementacja (217)

  • Dodawanie pracowników (218)
    • Baza danych systemu płacowego (219)
    • Zastosowanie wzorca Metoda szablonowa do dodawania pracowników (220)
  • Usuwanie pracowników (223)
    • Zmienne globalne (225)
  • Karty pracy, raporty sprzedaży i składki (225)
  • Zmiana danych pracowników (231)
    • Zmiana klasyfikacji (235)
    • Co ja paliłem? (240)
  • Realizacja wypłat (244)
    • Czy chcemy, aby deweloperzy podejmowali decyzje biznesowe? (246)
    • Realizacja wypłat dla pracowników ze stałą pensją (246)
    • Realizacja wypłat dla pracowników zatrudnionych w systemie godzinowym (248)
    • Okresy rozliczeniowe: problem projektowy (251)
  • Program główny (257)
  • Baza danych (257)
  • Podsumowanie projektu systemu płacowego (258)
    • Historia (259)
    • Zasoby (259)
  • Bibliografia (259)

CZĘŚĆ IV. PODZIAŁ SYSTEMU PŁACOWEGO NA PAKIETY (261)

Rozdział 20. Zasady projektowania pakietów (263)

  • Projektowanie z wykorzystaniem pakietów? (263)
  • Ziarnistość: zasady spójności pakietów (264)
    • Zasada równoważności wielokrotnego wykorzystania kodu i dystrybucji (REP) (264)
    • Zasada zbiorowego wielokrotnego użytku (CRP) (265)
    • Zasada zbiorowego zamykania (CCP) (266)
    • Podsumowanie tematyki spójności pakietów (266)
  • Stabilność: zasady sprzęgania pakietów (267)
    • Zasada acyklicznych zależności (ADP) (267)
    • Cotygodniowe kompilacje (267)
    • Eliminowanie cykli zależności (268)
    • Skutki istnienia cykli w grafie zależności między pakietami (269)
    • Przerywanie cykli (270)
    • Odchylenia (270)
  • Projekt góra-dół (271)
  • Zasada stabilnych zależności (SDP) (272)
    • Stabilność (272)
    • Metryki stabilności (273)
    • Nie wszystkie pakiety muszą być stabilne (274)
    • Gdzie powinna się znaleźć implementacja projektu wysokiego poziomu? (276)
  • Zasada stabilnych abstrakcji (SAP) (276)
    • Mierzenie abstrakcji (276)
    • Ciąg główny (277)
    • Odległość od ciągu głównego (278)
  • Wniosek (280)

Rozdział 21. Wzorzec projektowy Fabryka (281)

  • Cykl zależności (283)
  • Fabryki wymienne (284)
  • Wykorzystanie wzorca Fabryka do tworzenia zestawów testowych (284)
  • Znaczenie korzystania z fabryk (286)
  • Wniosek (287)
  • Bibliografia (287)

Rozdział 22. Studium przypadku: system płacowy (część 2.) (289)

  • Struktura pakietów i notacja (290)
  • Zastosowanie zasady zbiorowego domykania (CCP) (291)
  • Zastosowanie zasady równoważności wielokrotnego wykorzystania kodu i dystrybucji (REP) (292)
  • Sprzężenia i hermetyzacja (294)
  • Metryki (296)
  • Zastosowanie wskaźników do aplikacji płacowej (297)
    • Fabryki obiektów (300)
    • Fabryka obiektów dla pakietu TransactionImplementation (300)
    • Inicjowanie fabryk (301)
    • Przebudowa granic spójności (301)
  • Ostateczna struktura pakietów (302)
  • Wniosek (304)
  • Bibliografia (304)

CZĘŚĆ V. STUDIUM PRZYPADKU: STACJA POGODOWA (305)

Rozdział 23. Wzorzec projektowy Kompozyt (307)

  • Przykład: polecenia kompozytowe (308)
  • Wielokrotność czy brak wielokrotności (309)

Rozdział 24. Obserwator - ewolucja kodu do wzorca (311)

  • Zegar cyfrowy (311)
  • Wniosek (326)
    • Wykorzystanie diagramów w tym rozdziale (327)
  • Wzorzec projektowy Obserwator (327)
    • Zarządzanie zasadami projektu obiektowego dla wzorca projektowego Obserwator (328)
  • Bibliografia (329)

Rozdział 25. Wzorce projektowe Serwer abstrakcyjny i Most (331)

  • Wzorzec projektowy Serwer abstrakcyjny (332)
    • Kto jest właścicielem interfejsu? (333)
  • Wzorzec projektowy Adapter (333)
    • Wzorzec projektowy Adapter w formie klasy (334)
    • Problem modemu. Adaptery i zasada LSP (334)
  • Wzorzec projektowy Most (338)
  • Wniosek (339)
  • Bibliografia (340)

Rozdział 26. Wzorce projektowe Pełnomocnik i Schody do nieba - zarządzanie zewnętrznymi interfejsami API (341)

  • Wzorzec projektowy Pełnomocnik (342)
    • Implementacja wzorca projektowego Pełnomocnik w aplikacji koszyka na zakupy (345)
    • Podsumowanie wiadomości o wzorcu projektowym Pełnomocnik (356)
    • Obsługa baz danych, oprogramowania middleware oraz zewnętrznych interfejsów API (357)
  • Schody do nieba (359)
    • Przykład zastosowania wzorca Schody do nieba (360)
  • Wniosek (365)
  • Inne wzorce projektowe, które można wykorzystywać z bazami danych (365)
  • Wniosek (366)
  • Bibliografia (366)

Rozdział 27. Analiza przypadku: stacja pogodowa (367)

  • Firma Chmura (367)
    • Oprogramowanie WMS-LC (369)
    • Wybór języka (369)
  • Projekt oprogramowania systemu Nimbus-LC (369)
    • Historia 24-godzinna i utrwalanie (382)
    • Implementacja algorytmów HiLo (384)
  • Wniosek (391)
  • Bibliografia (391)
  • Przegląd wymagań dla oprogramowania Nimbus-LC (391)
    • Wymagania użytkowe (391)
    • Historia 24-godzinna (392)
    • Konfiguracja użytkownika (392)
    • Wymagania administracyjne (392)
  • Przypadki użycia systemu Nimbus-LC (393)
    • Aktorzy (393)
    • Przypadki użycia (393)
    • Historia pomiarów (393)
    • Konfiguracja (393)
    • Administracja (393)
  • Plan publikacji wersji dystrybucyjnych systemu Nimbus-LC (394)
    • Wprowadzenie (394)
    • Wydanie I (394)
    • Zagrożenia (394)
    • Produkty projektu (395)
    • Wydanie II (395)
    • Zaimplementowane przypadki użycia (395)
    • Zagrożenia (395)
    • Produkty projektu (395)
    • Wydanie III (396)
    • Zaimplementowane przypadki użycia (396)
    • Zagrożenia (396)
    • Produkty projektu (396)

CZĘŚĆ VI. STUDIUM PRZYPADKU: ETS (397)

Rozdział 28. Wzorzec projektowy Wizytator (399)

  • Rodzina wzorców projektowych Wizytator (400)
  • Wizytator (400)
    • Wzorzec projektowy Wizytator działa jak macierz (403)
  • Wzorzec projektowy Acykliczny wizytator (403)
    • Wzorzec projektowy Wizytator działa jak macierz rzadka (407)
    • Wykorzystanie wzorca projektowego Wizytator w generatorach raportów (407)
    • Inne zastosowania wzorca projektowego Wizytator (412)
  • Wzorzec projektowy Dekorator (413)
    • Wiele dekoratorów (416)
  • Wzorzec projektowy Obiekt rozszerzenia (418)
  • Wniosek (426)
    • Przypomnienie (426)
  • Bibliografia (426)

Rozdział 29. Wzorzec projektowy Stan (427)

  • Przegląd informacji o automatach stanów skończonych (427)
  • Techniki implementacji (429)
    • Zagnieżdżone instrukcje Switch/Case (429)
    • Interpretacja tabeli przejść (432)
  • Wzorzec projektowy Stan (433)
    • SMC - kompilator maszyny stanów (436)
  • Kiedy należy korzystać z maszyn stanów? (439)
    • Wysokopoziomowe strategie obsługi GUI (439)
    • Kontrolery interakcji z GUI (440)
    • Przetwarzanie rozproszone (441)
  • Wniosek (441)
  • Listingi (441)
    • Implementacja klasy Turnstile.java z wykorzystaniem interpretacji tabeli przejść (441)
    • Klasa Turnstile.java wygenerowana przez kompilator SMC oraz inne pliki pomocnicze (443)
  • Bibliografia (447)

Rozdział 30. Framework ETS (449)

  • Wprowadzenie (449)
    • Przegląd informacji o projekcie (449)
    • Wczesny okres 1993 - 1994 (451)
    • Framework? (451)
  • Framework (452)
    • Zespół z roku 1994 (452)
    • Termin (452)
    • Strategia (452)
    • Wyniki (453)
  • Projekt frameworka (454)
    • Wspólne wymagania dla aplikacji oceniających (454)
    • Projekt frameworka do wyznaczania ocen (456)
  • Przypadek zastosowania wzorca Metoda szablonowa (459)
    • Napisać pętlę raz (460)
    • Wspólne wymagania dla aplikacji zdawania (463)
    • Projekt frameworka do zdawania (463)
    • Architektura menedżera zadań (469)
  • Wniosek (472)
  • Bibliografia (472)

Dodatek A. Notacja UML. Część I: Przykład CGI (473)

  • System rejestrowania kursów: opis problemu (474)
    • Aktorzy (475)
    • Przypadki użycia (475)
    • Model dziedziny (478)
    • Architektura (482)
    • Klasy abstrakcyjne i interfejsy na diagramach sekwencji (492)
  • Podsumowanie (494)
  • Bibliografia (494)

Dodatek B. Notacja UML. Część II: STATMUX (495)

  • Definicja statystycznego multipleksera (495)
    • Środowisko oprogramowania (496)
    • Ograniczenia czasu rzeczywistego (496)
    • Procedury obsługi przerwań wejścia (497)
    • Procedury obsługi przerwań wyjścia (501)
    • Protokoły komunikacji (502)
  • Wniosek (512)
  • Bibliografia (512)

Dodatek C. Satyra na dwa przedsiębiorstwa (513)

  • Rufus! Inc. Project Kickoff (513)
  • Rupert Industries Projekt Alpha (513)

Dodatek D. Kod źródłowy jest projektem (525)

  • Czym jest projekt oprogramowania? (525)

Skorowidz (535)

  • Tytuł: Zwinne wytwarzanie oprogramowania. Najlepsze zasady, wzorce i praktyki
  • Autor: Robert C. Martin
  • Tytuł oryginału: Agile Software Development, Principles, Patterns, and Practices
  • Tłumaczenie: Radosław Meryk
  • ISBN: 978-83-283-4936-0, 9788328349360
  • Data wydania: 2014-11-28
  • Format: Ebook
  • Identyfikator pozycji: zwiwyv
  • Wydawca: Helion