Albert Albiol, Elvira and Arenas Sánchez, Purificación and Genaim, Samir and Gomez Zamalloa, Miguel and Puebla Sánchez, Alvaro Germán and Ramirez Deantes, Diana and Zanardini, Damiano and Roman, Groman
Termination and Cost Analysis with COSTA and its User Interfaces.
In: "IX Jornadas sobre Programación y Lenguajes (PROLE '09). IX Spanish Conference on Programming and Languages (PROLE 2009)", 09/09/2009 - 11/09/2009, San Sebastian, España. ISBN ISSN 1571-0661.
COSTA is a static analyzer for Java bytecode which is able to infer cost and termination information for large classes of programs. The analyzer takes as input a program and a resource of interest, in the form of a cost model, and aims at obtaining an upper bound on the execution cost with respect to the resource and at proving program termination. The costa system has reached a considerable degree of maturity in that (1) it includes state-of-the-art techniques for statically estimating the resource consumption and the termination behavior of programs, plus a number of specialized techniques which are required for achieving accurate results in the context of object-oriented programs, such as handling numeric fields in value analysis; (2) it provides several nontrivial notions of cost (resource consumption) including, in addition to the number of execution steps, the amount of memory allocated in the heap or the number of calls to some user-specified method; (3) it provides several user interfaces: a classical command line, a Web interface which allows experimenting remotely with the system without the need of installing it locally, and a recently developed Eclipse plugin which facilitates the usage of the analyzer, even during the development phase; (4) it can deal with both the Standard and Micro editions of Java. In the tool demonstration, we will show that costa is able to produce meaningful results for non-trivial programs, possibly using Java libraries. Such results can then be used in many applications, including program development, resource usage certification, program optimization, etc.