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”.
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.”
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:
- Scrum
- Programowanie ekstremalne (XP)
- Kanban
- Scrumban
- DSDM
- Rozwój oparty na funkcjach (FDD)
- Adaptacyjne tworzenie oprogramowania (ASD)
- Kryształ
- Lean startup
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ą:
- Ciągła integracja
- stałe refaktoryzacje
- Ciągła dostawa
- Ciągłe wdrażanie
- Programowanie par
- Rozwój oparty na testach
- Rozwój oparty na zachowaniu
- Karty opowieści
- szybkie przeglądy kodu
- Testowanie zwinne
- Szybki rozwój aplikacji
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
- Manifest zwinnego tworzenia oprogramowania
- The New Methodology , artykuł Martina Fowlera, w którym et al. Porównuje się metody zwinne
- Agile Alliance (angielski)
- Narzędzie do oceny, który model proceduralny (predykcyjny, hybrydowy, zwinny) mógłby być lepiej dopasowany do rozwoju
Indywidualne dowody
- ↑ Zwinne tworzenie oprogramowania . W: Gabler Wirtschaftslexikon ; udostępniono 15 lipca 2020 r.
- ^ Wierność - Utracony Wymiar Żelaznego TrójkątaAvailAgility. W: Dostępność. 22 grudnia 2009, dostęp 3 marca 2017 .
- ↑ 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”.
- ^ Ewolucyjne zarządzanie projektami (strona oryginalna, archiwum zewnętrzne) . Gilb. Zarchiwizowane z oryginału 27 marca 2016 r. Pobrano 30 kwietnia 2017 r.
- ^ Ewolucyjne zarządzanie projektami (nowa strona) . Gilb. Źródło 30 kwietnia 2017 r.
- ^ EA Edmonds: Proces rozwoju oprogramowania dla użytkowników nietechnicznych jako system adaptacyjny . W: Systemy ogólne . 19, 1974, s. 215-18.
- ↑ 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 .
- ↑ Ilość nku.edu (PDF)
- ↑ 1-szy roczny raport o stanie Agile ™ do 13 rocznego raportu o stanie Agile ™
- ↑ Siódme coroczne badanie stanu rozwoju zwinnego .
- ^ Agile Alliance: Co to jest zwinne tworzenie oprogramowania? Źródło 25 marca 2018 .
- ^ Manifest Agile Software Development. Źródło 15 lipca 2020 .
- ↑ Zasady manifestu Agile
- ↑ Blog Davida Bocka . Jroller.com. Zarchiwizowane z oryginału 11 stycznia 2006 r. Pobrano 15 lipca 2020 r.
- ↑ 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 .
- ^ Test Nokii, specyficzny dla Scrum
- ↑ 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 .
- ^ Test Karlskrony, ogólna adaptacja zwinna
- ↑ XP i RUP - czy idą w parze? (PDF; 139 kB)
- ↑ Status Quo (skalowany) Agile 2020. Uniwersytet w Koblenz, dostęp 20 lipca 2020 r . .