Details zum E-Book

Agile. Programowanie zwinne: zasady, wzorce i praktyki zwinnego wytwarzania oprogramowania w C#

Agile. Programowanie zwinne: zasady, wzorce i praktyki zwinnego wytwarzania oprogramowania w C#

Robert C. Martin, Micah Martin

E-book

Poznaj nowoczesną metodykę wytwarzania oprogramowania w C#

  • Jak stosować w praktyce zasady zwinnego wytwarzania oprogramowania?
  • W jaki sposób wykorzystywać w projekcie diagramy UML?
  • Jak korzystać z wzorców projektowych?

W związku ze stale rosnącymi oczekiwaniami użytkowników oprogramowania produkcja systemów informatycznych wymaga dziś korzystania z usystematyzowanych metod zarządzania. Projekt informatyczny, przy którym nie używa się sensownej metodologii wytwarzania, jest skazany na porażkę - przekroczenie terminu, budżetu i niespełnienie wymagań funkcjonalnych. Kierowanie projektem zgodnie z określonymi zasadami również nie gwarantuje sukcesu, lecz znacznie ułatwia jego osiągnięcie. Na początku roku 2001 grupa ekspertów zawiązała zespół o nazwie Agile Alliance. Efektem prac tego zespołu jest metodologia zwinnego wytwarzania oprogramowania - Agile.

Książka Agile. Programowanie zwinne: zasady, wzorce i praktyki zwinnego wytwarzania oprogramowania w C# to podręcznik metodologii Agile przeznaczony dla twórców oprogramowania korzystających z technologii .NET. Dzięki niemu poznasz podstawowe założenia i postulaty twórców Agile i nauczysz się stosować je w praktyce. Dowiesz się, jak szacować terminy i koszty, dzielić proces wytwarzania na iteracje i testować produkt. Zdobędziesz wiedzę na temat refaktoryzacji, diagramów UML, testów jednostkowych i wzorców projektowych. Przeczytasz także o publikowaniu kolejnych wersji oprogramowania.

  • Techniki programowania ekstremalnego
  • Planowanie projektu
  • Testowanie i refaktoryzacja
  • Zasady zwinnego programowania
  • Modelowanie oprogramowania za pomocą diagramów UML
  • Stosowanie wzorców projektowych
  • Projektowanie pakietów i komponentów

Przekonaj się, ile czasu i pracy zaoszczędzisz, stosując w projektach metodologię Agile.

  • Słowo wstępne
  • Słowo wstępne
    • Zaczerpnięte z książki Agile Software Development: Principles, Patterns and Practices
  • Przedmowa
    • Wstęp Boba
    • Wstęp Micaha
    • O książce
      • Odrobina historii
        • Znajomość z Boochem
        • Wpływ metodyki programowania ekstremalnego
        • Znajomość z Beckiem
        • .NET
      • Diabeł tkwi w szczegółach
      • Organizacja
      • Jak należy czytać tę książkę
  • Podziękowania
  • O autorach
  • Część I. Wytwarzanie zwinne
  • 1. Praktyki programowania zwinnego
    • Agile Alliance
      • Programiści i ich harmonijna współpraca jest ważniejsza od procesów i narzędzi
      • Działające oprogramowanie jest ważniejsze od wyczerpującej dokumentacji
      • Faktyczna współpraca z klientem jest ważniejsza od negocjacji zasad kontraktu
      • Reagowanie na zmiany jest ważniejsze od konsekwentnego realizowania planu
    • Podstawowe zasady
    • Konkluzja
    • Bibliografia
  • 2. Przegląd technik programowania ekstremalnego
    • Praktyki programowania ekstremalnego
      • Cały zespół
      • Opowieści użytkownika
      • Krótkie cykle
        • Plan iteracji
        • Plan wydania
      • Testy akceptacyjne
      • Programowanie w parach
      • Wytwarzanie sterowane testami (TDD)
      • Wspólna własność
      • Ciągła integracja
      • Równe tempo
      • Otwarta przestrzeń pracy
      • Gra planistyczna
      • Prosty projekt
      • Refaktoryzacja
      • Metafora
    • Konkluzja
    • Bibliografia
  • 3. Planowanie
    • Wstępne poznawanie wymagań
      • Dzielenie i scalanie opowieści użytkownika
    • Planowanie wydań
    • Planowanie iteracji
    • Definiowanie warunków zakończenia projektu
    • Planowanie zadań
    • Iteracje
    • Śledzenie postępu
    • Konkluzja
    • Bibliografia
  • 4. Testowanie
    • Wytwarzanie sterowane testami
      • Przykład projektu poprzedzonego testami
      • Izolacja testów
      • Eliminowanie powiązań
    • Testy akceptacyjne
    • Wpływ testów akceptacyjnych na architekturę oprogramowania
    • Konkluzja
    • Bibliografia
  • 5. Refaktoryzacja
    • Prosty przykład refaktoryzacji generowanie liczb pierwszych
      • Testy jednostkowe
      • Refaktoryzacja
      • Ostatnie udoskonalenia
    • Konkluzja
    • Bibliografia
  • 6. Epizod z życia programistów
    • Gra w kręgle
    • Konkluzja
    • Przegląd reguł gry w kręgle
  • Część II. Projektowanie zwinne
  • 7. Czym jest projektowanie zwinne?
    • Symptomy złego projektu
      • Symptomy złego projektu, czyli potencjalne źródła porażek
      • Sztywność
      • Wrażliwość
      • Nieelastyczność
      • Niedostosowanie do rzeczywistości
      • Nadmierna złożoność
      • Niepotrzebne powtórzenia
      • Nieprzejrzystość
    • Dlaczego oprogramowanie ulega degradacji
    • Program Copy
      • Przykład typowego scenariusza
        • Projekt początkowy
        • Zmieniające się wymagania
        • Kolejne wymaganie
        • Oczekujmy zmian
      • Przykład budowy programu Copy w ramach projektu zwinnego
        • Stosowanie praktyk programowania zwinnego
        • Utrzymywanie projektu w możliwie dobrym stanie
    • Konkluzja
    • Bibliografia
  • 8. Zasada pojedynczej odpowiedzialności
    • Definiowanie odpowiedzialności
    • Oddzielanie wzajemnie powiązanych odpowiedzialności
    • Trwałość
    • Konkluzja
    • Bibliografia
  • 9. Zasada otwarte-zamknięte
    • Omówienie zasady otwarte-zamknięte
    • Aplikacja Shape
      • Przykład naruszenia zasady OCP
      • Przykład pełnej zgodności z zasadą otwarte-zamknięte
      • Przewidywanie zmian i naturalna struktura
      • Przygotowywanie punktów zaczepienia
        • Gdy raz mnie oszukasz
        • Stymulowanie zmian
      • Stosowanie abstrakcji do jawnego zamykania oprogramowania dla zmian
      • Zapewnianie zamknięcia z wykorzystaniem techniki sterowania przez dane
    • Konkluzja
    • Bibliografia
  • 10. Zasada podstawiania Liskov
    • Naruszenia zasady podstawiania Liskov
      • Prosty przykład
      • Przykład mniej jaskrawego naruszenia zasady LSP
        • Realny problem
        • Poprawność nie jest cechą wrodzoną
        • Relacja IS-A reprezentuje zachowania
        • Projektowanie przez kontrakt
        • Definiowanie kontraktów w formie testów jednostkowych
      • Przykład zaczerpnięty z rzeczywistości
        • Motywacja
        • Problem
        • Rozwiązanie niezgodne z zasadą podstawiania Liskov
        • Rozwiązanie zgodne z zasadą podstawiania Liskov
    • Wyodrębnianie zamiast dziedziczenia
    • Heurystyki i konwencje
    • Konkluzja
    • Bibliografia
  • 11. Zasada odwracania zależności
    • Podział na warstwy
      • Odwracanie relacji własności
      • Zależność od abstrakcji
    • Prosty przykład praktycznego znaczenia zasady DIP
      • Odkrywanie niezbędnych abstrakcji
    • Przykład aplikacji Furnace
    • Konkluzja
    • Bibliografia
  • 12. Zasada segregacji interfejsów
    • Zanieczyszczanie interfejsów
    • Odrębne klasy klienckie oznaczają odrębne interfejsy
    • Interfejsy klas kontra interfejsy obiektów
      • Separacja przez delegację
      • Separacja przez wielokrotne dziedziczenie
    • Przykład interfejsu użytkownika bankomatu
    • Konkluzja
    • Bibliografia
  • 13. Przegląd języka UML dla programistów C#
    • Diagramy klas
    • Diagramy obiektów
      • Diagramy sekwencji
    • Diagramy współpracy
    • Diagramy stanów
    • Konkluzja
    • Bibliografia
  • 14. Praca z diagramami
    • Po co modelować oprogramowanie?
      • Po co budować modele oprogramowania?
      • Czy powinniśmy pracować nad rozbudowanymi projektami przed przystąpieniem do kodowania?
    • Efektywne korzystanie z diagramów języka UML
      • Komunikacja z innymi programistami
      • Mapy drogowe
      • Dokumentacja wewnętrzna
      • Co powinniśmy zachowywać, a co można wyrzucać do kosza?
    • Iteracyjne udoskonalanie
      • Najpierw zachowania
      • Weryfikacja struktury
      • Wyobrażenie o kodzie
      • Ewolucja diagramów
    • Kiedy i jak rysować diagramy
      • Kiedy przystępować do tworzenia diagramów, a kiedy rezygnować z dalszego rysowania ich
      • Narzędzia CASE
      • A co z dokumentacją?
    • Konkluzja
  • 15. Diagramy stanów
    • Wprowadzenie
      • Zdarzenia specjalne
      • Superstany
      • Pseudostan początkowy i końcowy
    • Stosowanie diagramów skończonych maszyn stanów
    • Konkluzja
  • 16. Diagramy obiektów
    • Migawka
    • Obiekty aktywne
    • Konkluzja
  • 17. Przypadki użycia
    • Pisanie przypadków użycia
      • Przebiegi alternatywne
      • Co jeszcze?
    • Prezentowanie przypadków użycia na diagramach
    • Konkluzja
    • Bibliografia
  • 18. Diagramy sekwencji
    • Wprowadzenie
      • Obiekty, linie życia, komunikaty i inne konstrukcje
      • Tworzenie i niszczenie obiektów
      • Proste pętle
      • Przypadki i scenariusze
    • Pojęcia zaawansowane
      • Pętle i warunki
      • Komunikaty, których przesyłanie wymaga czasu
      • Komunikaty asynchroniczne
      • Wiele wątków
      • Obiekty aktywne
      • Wysyłanie komunikatów do interfejsów
    • Konkluzja
  • 19. Diagramy klas
    • Wprowadzenie
      • Klasy
      • Asocjacje
      • Relacje dziedziczenia
    • Przykładowy diagram klas
    • Omówienie szczegółowe
      • Stereotypy klas
        • interface
        • utility
      • Klasy abstrakcyjne
      • Właściwości
      • Agregacja
      • Kompozycja
      • Liczność
      • Stereotypy asocjacji
      • Klasy zagnieżdżone
      • Klasy asocjacji
      • Kwalifikatory asocjacji
    • Konkluzja
      • Bibliografia
  • 20. Heurystyki i kawa
    • Ekspres do kawy Mark IV Special
      • Specyfikacja
      • Popularne, ale niewłaściwe rozwiązanie
        • Brakujące metody
        • Klasy ulotne
      • Nieprzemyślana abstrakcja
        • Boskie klasy
      • Poprawione rozwiązanie
        • Interfejs użytkownika ekspresu do kawy
        • Przypadek użycia nr 1 użytkownik naciska przycisk uruchamiający parzenie
        • Przypadek użycia nr 2 niegotowe naczynie na kawę
        • Przypadek użycia nr 3 zakończony proces parzenia kawy
        • Przypadek użycia nr 4 zużycie całej kawy
      • Implementacja modelu abstrakcyjnego
        • Przypadek użycia nr 1 użytkownik naciska przycisk Brew
        • Implementacja funkcji IsReady
        • Implementacja funkcji Start
        • Wywołanie funkcji M4UserInterface.CheckButton
        • Dokończenie projektu oprogramowania ekspresu do kawy
      • Zalety projektu w tej formie
        • Źródła tego projektu
    • Implementacja projektu obiektowego
    • Bibliografia
  • Część III. Studium przypadku listy płac
    • Uproszczona specyfikacja systemu listy płac
    • Ćwiczenie
      • Przypadek użycia nr 1 dodanie danych nowego pracownika
        • Alternatywa błąd w strukturze transakcji
      • Przypadek użycia nr 2 usunięcie danych pracownika
        • Alternatywa nieprawidłowy lub nieznany identyfikator EmpID
      • Przypadek użycia nr 3 wysłanie karty czasu pracy
        • Alternatywa nr 1 wskazany pracownik nie jest rozliczany za godziny pracy
        • Alternatywa nr 2 wystąpił błąd w strukturze danej transakcji
      • Przypadek użycia nr 4 wysłanie raportu o sprzedaży
        • Alternatywa nr 1 wskazany pracownik nie jest wynagradzany w systemie prowizyjnym
        • Alternatywa nr 2 wystąpił błąd w strukturze danej transakcji
      • Przypadek użycia nr 5 wysłanie informacji o opłacie na rzecz związku zawodowego
        • Alternatywa błędny format transakcji
      • Przypadek użycia nr 6 zmiana szczegółowych danych pracownika
        • Alternatywa błędny format transakcji
      • Przypadek użycia nr 7 wygenerowanie listy płatności na dany dzień
  • 21. Wzorce projektowe Command i Active Object uniwersalność i wielozadaniowość
    • Proste polecenia
    • Transakcje
      • Fizyczny podział kodu
      • Czasowy podział kodu
    • Metoda Undo
    • Wzorzec projektowy Active Object
    • Konkluzja
    • Bibliografia
  • 22. Wzorce projektowe Template Method i Strategy dziedziczenie kontra delegacja
    • Wzorzec projektowy Template Method
      • Błędne zastosowanie wzorca Template Method
      • Sortowanie bąbelkowe
    • Wzorzec projektowy Strategy
    • Konkluzja
    • Bibliografia
  • 23. Wzorce projektowe Facade i Mediator
    • Wzorzec projektowy Facade
    • Wzorzec projektowy Mediator
    • Konkluzja
    • Bibliografia
  • 24. Wzorce projektowe Singleton i Monostate
    • Wzorzec projektowy Singleton
      • Zalety
      • Wady
      • Wzorzec Singleton w praktyce
    • Wzorzec projektowy Monostate
      • Zalety
      • Wady
      • Wzorzec Monostate w praktyce
    • Konkluzja
    • Bibliografia
  • 25. Wzorzec projektowy Null Object
    • Omówienie
    • Konkluzja
    • Bibliografia
  • 26. Przypadek użycia listy płac pierwsza iteracja
    • Uproszczona specyfikacja
    • Analiza przez omówienie przypadku użycia
      • Dodanie danych nowego pracownika
      • Usunięcie danych pracownika
      • Wysłanie karty czasu pracy
      • Wysłanie raportu o sprzedaży
      • Wysłanie informacji o opłacie na rzecz związku zawodowego
      • Zmiana szczegółowych danych pracownika
      • Wygenerowanie listy płac na dany dzień
    • Refleksja identyfikacja abstrakcji
      • Wynagrodzenia wypłacane pracownikom
      • Harmonogram wypłat
      • Formy wypłat
      • Przynależność związkowa
    • Konkluzja
    • Bibliografia
  • 27. Przypadek użycia listy płac implementacja
    • Transakcje
      • Dodawanie danych pracowników
        • Baza danych systemu płacowego
        • Dodawanie danych pracowników z wykorzystaniem wzorca Template Method
      • Usuwanie danych pracowników
      • Karty czasu pracy, raporty o sprzedaży i składki na związki zawodowe
      • Zmiana danych pracowników
        • Zmiana formy wynagradzania pracownika
      • Co ja najlepszego zrobiłem?
      • Wynagradzanie pracowników
        • Decyzje projektowe i biznesowe
      • Wynagradzanie pracowników etatowych
      • Wynagradzanie pracowników zatrudnionych w systemie godzinowym
        • Okresy rozliczeniowe problem projektowy
    • Program główny
    • Baza danych
    • Konkluzja
    • O tym rozdziale
    • Bibliografia
  • Część IV. Pakowanie systemu płacowego
  • 28. Zasady projektowania pakietów i komponentów
    • Pakiety i komponenty
    • Zasady spójności komponentów ziarnistość
      • Zasada równoważności wielokrotnego użycia i wydawania (REP)
      • Zasada zbiorowego wielokrotnego stosowania (CRP)
      • Zasada zbiorowego zamykania (CCP)
      • Podsumowanie problemu spójności komponentów
    • Zasady spójności komponentów stabilność
      • Zasada acyklicznych zależności (ADP)
        • Cotygodniowe kompilacje
        • Eliminacja cykli zależności
        • Skutki występowania cyklu w grafie zależności pomiędzy komponentami
        • Przerywanie cykli
        • Projektowanie zstępujące kontra projektowanie wstępujące
      • Zasada stabilnych zależności (SDP)
        • Stabilność
        • Miary stabilności
        • Zmienna stabilność komponentów
        • Wysokopoziomowy układ komponentów
      • Zasada stabilnych abstrakcji (SAP)
        • Mierzenie abstrakcji
        • Ciąg główny
        • Odległość od ciągu głównego
    • Konkluzja
  • 29. Wzorzec projektowy Factory
    • Problem zależności
    • Statyczna kontra dynamiczna kontrola typów
    • Fabryki wymienne
    • Wykorzystywanie fabryk do celów testowych
    • Znaczenie fabryk
    • Konkluzja
    • Bibliografia
  • 30. Studium przypadku systemu płacowego analiza podziału na pakiety
    • Notacja i struktura komponentów
    • Stosowanie zasady zbiorowego zamykania (CCP)
    • Stosowanie zasady równoważności wielokrotnego użycia i wydawania (REP)
    • Wiązanie komponentów i hermetyzacja
    • Mierniki
    • Stosowanie mierników dla aplikacji płacowej
      • Fabryki obiektów
        • Fabryka obiektów dla komponentu TransactionImplementation
        • Inicjalizacja fabryk
      • Przebudowa granic spójności
    • Ostateczna struktura pakietów
    • Konkluzja
    • Bibliografia
  • 31. Wzorzec projektowy Composite
    • Polecenia kompozytowe
    • Liczność albo brak liczności
    • Konkluzja
  • 32. Wzorzec projektowy Observer ewolucja kodu w kierunku wzorca
    • Zegar cyfrowy
    • Wzorzec projektowy Observer
      • Modele
      • Zarządzanie zasadami projektowania obiektowego
    • Konkluzja
    • Bibliografia
  • 33. Wzorce projektowe Abstract Server, Adapter i Bridge
    • Wzorzec projektowy Abstract Server
    • Wzorzec projektowy Adapter
      • Forma klasowa wzorca Adapter
      • Problem modemu adaptery i zasada LSP
        • Pierwsze, niedoskonałe rozwiązanie
        • Zagmatwana sieć zależności
        • Wzorzec projektowy Adapter w roli koła ratunkowego
    • Wzorzec projektowy Bridge
    • Konkluzja
    • Bibliografia
  • 34. Wzorce projektowe Proxy i Gateway zarządzanie cudzymi interfejsami API
    • Wzorzec projektowy Proxy
      • Implementacja wzorca Proxy
      • Podsumowanie
    • Bazy danych, oprogramowanie pośredniczące i inne gotowe interfejsy
    • Wzorzec projektowy Table Data Gateway
      • Testowanie konstrukcji TDG w pamięci
      • Test bram DB
    • Stosowanie pozostałych wzorców projektowych łącznie z bazami danych
    • Konkluzja
    • Bibliografia
  • 35. Wzorzec projektowy Visitor
    • Wzorzec projektowy Visitor
    • Wzorzec projektowy Acyclic Visitor
      • Zastosowania wzorca Visitor
        • Generowanie raportów
        • Inne zastosowania
    • Wzorzec projektowy Decorator
    • Wzorzec projektowy Extension Object
    • Konkluzja
    • Bibliografia
  • 36. Wzorzec projektowy State
    • Zagnieżdżone wyrażenia switch-case
      • Wewnętrzny zasięg zmiennej stanu
      • Testowanie akcji
      • Zalety i wady
    • Tabele przejść
      • Interpretacja tabeli przejść
      • Zalety i wady
    • Wzorzec projektowy State
      • Wzorzec State kontra wzorzec Strategy
      • Zalety i wady
      • Kompilator maszyny stanów (SMC)
      • Plik Turnstile.cs wygenerowany przez kompilator SMC i pozostałe pliki pomocnicze
        • Zalety i wady
    • Zastosowania skończonej maszyny stanów
      • Wysokopoziomowa polityka działania graficznych interfejsów użytkownika (GUI)
      • Sterowanie interakcją z interfejsem GUI
      • Przetwarzanie rozproszone
    • Konkluzja
    • Bibliografia
  • 37. Studium przypadku systemu płacowego baza danych
    • Budowa bazy danych
    • Słaby punkt dotychczasowego projektu
    • Dodawanie danych nowych pracowników
    • Transakcje
    • Odczytywanie danych o pracownikach
    • Co jeszcze zostało do zrobienia?
  • 38. Interfejs użytkownika systemu płacowego wzorzec Model View Presenter
    • Interfejs
    • Implementacja
    • Budowa okna
    • Okno główne systemu płacowego
    • Pierwsza odsłona
    • Konkluzja
    • Bibliografia
  • Dodatek A. Satyra na dwa przedsiębiorstwa
    • Rufus Inc. Project Kickoff
    • Rupert Industries Project Alpha
  • Dodatek B. Czym jest oprogramowanie?
    • Posłowie
  • Titel: Agile. Programowanie zwinne: zasady, wzorce i praktyki zwinnego wytwarzania oprogramowania w C#
  • Autor: Robert C. Martin, Micah Martin
  • Originaler Titel: Agile Principles, Patterns, and Practices in C#
  • ISBN: 978-83-283-5568-2, 9788328355682
  • Veröffentlichungsdatum: 2019-01-09
  • Format: E-book
  • Artikelkennung: agilev
  • Verleger: Helion