LEKKIE METODOLOGIE WYTWARZANIA OPROGRAMOWANIA

Podobne dokumenty
Lekkie metodyki. tworzenia oprogramowania

SYSTEMY INFORMATYCZNE ćwiczenia praktyczne

Feature Driven Development

KANBAN SCRUM-BAN. Agile PM Zarys AUP

Agile vs PRINCE /2015 I rok st. magisterskie Informatyka

Agile Project Management

Programowanie zespołowe

Leszno Jakie są i będą oczekiwania biznesu wobec IT?

Akademia ADB Wykład I Praca w grupie i jakość kodu

Zarządzanie projektami. Wykład 2 Zarządzanie projektem

Jarosław Kuchta Dokumentacja i Jakość Oprogramowania. Wymagania jakości w Agile Programming

Dobry Product Backlog Oferta szkolenia dla Product Ownerów

Acceptance Test Driven Development wspierane przez narzędzie ROBOT Framework. Edyta Tomalik Grzegorz Ziemiecki

Zagadnienia. Inżynieria Oprogramowania

Wykład VII. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Zarządzanie projektami. Porównanie podstawowych metodyk

Tworzenie gier na urządzenia mobilne

Programowanie Zespołowe

Agile Project Management WHITEPAPER

Scaling Scrum with SAFe. Małgorzata Czerwińska

Testowanie oprogramowania

Opis metodyki i procesu produkcji oprogramowania

Błędy procesu tworzenia oprogramowania (Badania firmy Rational Software Corporation)

Główne założenia XP. Prostota (Simplicity) Komunikacja (Communication) Sprzężenie zwrotne (Feedback) Odwaga (Agressiveness)

Programowanie zwinne - wprowadzenie. Programowanie ekstremalne. Wstęp Reguły i praktyki SCRUM. Wprowadzenie Role Zdarzenia Artefakty

Modele cyklu życia oprogramowania

Zwinna współpraca programistów i testerów z wykorzystaniem BDD i. by Example (JBehave/Spock/SpecFlow)

LEKKIE METODOLOGIE WYTWARZANIA OPROGRAMOWANIA

Program szkolenia: Wprowadzenie do Domain Driven Design dla biznesu (część 0)

Programowanie Zespołowe

Metody wytwarzania oprogramowania. Metody wytwarzania oprogramowania 1/31

Scrum i nie tylko : teoria i praktyka w metodach Agile / Krystian Kaczor. Wyd. 2. Warszawa, Spis treści

USPRAWNIANIE, DORADZTWO, KONSULTING

Projektowanie oprogramowania. Termin zajęć: poniedziałek, a podstawie materiału ze strony.

Analiza biznesowa a metody agile owe

Agile Software Development Perspektywa Członka Zespołu

Zarządzanie testowaniem wspierane narzędziem HP Quality Center

SCRUM niełatwe wdrażanie metodyki w praktyce. Adam Krosny

Metodyki programowania. Tomasz Kaszuba 2015

Całościowe podejście do testowania automatycznego dla programistów. (TDD, BDD, Spec. by Example, wzorce, narzędzia)

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

Zagadnienia. Inżynieria Oprogramowania

PROJEKTOWANIE ZORIENTOWANE NA UŻYTKOWNIKA W METODYCE SCRUM. Hubert Wawrzyniak Grupa Allegro

Projektowanie systemów informatycznych. wykład 6

Temat: Zwinne Zarządzanie Projektami IT (Agile / Scrum) Data: marca 2014 r. (2 dni, czwartek-piątek), godz. 9-16

Szybkość w biznesie. Zwinne testowanie oprogramowania (Agile) Mateusz Morawski (mateusz.morawski@hp.com) 14 kwietnia 2015

szkolenia pod drzewem Wybrane Techniki XP bnd 2008 Tomasz Włodarek. Materiał udostępniany na podstawie licencji Creative Commons (by-nc-nd) 1.00.

Oferta szkoleń firmy Code Sprinters

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

Zarządzanie projektami. Wykład 2 Czym jest zarządzanie projektami?

Wykaz osób w postępowaniu o udzielenie zamówienia publicznego nr 32-CPI-WZP-2244/13. Podstawa do dysponowania osobą

Skuteczność => Efekty => Sukces

Testowanie aplikacji mobilnych na platformie Android - architektura, wzorce, praktyki i narzędzia

Etapy życia oprogramowania

Inżynieria oprogramowania (Software Engineering)

Rozdział 5: Zarządzanie testowaniem. Pytanie 1

Planowanie i realizacja zadań w zespole Scrum

Opisy szkoleń dla certyfikatów Agile Scrum.

Opis realizacji dla czterech zespołów (4 przypadki użycia)

Oferta Szkoleniowa.

Zarządzanie Projektami zgodnie z PRINCE2

Techniki komputerowe w robotyce

Wstęp do zarządzania projektami

Podstawy programowania III WYKŁAD 4

Wsparcie narzędziowe zarządzania ryzykiem w projektach

Programowanie Zespołowe

Ewolucyjna architektura

Podejście tradycyjne. plan wykonanie sekwencyjna natura wykonywanych zadań

Etapy życia oprogramowania. Modele cyklu życia projektu. Etapy życia oprogramowania. Etapy życia oprogramowania

mint software Business Solutions Development Team

Plan studiów stacjonarnych drugiego stopnia 2019/2021 Kierunek: Zarządzanie kreatywne B. Moduły kierunkowe obligatoryjne

Analityk i współczesna analiza

Michał Olejnik. 22 grudnia 2009

MODELE CYKLU ŻYCIA OPROGRAMOWANIA (1) Model kaskadowy (często stosowany w praktyce do projektów o niewielkiej złożonoś

AGILE PROJECT MANAGEMENT

WPROWADZENIE DO UML-a

Testowanie oprogramowania w środowisku IBM Rational Software Architect

Projekt Kompetencyjny - założenia

Wstęp do zarządzania projektami

Zaawansowane programowanie w języku C++

MSF. Microsoft Solution Framework

Oceny z prezentacji INKU011S. Zofia Kruczkiewicz

Data: marzec 2014 r. (2 dni, czwartek-piątek), godz Miejsce: Eureka Technology Park, Innowatorów 8

Cykle życia systemu informatycznego

Narzędzia CASE dla.net. Łukasz Popiel

Metodyki zwinne wytwarzania oprogramowania

Zakres wykładu. Podstawy InŜynierii Oprogramowania

Tematy prac magisterskich Rok akademicki 2013/2014

ZARZĄDZANIE PROCESEM TESTOWYM (SQAM Test Manager) 7-8 luty 2008, Warszawa Zdobądź z nami certyfikat SQAM Test Manager.

Organizacja procesu projektowania, rozwoju i serwisowania systemu wspomagającego zarzadzanie uczelnią

Zarządzanie i realizacja projektów systemu Microsoft SharePoint 2010

Programowanie zwinne

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017

Text. Atlassian User Group Lower Silesia Praktyczne wykorzystanie narzędzi Atlasisan w skalowaniu i zarządzaniu projektami. Best practices.

Wprowadzenie do metodologii modelowania systemów informacyjnych. Strategia (1) Strategia (2) Etapy Ŝycia systemu informacyjnego

Testujemy dedykowanymi zasobami (ang. agile testers)

AN EVOLUTION PROCESS FOR SERVICE- ORIENTED SYSTEMS

udokumentowanych poprzez publikacje naukowe lub raporty, z zakresu baz danych

Transkrypt:

LEKKIE METODOLOGIE WYTWARZANIA OPROGRAMOWANIA Wykład 12 Przegląd zwinnych metodologii programowania - ciąg dalszy Jacek Dajda <dajda@agh.edu.pl> Kraków, 17 stycznia 2008

Plan wykładu Przegląd metodyk Podsumowanie Strona: 2

Adaptive Software Development

A daptive S oftware Development 1995, Jim HighSmith, http://www.adaptivesd.com Następna RADidal Software Development Celem metodyki jest wspieranie dużych i skomplikowanych projektów poprzez organizację pracy pozwalającą na łatwiejsze dostosowanie się do zmieniającego środowiska ASD kładzie nacisk na kulturę i filozofię pracy niż na konkretne praktyki, rozwiązania, narzędzia Podobnie jak Scrum, ASD może być traktowane jako tzw. Wrapper dla innych metodologii Chyba jedna z najmniej konkretnych zwinnych metodologii Źrodło: http://www.adaptivesd.com Strona: 4

Adaptacyjny model wytwarzania oprogramowania Model kaskadowy Model ewolucyjny Model adaptacyjny Źrodło: http://www.adaptivesd.com Strona: 5

Źrodło: Agile S oftware D evelopment Methods. R eview And Analysis Strona: 6

Role w zespole Brak ścisłego zarysowania struktury, pojawia się Executive Sponsor W ramach spotkań planistycznych tzw. sesji Joint Application Development (JAD) pojawiają się następujące role: Facilitator Scribe Project manager Customers Developers Strona: 7

Feature Driven Development

Feature Driven Development Pierwsze prace 1995 1997, projekt dla dużego banku w Singapurze, 15 miesięcy, 50-osobowy Twórcy: Jeff Luca, Peter Coad, Stephen Palmer Dziedziną FDD jest projektowanie aplikacji i organizacja projektu Może współpracować z innymi metodologiami Charakterystyka: duże zespoły, nawet do 500 programistów nadaje się do prowadzenia dużych krytycznych projektów umożliwia większy udział programistów niższego stopnia nadaje się do środowisk wymagających modelu formalnego (kaskadowego) jest to podejście łączące filozofię i lekkość XP z tradycyjnym modelem produktu http://www.featuredrivendevelopment.com Strona: 9

2 główne etapy procesu Specyfikacja (odkrywanie) listy funckjonalności (wyjście to diagramy UML, Color UML) Źrodło: www.uidesign.net celem jest pozyskanie jak największej ilości wymagań i zaproponowanie model niekiedy mówi się, że w przypadku FDD pozyskany zakres funckjonalności na tym etapie powinien wynosić 70-80% (dla porównania: model kaskadowy 98%-100%, XP - 60%) Strona: 10

2 główne etapy procesu (2) Implementacja rozpoczyna się od podziału funkcjonalności na pakiety, każdy pakiet ma być ukończony w ciągu 1 iteracji (1-3 tygodni) pakiet oznacza działajacą funkcjonalność, użyteczną dla klienta programiści dzielą sie na zespoły dla każdego pakietu (zespoły mogą ulegać zmianie, w zależności od dostępności programistów), za pakiet odpowiada szef danego zespołu każda implementacja pakietu zaczyna się od modelowania (UML) w obrębie zespołu, przygotowywane jest kilka modeli (3 osobowe zespoły), a następnie wybrany najlepszy/najlepsze potem następuje właściwy development (testy jednostkowe, code reviews) Strona: 11

Proces Strona: 12

Cykl życia projektu Strona: 13

Role w zespole Project Manager - odpowiedzialny za administrację i finanse, chroni zespoł Chief Architect - odpowiedzialny za całą architekturę, organizuje sesje projektowe Development Manager - prowadzi implementację, rozstrzyga konflikty Chief Programmer - doświadczony programista, bierze udział w planowaniu i projektowaniu Class Owner - członek Feature Teams, odpowiedzialny za implementację wskazanych klas Domain Expert - klient, użytkownik, sponsor. Odpowiedzialny za przekazywanie wiedzy w danej dziedzinie Domain Manager - zarządza ekspertami, rozstrzyga konflikty Release Manager - śledzi postęp, organizuje krotkie spotkania z głownymi programistami Language Guru - ekspert w danej technologii lub języka Build Engineer - odpowiedzialny za proces integracji Toolsmith - wykonuje drobne aplikacje (np. konwersja formatow) przydatne dla zespołu System Administrator - odpowiedzialny za działanie serwerow Tester - odpowiedzialny za zgodność produktu z wymaganami użytkownika Deployer - przygotowuje system do działania, np. konwertuje potrzebne dane Technical Writer - pisze dokumentacje Strona: 14

Praktyki FDD Domain Object Modelling - eksploracja postawionego problemu Developing by Feature - śledzenie postępu projektu na podstawie drobnych funkcjonalności Individual (Class) Code Ownership - każda klasa ma tylko jednego właściela Feature Teams - małe zespoły właścieli klas, organizowane na potrzeby chwili Inspection - stosowanie najlepszych znanych mechanizmow wykrywania błędow Regular Builds - częste i regularna integracja systemu Configuration Management - śledzenie zmian projektu Progress Reporting - raportowanie postępow projektu (od programisty do managera) Źrodło: www.featuredrivendevelopment.com Strona: 15

Parking Lot - przykład Źrodło: www.featuredrivendevelopment.com Strona: 16

Lean Software Development

Powstanie Taiichi Ohno ojciec systemu produkcji w Toyota Lata 50, Zrewolucjonizował proces produkcji, Lean Manufacturing, podstawa to: Budować tylko to co jest w tej chwili potrzebne (Just In Time JIT) Eliminować straty wynikające z: Koszty przechowywania Nadprodukcja Oczekiwanie Zbędny ruch Defekty Nieodpowiednie wykorzystanie umiejętności pracowników Przejrzystość środowiska pracy i dobra komunikacja źrodło: http://www.optiprise.com Strona: 18

Lean w inżynierii oprogramowania Mary and Tom Poppendieck: Lean Software Development: An Agile Toolkit Standardowa produkcja Magazyn Dodatkowe przetwarzanie Nadprodukcja Transport Oczekiwanie Ruch Defekty Inżyniera oprogramowania Częściowe wykonanie pracy Papierkowa praca Ekstra funkcjonalności Produkt nie spełnia wymagań klienta Oczekiwanie na informacje Przełączanie się pomiędzy zadaniami Defekty Strona: 19

7 praw i 22 narzędzi 1. ELIMINATE WASTE 1. Seeing waste 2. Value Strip Mapping 2. AMPLIFY LEARNING 3. Feedback 4. Iterations 5. Synchronization 6. Set-Based development 3. DECIDE AS LATE AS POSSIBLE 7. Options thinking 8. The last responsible moment 9. Decision making 4. DELIVER AS FAST AS POSSIBLE 10. Pull systems 11. Queuing theory 12. Cost of delay 5. EMPOWER THE TEAM 13. Self determination 14. Motivation 15. Leadership 16. Expertise 6. BUILD INTEGRITY IN 17. Perceived integrity 18. Conceptual integrity 19. Refactoring 20. Testing 7. SEE THE WHOLE 21. Measurements 22. Contracts Strona: 20

Dynamic System Development Method

DSDM - wprowadzenie Początek 1994 w Wielkiej Brytanii, na bazie RAD Właściciel: DSDM Consortium Obecnie wersja 4.2 Framework for Business Centered Development (marzec 2003) Od czerwca 2006 - ogolnie dostępna w ograniczeniem sprzedaży http://www.dsdm.org Strona: 22

Podstawowe prawa Zaagnażowanie klienta Zwiększenie roli zespółu programistów, większa niezależność Częste dostarczanie nowych funkcjonalnościes. Dostarczane funkcjonalności powinny być oceniane wg ich przydatności dla obecnych celów biznesowych (lepiej skupić się na krytycznych funkcjonalnościach) Iteracyjny model produkcji oprogramowania Wszystkie zmiany można cofnąć Ogólny zakres funckjonalności ustalony przed rozpoczęciem projektu Testowanie w każdym momencie cyklu projektu (TDD) Komunikacja i koraboracja pomiędzy wszystkimi członkami projektu Strona: 23

Proces Strona: 24

Role w zespole DSDM wyrożnia 15 ról. Najbardziej znaczące to: Developers i Senior Developers - od analizy do testowania. Starsi programiści wyznaczani są na podstawie doświadczenia w danej dziedzinie lub technologi Technical coordinator - odpowiedzialny za architekturę i jakość produktu. Zarządza zmianami w projekcie Ambassador User i Adviser User - przedstawiciele użytkownikow systemu, Ambasador odpowiedzialny jest za całokształt projektu, doradcy specjalizują się w pewnych dziedzinach projektu Visionary - nadaje projektowi kierunek rozwoju, często pomysłodawca systemu Executive Sponsor - daje pieniądze i może podejmować wszystkie decyzje :-) Strona: 25

Wybrane techniki Timeboxing - realizacja produktu w umiejętnie rozdzielonych etapach (zasada 80% w 20%) MoSCoW MUST have - funkjonalność niezbędna dla produktu SHOULD have - funkjonalność potrzebna ale nie krytyczna COULD have - funkcjonalność potrzebna jeśli nie wpływa negatywnie na pozostałe i efektywność systemu WOULD have - funkcjonalność ktorą fajnie by było mieć kiedyś Prototyping - tworzenie prototypow fragmentow systemu we wczesnych fazach projektu Testing - DSDM zakłada wysoką jakość, testowanie ciągłe w ramach iteracji Workshop - spotkania (rożnych) przedstawicieli klienta z zespołem w celu ustalenia wymagań, funkcjonalności Strona: 26

Podsumowanie

Dużo podobieństw Role w zespole Wspólne: klient, programista, coach/faciilator/scrum master, tracker/skryba, sponsor etc. Szczególne: toolsmith, doomsayer Cykl życia projektu Iteracyjność, krótkie wydania Podejście do udziału klienta w projekcie Zaangażowanie i decydowanie o zakresie projektu Planowanie i estymacja Plan zgrubny i zmienny Oparte na optymalizowanych estymatach zespołu Automatyzacje i narzedziowe wsparcie zespołu Ciągła integracja Automatyzacja testów (jednostkowych, integracyjnych, akceptacyjnych) Timeboxing, optymalizacja kosztów Unikanie zbędnych funkcjonalności Efektywna praca w bez nadgodzin Strona: 28

Lęki klienta Jego wyobrażenie o problemie jest niekompletne, a to co proponuje jest złe lub niepotrzebne Każda decyzja jest wiążąca i nie da się jej odkręcić Jego przyszłość zależy od pracy innych ludzi (programistow) Płaci za dużo za zbyt mało Nie będzie znał postępow prac Projekt się przedłuży i pochłonie większy budżet Gotowy produkt nie będzie spełniał jego potrzeb Programiści przygotują szajs, ktorego nie będzie się dało używać Programiści będą go chcieli oszukać, nikt nie powie mu prawdy Strona: 29

Lęki programisty Nie będzie miał jasno określonych wymagań lub będą one zmienne Klient będzie wymagał zbyt dużo za zbyt małe pieniądze Postawiony problem będzie przerastał jego możliwości lub zajmie mu zbyt dużo czasu Problem zawiera ukryte miny Nikt mu nie pomoże, gdy napotka trudny problem Klient nie doceni jego wysiłku a jedynym wyznacznikiem pracy będą terminy Na nim spoczywa odpowiedzialność za wszystkie niepowodzenia projektu Strona: 30

Karta praw klienta Klient ma prawo do długofalowego planowania z uwzględnieniem kosztów i wariantów Klient ma prawo do cotygodniowego wyznaczania priorytetow projektu Klient ma prawo do wglądu w postępy projektu oraz dostępu do działającej wersji aplikacji, ktora zawiera nowe funkcjonalności z każdym tygodniem pracy Klient ma prawo do zmiany terminarza i sposobu redukcji zadań, a także do rezygnacji z projektu w każdej jego fazie Klient ma prawo do zmiany zdania (założeń projektu) bez konieczności płacenia wygorowanych kosztow Strona: 31

Karta praw programisty Programista ma prawo do przedstawiania własnych estymat zadań projektowych, a także do ich zmiany Programista ma prawo do produkowania wysokiej jakości kodu niezależnie od okoliczności Programista ma prawo do wiedzy o tym, które zadania są najważniejsze i powinny zostać zrealizowane w najbliższym czasie Programista ma prawo do otrzymywania pomocy ze strony klienta, szefów oraz członków zespołu Programista ma prawo do uczciwego raportowania postepów projektu Strona: 32

Metodyki tradycyjne a metodologie zwinne Zakres (wymagania) Zasoby Czas Ryzyko Tradycyjne metodyki Dobrze określony, dobrze zrozumiany, niezmienny Zatwierdzone i dostępne, budżet jest wystarczający, ludzie znają zadania, technologie i narzędzia Ściśle określony, dobrze sprecyzowane cele (milestone'y) Dobrze rozumiane, średnie znaczenie Metodologie zwinne Nie do końca określone, nieznane lub niepewne, podatne na zmiany Nie w pełni dostępne lub zaakceptowane, potrzeba proof of concept, budżget niepewny albo nie pozostawiający pola manewru, potrzeba nowych umiejętności Nie do końca określony (otwarty), cele niesprecyzowane, podatne na zmianę Nowe technologie, nieznane, duże znaczenie Strona: 33

Jak wyglądąć będą metodologie wytwarzania oprogramowania za 20 lat? Formalizm/złożoność metodologii Duże skomplikowane projekty Złożone zarządania projektem Trudne panowanie nad projektem? Programowanie strukturalne Szybkie prototypowanie Małe projekty Asembler, C Złoty środek? Być może metody zwinne... Czas Strona: 34

Bibliografia Adaptive Software Development Jim Highsmith, Adaptive Software Development: A Collaborative Approach to Managing Complex Systems Jim Highsmith, Agile Project Management: Creating Innovative Products www.adaptivesd.com Feature-Driven Development Stephen R. Palmer, John M. Felsing: A Practical Guide to Feature-Driven Development www.nebulon.com, http://www.featuredrivendevelopment.com Lean Software Development Mary Poppendieck and Tom Poppendieck: Lean Software Development: An Agile Toolkit Mary Poppendieck and Tom Poppendieck: Implementing Lean Software Development: From Concept to Cash www.poppendieck.com, www.projectperfect.com.au Dynamic System Development Method DSDM Consortium, Jennifer Stapleton: DSDM: Business Focused Development, Second Edition http://www.dsdm.org Strona: 35