17
Jak uczenie maszynowe w polączeniu z dobrymi praktykami tworzenia kodu wplywają na jakość, czyli... Jaroslaw Hryszko

Im wcześniej, tym lepiej – jak uczenie maszynowe i dobre praktyki tworzenia kodu wpływają na jakość. Studium przypadku

Embed Size (px)

Citation preview

Page 1: Im wcześniej, tym lepiej – jak uczenie maszynowe i dobre praktyki tworzenia kodu wpływają na jakość. Studium przypadku

Jak uczenie maszynowe w połączeniu z dobrymi praktykami tworzenia kodu wpływają na jakość, czyli...

Jarosław Hryszko

Page 2: Im wcześniej, tym lepiej – jak uczenie maszynowe i dobre praktyki tworzenia kodu wpływają na jakość. Studium przypadku

Pole bitwy

� System kluczowy dla produkcji pojazdów

� 10 wydań do tej pory� Ściśle określone ramy czasowe dla

przygotowania nowego wydania � Długie okresy wydań� Wydawany w technologii .NET� Waterfall

Page 3: Im wcześniej, tym lepiej – jak uczenie maszynowe i dobre praktyki tworzenia kodu wpływają na jakość. Studium przypadku

Wróg

Wersja 10: 716 wykrytych defektów, w tym:

� 306 podczas testów systemowych

� 160 defektów krytycznych

� 83 retesty zakończone niepowodzeniem

Page 4: Im wcześniej, tym lepiej – jak uczenie maszynowe i dobre praktyki tworzenia kodu wpływają na jakość. Studium przypadku

Następstwa

� Dążenie do podniesienia jakości

� Żądanie podniesienia jakości

� Wysokie koszty napraw defektów

� Rosnąca frustracjazespołu testerów

Napis głosi:„Uprzejmie prosimy kolegówprogramistów o podniesieniejakości tworzonej aplikacji”

Page 5: Im wcześniej, tym lepiej – jak uczenie maszynowe i dobre praktyki tworzenia kodu wpływają na jakość. Studium przypadku

Programiści: Mamy arsenał

doskonałej broni...

...ale nie wiemy gdzie strzelać....

A czas nie jest z gumy!

Page 6: Im wcześniej, tym lepiej – jak uczenie maszynowe i dobre praktyki tworzenia kodu wpływają na jakość. Studium przypadku

Plan!

Rozpoznanie

• Wykorzystanie wersji 10 do procesu uczenia maszynowego• Predykcja obszarów defektogennych w kodzie

dla nowej wersji 11

Działanie

• Zastosowanie najlepszych praktyk przez zespół programistów w pierwszej kolejności we wskazanych obszarach

Weryfikacja

• Sprawdzimy, czy to coś dało• ...a jeśli tak, to będziemy się tym chwalić

Page 7: Im wcześniej, tym lepiej – jak uczenie maszynowe i dobre praktyki tworzenia kodu wpływają na jakość. Studium przypadku

A.I. wkracza do akcji

Zebranie danych

• Miary kodu• Log repozytorium• Defekty

Niezrówno-ważenie

klas• SMOTE

Wybór cech• Twórczość

własna

Uczenie maszynowe

• Random Forest

Page 8: Im wcześniej, tym lepiej – jak uczenie maszynowe i dobre praktyki tworzenia kodu wpływają na jakość. Studium przypadku

Wynik predykcji

Page 9: Im wcześniej, tym lepiej – jak uczenie maszynowe i dobre praktyki tworzenia kodu wpływają na jakość. Studium przypadku

Refaktoryzacja

Przepisanie kodu z zastosowaniem poniższych technik;Reguła skauta

Zasady SOLID

Zasada jednej odpowiedzialności;Zasada otwarte –zamknięte;Zasada podstawienia LiskovZasada segregacji interfejsówZasada odwrócenia zależności

Testy

Testy jednostkowe orazTest Case-Driven DevelopmentTester pisze przypadek testowy, testujący krytyczną funkcjonalnośćProgramista pisze kod tak, aby test się udał

Programiści wytaczają działa

Wzorce projektowe

Kreacyjne: Fabryka, SingletonStrukturalne: Pełnomocnik, Dekorator, FasadaCzynnościowe: Łańcuch zobowiązań, Polecenie, Strategia

Pryncypia architekturalne

Zgodność ze standardami organizacjiAutonomiczne, bądź słabo zależne od zewnętrznych modułówReguła KISSBrzytwa OckhamaWydajność, bezpieczeństwo, przenaszalność

Przeglądy kodu

Dzielenie się wiedząŚwieże spojrzenieOgranicza konfliktyUnikanie błędów (szczególnie związanych z wymaganiami)

Page 10: Im wcześniej, tym lepiej – jak uczenie maszynowe i dobre praktyki tworzenia kodu wpływają na jakość. Studium przypadku

Wyniki?

Page 11: Im wcześniej, tym lepiej – jak uczenie maszynowe i dobre praktyki tworzenia kodu wpływają na jakość. Studium przypadku

Wyniki!

Defekty w. 10 w. 11 Ró żnica

Krytyczne 162 56 -65%

Duże 188 101 -48%

Średnie 248 152 -38%

Małe 200 110 -45%

Wykryte podczastestów systemowych

306 93 -70,60%

Retesty zako ńczone niepowodzeniem

83 23 -72,30%

Page 12: Im wcześniej, tym lepiej – jak uczenie maszynowe i dobre praktyki tworzenia kodu wpływają na jakość. Studium przypadku

Przypadki wsparcia

Page 13: Im wcześniej, tym lepiej – jak uczenie maszynowe i dobre praktyki tworzenia kodu wpływają na jakość. Studium przypadku

Testy wydajności

1 2 3 4 5 6

Page 14: Im wcześniej, tym lepiej – jak uczenie maszynowe i dobre praktyki tworzenia kodu wpływają na jakość. Studium przypadku

Defekty związane z wydajnością

Defekty wykryte podczas testów wydajno ściowych

w. 10 w. 11

Krytyczne 4 0Duże 1 1Średnie 2 2Małe 1 0

Page 15: Im wcześniej, tym lepiej – jak uczenie maszynowe i dobre praktyki tworzenia kodu wpływają na jakość. Studium przypadku

Koszt zapewnienia jakości

Programowanie Testowanie Po wydaniu Całkowite QA

Page 16: Im wcześniej, tym lepiej – jak uczenie maszynowe i dobre praktyki tworzenia kodu wpływają na jakość. Studium przypadku

Koszt wdrożenia predykcji

Element Potrzebny czas

Pozyskanie narzędzia DePress 0 h

Szkolenie 4 h

Zebranie danych 3 h

Przygotowanie predykcji 1 h

RAZEM 8 h

Page 17: Im wcześniej, tym lepiej – jak uczenie maszynowe i dobre praktyki tworzenia kodu wpływają na jakość. Studium przypadku

www.defectprediction.net