[1]
|
Elvira Albert, Jesús Correas, and Guillermo Román-Díez.
Peak Cost Analysis of Distributed Systems.
In 21st International Static Analysis Symposium (SAS'14).
Springer, 2014.
To appear.
[ bibtex |
abstract ]
We present a novel static analysis to infer the peak cost of
distributed systems. The different locations of a distributed
system communicate and coordinate their actions by posting tasks
among them. Thus, the amount of work that each location has to
perform can greatly vary along the execution depending on: (1) the
amount of tasks posted to its queue, (2) their respective costs, and
(3) the fact that they may be posted in parallel and thus be pending
to execute simultaneously. The peak cost of a distributed
location refers to the maximum cost that it needs to carry out
along its execution.
Inferring the peak cost is challenging because it increases and
decreases along the execution, unlike the standard notion of
total cost which is cumulative. Our key contribution is the
novel notion of quantified queue configuration which captures
the worst-case cost of the tasks that may be simultaneously
pending to execute at each location along the execution.
Our analysis framework is developed for a generic notion of cost
that can be instantiated to infer the peak cost in terms of number
of steps, the amount of memory allocated, the number of tasks, etc.
A prototype implementation demonstrates the accuracy and
feasibility of the proposed peak cost analysis.
@inproceedings{AlbertCR14,
author = {Elvira Albert and
Jes\'us Correas and
Guillermo Rom\'an-D\'iez},
title = {{P}eak {C}ost {A}nalysis of {D}istributed {S}ystems},
booktitle = {21st International Static Analysis Symposium (SAS'14)},
publisher = {Springer},
year = {2014},
note = {To appear}
}
|
[2]
|
Elvira Albert, Puri Arenas, Antonio Flores-Montoya, Samir Genaim, Miguel Gómez-Zamalloa, Enrique Martin-Martin, Germán Puebla, and Guillermo Román-Díez.
SACO: Static Analyzer for Concurrent Objects.
In Erika Ábrahám and Klaus Havelund, editors, Tools and
Algorithms for the Construction and Analysis of Systems - 20th International
Conference, TACAS 2014, Held as Part of the European Joint Conferences on
Theory and Practice of Software, ETAPS 2014, Grenoble, France, April 5-13,
2014. Proceedings, volume 8413 of Lecture Notes in Computer Science,
pages 562-567. Springer, 2014.
[ bibtex |
abstract |
DOI |
PDF |
http ]
We present the main concepts, usage and implementation of SACO,
a static analyzer for concurrent objects. Interestingly, SACO is
able to infer both liveness (namely termination and resource
boundedness) and safety properties (namely deadlock freeness)
of programs based on concurrent objects. The system integrates
auxiliary analyses such as points-to and
may-happen-in-parallel, which are essential for increasing the
accuracy of the aforementioned more complex properties. SACO
provides accurate information about the dependencies which may
introduce deadlocks, loops whose termination is not guaranteed, and
upper bounds on the resource consumption of methods.
@inproceedings{AlbertAFGGMPR14,
author = {Elvira Albert and
Puri Arenas and
Antonio Flores-Montoya and
Samir Genaim and
Miguel G\'omez-Zamalloa and
Enrique Martin-Martin and
Germ\'an Puebla and
Guillermo Rom\'an-D\'iez},
title = {{SACO}: {S}tatic {A}nalyzer for {C}oncurrent {O}bjects},
booktitle = {Tools and Algorithms for the Construction and Analysis of
Systems - 20th International Conference, TACAS 2014, Held
as Part of the European Joint Conferences on Theory and
Practice of Software, ETAPS 2014, Grenoble, France, April
5-13, 2014. Proceedings},
year = {2014},
editor = {Erika {\'A}brah{\'a}m and
Klaus Havelund},
pages = {562-567},
volume = {8413},
series = {Lecture Notes in Computer Science},
isbn = {978-3-642-54861-1},
publisher = {Springer},
doi = {http://dx.doi.org/10.1007/978-3-642-54862-8_46},
url = {http://link.springer.com/chapter/10.1007%2F978-3-642-54862-8_46}
}
|
[3]
|
Elvira Albert, Jesús Correas, Germán Puebla, and Guillermo Román-Díez.
Quantified Abstractions of Distributed Systems.
In 10th International Conference on integrated Formal Methods
(iFM'13), volume 7940 of Lecture Notes in Computer Science, pages
285-300. Springer, June 2013.
[ bibtex |
abstract |
PDF |
http ]
When reasoning about distributed systems, it is
essential to have information about the different
kinds of nodes which compose the system, how many
instances of each kind exist, and how nodes
communicate with other nodes. In this paper we
present a static-analysis-based approach which is
able to provide information about the questions
above. In order to cope with an unbounded number of
nodes and an unbounded number of calls among them,
the analysis performs an abstraction of the
system producing a graph whose nodes may represent
(infinitely) many concrete nodes and arcs represent
any number of (infinitely) many calls among nodes.
The crux of our approach is that the abstraction is
enriched with upper bounds inferred by a
resource analysis which limit the number of
concrete instances which the nodes and arcs
represent. The combined information provided by our
approach has interesting applications such as
debugging, optimizing and dimensioning distributed
systems.
@inproceedings{AlbertCPR13,
author = {Elvira Albert and Jes\'us Correas and Germ\'an Puebla and Guillermo Rom\'an-D\'iez},
title = {{Q}uantified {A}bstractions of {D}istributed {S}ystems},
booktitle = {10th International Conference on integrated Formal Methods (iFM'13)},
year = {2013},
month = jun,
publisher = {Springer},
series = {Lecture Notes in Computer Science},
volume = {7940},
pages = {285-300},
url = {http://dx.doi.org/10.1007/978-3-642-38613-8_20}
}
|
[4]
|
Elvira Albert, Richard Bubel, Samir Genaim, Reiner Hähnle, and Guillermo Román-Díez.
Verified Resource Guarantees for Heap Manipulating
Programs.
In Proceedings of the 15th International Conference on
Fundamental Approaches to Software Engineering, FASE 2012, Tallinn, Estonia,
March, 2012, volume 7212 of Lecture Notes in Computer Science, pages
130-145. Springer, March 2012.
[ bibtex |
abstract |
PDF |
http ]
Program properties that are automatically inferred by static
analysis tools are generally not considered to be completely
trustworthy, unless the tool implementation or the results are
formally verified. Here we focus on the formal verification of
resource guarantees inferred by automatic cost
analysis. Resource guarantees ensure that programs run within the
indicated amount of resources which may refer to memory consumption,
to number of instructions executed, etc. In previous work we
studied formal verification of inferred resource guarantees that
depend only on integer data. In realistic programs, however,
resource consumption is often bounded by the size of
heap-allocated data structures. Bounding their size
requires to perform a number of structural heap
analyses. The contributions of this paper are (i) to identify what
exactly needs to be verified to guarantee sound analysis of heap
manipulating programs, (ii) to provide a suitable extension of the
program logic used for verification to handle structural heap
properties in the context of resource guarantees, and (iii) to
improve the underlying theorem prover so that proof obligations
can be automatically discharged.
@inproceedings{AlbertBGHR12,
author = {Elvira Albert and Richard Bubel and Samir Genaim and Reiner
H\"ahnle and Guillermo Rom\'an-D\'iez},
title = {{V}erified {R}esource {G}uarantees for {H}eap {M}anipulating {P}rograms},
booktitle = {Proceedings of the 15th International Conference on Fundamental Approaches to Software Engineering, FASE 2012, Tallinn, Estonia, March, 2012},
publisher = {Springer},
series = {Lecture Notes in Computer Science},
year = {2012},
volume = {7212},
month = mar,
pages = {130-145},
isbn = {978-3-642-28871-5},
url = {http://www.springerlink.com/content/a10153194828v8k1/}
}
|
[5]
|
Elvira Albert, Jesús Correas, Germán Puebla, and Guillermo Román-Díez.
Incremental Resource Usage Analysis.
In Proceedings of the 2012 ACM SIGPLAN Workshop on Partial
Evaluation and Program Manipulation, PEPM 2012, Philadelphia, Pennsylvania,
USA, January 23-24, 2012, pages 25-34. ACM Press, January 2012.
[ bibtex |
abstract |
DOI |
PDF |
http ]
The aim of incremental global analysis is, given a program, its
analysis results and a series of changes to the program, to obtain
the new analysis results as efficiently as possible and, ideally,
without having to (re-)analyze fragments of code which are not
affected by the changes. Incremental analysis can significantly
reduce both the time and the memory requirements of analysis. This
paper presents an incremental resource usage (a.k.a. cost) analysis
for a sequential Java-like language. Our main contributions are (1)
a multi-domain incremental fixed-point algorithm which can be used
by all global (pre-)analyses required to infer the cost (including
class, sharing, cyclicity, constancy, and size analyses) and which
takes care of propagating dependencies among such domains, and (2) a
novel form of cost summaries which allows us to incrementally
reconstruct only those components of cost functions affected by the
change. Experimental results in the COSTA system show that the
proposed incremental analysis can perform very efficiently in
practice.
@inproceedings{AlbertCPR12,
author = {Elvira Albert and Jes\'us Correas and Germ\'an Puebla and Guillermo Rom\'an-D\'iez},
title = {{I}ncremental {R}esource {U}sage {A}nalysis},
booktitle = {Proceedings of the 2012 ACM SIGPLAN Workshop on Partial
Evaluation and Program Manipulation, PEPM 2012, Philadelphia, Pennsylvania, USA,
January 23-24, 2012},
publisher = {ACM Press},
year = {2012},
month = jan,
pages = {25--34},
isbn = {978-1-4503-1118-2},
doi = {10.1145/2103746.2103754},
url = {http://dl.acm.org/citation.cfm?doid=2103746.2103754}
}
|
[6]
|
Elvira Albert, Jesús Correas, Germán Puebla, and Guillermo Román-Díez.
Towards Incremental Resource Usage Analysis.
In The Ninth Asian Symposium on Programming Languages and
Systems (APLAS'11), December 2011.
Poster Presentation.
[ bibtex |
abstract |
PDF ]
The aim of incremental global analysis is, given a program, its
analysis results and a series of changes to the program, to obtain
the new analysis results as efficiently as possible and, ideally,
without having to (re-)analyze fragments of code which are not
affected by the changes. Incremental analysis can significantly
reduce both the time and the memory requirements of analysis. This
paper presents an incremental resource usage (a.k.a. cost) analysis
for a sequential Java-like language. Our main contributions are (1)
a multi-domain incremental fixed-point algorithm which can be used
by all global (pre-)analyses required to infer the cost (including
class, sharing, cyclicity, constancy, and size analyses) and which
takes care of propagating dependencies among such domains, and (2) a
novel form of cost summaries which allows us to incrementally
reconstruct only those components of cost functions affected by the
change. Experimental results in the COSTA system show that the
proposed incremental analysis can perform very efficiently in
practice.
@inproceedings{AlbertCPR11,
author = {Elvira Albert and Jes\'us Correas and Germ\'an Puebla and Guillermo Rom\'an-D\'iez},
title = {{T}owards {I}ncremental {R}esource {U}sage {A}nalysis},
booktitle = {The Ninth Asian Symposium on Programming Languages and Systems (APLAS'11)},
year = {2011},
month = dec,
note = {Poster Presentation}
}
|
[7]
|
Elvira Albert, Richard Bubel, Samir Genaim, Reiner Hähnle, Germán Puebla,
and Guillermo Román-Díez.
Verified Resource Guarantees using COSTA and KeY.
In Siau-Cheng Khoo and Jeremy G. Siek, editors, Proceedings of
the 2011 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation,
PEPM 2011, Austin, TX, USA, January 24-25, 2011, SIGPLAN, pages 73-76. ACM,
January 2011.
[ bibtex |
abstract |
DOI |
PDF ]
Resource guarantees allow being certain that programs
will run within the indicated amount of resources,
which may refer to memory consumption, number of
instructions executed, etc. This information can be
very useful, especially in real-time and
safety-critical applications.Nowadays, a number of
automatic tools exist, often based on type systems
or static analysis, which produce such resource
guarantees. In spite of being based on
theoretically sound techniques, the implemented
tools may contain bugs which render the resource
guarantees thus obtained not completely trustworthy.
Performing full-blown verification of such tools is
a daunting task, since they are large and complex.
In this work we investigate an alternative approach
whereby, instead of the tools, we formally verify
the results of the tools. We have implemented this
idea using COSTA, a state-of-the-art static analysis
system, for producing resource guarantees and KeY, a
state-of-the-art verification tool, for formally
verifying the correctness of such resource
guarantees. Our preliminary results show that the
proposed tool cooperation can be used for
automatically producing verified resource
guarantees.
@inproceedings{AlbertBGHPR11,
author = {Elvira Albert and Richard Bubel and Samir Genaim and Reiner H\"ahnle and Germ\'an Puebla and Guillermo Rom\'an-D\'iez},
title = {{V}erified {R}esource {G}uarantees using {COSTA} and {KeY}},
booktitle = {Proceedings of the 2011 ACM SIGPLAN Workshop on Partial
Evaluation and Program Manipulation, PEPM 2011, Austin,
TX, USA, January 24-25, 2011},
editor = {Siau-Cheng Khoo and Jeremy G. Siek},
publisher = {ACM},
series = {SIGPLAN},
year = {2011},
month = jan,
pages = {73-76},
ee = {http://doi.acm.org/10.1145/1929501.1929513}
}
|
[8]
|
Elvira Albert, Puri Arenas, Samir Genaim, Miguel Gómez-Zamalloa, Germán Puebla, Diana Ramirez, Guillermo Román-Díez, and Damiano Zanardini.
Termination and Cost Analysis with COSTA and its User
Interfaces.
In Spanish Conference on Programming and Computer Languages
(PROLE'09), volume 258 of Electronic Notes in Theoretical Computer
Science, pages 109-121. Elsevier, September 2009.
[ bibtex |
abstract |
DOI |
PDF ]
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
non-trivial 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 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.
@inproceedings{AlbertAGGPRRZ09,
author = {Elvira Albert and Puri Arenas and Samir Genaim and Miguel G{\'o}mez-Zamalloa and Germ{\'a}n Puebla and Diana Ramirez and Guillermo Rom\'an-D\'iez and Damiano Zanardini},
title = {{T}ermination and {C}ost {A}nalysis with {COSTA} and its {U}ser {I}nterfaces},
booktitle = {Spanish Conference on Programming and Computer Languages (PROLE'09)},
series = {Electronic Notes in Theoretical Computer Science},
publisher = {Elsevier},
volume = {258},
year = {2009},
pages = {109-121},
doi = {10.1016/j.entcs.2009.12.008},
month = sep
}
|