885 research outputs found

    Precise set sharin analysis for java-style programs (and proofs).

    Get PDF
    Finding useful sharing information between instances in object- oriented programs has recently been the focus of much research. The applications of such static analysis are multiple: by knowing which variables definitely do not share in memory we can apply conventional compiler optimizations, find coarse-grained parallelism opportunities, or, more importantly, verify certain correctness aspects of programs even in the absence of annotations. In this paper we introduce a framework for deriving precise sharing information based on abstract interpretation for a Java-like language. Our analysis achieves precision in various ways, including supporting multivariance, which allows separating different contexts. We propose a combined Set Sharing + Nullity + Classes domain which captures which instances do not share and which ones are definitively null, and which uses the classes to refine the static information when inheritance is present. The use of a set sharing abstraction allows a more precise representation of the existing sharings and is crucial in achieving precision during interprocedural analysis. Carrying the domains in a combined way facilitates the interaction among them in the presence of multivariance in the analysis. We show through examples and experimentally that both the set sharing part of the domain as well as the combined domain provide more accurate information than previous work based on pair sharing domains, at reasonable cost

    Towards a Complete Static Analyser for Java: an Abstract Interpretation Framework and its Implementation

    Get PDF
    AbstractWe present an abstract interpretation framework for a subset of Java (without concurrency). The framework uses a structural abstract domain whose concretization function is parameterized on a relation between abstract and concrete locations. When structurally incomptatible objects may be referred to by the same variable at a given program point, structural information is discarded and replaced by an approximated information about the objects (our presentation concentrates on type information). Plain structural information allows precise intra-procedural analysis but is quickly lost when returning from a method call. To overcome this limitation, relational structural information is introduced, which enables a precise inter-procedural analysis without resorting to inlining.The paper contains an overview of the work. We describe parts of the standard and abstract semantics; then, we briefly explain the fixpoint algorithms used by our implementation; lastly, we provide experimental results for small programs

    Precise set sharing and nullity analysis for java-style program

    Full text link
    Finding useful sharing information between instances in object- oriented programs has been recently the focus of much research. The applications of such static analysis are multiple: by knowing which variables share in memory we can apply conventional compiler optimizations, find coarse-grained parallelism opportunities, or, more importantly,erify certain correctness aspects of programs even in the absence of annotations In this paper we introduce a framework for deriving precise sharing information based on abstract interpretation for a Java-like language. Our analysis achieves precision in various ways. The analysis is multivariant, which allows separating different contexts. We propose a combined Set Sharing + Nullity + Classes domain which captures which instances share and which ones do not or are definitively null, and which uses the classes to refine the static information when inheritance is present. Carrying the domains in a combined way facilitates the interaction among the domains in the presence of mutivariance in the analysis. We show that both the set sharing part of the domain as well as the combined domain provide more accurate information than previous work based on pair sharing domains, at reasonable cost

    Public Health in Milan

    Get PDF
    Public health (salute pubblica) in Renaissance Milan encompassed ideas as well as practices of how to maintain the health of the metaphorical (and physical) body of the community during epidemic and non-epidemic times. The term salute pubblica has a long lineage: it connects to the Roman and Ciceronian origins of the salus publica, and thus to political theories surrounding the preservation and protection of the body politic and the attainment of public wellbeing, the epitome of civic humanism. Salus publica also appears in relation to the term sanitas, which indicates, more prosaically, a state of physical health. The Milanese Health Board, founded in 1534 (supposedly one of the first permanent institutions of this kind) was entrusted, as a state institution, with preserving both salute pubblica and sanitas. It had a very well-organized administrative and pyramidal hierarchical structure. Its functioning relied on specific officials, each of them entrusted with specific tasks. At the top of the pyramid stood a senator and a secretary; at the bottom, the so-called keepers, members of the College of Physicians who were in charge of reporting potential threats to public health to the senator and secretary, and various functionaries, who surveyed urban spaces. Through the help of a clerk, the health board recorded its activities, from official quarantines to the number of deaths, to petitions and court cases. Most importantly, even though its foundation followed a plague epidemic, the health board in Milan did not deal exclusively with epidemic containment measures, but also with more mundane and sometimes environmental questions, such as the management of water, the disposal of organic waste, and the cleanliness of streets and dwellings. The health board’s overall goal was to preserve public good (bene pubblico) and maintain the integrity of the community. It is through an examination of these moments of historical normality, rather than of epidemic emergencies, that we can develop a clear idea of what public health was as a system of everyday practices involving an organic combination of legislative, administrative, and enforcement initiatives

    Verifying Temporal Heap Properties Specified via Evolution Logic

    Get PDF
    This paper addresses the problem of establishing temporal properties of programs written in languages, such as Java, that make extensive use of the heap to allocate--- and deallocate---new objects and threads. Establishing liveness properties is a particularly hard challenge. One of the crucial obstacles is that heap locations have no static names and the number of heap locations is unbounded. The paper presents a framework for the verification of Java-like programs. Unlike classical model checking, which uses propositional temporal logic, we use first-order temporal logic to specify temporal properties of heap evolutions; this logic allows domain changes to be expressed, which permits allocation and deallocation to be modelled naturally. The paper also presents an abstract-interpretation algorithm that automatically verifies temporal properties expressed using the logic

    Fundamental Approaches to Software Engineering

    Get PDF
    This open access book constitutes the proceedings of the 25th International Conference on Fundamental Approaches to Software Engineering, FASE 2022, which was held during April 4-5, 2022, in Munich, Germany, as part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2022. The 17 regular papers presented in this volume were carefully reviewed and selected from 64 submissions. The proceedings also contain 3 contributions from the Test-Comp Competition. The papers deal with the foundations on which software engineering is built, including topics like software engineering as an engineering discipline, requirements engineering, software architectures, software quality, model-driven development, software processes, software evolution, AI-based software engineering, and the specification, design, and implementation of particular classes of systems, such as (self-)adaptive, collaborative, AI, embedded, distributed, mobile, pervasive, cyber-physical, or service-oriented applications

    LinkWiper – A System For Data Quality in Linked Open Data

    Full text link
    Linked Open Data (LOD) provides access to large amounts of data on Web. These data sets range from high quality curated data sets to low quality sets. LOD sources often need strategies to clean up data and provide methodology for quality assessment in linked data. They allow interlinking and integrating any kind of data on the web. Links between various data sources enable software applications to operate over the aggregated data space as if it is a unique local database. However, such links may be broken, leading to data quality problems. In this thesis we present LinkWiper, an automated system for cleaning data in LOD. While this thesis focuses on problems related to dereferenced links, LinkWiper can be used to tackle any other data quality problem such as duplication and consistency. The proposed system includes two major phases. The first phase uses information retrieval-like search techniques to recommend sets of alternative links. The second phase adopts crowdsourcing mechanisms to involve workers (or users) in improving the quality of the LOD sources. We provide an implementation of LinkWiper over DBPedia, a community effort to extract structured information from Wikipedia and make this information using LOD principles. We also conduct extensive experiments to illustrate the efficiency and high precision of the proposed approach.Master of ScienceComputer and Information Science, College of Engineering and Computer ScienceUniversity of Michigan-Dearbornhttp://deepblue.lib.umich.edu/bitstream/2027.42/136065/1/LinkWiper – A System For Data Quality in Linked Open Data.pdfDescription of LinkWiper – A System For Data Quality in Linked Open Data.pdf : Master of Science Thesi
    • …
    corecore