6 ECTS credits
150 u studietijd

Aanbieding 1 met studiegidsnummer 4019541FNR voor alle studenten in het 2e semester met een gespecialiseerd master niveau.

Semester
2e semester
Inschrijving onder examencontract
Niet mogelijk
Beoordelingsvoet
Beoordeling (0 tot 20)
2e zittijd mogelijk
Ja
Onderwijstaal
Engels
Faculteit
Faculteit Wetenschappen en Bio-ingenieurswetensch.
Verantwoordelijke vakgroep
Computerwetenschappen
Onderwijsteam
Coen De Roover (titularis)
Onderdelen en contacturen
26 contacturen Hoorcollege
26 contacturen Werkcolleges, practica en oefeningen
Inhoud

The goal of this course is to study automated techniques for evaluating, assuring, and improving the quality of software systems.
The initial lectures cover the static and dynamic program analyses that form the foundation for these quality assurance techniques.

1. Symbolic execution for generating tests
- Static symbolic execution: symbolic program state, SMT solving
- Dynamic symbolic execution: exploration strategies, concolic testing 

2. Program querying and transformation for detecting and repairing bugs
- Program querying: pattern characteristics, logic-based program queries, precision and recall 
- Program transformation: template-based program transformations, strategic programming,  search-based software engineering

3. Data flow analysis and the monotone solver
- Fixed-point theory: lattices and soundness, data flow constraints, fixed-point algorithms 
- Monotone framework: forward v. backward and may v. must

4. Control flow and pointer analysis and the cubic solver 
- Cubic solver: set membership constraints, cubic algorithm
- Control flow analysis: CFA for lambda-calculus, call graph construction for OO languages
- Pointer analysis: Andersen’s and Steensgard’s, null pointer analysis 

5. Inter-procedural data flow analysis and the IFDS/IDE solver
- Inter-procedural control flow graphs: infeasible paths
- Context-sensitivity: cloning v. call string v. functional approach
- IFDS/IDE framework: exploded super-graph, graph reachability

6. Abstract interpretation of higher-order programs
- From operational, over collecting, to abstract semantics 
- Taint analysis of Scheme for detecting security leaks

In the final lectures, we study recent publications to understand how these techniques are evolving to cope with the complexity of contemporary software. For these lectures, students prepare a presentation themselves on which they will be graded.

The goal of the practical sessions is to gain experience in implementing these techniques effectively.

 

Studiemateriaal
Digitaal cursusmateriaal (Vereist) : Website van het vak, http://soft.vub.ac.be/~cderoove/software_quality/
Bijkomende info

Lecture slides and material for exercises are available on the learning platform.

Leerresultaten

Algemene competenties

The goals of this course are:
- Students obtain knowledge about the design of static and dynamic program analyses and their application for evaluating software quality 
- Students are familiar with recent evolutions of these foundations

Judgements and Communication

The corresponding learning results are:
w.r.t. knowledge:
- The student can describe the role of program analyses in the evaluation of software quality
- The student can recognise common dataflow analyses as instances of the monotone framework
- The student can motivate the need for and describe one pointer analysis for imperative programs
- The student can contrast different types of context-sensitivity for inter-procedural analyses
- The student can motivate the need for and describe one control flow analysis for higher-order programs

w.r.t. analysing:
- The student can recognise variations in the literature on foundational static and dynamic program analyses
- The student can motivate the existence of false positive and false negatives in the output of a program analysis 

w.r.t. evaluating:
- The student can compare static and dynamic program analysis in terms of advantages and disadvantages
- The student can evaluate the applicability of a given program analysis for a particular software quality problem 

w.r.t. creating:
- The student can independently implement logic program queries that identify instances of bug patterns and design patterns
- The student can independently extend an existing implementation of concolic testing for imperative programs
- The student can independently implement a specific dataflow analysis in a generic dataflow analysis framework
- The student is able to present a summary and comparison of recent publications in the literature 
 

Beoordelingsinformatie

De beoordeling bestaat uit volgende opdrachtcategorieën:
Examen Mondeling bepaalt 40% van het eindcijfer

Examen Schriftelijk bepaalt 60% van het eindcijfer

Binnen de categorie Examen Mondeling dient men volgende opdrachten af te werken:

  • examen andere met een wegingsfactor 1 en aldus 40% van het totale eindcijfer.

    Toelichting: 1 mondelinge synthese-presentatie over 2 recente publicaties binnen het domein (40%)

Binnen de categorie Examen Schriftelijk dient men volgende opdrachten af te werken:

  • Reports on assignments met een wegingsfactor 1 en aldus 60% van het totale eindcijfer.

    Toelichting: 3 schriftelijke rapporten over opdrachten waarin studenten kwaliteitswaarborgingstechnieken toepassen op realistische software (20% each)

Aanvullende info mbt evaluatie

Students will be graded as follows: 
3 written assignments in which students explore how well existing quality assurance techniques fare in practice on realistic software (25% each), 
1 oral presentation that synthesises the findings of at least two recent publications on the foundations of a particular family of techniques in the domain (25%).
The assignments and the oral presentation are mandatory and the deadlines are strict.  
Failing to hand in an assignment or to present implies an absent mark for the course.
 

Toegestane onvoldoende
Kijk in het aanvullend OER van je faculteit na of een toegestane onvoldoende mogelijk is voor dit opleidingsonderdeel.

Academische context

Deze aanbieding maakt deel uit van de volgende studieplannen:
Master in Applied Sciences and Engineering: Computer Science: Artificial Intelligence (enkel aangeboden in het Engels)
Master in Applied Sciences and Engineering: Computer Science: Multimedia (enkel aangeboden in het Engels)
Master in Applied Sciences and Engineering: Computer Science: Software Languages and Software Engineering (enkel aangeboden in het Engels)
Master in Applied Sciences and Engineering: Computer Science: Data Management and Analytics (enkel aangeboden in het Engels)