Agile. Programowanie zwinne: zasady, wzorce i praktyki zwinnego wytwarzania oprogramowania w C# - Helion
Tytuł oryginału: Agile Principles, Patterns, and Practices in C#
ISBN: 978-83-283-5567-5
stron: 848, Format: 168x237, okładka: miękka
Data wydania: 2018-12-01
Księgarnia: Helion
Cena książki: 96,75 zł (poprzednio: 129,00 zł)
Oszczędzasz: 25% (-32,25 zł)
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.
Osoby które kupowały "Agile. Programowanie zwinne: zasady, wzorce i praktyki zwinnego wytwarzania oprogramowania w C#", wybierały także:
- Mapa Agile & Scrum. Jak si 57,69 zł, (15,00 zł -74%)
- TDD. Sztuka tworzenia dobrego kodu 48,54 zł, (19,90 zł -59%)
- Doskona 67,00 zł, (33,50 zł -50%)
- Miejsce przy stole. Przywództwo w IT w czasach Agile 49,00 zł, (24,50 zł -50%)
- Czysty Agile. Powrót do podstaw 47,00 zł, (23,50 zł -50%)
Spis treści
Agile. Programowanie zwinne: zasady, wzorce i praktyki zwinnego wytwarzania oprogramowania w C# -- spis treści
- 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ę
- Odrobina historii
- 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
- Agile Alliance
- 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
- Praktyki programowania ekstremalnego
- 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
- Wstępne poznawanie wymagań
- 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
- Wytwarzanie sterowane testami
- 5. Refaktoryzacja
- Prosty przykład refaktoryzacji generowanie liczb pierwszych
- Testy jednostkowe
- Refaktoryzacja
- Ostatnie udoskonalenia
- Konkluzja
- Bibliografia
- Prosty przykład refaktoryzacji generowanie liczb pierwszych
- 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
- Przykład typowego scenariusza
- Konkluzja
- Bibliografia
- Symptomy złego projektu
- 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
- Naruszenia zasady podstawiania Liskov
- 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
- Podział na warstwy
- 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
- Po co modelować oprogramowanie?
- 15. Diagramy stanów
- Wprowadzenie
- Zdarzenia specjalne
- Superstany
- Pseudostan początkowy i końcowy
- Stosowanie diagramów skoÅ„czonych maszyn stanów
- Konkluzja
- Wprowadzenie
- 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
- Pisanie przypadków użycia
- 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
- Wprowadzenie
- 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
- Stereotypy klas
- Konkluzja
- Bibliografia
- Wprowadzenie
- 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
- Ekspres do kawy Mark IV Special
- 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ń
- Przypadek użycia nr 1 dodanie danych nowego pracownika
- 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
- Wzorzec projektowy Template Method
- 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
- Wzorzec projektowy Singleton
- 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
- Dodawanie danych pracowników
- Program gÅ‚ówny
- Baza danych
- Konkluzja
- O tym rozdziale
- Bibliografia
- Transakcje
- 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
- Zasada acyklicznych zależności (ADP)
- 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
- Fabryki obiektów
- 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
- Wzorzec projektowy Proxy
- 35. Wzorzec projektowy Visitor
- Wzorzec projektowy Visitor
- Wzorzec projektowy Acyclic Visitor
- Zastosowania wzorca Visitor
- Generowanie raportów
- Inne zastosowania
- Zastosowania wzorca Visitor
- 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
- Zagnieżdżone wyrażenia switch-case
- 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