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

Podobne dokumenty
SYSTEMY INFORMATYCZNE ćwiczenia praktyczne

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

Metodyki zwinne wytwarzania oprogramowania

Programowanie zwinne

Jak być agile w projekcie utrzymaniowym? JOANNA SIEMIŃSKA

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

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

Metodyki programowania. Tomasz Kaszuba 2015

Programowanie zespołowe

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

Programowanie Zespołowe

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

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

Programowanie Zespołowe

Agile Project Management

Egzamin / zaliczenie na ocenę*

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

Podejście zwinne do zarządzania projektami

Michał Olejnik. 22 grudnia 2009

Wskazówki projektowe. Programowanie Obiektowe Mateusz Cicheński

Lekkie metodyki. tworzenia oprogramowania

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

PRZEWODNIK PO PRZEDMIOCIE

Planowanie i realizacja zadań w zespole Scrum

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

Podstawy modelowania programów Kod przedmiotu

Dobry Product Backlog Oferta szkolenia dla Product Ownerów

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

Estimation and planing. Marek Majchrzak, Andrzej Bednarz Wroclaw,

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

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

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

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

TESTOWANIE OPROGRAMOWANIA

Metody wytwarzania oprogramowania. Metody wytwarzania oprogramowania 1/31

Scaling Scrum with SAFe. Małgorzata Czerwińska

Jak uchronić architekturę i wymagania przed chaosem? Warszawa, 27 stycznia 2016 roku

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

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/17

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

Modele cyklu życia oprogramowania

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

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

Oceny z prezentacji INKU011S. Zofia Kruczkiewicz

Zarządzanie projektami. Porównanie podstawowych metodyk

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/17

SCRUM. Metodyka prowadzenia projektów. Na podstawie prezentacji B. Kuka i W. Sidora

Techniki komputerowe w robotyce

Wprowadzenie do metodyki SCRUM. mgr inż. Remigiusz Samborski Instytut Informatyki Politechnika Wrocławska

Zaliczenie. Zaliczenie na ocenę Dla grupy kursów zaznaczyć X kurs końcowy (X) Liczba punktów ECTS 3 w tym liczba punktów ECTS

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

Bezpieczeństwo systemów internetowych

Scrum w praktyce. Michał Piórek

Zakres wykładu. Podstawy InŜynierii Oprogramowania

Scrum. Zwinna metodyka prowadzenia projektów

Wykład 1 Inżynieria Oprogramowania

Inżynieria oprogramowania (Software Engineering)

Szkolenie Scrum w projektach IT (Agile)

Agile Software Development. Zastosowanie metod Scrum i Kanban.

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

Ewolucyjna architektura

Szkolenia zgodne z sylabusem ISTQB.

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

Etapy życia oprogramowania

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

Rok akademicki: 2013/2014 Kod: EEL s Punkty ECTS: 4. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

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

Cykle życia systemu informatycznego

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

Testujemy dedykowanymi zasobami (ang. agile testers)

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

Opisy szkoleń dla certyfikatów Agile Scrum.

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

Oferta szkoleń firmy Code Sprinters

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

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

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

Inżynieria Oprogramowania w Praktyce

Zasady organizacji projektów informatycznych

INŻYNIERIA OPROGRAMOWANIA

Zagadnienia. Inżynieria Oprogramowania

Tworzenie gier na urządzenia mobilne

INŻYNIERIA OPROGRAMOWANIA LAB 1

Program szkolenia: Jenkins - Continuous Integration

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

Testy automatyczne. Korzystające z junit

Projektowanie systemów informatycznych. wykład 6

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

Wprowadzenie do Behaviordriven

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

Feature Driven Development

Zasadnicze czynności w zarządzaniu projektem, fazy cyklu życia systemu informatycznego. Modele cyklu życia - część 1

Analityk i współczesna analiza

SCRUM - FRAMEWORK DO ZWINNEGO PROWADZENIA PROJEKTÓW. Ilona Ławniczak-Tomczak

Zagadnienia. Inżynieria Oprogramowania

DLACZEGO TO DZIAŁA? 21. marca 2012r.

Programowanie Zespołowe

Wszystkie problemy leżą w testach. ForProgress spółka z ograniczoną odpowiedzialnością sp.k.

Tematy prac magisterskich Rok akademicki 2013/2014

Transkrypt:

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

Ale zanim zaczniemy... https://www.adbglobal.com/adb-tech-talk/ Wtorek, 24 X 2017, 18:00 w Filharmonii Zielonogórskiej

Kto pracuje nad projektem? Nad projektem software owym pracuje wiele osób o różnych funkcjach (interesariusze, stakeholders): Przedstawiciele klienta Kierownicy projektu (project managers) Analitycy Programiści Testerzy (grupy QC)

Fazy projektu informatycznego Planowanie (specyfikacja wymagań requirements) Analiza systemu czyli opis działania Projekt czyli architektura systemu Implementacja Testowanie Wdrożenie i utrzymanie (maintenance)... to model kaskadowy. Prosty, zrozumiały i nie do odtworzenia w świecie rzeczywistym.

Metodyka Agile - teoria Agile to zestaw metod, które prowadzą do realizacji projektu programistycznego. Podstawa teoretyczna to Agile Manifesto z 2001 roku: Ludzie i ich współpraca są ważniejsze niż narzędzia i procesy Działające oprogramowanie jest ważniejsze niż dokumentacja Istotna jest współpraca z klientem, a nie negocjacje Plan nie jest świętością liczy się odpowiedź na zmiany

Metodyka Agile - praktyka W praktyce, manifest realizowany jest poprzez: iteracyjną metody pracy nad małymi etapami, małe grup skupiające ludzi o różnych funkcjach, klucz to zmotywowani ludzie, organizujący się sami i obdarzeni zaufaniem częste dostarczanie działającego oprogramowania, ciągłą obecnością przedstawiciela klienta, użycie jasnego obrazowania postępu prac, częste, nieformalne spotkania grupy pozwalające na natychmiastową reakcję na problemy wolny dobór narzędzi zasada it depends

JIRA narzędzie Agile

Issue podstawa pracy z JIRĄ

Cykl życia issue

Scrum Technika agile służąca do organizowania pracy grupy programistycznej: Pracę gromadzi się w backlogu Iteracje są krótkie i o ustalonej długości Na końcu iteracji dostępny jest działający produkt oddawany klientowi do oceny

Scrum cykl pracy W ramach pojedyńczej iteracji (sprintu) występują etapy: planowanie codzienny scrum: mniej niż kwadrans praca przegląd (review): przegląd + prezentacja oprogramowania Retrospektywa: refleksja + poprawa scrum nad scrumami (Scrum of Scrums): spotkanie koordynujące ambasadorów kilku grup

Scrum Sprint Cechy dobrego sprintu: jasno definiuje co robimy; ogranicza ilość zadań, nad którymi pracujemy (WIP work in progress); jest krótki i niezmienny (zwykle 2 tyg. lub miesiąc); jeśli zadania nie zostaną wykonane, wracają do backlogu

JIRA Backlog

Do poczytania... R. C. Martin i M. Martin, Agile. Programowanie zwinne: zasady, wzorce i praktyki zwinnego wytwarzania oprogramowania w C# Strona domowa JIRY: https://www.atlassian.com/software/jira K. S. Rubin, Essential Scrum: A Practical Guide to the Most Popular Agile Process H. Kniberg, Lean from the Trenches: Managing Large-Scale Projects with Kanban

Jak pisać kod? Podstawowe zasady pisania kodu: Kod piszemy raz, ale czytamy wiele razy Należy pamiętać o tym, że widzą go też inni Należy stosować się do standardów kodowania języka/organizacji przydatne będą narzędzia FxCop, JsLint itp. Istnieje wiele narzędzi wspomogających wykrywanie złych praktyk (wysokiej złożoności cyklomatycznej, copy-paste, martwych ścieżek itd.) Poznaj swoje IDE

Przegląd kodu Zespoły programistyczne bardzo często stosują przegląd kodu: Dzięki niemu wykrywa się trochę bugów Sprawdzenie czy kod jest do utrzymania/czytelny Więcej osób zna tajniki każdej części (tzw. bus effect) Możemy się uczyć od siebie nawzajem Powinien on mieć miejsce często Należy pamiętać o czynniku afektywnym

Czysty kod Co oznacza czysty kod? Logiczne grupowanie kodu Zachowanie zasad formatowania (wcięcia!) Dobre komentarze (nieoczywiste!) Jasne nazewnictwo metod, zmiennych, klas... Klasy powinny spełniać zasady SRP I SOLID

Zachowywanie wcięcia Zachowujcie wcięcia! if (is_array($users)) { echo "<table border>"; foreach ($users as $user) { $sr = ldap_search($ds, $basedn, "uid=".$user['login'], array('o')); $info = ldap_get_entries($ds, $sr); $country = strlen($info[0]['o'][0])>0? $info[0]['o'][0] : 'Poland'; echo $country; } echo "</table>"; }

Nie tylko czysty kod Inne zagadnienia związane z jakością kodu: Testy automatyczne Integracja ciągła (Continuous Integration) Refaktoryzacja

Przykład testu jednostkowego [TestFixture] public class CalculatorTests { [Test] public void TestFunctioning() { Calculator calculator = new Calculator(); calculator.enter(2); calculator.pressplus(); calculator.enter(2); calculator.pressequals(); Assert.AreEqual(4, calculator.display); } }

Do poczytania R.C. Martin, Czysty kod. Podręcznik dobrego programisty S. McConnell, Code Complete: A Practical Handbook of Software Construction, Second Edition A. Hunt i D. Thomas, JUnit. Pragmatyczne testy jednostkowe w Javie M. Fowler i inni, Refaktoryzacja. Ulepszanie struktury istniejącego kodu Martin Fowler o integracji ciągłej http://martinfowler.com/articles/continuousintegration.html

Koniec Dziękuję za uwagę