LEKKIE METODOLOGIE WYTWARZANIA OPROGRAMOWANIA Wykład 2 Wprowadzenie do metodologii lekkich i gry planistycznej Jacek Dajda <dajda@agh.edu.pl> Kraków, 18 października 2007
Plan wykładu Przyczyny powstanie powstania metodologii zwinnych i ich Wprowadzenie do gry planistycznej Strona: 2
Przyczyny powstania metodologii zwinnych
Metafora projektu informatycznego Źródło: http://infohost.nmt.edu/~es421/ansys/bridge.htm Strona: 4
Metafora projektu informatycznego (2) Źródło: http://www.botany.wisc.edu Strona: 5
Kryzys inżynierii oprogramowania Wzrost złożoności systemów informatycznych w latach 70 i 80 zaowocował zaproponowaniem formalnych metod wytwarzania oprogramowania (np. model CMM, norma ISO 9000), które pozwoliły na uporządkowanie skomplikowanego procesu wytwarzania oprogramowania Negatywnymi efektami ubocznymi były m.in. biurokratyzacja całego procesu obniżenie jego odporności na zmiany wydłużenie czasu oczekiwania na pierwsze wersje rozwijanego produktu Strona: 6
Syndrom LOOP LOOP czyli Błędne koło 4 problemy: Late - średnie opoźnienie 6 do 12 miesięcy Over budget - średnio 50% do 100% Overtime Poor quality Dotyka wielu przedsięwzięć informatycznych (nawet Departament Obrony USA) Przekonanie o organizacyjnym samowoli programistow i bałaganie E. Yourdon, Marsz ku klęsce. Poradnik dla projektanta systemów Strona: 7
Raport grupy Standish The Standish Group http://www.standishgroup.com The Standish Group Report Chaos 1995 - dotyczy sektora IT w USA. Raport przynosi bardzo niepokojące wyniki dotyczące powodzenia projektow informatycznych: Kompletnie udane Anulowane Duże 9,00% 29,50% PROJEKTY Średnie 16,20% 37,10% Małe 28,00% 21,60% Wg developerów, najbardziej problematyczne były: brak wsparcia ze strony przyszłych użytkownikow niekompletne i zmieniające się wymagania nierealne plany i oczekiwania Strona: 8
Raport grupy Standish (2) Strona: 9
Rozczarowanie klasycznym podejściem Przekraczanie terminow i budżetow Konieczność pracy w nadgodzinach Projekty trudne i kosztowne do utrzymania Stosy dokumentacji Presja czasu -> słaba jakość Nacisk na jakość -> wolny rozwój i długi czas pomiędzy rozpoczęciem projektu a efektywnymi wynikami Brak elastyczności na zmiany -> duże koszty zmian, duże ryzyko strat finansowych i upadku projektu Niespełnienie oczekiwań klienta Źródło: http://www.colinthomas.com Strona: 10
Źrodło: http://www.nerdmeyr.com/images/blog Strona: 11
Powstanie metodologii zwinnych
Narodziny metodologii zwinnych Snowbird, Utah, Luty 2001 17 ludzi z branży: 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, Dave Thomas http://agilemanifesto.org Agile Alliance, koniec 2001 http://www.agilealliance.org Źrodło: http://storymill.com/mu/jsk/item/tp50 Strona: 13
Manifest metodologii zwinnych Odnajdujemy lepsze sposoby wytwarzania oprogramowania poprzez jego tworzenie i pomaganie innym w tej działalności. W ramach tej pracy nauczyliśmy się bardziej cenić: Osoby i komunikację od procesow i narzędzi Działające oprogramowanie od kompleksowej dokumentacji Współpracę klienta od negocjacji kontraktow Reagowanie na zmianę od podążania za planem Rzeczy po prawej mają dla nas wartość, ale te po lewej cenimy znacznie bardziej. Strona: 14
Podstawowe zasady określone w manifeście Naszym najwyższym priorytetem jest spełnianie oczekiwań klienta poprzez wczesne i częste dostarczanie cennego software u. Bądź gotow na zmieniające się wymagania, nawet na poźnym etapie projektu. Zwinny proces wykorzystuje zmianę na korzyść klienta. Dostarczaj działający produkt często, od kilku tygodni to kilku miesięcy, przy czym krotkie ramy czasowe są preferowane. Klienci i programiści muszą codziennie pracować razem przez cały czas trwania projektu. Buduj projekt w oparciu o zmotywowane jednostki. Przygotuj im środowisko, wspieraj ich potrzeby i zaufaj im. Najbardziej efektywną i wydajną metodą pozyskiwania wiedzy przez i w ramach zespołu projektowego jest bezpośrednia rozmowa. Działający software jest głowną miarą postępu. Zwinny proces promuje stabilny rozwoj. Sponsorzy, deweloperzy i użytkownicy powinni zawsze utrzymywać stałe tempo rozwoju. Przywiązywanie ciągłej uwagi do wysokiej jakości i dobrego projektu wzmacnia zwinność. Prostota - sztuka maksymalizowania ilości niezrealizowanej pracy - jest zasadnicza. Najlepsze architektury, wymagania i projekty są efektem pracy samo-organizujących się zespołow. W regularnych odstępach czasu zespoł dokonuje refleksji na temat swojej efektywności, a następnie odpowiednio dostosowuje i usprawnia swoje zachowanie. Strona: 15
Metodologie zwinne a podejście adaptacyjne Metodologie zwinne nazywa są też metodologiami adaptacyjnymi (klasyczne są oparte na planie plan-driven) Można je rozumieć rownież jako empiryczne (klasyczne to teoretyczne) Częste przyrosty są niezbędne dla metod empirycznych Podejście adaptacyjne czyni metodologie zwinne idealnym narzędziem dla projektow o zmiennych wymaganiach Strona: 16
Najważniejsze metodologie zwinne extrem e Program m ing (1996) Scrum (1986) C rystalm ethodologies (1996) Adaptive Softw are D evelopm ent(1995) Feature D riven D evelopm ent(1995) D ynam ic System s D evelopm entm ethod (1990) Lean Softw are D evelopm ent(1996) Prince O pen Source...iinne Strona: 17
Konferencje poświęcone ruchowi Agile XP C onference, od 2000 roku, europejska, m.in. W łochy, N iem cy, ostatnia w Finlandii(O ulu) Agile InternationalC onference,u SA XP U niverse,teraz w ram ach Agile InternationalC onference InternationalC onference ofagile M anufacturing,irlandia International C onference on Agile Processes in Softw are Engineering and extrem e Program m ing,w łochy (Springer) 10th AG ILE International C onference on G eographic Inform ation Science Agile D evelopm entc onference...iinne Strona: 18
Bibliografia Robert C. Martin Agile Patterns, and Practices Software Development, Principles, Alistair Cockburn Agile Software Development, Ken Schwaber Agile Project Management with Scrum Steve McConnell Rapid Development Kent Beck extreme Programming explained Embrace Change James Newkirk, Rober C. Martin extreme Programming in Practice David Asteles, Granville Miller, Miroslav Nowak A Practical Guide to extreme Programming Strona: 19
Użyteczne adresy Martin Fowler, The Agile Manifesto: where it came from and where it may go http://www.martinfowler.com/articles/agilestory.html Martin Fowler, The New Methodology http://www.martinfowler.com/articles/newmethodology.html Agile Alliance, dział artykułow: http://www.agilealliance.org/library Scott Ambler, Fragile Manifesto http://www.ddj.com/dept/architect/184414888 Wikipedia: Agile software development http://en.wikipedia.org/wiki/agile software development Linda Rising, Agile Methods: What s it All About? http://ddci.com/newsarchive/news vol2num9.php#agile Strona: 20
Wprowadzenie do gry planistycznej
Tradycyjne podejście do procesu wytwarzania oprogramowania U dział klienta w projekcie to okreś lenie sw oich w ym agań i ocena w ynikow końcow ych (czasam iteż poś rednich w ersjidem onstracyjnych lub prezentacjipostępu projektu) Term in ukończenia projektu w yznaczany w fazie podpisyw ania um ow y (lub czasam inaw etw cześ niej) Artefakty projektu: skom plikow ane itrudno przysw ajalne dla klienta trudne do m odyfikacji Strona: 22
Kiedy to działa? Klient dobrze wie czego chce Analityk poprawnie zrozumie i przeprowadzi analizę tego czego chce klient Projektant poprawnie zrozumie analizę i przygotuje kompletny i spójny projekt Programista poprawnie zrozumie projekt i stworzy dobrze działający system Klient nie zmienił w tym czasie zdania Wyznaczony termin uwzględnia odpowiedni zapas jest wynikiem oceny doświadczonego zespołu Strona: 23
Zwinne podejście do planowania: gra planistyczna Planowanie w standardowym procesie: średni lub duży zakres czasowy, szczegółowe, statyczne Planowanie Planowanie zwinne na przykładzie Programowania Ekstemalnego: średni lub krótki zakres czasowy, zmienna szczegółowość, dynamiczne Strona: 24