Slicing a cake

3,909 views

Published on

Agile Software Development is based on customer interaction and em

Published in: Technology, Self Improvement
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,909
On SlideShare
0
From Embeds
0
Number of Embeds
2,599
Actions
Shares
0
Downloads
11
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Slicing a cake

  1. 1. Slicing a Cake © 2010 Tomasz Włodarek. Pragmatyczne metody wytwarzania oprogramowania. Materiał udostępniany na licencji Creative Commons (by-nc-nd).
  2. 2. © 2010 Tomasz Włodarek. Pragmatyczne metody wytwarzania oprogramowania. Materiał udostępniany na licencji Creative Commons (by-nc-nd).
  3. 3. Jako użytkownik systemu aukcyjnego muszę mieć możliwość wystawiania aukcji aby cokolwiek sprzedać i generować zysk © 2010 Tomasz Włodarek. Pragmatyczne metody wytwarzania oprogramowania. Materiał udostępniany na licencji Creative Commons (by-nc-nd).
  4. 4. © 2010 Tomasz Włodarek. Pragmatyczne metody wytwarzania oprogramowania. Materiał udostępniany na licencji Creative Commons (by-nc-nd).
  5. 5. •  etapy procesu •  warstwy architektury •  komponenty systemu •  workflow (ciąg kolejno wykonywanych przez użytkownika czynności) © 2010 Tomasz Włodarek. Pragmatyczne metody wytwarzania oprogramowania. Materiał udostępniany na licencji Creative Commons (by-nc-nd).
  6. 6. Sposób 1. Raftingowo-wodospadowy Jako programista muszę zaimplementować system aukcyjny Jako tester muszę przetestować system aukcyjny Symptomy: pojawiają się nazwy stanowisk i czynności naśladujące kolejne etapy procesu wytwórczego, brak roli użytkownika Efekt: brak wartości dla klienta (WYSIWTF), zanika komunikacja z klientem (user-loser), wydłużenie cyklu (kaskada), brak pracy zespołowej, death march © 2010 Tomasz Włodarek. Pragmatyczne metody wytwarzania oprogramowania. Materiał udostępniany na licencji Creative Commons (by-nc-nd).
  7. 7. Sposób 2. Archeologiczno-geologiczny Jako warstwa prezentacji muszę wyświetlać aukcje Jako warstwa przechowywania danych muszę przechowywać dane o aukcjach Symptomy: pojawiają się nazwy warstw systemu, brak roli użytkownika Efekt: brak wartości dla klienta (WYSIWTF), zanika komunikacja z klientem (user-loser), wydłużenie cyklu (kaskada) © 2010 Tomasz Włodarek. Pragmatyczne metody wytwarzania oprogramowania. Materiał udostępniany na licencji Creative Commons (by-nc-nd).
  8. 8. Sposób 3. Architektoniczny Jako moduł aukcyjny muszę przyjmować nową ofertę w danej aukcji Jako komponent bezpieczeństwa muszę autoryzować użytkowników Symptomy: pojawiają się nazwy komponentów lub podsystemów, brak roli użytkownika Efekt: brak wartości dla klienta (WYSIWTF), zanika komunikacja z klientem (user-loser), wydłużenie cyklu (kaskada), w przypadku projektów wielozespołowych zanika odpowiedzialność za dostarczenie kompletnej funkcjonalności © 2010 Tomasz Włodarek. Pragmatyczne metody wytwarzania oprogramowania. Materiał udostępniany na licencji Creative Commons (by-nc-nd).
  9. 9. Sposób 4. Gimnazjalno-maturalny Jako użytkownik mogę zalogować się do systemu Jako użytkownik mam możliwość wprowadzania oferty sprzedaży Jako użytkownik mam możliwość podglądania wprowadzonej oferty sprzedaży Symptomy: workflow rozłożono na wstęp, rozwinięcie, zakończenie lub wykorzystano model CRUD (CRAP?), nikła wartość biznesowa pojedynczej historii Efekt: wartość dla klienta rośnie z każdą kolejną iteracją, dopiero seria zakończonych historii daje poczucie całości, wydłużenie cyklu, zawężenie pola (zmiany architektury mogą być bolesne) © 2010 Tomasz Włodarek. Pragmatyczne metody wytwarzania oprogramowania. Materiał udostępniany na licencji Creative Commons (by-nc-nd).
  10. 10. *Courtesy of Jeff Patton (http://www.agileproductdesign.com) © 2010 Tomasz Włodarek. Pragmatyczne metody wytwarzania oprogramowania. Materiał udostępniany na licencji Creative Commons (by-nc-nd).
  11. 11. © 2010 Tomasz Włodarek. Pragmatyczne metody wytwarzania oprogramowania. Materiał udostępniany na licencji Creative Commons (by-nc-nd).
  12. 12. Sposób 5. Empiryczno-ewolucyjny Jako użytkownik systemu aukcyjnego muszę mieć możliwość wystawiania aukcji aby cokolwiek sprzedać i generować zysk (rev. 1, 2, 3, 4, 5, …) Symptomy: każda historyjka reprezentuje kompletny ciąg czynności wykonywanych przez użytkownika w systemie (workflow), jednak z mniejszą niż docelowa liczbą szczegółów (low-fidelity…hi-fidelity), pożądany stopień precyzji odzwierciedlony jest zazwyczaj przez kryteria akceptacyjne, szerokie wykorzystanie stubów, mocków, symulatorów Efekt: wartość dla klienta dostarczana jest w każdej iteracji, możliwe wnioskowanie (planowanie) na tej podstawie; otwarte pole możliwości © 2010 Tomasz Włodarek. Pragmatyczne metody wytwarzania oprogramowania. Materiał udostępniany na licencji Creative Commons (by-nc-nd).
  13. 13. American Footballers © 1999 Nick Veasey (http://www.nickveasey.com) © 2010 Tomasz Włodarek. Pragmatyczne metody wytwarzania oprogramowania. Materiał Tomasz Włodarek. Pragmatyczne metody wytwarzania © 2010 udostępniany na licencji Creative Commons (by-nc-nd). oprogramowania. Materiał udostępniany na licencji Creative Commons (by-nc-nd).
  14. 14. Role użytkowników. Nie wszyscy mogą robić wszystko. Zidentyfikuj role (rodzaje) użytkowników, stwórz dla każdej z nich odrębne user stories. Ustal z klientem co kto może, zdecyduj kto jest ważniejszy i ułóż w tej kolejności w backlogu. © 2010 Tomasz Włodarek. Pragmatyczne metody wytwarzania oprogramowania. Materiał udostępniany na licencji Creative Commons (by-nc-nd).
  15. 15. Typ, ilość lub sposób przetwarzania danych. Ustal jakie dane są gromadzone, przetwarzane, przesyłane. Czy można ograniczyć ich różnorodność/zakres/ rozmiar? Czy zamiast skomplikowanych formatów danych możemy użyć pliku tekstowego? Ustal z klientem i opisz w kryteriach akceptacyjnych oczekiwane fidelity. © 2010 Tomasz Włodarek. Pragmatyczne metody wytwarzania oprogramowania. Materiał udostępniany na licencji Creative Commons (by-nc-nd).
  16. 16. Interface. Ustal sposób komunikacji z systemem. Czy zamiast rozbudowanego GUI możemy użyć konsoli, emaila? W jaki sposób komunikujemy się ze sprzętem? W jaki sposób komponenty komunikują się ze sobą? Co można uprościć, pominąć? Ustal z klientem i opisz oczekiwane fidelity w kryteriach akceptacyjnych. © 2010 Tomasz Włodarek. Pragmatyczne metody wytwarzania oprogramowania. Materiał udostępniany na licencji Creative Commons (by-nc-nd).
  17. 17. Logika biznesowa. Jakie operacje musimy przeprowadzić a jakie kroki możemy opuścić? Jakie czynności użytkownicy wykonują często a jakie sporadycznie? Ułóż user stories w backlogu od najczęściej do najrzadziej wykorzystywanych. © 2010 Tomasz Włodarek. Pragmatyczne metody wytwarzania oprogramowania. Materiał udostępniany na licencji Creative Commons (by-nc-nd).
  18. 18. Wygląd. Niech w ogóle zacznie działać nim stanie się ładne. Wydajność. Niech w ogóle zacznie działać nim będzie działać szybko. Bezpieczeństwo. Niech w ogóle zacznie działać nim będzie bezpieczne. © 2010 Tomasz Włodarek. Pragmatyczne metody wytwarzania oprogramowania. Materiał udostępniany na licencji Creative Commons (by-nc-nd).
  19. 19. Nie dąż do perfekcji. Nie bój się mnożyć user stories i kryteriów akceptacyjnych wskazując oczekiwany poziom precyzji. Nie bój się modyfikować wielokrotnie tego samego kodu. Najlepsza architektura powstaje ewolucyjnie. © 2010 Tomasz Włodarek. Pragmatyczne metody wytwarzania oprogramowania. Materiał udostępniany na licencji Creative Commons (by-nc-nd).
  20. 20. Agile to nie tylko podejście przyrostowe, ale również iteracyjne i ewolucyjne. Na codzień przeplataj sposoby 4 i 5 (w naprawdę dużych systemach 3, 4, 5). Wodospady zostaw na wakacje ;) © 2010 Tomasz Włodarek. Pragmatyczne metody wytwarzania oprogramowania. Materiał udostępniany na licencji Creative Commons (by-nc-nd).
  21. 21. dziękuję! tomek@poddrzewem.pl http://www.poddrzewem.pl http://www.linkedin.com/in/wlodarek © 2010 Tomasz Włodarek. Pragmatyczne metody wytwarzania oprogramowania. Materiał udostępniany na licencji Creative Commons (by-nc-nd).
  22. 22. http://www.poddrzewem.pl/klinika

×