Spis treści

Spis treści

Redakcja

Wstęp

1. Metody zwinne – wprowadzenie

1.1. Metoda prób i błędów – lekarstwo na niepewność

1.2. Najważniejsze fakty z historii metod iteracyjnych i przyrostowych

1.3. Dalszy rozwój metod zwinnych – post-agilism

1.4. Przegląd metod zwinnych

1.5. Metametoda – wybór procesu

1.6. Unikanie szkodliwych nieporozumień na temat Agile

1.7. Agile w kaskadowym świecie

1.8. Integracja wielu zespołów Agile

2. Od potrzeby biznesowej do zaspokojenia – zwinna realizacja

2.1. Etapy życia produktu: projekt, wdrożenie, utrzymanie

2.2. Czy klienci potrzebują dobrych produktów?

2.3. Brak kosztów jakości projektów i jakości produktów

2.3. Modele cyklu życia oprogramowania

2.4. Ciągła integracja i częste dostawy

3. Zwinna inżynieria wymagań

3.1. Cele określania wymagań

3.2. Techniki pozyskiwania wymagań

3.3. Paradoksy wymagań i model Kano

3.4. Współpraca z marketingiem

3.5. Opisywanie wymagań

3.6. Rodzaje wymagań – atrybuty jakości

3.7. Zasady podziału wymagań w Scrumie

3.8. Korzyści i koszty zapisywania

3.9. Opisywanie wymagań w języku naturalnym

3.10. Opowieści użytkowników

3.11. Modelowanie wymagań

3.12. Zatwierdzanie wymagań

3.13. Weryfikacja, walidacja, negocjowanie i konsolidacja wymagań w Agile

3.14. Interesariusze, kontekst, granica kontekstu i negocjacje w metodach zwinnych

3.15. Zwinne przeglądy

3.16. Weryfikacja modeli

3.17. Zarządzanie śliskimi wymaganiami

3.18. Wersjonowanie

3.19. Śledzenie powiązań wymagań

4. Planowanie i nadzorowanie w Agile Scrum

4.1. Zasady dobrego planowania pracy

4.2. Przegląd sposobów szacowania pracochłonności

4.3. Szacowanie algorytmiczne lub na podstawie doświadczenia

4.4. Planowanie w Agile: pracochłonność, wydajność zespołu, ryzyko

4.5. Dług techniczny

4.6. Diagram wypalenia i jego wykorzystanie

5. Testowanie w Agile

5.1. Testowanie jako jedna z form zapewnienia jakości w Agile

5.2. Cele, rodzaje i poziomy testów według kwadrantów testowych Agile

5.3. Testy czarnej skrzynki i testy dogłębne

5.4. Testy właściwości (pozafunkcjonalne) w Agile

5.5. Szkoła kontekstowa i testowanie eksploracyjne w Agile

5.6. Testowanie eksploracyjne w Agile

5.7. Podstawy automatyzacji testów w projektach Agile

5.8. Automatyzacja przygotowania testów w Agile

5.9. Znaczenie automatycznych testów w modelu iteracyjnym

5.10. Wpływ Agile na automatyzację testów

5.11. Testowanie na podstawie modeli

5.12. Projektowanie testów

5.13. Sposoby projektowania testów

5.14. Agile a tradycyjne trudności testowania

5.15. Obsługa wykrytych błędów

5.16. Testy jednostkowe

5.17. Metodyka TDD

5.18. Testy akceptacyjne a kryteria ukończenia – ATDD

6. Jak być Agile i przetrwać w zespole

6.1. Społeczne i psychologiczne aspekty pracy zwinnej

6.2. Znaczenie rytuałów i terminologii Agile

6.3. Zwinny programista i jego rola w zespole Agile

6.4. Metody treningu – jak stać się zwinnym

6.5. Certyfikacje

6.6. Wady i zalety certyfikatów

6.7. Wybór certyfikacji

6.8. Agile po pięćdziesiątce

6.9. Agile a kariera

7. Słownik terminów

8. Źródła

Redakcja

Autor:

Bogdan Bereza

Kierownik grupy wydawniczej:

Ewa Ziętek-Maciejczyk

Wydawca:

Monika Kijok

Redaktor prowadzący:

Rafał Janus

Korekta:

Zespół

Skład i łamanie:

Raster studio, Norbert Bogajczyk

Projekt okładki:

Piotr Fedorczyk

Druk: Miller

ISBN: 978-83-269-3449-0

Copyright by Wydawnictwo Wiedza i Praktyka sp. z o.o.

Warszawa 2014

Wydawnictwo Wiedza i Praktyka sp. z o.o.

03-918 Warszawa, ul. Łotewska 9a

tel. 22 518 29 29, faks 22 617 60 10

NIP: 526-19-92-256

Numer KRS: 0000098264 – Sąd Rejonowy dla m.st. Warszawy, Sąd Gospodarczy XIII Wydział Gospodarczy Rejestrowy. Wysokość kapitału zakładowego: 200.000 zł

„Agile: szansa na skokowy wzrost produktywności” wraz z przysługującymi Czytelnikom innymi elementami dostępnymi w subskrypcji (e-letter, strona www i inne) chronione są prawem autorskim. Przedruk materiałów opublikowanych w publikacji „Agile: szansa na skokowy wzrost produktywności” oraz w innych dostępnych elementach subskrypcji – bez zgody wydawcy – jest zabroniony. Zakaz nie dotyczy cytowania publikacji z powołaniem się na źródło.

Publikacja „Agile: szansa na skokowy wzrost produktywności” została przygotowana z zachowaniem najwyższej staranności i wykorzystaniem wysokich kwalifikacji, wiedzy i doświadczenia autorów oraz konsultantów. Zaproponowane w publikacji „Agile: szansa na skokowy wzrost produktywności” oraz w innych dostępnych elementach subskrypcji wskazówki, porady i interpretacje nie mają charakteru porady prawnej. Ich zastosowanie w konkretnym przypadku może wymagać dodatkowych, pogłębionych konsultacji. Publikowane rozwiązania nie mogą być traktowane jako oficjalne stanowisko organów i urzędów państwowych. W związku z powyższym redakcja nie może ponosić odpowiedzialności prawnej za zastosowanie zawartych w publikacji „Agile: szansa na skokowy wzrost produktywności” lub w innych dostępnych elementach subskrypcji wskazówek, przykładów, informacji itp. do konkretnych przypadków.

Wstęp

Moda na Agile trwa, a wręcz się nasila. Z jednej strony to wspaniale, gdyż Agile jest rodziną bardzo skutecznych sposobów tworzenia oprogramowania. Z drugiej strony – wielka szkoda, że Agile stało się modą. Przez to bowiem bywa propagowane i stosowane bezmyślnie, a nawet gloryfikowane jako niemal uniwersalne rozwiązanie, jako cel sam w sobie. Tymczasem celem powinna być wyłącznie skuteczność i sprawność przedsięwzięć IT, a jednym z narzędzi pomagających w jego osiągnięciu może być Agile.

Aby dobrze zrozumieć i skutecznie stosować Agile, nie wystarczy szczegółowa znajomość instrukcji praktykowania jednej ze zwinnych metodyk (najczęściej Scrum). Tym bardziej że zwykle wybór metodyki jest przypadkowy. Zamiast analizy organizacje kierują się modą i obiegowymi opiniami.

W wielu publikacjach na temat Agile jako coś oczywistego przyjmuje się wyższość omawianych metodyk nad alternatywnymi. Wyraża się to nawet w terminologii, w której metody inne niż Agile określa się zwykle pobłażliwą nazwą „tradycyjnych”. Taki sposób prezentacji, pozornie skuteczny i pragmatyczny, nie pozwala naprawdę dogłębnie zrozumieć omawianego tematu. Cierpi na tym efektywność i elastyczność osób mających tylko taką wąską wiedzę. Nie chodzi bowiem o to, żeby być zwinnym, choć nazwa brzmi kusząco, lecz żeby być skutecznym. Dlatego nie spisujmy lekkomyślnie na straty projektów sekwencyjnych i hierarchicznych. Dobry menedżer dopasowuje taktykę do potrzeb, a nie na siłę stosuje rzekomo uniwersalne rozwiązanie niezależnie od sytuacji.

Nie krytykuję opracowań, które koncentrują się na opisie szczegółów i taktyki zwinnego działania. Są one jak najbardziej potrzebne, a liczne takie książki są już na naszym rynku dostępne. Brakuje natomiast opracowania syntetycznego, pozwalającego znaleźć odpowiedź na pytanie, kiedy i po co wybrać strategię Agile. Wprawdzie od autorów książek trzeba wymagać szerszej wiedzy niż tylko wziętej z praktycznego doświadczenia. Z drugiej strony nie ma raczej sensu, aby od każdego uczestnika projektu Agile, nawet na kierowniczym stanowisku, wymagać zarówno wielkiego doświadczenia, jak i przygotowania teoretycznego. Byłoby to marnotrawstwem czasu. Optymalnym rozwiązaniem jest książka, która z jednej strony zawiera szczegółowe przepisy i praktyczne przykłady, a jednocześnie oferuje szersze spojrzenie. Taka pozycja to dla Czytelników dobra namiastka wieloletniego doświadczenia i streszczenie pogłębionej, niedostępnej gdzie indziej wiedzy z dziedziny IT, organizacji, inżynierii oprogramowania. A nawet psychologii, która jest potrzebna, aby umiejętnie stosować Agile.

Taką optykę przyjmuję w tej książce. Po pierwsze, staram się zachować bezstronność, opisywać równie dokładnie zalety i możliwości, jak i wady lub zagrożenia stosowania metodyk zwinnych. Nie zaczynam od wyjaśniania niezrozumiałych dla niewtajemniczonych nazw artefaktów i rytuałów Agile. Jako punkt wyjścia przyjmuję konkretną potrzebę biznesową lub technologiczną, którą będzie się przy ich pomocy realizować. Słowem, traktuję Agile tak, jak narzędzie – jedno z wielu – do osiągnięcia konkretnych celów, a nie jako wartość, która nie podlega dyskusji. Skorzystają na tym i Czytelnicy, i sama Agile, ponieważ taka formuła chroni nas przed karkołomnymi próbami stosowania tej metodyki tam, gdzie nie daje ona korzyści.

Książka pozwoli Czytelnikom w pełni zrozumieć, oswoić i wykorzystać Agile w najlepszy możliwy sposób. Tłumaczy i pokazuje na przykładach, jak można Agile zastosować do rozwiązywania prawdziwych problemów i realizowania konkretnych potrzeb projektów IT. Zalecamy ją zarówno menedżerom, jak i informatykom, którzy dopiero planują wejść w świat Agile, aby mogli szybko zrozumieć, o co w tym wszystkim chodzi i dlaczego ta metoda ma naprawdę szansę być bardzo skutecznym sposobem współpracy.

Jest to pozycja interesująca również dla tych, którzy poznali już Agile w praktyce i chcą podnieść swoje kwalifikacje, pracować skuteczniej, ze zrozumieniem. Zrozumienie jest kluczowe do tego, aby umieć wyjść poza wąskie przykłady, przepisy książki kucharskiej i umieć na sposób Agile stawiać czoło coraz to nowym wyzwaniom, realizować coraz to nowe cele biznesowe.

1.1. Metoda prób i błędów – lekarstwo na niepewność

Darmowy fragment

2.1. Etapy życia produktu: projekt, wdrożenie, utrzymanie

Darmowy fragment

3.1. Cele określania wymagań

Darmowy fragment

4.1. Zasady dobrego planowania pracy

Darmowy fragment

5.1. Testowanie jako jedna z form zapewnienia jakości w Agile

Darmowy fragment

6.1. Społeczne i psychologiczne aspekty pracy zwinnej

Darmowy fragment

7. Słownik terminów

Darmowy fragment

8. Źródła

Ta książka nie jest pozycją naukową, dlatego nie ma sensu podawanie listy kilkudziesięciu czy kilkuset źródeł, roku wydania, numeru ISBN ani wydawnictwa. Czytelnik z łatwością, za pomocą wyszukiwarki internetowej, znajdzie sobie wszystkie potrzebne dane. Wybraliśmy natomiast kilkanaście podstawowych pozycji, które możemy z czystym sumiennie polecić, ponieważ są bardzo dobrze napisane i użyteczne do szybkiego zastosowania w praktyce. W miarę dostępności są to polskie pozycje lub przetłumaczone na polski.

Podane tytuły dotyczą wyłącznie metodyk zwinnych (Agile, XP, Lean). Podkreślam jeszcze raz, że aby naprawdę zrozumieć metody zwinne, nie wystarczy sama lektura książek. Trzeba przede wszystkim rozumieć całokształt inżynierii oprogramowania (inżynierię wymagań, zasady projektowania architektury, programowanie, metody integracji, testowanie) oraz zarządzania projektami (zapewnienie jakości, zarządzanie konfiguracją i zmianami, oszacowanie pracochłonności, metody harmonogramowania).

O wartości biznesowej metod zwinnych:

1. „The Business Value of Agile Software Methods. Maximizing ROI With Just-in-Time Processes and Documentation”, Rico, Sayani, Sone

2. „Competitive Engineering”, Tom Gilb

Dokładne przepisy, gloryfikujące Agile i zapoznające ze szczegółami realizacji Scruma:

3. „Scrum. Praktyczny przewodnik po najpopularniejszej metodyce Agile”, Kenneth S. Rubin

4. „Scrum i nie tylko. Teoria i praktyka w metodach Agile”, Krystian Kaczor

5. „Scrum – praktyczny przewodnik dla początkujących”, Lacey Mitch

6. „O zwinnym zarządzaniu projektami”, Mariusz Chrapko

7. „Scrum Guide. Przewodnik po Scrumie. Reguły gry”, Ken Schwaber, Jeff Sutherland

Praktyczne doświadczenia, uzupełnianie Scruma:

8. „Oprogramowanie szyte na miarę. Jak rozmawiać z klientem, który nie wie, czego chce”, Michał Bartyzel

9. „Scrum and XP from the Trenches. How we do Scrum”, Henrik Kniberg

10. „Kanban and Scrum – making the most of both”, Henrik Kniberg, Mattias Skarin

Różne dyscypliny inżynierii wymagań w metodach Agile:

11. „Agile Estimating and Planning”, Mike Cohn

12. „Architektura Lean w projektach Agile”, James O. Coplien, Gertrud Bjornvig

13. „Agile Testing. A Practical Guide for testers and Agile Teams”, Lisa Crispin, Janet Gregory

14. „Wydajne programowanie Extreme Programming”, Kent Beck, Andres Cynthia

15. „Agile Software Development”, Alistair Coburn

16. „Lean Software Development. An Agile Toolkit”, Mary Poppendieck, Tom Poppendieck

17. „Agile Development. Filozofia programowania zwinnego”, James Shore, Shane Warden