Badania informatyczne nad zwiększaniem niezawodności
Projekt PADECL (Advanced program analysis using declarative languages) zajął się implementowaniem zaawansowanych algorytmów analizy programów z wykorzystaniem czysto deklaratywnych specyfikacji dla analiz wyższego poziomu i różnych języków programowania. Specyfikacje opisują przede wszystkim cel obliczeń, a nie konkretne metody ich wykonywania. Wcześniejsze prace nad specyfikacjami deklaratywnymi i metodami optymalizacji wykazały poprawę wydajności implementacji analiz wskaźników. W toku zakończonego niedawno projektu PADECL skoncentrowano się na stworzeniu efektywnych algorytmów analizy programów z wykorzystaniem języka programowania Datalog. Jest to prawdziwie deklaratywny język programowania logicznego, często używany jako język zapytań w dedukcyjnych bazach danych. Implementowanie analizy zakresu wskaźników, przepływu informacji, przepływu wyjątków i bezpieczeństwa rzutowania z wykorzystaniem platformy DOOP dla języka programowania Java pozwoliło uzyskać większą dokładność, kompletność i wydajność od innych dotychczasowych inicjatyw. W ramach projektu PADECL implementowano wysokopoziomowe analizy bezpieczeństwa, niezawodności i wydajności programów w języku Java i opracowano wstępną infrastrukturę do analizowania programów w języku JavaScript. Powodzenie wysiłków w tej dziedzinie pozwoliło dodatkowo ulepszyć samą platformę DOOP. Więcej informacji można znaleźć na stronie internetowej projektu DOOP(odnośnik otworzy się w nowym oknie). Wyniki badań opublikowano między innymi na konferencjach CC 2013 (International Conference on Compiler Construction) i PLDI 2013 (Programming Language Design and Implementation). W prestiżowych pismach branżowych zamieszczono cztery publikacje z zakresu tematycznego projektu, stworzone we współpracy z Uniwersytetem Ateńskim. Projekt PADECL stworzył wydajne, dokładne, bogate i modułowe środowisko analizy programów, stanowiące ważny krok w drodze do automatycznego rozumienia struktury programów. Wyniki projektu umożliwią tworzenie szybszego i bardziej niezawodnego oprogramowania oraz zwiększanie produktywności programistów. Będzie to mieć istotne implikacje dla wielu sektorów i przyniesie korzyści dla konkretnych narzędzi oprogramowania, zintegrowanych środowisk programistycznych, przeglądarek i detektorów błędów.