Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Continuous Integration i jakość kodu Michał Prajs.

Podobne prezentacje


Prezentacja na temat: "Continuous Integration i jakość kodu Michał Prajs."— Zapis prezentacji:

1 Continuous Integration i jakość kodu Michał Prajs

2 Agenda

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

4 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

5 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

6 Continuous Integration

7 Firma softwareowa Czym się zajmuje? Kto tworzy software? Jak?

8 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

9 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

10 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…..

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

12 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)

13 Analiza statyczna kodu Checkstyle

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

15 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

16 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ę

17 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

18 Metryki BooleanExpressionComplexity ClassDataAbstractionCoupling ClassFanOutComplexity CyclomaticComplexity NPathComplexity JavaNCSS

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

20 Testy jednostkowe

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

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

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

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

25 Dywizja Południe SMT Software Spółka z ograniczoną odpowiedzialnością SKA ul. Piłsudskiego Wrocław tel fax Dziękujemy za uwagę Wrocław WarszawaPoznańKraków Gliwice Katowice Białystok Dywizja Centrum SMT Software Spółka z ograniczoną odpowiedzialnością SKA ul. Jutrzenki Warszawa tel fax


Pobierz ppt "Continuous Integration i jakość kodu Michał Prajs."

Podobne prezentacje


Reklamy Google