Zwinne tworzenie oprogramowania

Zwinny rozwój oprogramowania (z łac. agilis „zwinny, elastyczny”) opisuje podejścia w procesie tworzenia oprogramowania, które zwiększają przejrzystość i szybkość zmian i powinny prowadzić do szybszego wykorzystania opracowanego systemu w celu zminimalizowania ryzyka i niepożądanych zmian w proces rozwoju. W tym celu podjęto próbę zredukowania fazy projektowania do minimum i uzyskania oprogramowania wykonywalnego na jak najwcześniejszym etapie procesu rozwoju. Jest to uzgadniane z klientem w regularnych, krótkich odstępach czasu. Powinna istnieć możliwość elastycznego reagowania na prośby klientów, aby zwiększyć ogólną satysfakcję klientów.

Zwinne tworzenie oprogramowania charakteryzuje się samoorganizującymi się zespołami oraz podejściem iteracyjnym i przyrostowym.

Podejścia zwinne mogą odnosić się do części wytwarzania oprogramowania (np. w Agile Modeling) lub do całego procesu wytwarzania oprogramowania (np. w Extreme Programming lub Scrum ). Celem jest uczynienie procesu rozwoju bardziej elastycznym i szczuplejszym niż w przypadku klasycznych modeli procesów opartych na planach.

Klasyczne podejścia są często uważane za ciężkie i biurokratyczne (np. Rational Unified Process lub V-Model ). Jednym z zarzutów jest to, że im więcej pracujesz zgodnie z planem, tym więcej dostajesz tego, co zaplanowano, ale nie tego, co jest potrzebne.

rozwój historyczny

Przyrostowy model procesu w tworzeniu oprogramowania sięga roku 1957. Ewolucyjne zarządzanie projektami i adaptacyjne tworzenie oprogramowania pojawiły się na początku lat siedemdziesiątych.

Pierwsze podejścia do zwinnego tworzenia oprogramowania można znaleźć na początku lat 90-tych. Zwinne tworzenie oprogramowania po raz pierwszy zyskało popularność w 1999 roku, kiedy Kent Beck opublikował pierwszą książkę na temat programowania ekstremalnego . Utorowało to drogę innym procesom i metodom zwinnym. Na początku najbardziej popularną metodą zwinną było Programowanie Ekstremalne , najpóźniej od czasu pierwszego corocznego badania przeprowadzonego przez VersionOne (2006), Scrum jest zdecydowanie najpopularniejszą metodą zwinną.

Termin agile pojawił się w lutym 2001 roku na spotkaniu w Utah na wniosek Mike'a Beedle'a, który został wybrany w celu zastąpienia dotychczas zwyczajowo lekkiego (ang. Lightweight ). Podczas tego spotkania sformułowano również Manifest Agile (patrz poniżej).

W 2005 r. firma Forrester Research wykazała, że 14% firm w Ameryce Północnej i Europie wykorzystuje zwinne procesy do tworzenia oprogramowania; kolejne 19% myślało o jego użyciu. VersionOne stwierdziło w 2013 roku, że 84% wszystkich firm korzysta już z procesów zwinnych, w 2016 roku było to 95%.

Komponenty zwinnego tworzenia oprogramowania

„Zwinne tworzenie oprogramowania to zbiorcze określenie wielu metod i praktyk opartych na wartościach i zasadach Manifestu Zwinnego Rozwoju Oprogramowania”.

- Agile Alliance, 2018

Zasady Agile

Cztery zasady przewodnie zostały sformułowane w lutym 2001 r. jako Manifest Agile ( Manifest Agile w języku angielskim , w skrócie Manifest Agile ):

„Znajdujemy lepsze sposoby tworzenia oprogramowania, robiąc to sami i pomagając w tym innym. Dzięki tej działalności doceniliśmy te wartości:

  • Osoby i interakcje są ważniejsze niż procesy i narzędzia
  • Funkcjonujące oprogramowanie jest ważniejsze niż obszerna dokumentacja
  • Współpraca z klientem jest ważniejsza niż negocjacje umowy
  • Reagowanie na zmiany jest ważniejsze niż podążanie za planem

Oznacza to, że chociaż uważamy wartości po prawej stronie za ważne, wyżej cenimy wartości po lewej stronie.”

- Kent Beck , Mike Beedle , Arie van Bennekum, Alistair Cockburn , Ward Cunningham , Martin Fowler , James Grenning, Jim Highsmith, Andrew Hunt , Ron Jeffries , Jon Kern, Brian Marick, Robert C. Martin , Steve Mellor, Ken Schwaber , Jeff Sutherland i Dave Thomas

Wśród 17 pierwszych sygnatariuszy są założyciele Extreme Programming ( Kent Beck , Ward Cunningham , Ron Jeffries ), założyciele Scrum ( Ken Schwaber , Jeff Sutherland ), przedstawiciele DSDM (Arie van Bennekum) i FDD (Jon Kern). jako założyciel ASD (Jim Highsmith), Crystal ( Alistair Cockburn ) i pragmatycznego programowania ( Dave Thomas , Andrew Hunt ).

Zasady Agile

Zasady Agile służą jako zasady przewodnie w zwinnej pracy. Czasami zasady Agile są również określane jako metoda. W ciężkich procesach na zasady nakładają się obszerne opisy metod, a zasady schodzą na dalszy plan; ponadto procesy były definiowane głównie za pomocą metod, a nie zasad. Nazewnictwo zasad powinno nadać im większą wagę w porównaniu z metodami formalnymi.

W Manifeście Agile wymieniono dwanaście zasad.

  • Naszym najwyższym priorytetem jest zadowolenie klienta poprzez wczesne i ciągłe dostarczanie wartościowego oprogramowania.
  • Witamy zmiany w wymaganiach nawet na późnym etapie rozwoju. Procesy zwinne wykorzystują zmiany, aby dać klientowi przewagę konkurencyjną.
  • Dostarczaj działające oprogramowanie regularnie w ciągu kilku tygodni lub miesięcy, preferując krótsze ramy czasowe.
  • Eksperci techniczni i programiści muszą współpracować na co dzień podczas projektu.
  • Buduj projekty wokół zmotywowanych osób. Zapewnij im środowisko i wsparcie, którego potrzebują, i ufaj, że wykonają swoją pracę.
  • Najbardziej wydajnym i skutecznym sposobem przekazywania informacji do zespołu programistów i wewnątrz niego jest kontakt twarzą w twarz.
  • Działające oprogramowanie jest najważniejszą miarą postępu.
  • Procesy zwinne promują zrównoważony rozwój. Klienci, programiści i użytkownicy powinni być w stanie utrzymać stałe tempo w nieskończoność.
  • Ciągła dbałość o doskonałość techniczną i dobry design sprzyja zwinności.
  • Prostota – sztuka maksymalizacji ilości niewykonanej pracy – jest niezbędna.
  • Najlepsze architektury, wymagania i projekty są tworzone przez samoorganizujące się zespoły.
  • W regularnych odstępach czasu zespół zastanawia się, w jaki sposób może stać się bardziej skuteczny i odpowiednio dostosowuje swoje zachowanie.

Przejście między zasadami i metodami jest płynne.

Metody zwinne

Zwinne frameworki

Dobrze znane zwinne frameworki to:

Praktyki zwinne

Praktyki zwinne powinny służyć zachowaniu możliwie płaskiej krzywej wysiłku; D. Innymi słowy, zmiany lub nowe wymagania powinny być możliwe do uwzględnienia przy niewielkim wysiłku. Przykładami zwinnych praktyk są:

Ocena zwinna

Ocena zwinna może dostarczyć informacji, w jakim stopniu wartości zwinne zostały zaimplementowane w procesach i metodach.

W przypadku pomiarów indeksu zwinności sugeruje się ocenę projektów oprogramowania w taki sam sposób, jak w przypadku CMMI, na podstawie stałych czynników. Podobnie nazwany Indeks Pomiaru Agility ocenia rozwój projektów oprogramowania w pięciu różnych wymiarach (czas trwania, ryzyko, pomysłowość, wysiłek i interakcja). Istnieją również zwinne samooceny, które pozwalają określić, czy zespół pracuje w sposób zwinny (test Nokia, test 42-punktowy, test Karlskrony).

Rozważenie krytyczne

Głównymi przyczynami podejść zwinnych są to, że cele i otoczenie (zaangażowane osoby, wymagania rynku, środowisko techniczne/interfejsy) zmieniają się w trakcie projektu. Metody zwinne nadają się zatem szczególnie dobrze do reagowania na zmieniające się wymagania, ponieważ cykle rozwojowe są zwykle krótkie. Wymagania są często tylko krótko opisywane i formułowane na krótko przed rozpoczęciem implementacji i testowania. Ze względu na krótkie okresy czasu (kolejne) zmiany wymagań są stosunkowo łatwe.

Rational Unified Process (RUP) jest postrzegany przez wielu przedstawicieli metod agile (wiele z nich podpisali Manifest agile ) jako nie sprawne, proces ciężkiej. Jest to jednak kontrowersyjne. Ani V-Modell, ani RUP nie zabraniają stosowania zwinnych elementów, takich jak szybkie prototypowanie ; ani przed, ani w trakcie definiowania wymagań lub faz projektowania .

Modele procesów oparte na planach regulują również sposób uwzględniania zmian w projekcie; chociaż nakład pracy i wymagana dokumentacja są stosunkowo wyższe.

Jasne specyfikacje dotyczące treści (specyfikacja) są trudne przy podejściu zwinnym, ponieważ wymagania są z definicji opracowywane tylko w czasie trwania projektu.

Metody zwinne są czasami błędnie postrzegane jako panaceum na problemy projektowe. Przeszkody w udanym projekcie (np. konflikty interesów lub celów, brak wsparcia ze strony klienta lub sponsora) mogą dotyczyć zarówno procesów zwinnych, jak i tradycyjnych.

Badanie Status Quo (Scaled) Agile 2020 przeprowadzone przez Uniwersytet Nauk Stosowanych w Koblencji wykazało lepszą wydajność metod zwinnych w porównaniu z klasycznym zarządzaniem projektami w prawie wszystkich wymiarach i w ogólnej ocenie. Szczególnie udany był Scrum .

Zobacz też

literatura

  • Kent Beck : Programowanie ekstremalne. Rewolucyjna metoda tworzenia oprogramowania w małych zespołach. Monachium i in. 2000, ISBN 3-8273-1709-6 .
  • Carsten Dogs, Timo Klimmer: Kompaktowe zwinne tworzenie oprogramowania. Bonn 2005, ISBN 3-8266-1503-4 .
  • Jutta Eckstein: Zwinne tworzenie oprogramowania w dużych projektach. Heidelberg 2011, ISBN 978-3-89864-790-8 .
  • Peter Hruschka, Chris Rupp , Gernot Starke: Agility compact. Wskazówki dotyczące pomyślnego rozwoju systemu. Wydanie drugie, Heidelberg i in. 2009, ISBN 978-3-8274-2204-0 .
  • Michael Hüttermann: Agile Java w praktyce. Pekin i in. 2007, ISBN 978-3-89721-482-8 .
  • Jiri Lundak: Procesy zwinne. Rozpoznawaj i unikaj pułapek. Frankfurt nad Menem 2009, ISBN 978-3-939084-55-6 .
  • Roman Pichler: Scrum - z powodzeniem wykorzystuje zwinne zarządzanie projektami. Heidelberg 2008, ISBN 978-3-89864-478-5 .
  • Götz Schmidt, Axel-Bruno Naumann: Analiza organizacyjna i biznesowa - metody i techniki . Wydanie 16, Giessen 2020, ISBN 978-3-945997-17-8 .
  • Ken Schwaber : Zwinne zarządzanie projektami za pomocą Scrum. Unterschleißheim 2007, ISBN 978-3-86645-631-0 .
  • Jim Shore, Shane Warden: Sztuka zwinnego rozwoju. Pekin i in. 2008, ISBN 978-0-596-52767-9 .
  • Henning Wolf, Wolf-Gideon Bleek: Zwinne tworzenie oprogramowania. Wartości, koncepcje i metody. Wydanie drugie, Heidelberg 2010, ISBN 978-3-89864-701-4 .

linki internetowe

Wikisłownik: agile  - wyjaśnienia znaczeń, pochodzenie słów, synonimy, tłumaczenia

Indywidualne dowody

  1. Zwinne tworzenie oprogramowania . W: Gabler Wirtschaftslexikon ; udostępniono 15 lipca 2020 r.
  2. ^ Wierność - Utracony Wymiar Żelaznego TrójkątaAvailAgility. W: Dostępność. 22 grudnia 2009, dostęp 3 marca 2017 .
  3. Gerald M. Weinberg , cytowany w Craig Larman, Victor R. Basili: Iterative and Incremental Development: A Brief History . W: Komputer IEEE . 36, nr 3, czerwiec 2003, s. 47-56. doi : 10.1109 / MC.2003.1204375 . „Chociaż wiele widok model przyrostowy jako nowoczesnej praktyce jego Daty stosowania już w połowie 1950 roku.” „Robiliśmy przyrostowe rozwój już w 1957 w Los Angeles, pod kierunkiem Bernie Dimsdale na usługi Biura IBM Corporation Był kolegą Johna von Neumanna , więc być może nauczył się tego tam, lub przyjął to jako całkowicie naturalne.Pamiętam Herba Jacobsa (przede wszystkim, chociaż wszyscy uczestniczyliśmy) opracowując dużą symulację dla Motoroli, gdzie zastosowana technika była , o ile mogę powiedzieć ... Wszyscy, o ile pamiętam, uważaliśmy, że wodospad wielkiego projektu był raczej głupi, a przynajmniej nieświadomy realiów. Myślę, że opis wodospadu zrobił dla nas, zdajemy sobie sprawę, że robimy coś innego, coś nienazwanego, z wyjątkiem „rozwoju oprogramowania”.
  4. ^ Ewolucyjne zarządzanie projektami (strona oryginalna, archiwum zewnętrzne) . Gilb. Zarchiwizowane z oryginału 27 marca 2016 r. Pobrano 30 kwietnia 2017 r.
  5. ^ Ewolucyjne zarządzanie projektami (nowa strona) . Gilb. Źródło 30 kwietnia 2017 r.
  6. ^ EA Edmonds: Proces rozwoju oprogramowania dla użytkowników nietechnicznych jako system adaptacyjny . W: Systemy ogólne . 19, 1974, s. 215-18.
  7. Tom Gilb: Rozwój ewolucyjny . W: Uwagi dotyczące inżynierii oprogramowania ACM SIGSOFT . 6, nr 2, 1 kwietnia 1981, s. 17. doi : 10.1145 / 1010865.1010868 .
  8. ↑ Ilość nku.edu (PDF)
  9. 1-szy roczny raport o stanie Agile ™ do 13 rocznego raportu o stanie Agile ™
  10. Siódme coroczne badanie stanu rozwoju zwinnego .
  11. ^ Agile Alliance: Co to jest zwinne tworzenie oprogramowania? Źródło 25 marca 2018 .
  12. ^ Manifest Agile Software Development. Źródło 15 lipca 2020 .
  13. Zasady manifestu Agile
  14. Blog Davida Bocka . Jroller.com. Zarchiwizowane z oryginału 11 stycznia 2006 r. Pobrano 15 lipca 2020 r.
  15. Subhajit Datta: Wskaźnik pomiaru zwinności: miara skrzyżowania metodologii tworzenia oprogramowania . ACM, Nowy Jork NY 2006, ISBN 1-59593-315-8 , s. 271-273 , doi : 10.1145 / 1185448.1185509 .
  16. ^ Test Nokii, specyficzny dla Scrum
  17. Kelly Waters: Jak zwinny jesteś? (Zrób ten 42-punktowy test). (Nie jest już dostępny w Internecie.) 28 stycznia 2008, w archiwum z oryginałem na 5 maja 2014 roku ; udostępniono 15 lipca 2020 r .
  18. ^ Test Karlskrony, ogólna adaptacja zwinna
  19. XP i RUP - czy idą w parze? (PDF; 139 kB)
  20. Status Quo (skalowany) Agile 2020. Uniwersytet w Koblenz, dostęp 20 lipca 2020 r . .