Sztuczna inteligencja naprawia błędy w oprogramowaniu

Fot. Geralt
Naukowcy zastosowali uczenie maszynowe do stworzenia programu, który automatycznie generuje łatki. Wykorzystali narzędzie Genesis. W efekcie automatycznie udało się naprawić 2 razy więcej błędów niż z użyciem standardowych metod.

Naukowcy z Massachusetts Institute of Technology za pomocą narzędzia Genesis przeanalizowali programy zawierające błędy. Aplikacja nauczyła się tworzyć na ich podstawie poprawki. Uczeni porównali wyniki wydajności 85 szablonów opracowanych przez Genesis z najlepszymi generatorami łatek napisanymi przez programistów. Genesis poprawiło 21 z 49 przykładów. Standardowe narzędzia do usuwania błędów poradziły sobie tylko z 11 przypadkami.

Bardzo możliwe, że w przyszłości wyniki będą jeszcze lepsze, jeśli Genesis dostanie więcej danych, na podstawie których będzie mógł uczyć się tworzyć lepsze szablony. Choć i tak wynik jest bardzo dobry, biorąc pod uwagę, że programiści już teraz mogą spędzać dwa razy mniej czasu, wyszukując błędy w swoich aplikacjach.

Program Genesis jest rozwijany przez społeczność open source (fot. CHIP)

Genesis służy do testowania i tworzenia programów. Nie jest pierwszym tego typu narzędziem, ale różni się od podobnych rozwiązań zastosowaniem algorytmów uczenia maszynowego. Daje też programistom dużą kontrolę nad generowanym kodem. Program Genesis jest rozwijany na zasadach open source i może przetwarzać kod w różnych językach programowania.

Genesis pomaga automatycznie usuwać błędy w oprogramowaniu (fot. Testbytes)

Przykładem zastosowania aplikacji są filtry, stosowane w programach graficznych. Ponieważ mogą być obliczane równolegle, za ich przetwarzanie odpowiadają głównie układy graficzne. Jednak dość trudno jest je optymalizować, ze względu na wielość możliwych kombinacji. Uczenie maszynowe Genesis pozwala zidentyfikować najlepsze poprawki algorytmu, przez co rośnie szybkość przetwarzania, jednocześnie nie zwalniając działania aplikacji.

Twórcy Genesis udoskonalili metody stosowane w narzędziach do testowania kodu. Jednym z nich jest Csmith, który służy do sprawdzania programów pisanych w języku C. Jumbo z kolei generuje kod dla Javy w trakcie działania programu, a program TestMake może wyprodukować kod w wielu językach programowania. Żaden z nich nie jest jednak tak elastyczny jak Genesis. Być może w przyszłości uczenie maszynowe sprawi, że programy będą naprawiały błędy bez udziału testerów czy nawet programistów. | CHIP

Źródło: MIT
Zamknij

Choć staramy się je ograniczać, wykorzystujemy mechanizmy takie jak ciasteczka, które pozwalają naszym partnerom na śledzenie Twojego zachowania w sieci. Dowiedz się więcej.