Search for contacts, projects,
courses and publications

Software Analysis

Description

Developing software that behaves as expected is challenging not just in practice but due to the intrinsic complexity of analyzing software properties automatically. Software analysis offers techniques that can work around these hurdles – guaranteeing correctness, or helping find incorrect behavior. This course describes software analysis techniques, highlights their theoretical underpinnings, and presents tools that make them available in practice to the working software engineer. The presentation includes techniques spanning different levels of correctness guarantees, automation, and applicability. The main topics covered are: axiomatic semantics and deductive verification; static analysis and abstract interpretation; predicate abstraction; and dynamic inference. The course includes assignments where students try out open-source software analysis tools in practice – understanding the trade-offs involved in making software verification technology applicable in realistic settings.

 

 

REFERENCES

  • M. Huth, M. Ryan: Logic in computer science. 2nd edition, Cambridge University Press, 2004
  • F. Nielson, H. R. Nielson, C. Hankin: Principles of program analysis. Springer, 2004
  • A. R. Bradley, Z. Manna: The calculus of computation. Springer, 2007

People

 

Furia C. A.

Course director

Additional information

Semester
Spring
Academic year
2018-2019
ECTS
6
Language
English
Education
Master of Science in Software & Data Engineering, Core course, Lecture, 1st year