De studerende vil kunne forstå og anvende basale program analyse formalismer og vil kunne konstruere og anvende analyse værktøjer og teknikker der understøttes af disse formalismer.
Læringsmål:
En studerende, der fuldt ud har opfyldt kursets mål, vil kunne:
forklare de basale begreber introduceret i kurset;
forklare konkrete analyser og deres anvendelse på simple programmer;
forklare målet med analyse frameworks og deres instanser;
formulere nye analyser som varianter af eksisterende analyser og kategorisere dem i de relevante analyse frameworks;
forklare semantiske såvel som algoritmiske aspekter relateret til konkrete analyser;
designe og konstruere et generisk software værktøj der understøtter analyser baseret på analyse frameworks;
designe og motivere en sekvens af eksperimenter som benytter det konstruerede værktøj og kunne fortolke de opnåede resultater
opnå ovennævnte resultater som del af et gruppe arbejde men på en sådan måde at de individuelle bidrag kan identificeres; og
kommunikere de opnåede resultater på en klar og præcis måde i en standard form for teknisk rapport.
Kursusindhold:
Kurset dækker tre hoved emner: (1) Data flow analyse: denne den dækker klassiske intra-procedurale analyser og deres formulering som monotone frameworks. (2) Algorithmer: denne del dækker work-list algoritmer som udnytter den grafiske struktur af de constraint systemer som udspringer af analyse problemer. (3) Flow logic: denne del introducerer flow logic tilgangsvinklen til beskrivelse af analyser og de tilknyttede teknikker til implementationer baseret på logiske formalismer.
De studerende vil løse teoretiske opgaver såvel som programmerings opgaver.
Litteratur:
Kurset er baseret på "Principles of Program Analysis" af F. Nielson, H. Riis Nielson og C. Hankin (Springer, 1999, ISBN 3-540-65410-0)