Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Carlo A. Furia is active.

Publication


Featured researches published by Carlo A. Furia.


Archive | 2012

Objects, Models, Components, Patterns

Carlo A. Furia; Sebastian Nanz

Model-driven development tools built on industry standard platforms, such as the Eclipse Modeling Framework (EMF), heavily use model queries in various use cases, such as model transformation, wellformedness constraint validation and domain-specific model execution. As these queries are executed rather frequently in interactive modeling applications, they have a significant impact on the runtime performance of the tool, and also on the end user experience. However, due to their complexity, they can also be time consuming to implement and optimize on a case-by-case basis. The aim of the EMF-IncQuery framework is to address these shortcomings by using declarative queries over EMF models and executing them effectively using a caching mechanism. In the current paper, we present the new and significantly extended version of the EMF-IncQuery Framework, with new features and runtime extensions that speed up the development and testing of new queries by both IDE and API improvements. We demonstrate how our high performance queries can be easily integrated with other EMF tools using an entirely new case study in which EMF-IncQuery is deeply integrated into the EMF modeling infrastructure to facilitate the incremental evaluation of derived EAttributes and EReferences.


international conference on software engineering | 2011

Inferring better contracts

Yi Wei; Carlo A. Furia; Nikolay Kazmin; Bertrand Meyer

Considerable progress has been made towards automatic support for one of the principal techniques available to enhance program reliability: equipping programs with extensive contracts. The results of current contract inference tools are still often unsatisfactory in practice, especially for programmers who already apply some kind of basic Design by Contract discipline, since the inferred contracts tend to be simple assertions - the very ones that programmers find easy to write. We present new, completely automatic inference techniques and a supporting tool, which take advantage of the presence of simple programmer-written contracts in the code to infer sophisticated assertions, involving for example implication and universal quantification. Applied to a production library of classes covering standard data structures such as linked lists, arrays, stacks, queues and hash tables, the tool is able, entirely automatically, to infer 75% of the complete contracts - contracts yielding the full formal specification of the classes - with very few redundant or irrelevant clauses.


ACM Computing Surveys | 2010

Modeling time in computing: A taxonomy and a comparative survey

Carlo A. Furia; Dino Mandrioli; Angelo Morzenti; Matteo Rossi

The increasing relevance of areas such as real-time and embedded systems, pervasive computing, hybrid systems control, and biological and social systems modeling is bringing a growing attention to the temporal aspects of computing, not only in the computer science domain, but also in more traditional fields of engineering. This article surveys various approaches to the formal modeling and analysis of the temporal features of computer-based systems, with a level of detail that is also suitable for nonspecialists. In doing so, it provides a unifying framework, rather than just a comprehensive list of formalisms. The article first lays out some key dimensions along which the various formalisms can be evaluated and compared. Then, a significant sample of formalisms for time modeling in computing are presented and discussed according to these dimensions. The adopted perspective is, to some extent, historical, going from “traditional” models and formalisms to more modern ones.


international conference on global software engineering | 2012

Agile vs. Structured Distributed Software Development: A Case Study

H.-Christian Estler; Martin Nordio; Carlo A. Furia; Bertrand Meyer; Johannes Schneider

This paper presents a case study on the impact of development processes on the success of globally distributed software projects. The study compares agile (Scrum, XP, etc.) vs.\ structured (RUP, waterfall) processes to determine if the choice of process impacts: the overall success and economic savings of distributed projects; the importance customers attribute to projects; the motivation of the development teams; and the amount of real-time or asynchronous communication required during project development. The case study includes data from 66 projects developed in Europe, Asia, and the Americas. The results show no significant difference between the outcome of projects following agile processes and structured processes, suggesting that agile and structured processes can be equally effective for globally distributed development. The paper also discusses several qualitative aspects of distributed software development such as the advantages of near shore vs. offshore, the preferred communication patterns, and some common critical aspects.


automated software engineering | 2011

Code-based automated program fixing

Yu Pei; Yi Wei; Carlo A. Furia; Martin Nordio; Bertrand Meyer

Initial research in automated program fixing has generally limited itself to specific areas, such as data structure classes with carefully designed interfaces, and relied on simple approaches. To provide high-quality fix suggestions in a broad area of applicability, the present work relies on the presence of contracts in the code, and on the availability of static and dynamic analyses to gather evidence on the values taken by expressions derived from the code. The ideas have been built into the AutoFix-E2 automatic fix generator. Applications of AutoFix-E2 to general-purpose software, such as a library to manipulate documents, show that the approach provides an improvement over previous techniques, in particular purely model-based approaches.


international conference on software engineering | 2011

Usable verification of object-oriented programs by combining static and dynamic techniques

Julian Tschannen; Carlo A. Furia; Martin Nordio; Bertrand Meyer

With formal techniques becoming more and more powerful, the next big challenge is making software verification practical and usable. The Eve verification environment contributes to this goal by seamlessly integrating a static prover and an automatic testing tool into a development environment. The paper discusses the general principles behind the integration of heterogeneous verification tools; the peculiar challenges involved in combining static proofs and dynamic testing techniques; and how the combination, implemented in Eve through a blackboard architecture, can improve the user experience with little overhead over usual development practices. Eve is freely available for download.


Archive | 2012

Modeling Time in Computing

Carlo A. Furia; Dino Mandrioli; Angelo Morzenti; Matteo Rossi

Models that include a notion of time are ubiquitous in disciplines such as the natural sciences, engineering, philosophy, and linguistics, but in computing the abstractions provided by the traditional models are problematic and the discipline has spawned many novel models. This book is a systematic thorough presentation of the results of several decades of research on developing, analyzing, and applying time models to computing and engineering. After an opening motivation introducing the topics, structure and goals, the authors introduce the notions of formalism and model in general terms along with some of their fundamental classification criteria. In doing so they present the fundamentals of propositional and predicate logic, and essential issues that arise when modeling time across all types of system. Part I is a summary of the models that are traditional in engineering and the natural sciences, including fundamental computer science: dynamical systems and control theory; hardware design; and software algorithmic and complexity analysis. Part II covers advanced and specialized formalisms dealing with time modeling in heterogeneous software-intensive systems: formalisms that share finite state machines as common ancestors; Petri nets in many variants; notations based on mathematical logic, such as temporal logic; process algebras; and dual-language approaches combining two notations with different characteristics to model and verify complex systems, e.g., model-checking frameworks. Finally, the book concludes with summarizing remarks and hints towards future developments and open challenges. The presentation uses a rigorous, yet not overly technical, style, appropriate for readers with heterogeneous backgrounds, and each chapter is supplemented with detailed bibliographic remarks and carefully chosen exercises of varying difficulty and scope. The book is aimed at graduate students and researchers in computer science, while researchers and practitioners in other scientific and engineering disciplines interested in time modeling with a computational flavor will also find the book of value, and the comparative and conceptual approach makes this a valuable introduction for non-experts. The authors assume a basic knowledge of calculus, probability theory, algorithms, and programming, while a more advanced knowledge of automata, formal languages, and mathematical logic is useful.


Empirical Software Engineering | 2014

Agile vs. structured distributed software development: A case study

Hans-Christian Estler; Martin Nordio; Carlo A. Furia; Bertrand Meyer; Johannes Schneider

In globally distributed software development, does it matter being agile rather than structured? To answer this question, this paper presents an extensive case study that compares agile (Scrum, XP, etc.) vs. structured (RUP, waterfall) processes to determine if the choice of process impacts aspects such as the overall success and economic savings of distributed projects, the motivation of the development teams, the amount of communication required during development, and the emergence of critical issues. The case study includes data from 66 projects developed in Europe, Asia, and the Americas. The results show no significant difference between the outcome of projects following agile processes and structured processes, suggesting that agile and structured processes can be equally effective for globally distributed development. The paper also discusses several qualitative aspects of distributed software development such as the advantages of nearshore vs. offshore, the preferred communication patterns, and the effects on project quality.


formal methods | 2014

Flexible Invariants through Semantic Collaboration

Nadia Polikarpova; Julian Tschannen; Carlo A. Furia; Bertrand Meyer

Modular reasoning about class invariants is challenging in the presence of collaborating objects that need to maintain global consistency. This paper presents semantic collaboration: a novel methodology to specify and reason about class invariants of sequential object-oriented programs, which models dependencies between collaborating objects by semantic means. Combined with a simple ownership mechanism and useful default schemes, semantic collaboration achieves the flexibility necessary to reason about complicated inter-object dependencies but requires limited annotation burden when applied to standard specification patterns. The methodology is implemented in AutoProof, our program verifier for the Eiffel programming language but it is applicable to any language supporting some form of representation invariants. An evaluation on several challenge problems proposed in the literature demonstrates that it can handle a variety of idiomatic collaboration patterns, and is more widely applicable than the existing invariant methodologies.


ACM Computing Surveys | 2014

Loop invariants: Analysis, classification, and examples

Carlo A. Furia; Bertrand Meyer; Sergey Velder

Software verification has emerged as a key concern for ensuring the continued progress of information technology. Full verification generally requires, as a crucial step, equipping each loop with a “loop invariant.” Beyond their role in verification, loop invariants help program understanding by providing fundamental insights into the nature of algorithms. In practice, finding sound and useful invariants remains a challenge. Fortunately, many invariants seem intuitively to exhibit a common flavor. Understanding these fundamental invariant patterns could therefore provide help for understanding and verifying a large variety of programs. We performed a systematic identification, validation, and classification of loop invariants over a range of fundamental algorithms from diverse areas of computer science. This article analyzes the patterns, as uncovered in this study, governing how invariants are derived from postconditions; it proposes a taxonomy of invariants according to these patterns; and it presents its application to the algorithms reviewed. The discussion also shows the need for high-level specifications based on “domain theory.” It describes how the invariants and the corresponding algorithms have been mechanically verified using an automated program prover; the proof source files are available. The contributions also include suggestions for invariant inference and for model-based specification.

Collaboration


Dive into the Carlo A. Furia's collaboration.

Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Paola Spoletini

Kennesaw State University

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Researchain Logo
Decentralizing Knowledge