Nowe narzędzie do programowania maszynowego wykrywa błędy w kodzie

20 0
Intel zaprezentował system ControlFlag służący do badań w dziedzinie programowania maszynowego, który autonomicznie wykrywa błędy w kodzie programów. Ten nowatorski system typu self-supervised zapowiada się korzystnie w kontekście wydajnego narzędzia, które pomoże programistom w pracochłonnym debugowaniu. Podczas wstępnych testów, na podstawie ponad miliarda nieetykietowanych linii kodu o jakości produkcyjnej system ControlFlag nauczył się rozpoznawać nowe błędy.

W świecie, którego funkcjonowanie coraz silniej zależy od oprogramowania, programiści poświęcają nieproporcjonalnie dużo czasu na debugowanie zamiast na tworzenie kodu. Szacuje się, że koszty debugowania kodu stanowią 50% rocznych wydatków branży IT wynoszących 1,25 biliona USD.

Przewiduje się, że debugowanie będzie coraz silniej wpływać na pracę programistów oraz na całą branżę. Wkraczamy w erę architektur heterogenicznych, których wyznacznikiem jest stosowanie specjalistycznych zespołów procesorów, w celu przetwarzania ogromnych ilości danych. Systemy te wymagają oprogramowania o stale rosnącej większej złożoności, co przekłada się na rosnące prawdopodobieństwo błędów. Ponadto, coraz trudniej jest o programistów potrafiących prawidłowo, efektywnie i bezpiecznie tworzyć aplikacje dla różnych platform sprzętowych. Z tego powodu w kodzie mogą pojawiać się nowe, trudne do wykrycia błędy.

W pełni gotowy system ControlFlag pozwoli na zautomatyzowanie żmudnych prac związanych z tworzeniem oprogramowania, takich jak testowanie, monitorowanie i debugowanie, a tym samym pozwoli złagodzić zagrożenia powodowane przez błędy. Dzięki temu programiści będą efektywniej wykonywać swoje zadania i zyskają więcej czasu na kreatywność, a także zostanie obniżony koszt jednego z najdroższych etapów prac nad oprogramowaniem.

Zdolność systemu ControlFlag do wykrywania błędów jest oparta na programowaniu maszynowym, które jest połączeniem uczenia maszynowego, kompilatorów, metod formalnych oraz języków programowania i systemów komputerowych

System ControlFlag działa wykorzystuje także wykrywanie anomalii. Obserwując otaczający świat, ludzie uczą się pewnych wzorców służących do określania tego, co można uznać za standardowe. Analogicznie, na podstawie zweryfikowanych przykładów system ControlFlag uczy się prawidłowych sekwencji kodu. Dzięki temu potrafi rozpoznawać w kodzie anomalie, które mogą skutkować błędem. Co więcej, może wykrywać takie anomalie niezależnie od języka oprogramowania.

W ControlFlag zastosowano koncepcję rozpoznawania wzorców opartą na uczeniu nienadzorowanym, której główną zaletą jest zdolność do samodzielnego dostosowywania się do stylu programisty. Podobnie jak czytelnicy rozpoznają różnice między pełnymi słowami a skrótami, tak system ControlFlag może wykrywać różnice stylistyczne w języku programowania wykorzystując ograniczoną ilości danych wejściowych dla narzędzi kontrolnych.

Narzędzie uczy się identyfikować i etykietować takie konwencje stylistyczne, aby na podstawie swoich wniosków dostosowywać rozpoznawanie błędów oraz rekomendowane poprawki. W ten sposób zostaje zminimalizowana liczba fałszywie rozpoznawanych błędów, które mogą wynikać z różnic stylistycznych między dwoma zespołami programistów.

System ControlFlag wykazał się zdolnością do wykrywania ukrytych błędów w kodzie o jakości produkcyjnej, który został uprzednio zweryfikowany przez programistów. Na przykład, gdy system ControlFlag analizował kod wykorzystujący bibliotekę cURL (dostępną na licencji open source i szeroko stosowaną do pobierania plików z internetu), wykrył dotychczas nierozpoznaną anomalię i zasygnalizował programistom, że jest potrzebne lepsze rozwiązanie.

Intel rozpoczął też wewnętrzne testy systemu ControlFlag obejmujące wykrywanie błędów podczas prac nad własnym oprogramowaniem i oprogramowaniem układowym. Stanowi to kluczowy element projektu Rapid Analysis for Developers Intela, którego celem jest przyspieszenie pracy programistów dzięki eksperckiemu wsparciu.

Related Post

Leave a comment

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *