Continuous Integration i jakość kodu

Slides:



Advertisements
Podobne prezentacje
System Elektronicznego Egzaminowania
Advertisements

Agile w praktyce, czyli jak to robimy naprawdę
Inżynieria Oprogramowania
Zarządzanie konfiguracją oprogramowania

Role w zespole projektowym
Warszawa system IMS 7.0 oprogramowanie dla warsztatów i sklepów branży motoryzacyjnej Copyright by Integra Software. Wszelkie prawa zastrzeżone.
Zapanuj nad dokumentami
Nowa Jakość kontroli w biznesie Projekt: Stworzenie e- usługi w postaci systemu księgowo-kadrowego on-line przez MGA Sp. z o.o. w Toruniu jest współfinansowany.
Tomasz Smieszkoł - 15 stycznia
Projekt współfinansowany ze środków Unii Europejskiej i budżetu państwa Partnerzy projektu: Geneza i sposób realizacji projektu Mariusz Tobor VULCAN dyrektor.
Zarządzanie konfiguracją Doskonalenie Procesów Programowych Wykład 6 Copyright, 2001 © Jerzy.
Cykle życia oprogramowania
Temat: Doświadczenie z wdrożenia usług elektronicznych w województwie podlaskim w latach na przykładzie Wojewódzkiego Centrum Zarządzania Siecią
Poznańskie Centrum Superkomputerowo-Sieciowe Cezary Mazurek
Rational Unified Process
Praca Inżynierska „Analiza i projekt aplikacji informatycznej do wspomagania wybranych zadań ośrodków sportowych” Dyplomant: Marcin Iwanicki Promotor:
Dalsze elementy metodologii projektowania. Naszym celem jest...
Analiza, projekt i częściowa implementacja systemu obsługi kina
Wykład 2 Cykl życia systemu informacyjnego
C.d. wstępu do tematyki RUP
Promotor: dr.inż. Aleksandra Werner
Adam Gabryś , v1.1,
Rozkład jazdy na telefon komórkowy
Twoje narzędzie do pracy grupowej
CPL Jobs Specjaliści HR. Kim jesteśmy? CPL Jobs Sp. z o.o. to część międzynarodowej grupy CPL Resources, notowanej na irlandzkiej i angielskiej giełdzie.
Dedykowane systemy informatyczne dla przemysłu.
Modelowanie „zwinne” Piotr Pilinko.
DMS TimeFrame Software. Co to jest DMS? System zarządzania dokumentami Składowanie Specyfikowanie Indeksowanie Kontrola zawartości Kontrola dostępu Kontrola.
Continuous Integration
Agenda 1 Tailored Mobile Solutions S.A 2 Aplikacja TMS Finance 3
Największe problemy w projektach informatycznych IT Opracował: Karol Pietrzak na podstawie artykułu z SDJ/2007 IX.
WORKFLOW KLUCZEM DO MINIMALIZACJI KOSZTÓW DZIAŁANIA ORGANIZACJI
CRM GigaCon Warszawa Jarosław Żeliński
.... kreujemy nowoczesne, efektywniejsze podejście do wiedzy w biznesie.
SYSTEM DYNAMICZNEJ ANALIZY JAKOŚCI SCENARIUSZY BIZNESOWYCH Łukasz Budnik.
Asseco Poland – bezpieczny partner w biznesie
Marka Faber Consulting powstała w 1999 roku Firma działa w formie spółki z ograniczoną odpowiedzialnością Liczba konsultantów zatrudnionych w Polsce w.
Rational Unified Process Implementacja Aleksandra Reiman, gr. I-52.
Copyright (c) 2007 DGA S.A. | All rights reserved. Skuteczny i efektywny samorząd terytorialny Warszawa, 8 października 2010 r. System Przeciwdziałania.
Zarządzanie Projektami
Program do inwentaryzacji i zarządzania środkami trwałymi
Pomiary procesów programistycznych Copyright, 2002 © Jerzy R. Nawrocki Zarządzanie jakością.
Zaawansowane techniki obiektowe
Bazy i Systemy Bankowe Sp. z o.o. ul. Kasprzaka 3, 85 – 321 Bydgoszcz
Zintegrowany sterownik przycisków. Informacje podstawowe Każdy przycisk jest podłączony do sterownika za pośrednictwem dwóch przewodów, oraz dwóch linii.
Waterfall model.
Zarządzanie zagrożeniami
Agenda O Nas Ogólne informacje o Produkcie Job Manager – idealne rozwiązanie Aplikacja Webowa Aplikacja Kliencka Najnowsze zmiany.
PROINFO System zarządzania informacją o przedsięwzięciu informatycznym Seminarium dyplomowe 2004 WIiZ Politechnika Poznańska.
call center to nie tylko infolinia
Forum Pracodawców AEiI 2015 Wydział Automatyki, Elektroniki i Informatyki Gliwice, 11 marca 2015r.
Copyright © Jerzy R. Nawrocki Team Software Process Inżynieria oprogramowania II Wykład.
ZASTOSOWANIE KOMPUTEROWEGO WSPOMAGANIA W ZARZĄDZANIU JAKOŚCIĄ - METODY FMEA I QFD Politechnika Śląska, Wydział Organizacji i Zarządzania, Katedra Zarządzania.
Eksploatacja zasobów informatycznych przedsiębiorstwa.
Zarządzanie stacjami roboczymi przy wykorzystaniu urządzeń i oprogramowania KACE serii 1000, 2000, 3000 Adam Pura, IT Projekt Jacek Gralik, Quest Dystrybucja.
Kierunki rozwoju usług monitorowania Outsourcing stacji monitorowania Optymalizacja kosztów.
ManageEngine Forum 2015.
Zarządzanie wdrożeniem oprogramowania w organizacji w oparciu o metodykę ITIL Michał Majewski s4440 Praca magisterska napisana pod kierunkiem dr inż. Tomasza.
T ESTY JEDNOSTKOWE W C# Alicja Majka, A GENDA Wprowadzenie do środowiska Czym są testy jednostkowe i po co je stosować? XUnit, NUnit Pokrycie.
InMoST Wielkopolska sieć współpracy w zakresie innowacyjnych metod wytwarzania oprogramowania Termin realizacji: – Innowacyjne metody.
Techniki Informacji i Komunikacji
Agile Programming a jakość
Programowanie Obiektowe – Wykład 6
Jak 5 narzędzi złożyło się na sukces projektu Hurtowni Danych
Zarządzanie projektami informatycznymi
Grzegorz Chodak Wykład
Zarządzanie projektami
- Krajowe Repozytorium Obiektów Nauki i Kultury
Zapis prezentacji:

Continuous Integration i jakość kodu Michał Prajs

Agenda

Michał Prajs SMT Software Prowadzący Continuous Integration Jenkins CI Statyczna analiza kodu Checkstyle Pokrycie kodu testami jednostkowymi Cobertura

SMT Software Na rynku od 2002 roku Ponad 500 specjalistów IT 7 oddziałów na terenie kraju: Wrocław (siedziba główna), Warszawa, Poznań, Kraków, Gliwice, Katowice, Białystok Oddziały w Holandii, Francji, Wielkiej Brytanii Część grupy kapitałowej Grupa SMT S.A. notowanej na GPW Outsourcing IT Specjaliści Zespoły Usługi zarządzane Projekty informatyczne Dedykowane Online Mobilne Testy i audyty

Michał Prajs Współpracuje z SMT od ponad dwóch lat Programista i techniczny leader zespołu Specjalista Javy i frameworków na niej opartych Wprowadza do projektów praktyki pozwalające na łatwy rozwój i utrzymanie oprogramowania

Continuous Integration

Firma software’owa Czym się zajmuje? Kto tworzy software? Jak?

Zamierzchłe czasy Rozdzielamy projekt na zadania niezależne Integrujemy części wytworzone przez zespoły Same wady: Konieczność wczesnego zdefiniowania punktów styku między modułami Trudność wprowadzania zmian – mogą dotyczyć kilku zespołów Czasochłonność integracji i wysokie prawdopodobieństwo porażki

Obecnie, ale bez CI (z wykorzystaniem SCM) Rozdzielamy zadania tak jak poprzednio Centralne repozytorium kodu Kilka wad zostało Mała odporność projektu na zmiany Nadal trzeba zintegrować moduły

Continuous Integration Częste zmiany wymagań …a nawet samej architektury systemu Wybredni klienci Korzyści: Częste budowanie całego systemu Każde wgranie kodu do repozytorium sprawdzane (serwer CI robi update przed każdym buildem) Automatyczne uruchamianie testów jednostkowych i integracyjnych Gotowe artefakty na testy akceptacyjne, gotowy produkt Prowadzenie metryk „U mnie działa”? Pfffff…..

Build CI Sukces Archiwizacja kodu Archiwizacja wytworzonych artefaktów Statystyki metryk Porażka Informacja dla zespołu Poprawki na gorąco

No to do dzieła Repozytorium (SVN, CVS, TFS, GitHub, itp.) Narzędzie do budowania (Maven, Ant) Testy jednostkowe, integracyjne (JUnit, Mockito, PowerMock) Analiza statyczna kodu (Checkstyle, PMD) Serwer CI (Jenkins, Apache CI) Archiwizacja kodu Archiwizacja artefaktów Zadania powykonawcze (auto deploy)

Analiza statyczna kodu Checkstyle

Analiza statyczna kodu „Czystość kodu” Jednolity kod Czytelność kodu Rozszerzalność Udokumentowany kod Łatwość utrzymania/serwisowania Wskazuje miejsca nadające się do refactoringu

Checkstyle Konfiguracja kontroli standardowych Integracja z narzędziami do budowania (Maven plugin) Integracja z narzędziami do programowania (Eclipse plugin) Integracja z CI (Jenkins plugin) 133 standardowe czujki

Design klasy VisibilityModifier Wymusza enkapsulację FinalClass Wymusza modyfikator final w klasie, która ma tylko prywatne konstruktory InterfaceIsType Interface nie powinien jedynie definiować stałych HideUtilityClassConstructor Instancja takiej klasy nie ma sensu DesignForExtension Wymusza styl programowania, gdzie klasy nadrzędne pozostawiają miejsca, które mogą być nadpisane przez klasy podrzędne, czyli nieprywatna, niestatyczna metoda w klasie nadrzędnej musi być: Abstrakcyjna lub Finalna lub Mieć pustą implementację

Design klasy cd. MutableException Wykrywa gdy wyjątek może zmienić swój stan w trakcie cyklu życia ThrowsCount Gdy metoda rzuca wyjątki z różnych grup, prowadzi to do złych praktyk, jak łapanie ogólnych wyjątków, jak catch (Exception) InnerTypeLast

Metryki BooleanExpressionComplexity ClassDataAbstractionCoupling ClassFanOutComplexity CyclomaticComplexity NPathComplexity JavaNCSS

Pozostałe grupy Konwencje nazewnictwa Wymuszenie rozmiaru pliku/klasy/metody/linii Długość linii Ilość parametrów metody Polityka pustych znaków Wyrównanie

Testy jednostkowe

Testy jednostkowe Test Driven Development Testy jednostkowe Mockowanie obiektów Testy integracyjne

Motywacja Eliminacja błędów już podczas programowania Ograniczenie czasu potrzebnego na bugfixing Poprawność modyfikacji

Pokrycie kodu Procent w jakim kod jest sprawdzony przez testy jednostkowe Wszystkie rozgałęzienia Sytuacje wyjątkowe

Pytania? „Wolałbyś walczyć z kaczką wielkości konia, czy ze stoma końmi wielkości kaczki?”