Agile. Programowanie zwinne: zasady, wzorce i praktyki zwinnego wytwarzania oprogramowania w C# - ebook
Agile. Programowanie zwinne: zasady, wzorce i praktyki zwinnego wytwarzania oprogramowania w C# - ebook
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.
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
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-5568-2 |
Rozmiar pliku: | 11 MB |