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

Podobne dokumenty
Testowanie Akceptacyjne

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

Zagadnienia. Inżynieria Oprogramowania

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

Programowanie Zespołowe

Wzorce projektowe i refaktoryzacja

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

Zagadnienia. Inżynieria Oprogramowania

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

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

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

Praca z kodem legacy : strategie, naprawa błędów, refaktoryzacja oraz

Marcin Kucięba Agile Development

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

Feature Driven Development

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

Metody wytwarzania oprogramowania. Metody wytwarzania oprogramowania 1/31

Testy poziom po poziomie

Program szkolenia: Continuous Integration i Git

UPEDU: Implementacja (ang. Implementation discipline)

Wskazówki projektowe. Programowanie Obiektowe Mateusz Cicheński

Michał Olejnik. 22 grudnia 2009

CI/CD - CO TO? PO CO? JAK?

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

Program szkolenia: Wzorce projektowe i ich implementacja w C# oraz testowanie automatyczne

Testowanie w procesie Scrum

Continuous Integration i jakość kodu. Michał Prajs

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

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

Program szkolenia: Test Driven Development (TDD) using Spock or JUnit 5

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

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

Projektowanie zorientowane na uŝytkownika

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

Agile Project Management

Metodyki programowania. Tomasz Kaszuba 2015

Etapy życia oprogramowania

Metodyki zwinne wytwarzania oprogramowania

Adaptywny kod : zwinne programowanie, wzorce projektowe i SOLID-ne zasady / Gary McLean Hall. Gliwice, cop Spis treści

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

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

Lekkie metodyki. tworzenia oprogramowania

Tworzenie gier na urządzenia mobilne

Wprowadzenie do programowania aplikacji mobilnych

Wytwórstwo oprogramowania. michał możdżonek

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

Tester oprogramowania 2014/15 Tematy prac dyplomowych

Programowanie zwinne

Program szkolenia: Receptury testowania automatycznego - problemy, strategie, taktyki, techniki, narzędzia

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

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

Opis metodyki i procesu produkcji oprogramowania

Techniki efektywnego testowania kodu dla programistów Java (Spock

Rok akademicki: 2017/2018 Kod: IIN s Punkty ECTS: 2. Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne

Wprowadzenie do Behaviordriven

PYTANIA PRÓBNE DO EGZAMINU NA CERTYFIKAT ZAAWANSOWANY REQB KLUCZ ODPOWIEDZI. Część DODATEK

Program szkolenia: JavaScript Craftsmanship

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

Open Source w służbie developerom

Test-Driven Development

Testowanie oprogramowania. Piotr Ciskowski

Weryfikacja i walidacja. Metody testowania systemów informatycznych

LEKKIE METODOLOGIE WYTWARZANIA OPROGRAMOWANIA

Warsztaty szkoleniowe. Technologia SafetyLon w systemach związanych z bezpieczeństwem funkcjonalnym Narzędzia SafetyLon Moduł 4.5.

Wykład 1 Inżynieria Oprogramowania

REFERAT PRACY DYPLOMOWEJ

JUnit TESTY JEDNOSTKOWE. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska

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

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2011/2012

Programowanie zespołowe

Projektowanie systemów informatycznych. Roman Simiński programowanie.siminskionline.pl. Cykl życia systemu informatycznego

PHP revisited - odświerzenie spojrzenia na programowanie w PHP

Bazy i Systemy Bankowe Sp. z o.o. ul. Kasprzaka 3, Bydgoszcz

INŻYNIERIA OPROGRAMOWANIA LAB 1

Modele cyklu życia oprogramowania

Test-driven development na przykładzie funkcji matematycznej

Metodyki zwinne AGILE

Testowanie oprogramowania w środowisku IBM Rational Software Architect

Jarosław Kuchta. Projektowanie Aplikacji Internetowych. Wprowadzenie

PROJEKTOWANIE. kodowanie implementacja. PROJEKT most pomiędzy specyfikowaniem a kodowaniem

Zwinne metodyki tworzenia oprogramowania. Programowanie ekstremalne

METODY PROGRAMOWANIA

Zaawansowane programowanie w języku C++

Cezary ORŁOWSKI, Tomasz DERĘGOWSKI, Miłosz KURZAWSKI, Artur ZIÓŁKOWSKI

Sekcja I: Instytucja zamawiająca/podmiot zamawiający

Programowanie zespołowe

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

RAPORT KOŃCOWY PROJEKTU

Testowanie oprogramowania

Java a średni (?) projekt informatyczny

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

Egzamin / zaliczenie na ocenę*

SYSTEMY INFORMATYCZNE ćwiczenia praktyczne

Maciej Oleksy Zenon Matuszyk

Session Based Testing Czyli eksploracyjne testowanie w sesjach. Karolina Bilewska PapryQArz

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

Charakterystyka oprogramowania obiektowego

Kod doskonały : jak tworzyć oprogramowanie pozbawione błędów / Steve McConnell. Gliwice, cop Spis treści. Wstęp 15.

Transkrypt:

szkolenia pod drzewem Wybrane Techniki XP 1.00.00 bnd

Wybrane techniki XP współwłasność kodu źródłowego (collective code ownership) częsta/ciągła integracja (continuous integration) programowanie w parach (pair programming) Test-Driven Development refaktoryzacja (refactoring) testy akceptacyjne (acceptance tests) standard kodowania (coding standard)

Współwłasność kodu źródłowego jedno, wspólne dla całego zespołu repozytorium plików nikt w zespole nie posiada wyłączności na modyfikowanie danego fragmentu kodu wszyscy w zespole mają prawo pracować nad wszystkim kaŝdy ma prawo modyfikować (rozbudowywać/usuwać/refaktorować) czyjkolwiek kod

Częsta (ciągła?) integracja jedno, wspólne dla całego zespołu, repozytorium kodu wspólna strategia budowania (configuration management) kaŝda osoba w projekcie integruje swoje zmiany przynajmniej raz dziennie wielokrotna integracja na skalę zespołu w ciągu kaŝdego dnia kaŝda integracja automatycznie wyzwala proces kompilacji, budowy, wykonania testów jednostkowych i integracyjnych oraz (być moŝe) wdroŝenia (instalacji) w środowisku integracyjnym (zbliŝonym do produkcyjnego) wymusza pracę z małymi fragmentami kodu zapobiega syndromowi a mnie działa, mnie się komplikuje etc. wyniki integracji (raport błędów) rozsyłane są do całej grupy (moŝna szybko napiętnować ofiary którym udało się zepsuć builda) piw... pączki dla całego zespołu implementacja jednej z podstawowych zasad Lean Thinking - stop the line

Programowanie w parach narzędzie przezwycięŝania trudności oraz szybkiego wykrywania czeskich błędów narzędzie pozwalające utrzymać prosty design i czytelność kodu narzędzie edukacyjne jeśli chodzi o techniki programistyczne i znajomość systemu wzmacnia poczucie współwłasności kody źródłowego alternatywna w stosunku do przeglądów kodu metoda zapewnienia wysokiej jakości kodu nie naleŝy zmuszać do programowania w parach, natomiast bardzo ostroŝnie naleŝy dobierać kompetencje i doświadczenie osób pracujących w parze naleŝy często zmieniać role (nawigator-kierowca) w parze i generalnie partnerów ;)

Test-Driven Development Acceptance Test-Driven Development prowadzą implementację funkcjonalności podczas iteracji; przygotowywane na początku iteracji, uporządkowywane w trakcie Unit Test-Driven Development prowadzą programistę podczas implementacji; przygotowywane tuŝ przed implementacją; duŝa ilość małych iteracji (test kod refaktoryzacja) w zamyśle TDD jest narzędziem słuŝącym do projektowania, w dłuŝszej perspektywie prowadzi do powstania i wysokiego pokrycia newralgicznego kodu testami automatycznymi ogólny schemat postępowania: Red Green Refactor technika zapobiega zjawisku cięcia po testach, kod produkcyjny nie powstaje jeśli nie ma dla niego testu integracja z repozytorium nie zachodzi gdy odpowiednia pula testów nie przechodzi ułatwia refaktoryzację czytelny kod i projekt (najświeŝsza wersja projektu jest tylko i wyłącznie w kodzie) technika trudna koncepcyjnie i technicznie (nie kaŝdy element systemu moŝna testować w ten sposób; szczególnie trudne jest implementowanie w ten sposób zmian w istniejącym przed wprowadzeniem tej techniki kodzie)

Refaktoryzacja i wzorce projektowe zmiana struktury kodu źródłowego bez zmiany funkcjonalności (projektowanie w trakcie kodowania, pielęgnacja) eliminowanie zduplikowanego kodu (w tym błędów typu copy-paste), stosowanie wzorców projektowych utrzymanie czytelności kodu w dłuŝszej perspektywie obniŝenie kosztów implementacji nowych funkcjonalności i utrzymania konieczne wysokie pokrycie testami uwaga na syndrom rozsypanego przez kilka dni buildu z powodu refaktorowania i refaktorowanie dla samego refaktorowania

Testy akceptacyjne forma walidacji czy wymagania zostały zaimplementowane tak jak spodziewał się tego klient (sposób na stwierdzenie czy wytworzyliśmy właściwy produkt) często stanowią uzupełnienie wymagań zwiększają świadomość biznesową w zespole pozwalają zrozumieć kontekst w jakim dana funkcjonalność będzie działała pozwalają wyciągnąć na światło dzienne i zweryfikować/skonfrontować niejawne załoŝenia i oczekiwania (poczynione zarówno przez klienta jak i zespół deweloperski) prowadzą implementację w odpowiednią stronę stanowią formalny sposób oceny funkcjonalności przez klienta (jako element definicji gotowości produkcyjnej ) uwzględniają wymagania niefunkcjonalne

Standard kodowania wspólny dla zespołu reguły i schemat nazewnictwa klas, interfejsów, metod, zmiennych etc. wspólny dla zespołu wygląd kodu źródłowego (wcięcia, uŝycie spacji/tabów etc.) wspólne dla zespołu podejście do projektowania w tym reguły stosowania wzorców projektowych wspólne dla zespołu reguły testowania (kiedy jakie testy tworzyć) moŝna zastosować automat do wymuszenia standardu kodowania zwiększona czytelności i wzmocniona współwłasność kodu źródłowego moŝe powodować silny dyskomfort u programistów artystów/solistów

Extreme Programming Explained: Embrace Change, Kent Beck Refactoring: Improving the Design of Existing Code, Martin Fowler Refactoring to Patterns, Joshua Kerievsky Scrum and XP from the Trenches, Henrik Kniberg Test-Driven Development by Example, Kent Beck * http://pligg.scrum-on.com/search.php?search=continuous+integration&tag=true http://pligg.scrum-on.com/search.php?search=fitnesse&tag=true http://www.martinfowler.com/articles/continuousintegration.html http://martinfowler.com/bliki/refactoringmalapropism.html http://cruisecontrol.sourceforge.net/ http://www.jetbrains.com/teamcity/ http://luntbuild.javaforge.com/ http://hudson.dev.java.net/ http://code.google.com/p/mockito/ http://fitnesse.org/