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

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

Programowanie zespołowe

Metody wytwarzania oprogramowania. Metody wytwarzania oprogramowania 1/31

Zagadnienia. Inżynieria Oprogramowania

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

Cykle życia systemu informatycznego

Feature Driven Development

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

Maciej Oleksy Zenon Matuszyk

Etapy życia oprogramowania

Opis metodyki i procesu produkcji oprogramowania

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

Zasady organizacji projektów informatycznych

Zagadnienia. Inżynieria Oprogramowania

Programowanie Zespołowe

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

Tworzenie gier na urządzenia mobilne

Metodyki programowania. Tomasz Kaszuba 2015

INŻYNIERIA OPROGRAMOWANIA LAB 1

Jakość w procesie wytwarzania oprogramowania

Wybór ZSI. Zakup standardowego systemu. System pisany na zamówienie

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

SYSTEMY INFORMATYCZNE ćwiczenia praktyczne

Techniki komputerowe w robotyce

Testowanie oprogramowania. Testowanie oprogramowania 1/34

ISO 9000/9001. Jarosław Kuchta Jakość Oprogramowania

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

know 5 W, : filary wzrostu WHAT WHEN WHO WHY WHERE model biznesowy

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

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

Rozdział 5: Zarządzanie testowaniem. Pytanie 1

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

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

Agile Project Management

TESTOWANIE APLIKACJI KORPORACYJNYCH

Wykład 2. MIS n Inżynieria oprogramowania Marzec Kazimierz Michalik Akademia Górniczo-Hutnicza im. S. Staszica w Krakowie

Metodyki zwinne wytwarzania oprogramowania

Wytwarzanie oprogramowania

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

Modelowanie przypadków użycia. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Budowa aplikacji webowej w oparciu o Maven2 oraz przykłady testów jednostkowych. Wykonał Marcin Gadamer

Programowanie Zespołowe

Oceny z prezentacji INKU011S. Zofia Kruczkiewicz

Testujemy dedykowanymi zasobami (ang. agile testers)

AUREA BPM HP Software. TECNA Sp. z o.o. Strona 1 z 7

Lekkie metodyki. tworzenia oprogramowania

Inżynieria oprogramowania II

I Twój zespół może być zwinny (choć to może trochę potrwać) Paweł Lipiński

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

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

Usługa: Testowanie wydajności oprogramowania

In ż ynieria oprogramowania wykład II Modele i fazy cyklu życia oprogramowania

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

Dlaczego testowanie jest ważne?

Testowanie Akceptacyjne

Wstęp do zarządzania projektami

INŻYNIERIA OPROGRAMOWANIA Wykład 6 Organizacja pracy w dziale wytwarzania oprogramowania - przykład studialny

Testowanie oprogramowania

Testowanie oprogramowania. Piotr Ciskowski

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

Programowanie extremalne. Adrian Gadzina

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

Wstęp do zarządzania projektami

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

Ogólne określenie wymagań. Ogólny projekt. Budowa systemu. Ocena systemu. Nie. Tak. System poprawny. Wdrożenie. Określenie.

Studia podyplomowe PROGRAM NAUCZANIA PLAN STUDIÓW

Zarządzanie projektami. Porównanie podstawowych metodyk

Projekty IT w praktyce biznesowej

Piotr Ślęzak. Gdzie się podziała jakość

Podstawy programowania III WYKŁAD 4

Programowanie zwinne

Piotr Krząkała. Dyrektor Handlowy ds. Kluczowych Klientów

Wstęp do zarządzania projektami

Przedsięwzięcia Informatyczne w Zarządzaniu

Analityk i współczesna analiza

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

Planowanie i realizacja zadań w zespole Scrum

Priorytetyzacja przypadków testowych za pomocą macierzy

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

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

Praktyka testowania dla początkujących testerów

Automatyzacja testowania oprogramowania. Automatyzacja testowania oprogramowania 1/36

REFERAT PRACY DYPLOMOWEJ

Programowanie ekstremalne

Część I - Załącznik nr 7 do SIWZ. Warszawa. 2011r. (dane Wykonawcy) WYKAZ OSÓB, KTÓRYMI BĘDZIE DYSPONOWAŁ WYKONAWCA DO REALIZACJI ZAMÓWIENIA

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

Co to jest jest oprogramowanie? 8. Co to jest inżynieria oprogramowania? 9. Jaka jest różnica pomiędzy inżynierią oprogramowania a informatyką?

Proces projektowania i wdrożenia serwisu internetowego

Zaawansowane programowanie w C++ (PCP)

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

Metodyka wdrożenia. Bartosz Szczęch. Starszy Konsultant MS Dynamics NAV

e R gulamin Kuźni Talentów

Wstęp. Inżynieria wymagań. Plan wykładu. Wstęp. Wstęp. Wstęp. Schemat procesu pozyskiwania wymagań

Konwerter Plan testów. Jakub Rauch Tomasz Gołębiowski Adam Busch Bartosz Franaszek 1 czerwca 2008

Opis Przedmiotu Zamówienia

Dokument Detaliczny Projektu

Zarządzanie testowaniem wspierane narzędziem HP Quality Center

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

4. Wprowadzanie Scruma w ImmobilienScout Opis sytuacji

Transkrypt:

Jarosław Kuchta Wymagania jakości w Agile Programming

Wady klasycznych metod zapewnienia jakości Duży narzut na dokumentowanie Późne uzyskiwanie konkretnych rezultatów Trudność w odpowiednio wczesnym definiowaniu wymagań Utrata łączności z klientem (użytkownikiem) w fazie implementacji Brak pewności co do uzyskanej jakości Agile Programming 2

Założenia Agile Programming (1/2) Najwyższym priorytetem jest zadowolenie klienta, które można zapewnić przez szybkie i ciągłe dostarczanie działającego oprogramowania. Dopuszczalne są zmiany wymagań nawet w późnym stadium projektu. Projekt musi być dopasowywany do zmieniających się wymagań i warunków na korzyść klienta. Działające oprogramowanie jest dostarczane często, co kilka tygodni lub co kilka miesięcy. Im częściej tym lepiej. Potrzebna jest bliska, codzienna współpraca między przedstawicielami klienta i zespołem projektowym. Projekty są oparte o odpowiednio zmotywowanych deweloperów, którym trzeba zapewnić środowisko pracy i zaufać, że wykonają swoją pracę. Najbardziej odpowiednią i efektywną metodą zbierania informacji przez zespół projektowy jest bezpośrednia rozmowa. Agile Programming 3

Założenia Agile Programming (2/2) Działające oprogramowanie jest podstawową miarą postępu prac. Proces opracowywania oprogramowania powinien być stale podtrzymywany przez sponsorów, deweloperów i użytkowników. Potrzebne jest stałe zwracanie uwagi na techniczną doskonałość i dobre projektowanie Upraszczanie ma znaczenie zasadnicze Najlepsze wymagania, projekty i struktury pochodzą od samoorganizujących się zespołów. W regularnych odstępach zespół projektowy zastanawia się nad tym, jak zwiększyć swoją efektywność, następnie odpowiednio zmienia i dopasowuje swoje sposoby postępowania. Agile Programming 4

Model cyklu pracy scenariusze testowe Opowieści użytkownika nowa opowieść użytkownika błędy wymagania szybkość projektu Prototyp metafora systemu Planowanie wydań plan wydania Iteracje ostatnia wersja Testy akceptacyjne akceptacja klienta Małe wydania oszacowanie niepewne Prototyp oszacowanie potwierdzone następna iteracja Agile Programming 5

Częste tworzenie małych wydań Częste tworzenie wydań umożliwia lepsze dostosowanie się do wymagań użytkowników (uzyskanie oceny) Agile Programming 6

Podział projektu na iteracje Harmonogram opracowania jest dzielony na 1-3 tygodniowe iteracje. Utrzymuje się stałą długość iteracji. Nie planuje się zadań na przyszłość. Jeśli długość iteracji jest zagrożona, to trzeba usunąć z niej część zadań. Agile Programming 7

Planowanie iteracji Każda iteracja trwa od 1 do 3 tygodni. Na początku każdej iteracji wybiera się opowieści do implementacji. Dla każdej opowieści określa się zadania programistyczne. Wybiera się też testy akceptacyjne, które się nie powiodły w poprzedniej iteracji. Agile Programming 8

Prostota Prosty projekt zajmuje o wiele mniej czasu Jeśli coś jest skomplikowane, to trzeba to zastąpić czymś prostszym Unikaj dodawania funkcjonalności przed uwzględnieniem tego w harmonogramie. Agile Programming 9

Unikanie wczesnego dodawania funkcjonalności Należy unikać dodawania funkcjonalności, które mogą być użyte później. Jedynie 10% z nich jest rzeczywiście później wykorzystanych. Agile Programming 10

Stosowanie refaktoringu Programiści stosują dawno już napisany kod, który niekoniecznie pasuje do rozwiązania, ale działa. To rozwiązanie jest nieefektywne. Należy usuwać nadmiarowości, niewykorzystane funkcjonalności, przestarzałe projekty. Agile Programming 11

Klient jest zawsze dostępny Klient ma nie tylko pomagać zespołowi projektowemu, ale ma być jego częścią. Klient pisze opowieści użytkownika. W czasie planowania wydania klient negocjuje wybór opowieści, które mają być włączone do wydania. Klient określa szczegółowe wymagania dla programistów. Klient uczestniczy w testach funkcjonalnych. Agile Programming 12

Stosowanie standardów Kod musi być pisany zgodnie ze standardami. Łatwość czytania dla całego zespołu. Łatwość refaktoringu. Agile Programming 13

Moduły testowe Moduły testowe są kodowane w pierwszej kolejności. Umożliwia to skupienie się na zrobieniu tego, co jest rzeczywiście wymagane. Agile Programming 14

Optymalizacja Optymalizację zostawia się na koniec. Nie próbuje się zgadnąć, co będzie wąskim gardłem. To trzeba zmierzyć. Agile Programming 15

Testowanie przed rozpowszechnieniem Kod nie może być rozpowszechniony, jeśli nie przejdzie testów. To umożliwia stosowanie kolektywnej własności kodu. Agile Programming 16

Testy akceptacyjne Testy akceptacyjne są tworzone na podstawie opowieści użytkownika. Klient formułuje scenariusze testowe. Jedna opowieść może mieć wiele testów akceptacyjnych. Implementacja opowieści nie jest zakończona dopóki nie przejdzie wszystkich testów akceptacyjnych. Agile Programming 17

Wnioski Agile Programming zapewnia większą wydajność tworzenia aplikacji w stosunku do tradycyjnych, ciężkich metod (np. RUP). Agile Programming może zapewnić odpowiednią jakość produktu pod warunkiem spełnienia kluczowych założeń. Agile Programming 18

Warunki zapewnienia jakości Dobra współpraca (komunikacja) z klientami (użytkownikami końcowymi) w całym procesie wytwarzania. Formułowanie celów wydań na podstawie rzeczywistych wymagań klientów. Utrzymanie harmonogramu częstych wydań - ciągła praca nad produktem (!). Pisanie testów przed pisaniem kodu i przeprowadzanie testów przed opublikowaniem każdego wydania. Poddawanie wydań testom akceptacyjnym użytkowników. Agile Programming 19

Wady - zagrożenia Uzależnienie procesu od ludzi zmienność składu zespołu. Brak możliwości powrotu do projektu po dłuższej przerwie brak dokumentacji. Możliwość przeoczenia poważnych błędów projektowych sytuacje wyjątkowe i awaryjne. Wysokie koszty wsparcia (pielęgnacji) Agile Programming 20

Zastosowanie Proste aplikacje Projekty o niskim poziomie ryzyka Możliwość nieustannej pielęgnacji produktu Agile Programming 21

Źródła Kent Beck: Extreme Programming Explained: Embrace Change, Addison- Wesley, 1999 http://www.xprogramming.com http://www.extremeprogramming.org http://www.agile.com http://www.pairprogramming.com http://www.martinfowler.com http://www.xp123.com http://www.thoughtworks.com http://www.rolemodelsoftware.com http://www.industriallogic.com/xp http://www.agilealliance.org Agile Programming 22