Conference Proceeding

Static analysis for enforcing intra-thread consistent locks in the migration of a legacy system

Fondazione Bruno Kessler, IRST, Trento, Italy
10/2010; DOI:10.1109/ICSM.2010.5609727 pp.1 - 9 In proceeding of: Software Maintenance (ICSM), 2010 IEEE International Conference on
Source: DBLP

ABSTRACT Often, legacy data management systems provide no native support to transactions. Programmers protect data from concurrent access by adopting commonly agreed patterns, relying on low level concurrency primitives, such as semaphores. In such cases, consistent data access is granted only if all code components are compliant with the adopted mutual exclusion patterns. When migrating legacy systems to modern data management systems, the ad hoc mechanisms for data protection must be replaced with modern constructs for transaction management. In such cases, a literal translation may expose problems and bugs, which were originally masked by the specific implementation and patterns in use. In this paper, we propose a static flow analysis that determines the existence of potentially incompatible locks within the same thread, which require specific code re-engineering before migrating to a modern data management system. We report the results obtained on a concrete instance of this problem.

0 0
 · 
0 Bookmarks
 · 
24 Views
  • Article: Recovering structured data types from a legacy data model with overlays.
    Information & Software Technology. 01/2009; 51:1454-1468.
  • Source
    Article: Constructing Compact Models of Concurrent Java Programs
    [show abstract] [hide abstract]
    ABSTRACT: Finite-state verification technology (e.g., model checking) provides a powerful means to detect concurrency errors, which are often subtle and difficult to reproduce. Nevertheless, widespread use of this technology by developers is unlikely until tools provide automated support for extracting the required finite-state models directly from program source. In this paper, we explore the extraction of compact concurrency models from Java code. In particular, we show how static pointer analysis, which has traditionally been used for computing alias information in optimizers, can be used to greatly reduce the size of finite-state models of concurrent Java programs. Keywords Static Analysis, Model Extraction, Finite-state Verification 1 Introduction Finite-state analysis tools (e.g., model checkers) can automatically detect concurrency errors, which are often subtle and difficult to reproduce. Before such tools can be applied to software, a finite-state model of the program must be constru...
    12/1997;
  • Conference Proceeding: Static analysis of Java multithreaded and distributed applications
    [show abstract] [hide abstract]
    ABSTRACT: The Java language enables the development of concurrent and distributed software through the concepts of thread and remote method invocation (RMI). It is known that developing concurrent and distributed software is a challenging task, mainly because of potential concurrency errors such as deadlocks and livelocks. One promising way to help the designer in this task is providing static analysis tools that can detect such errors in the source code, as documented in the rich literature on static analysis of Ada tasking programs. The paper extends the approach followed for Ada tasking programs to the new Java language, providing formal models for the main thread synchronization primitives offered by the language. The formalism used is Promela, the input language of the model checker SPIN, which is based on extended communicating finite state machines and provides an efficient analysis algorithm
    Software Engineering for Parallel and Distributed Systems, 1998. Proceedings. International Symposium on; 05/1998

Full-text (2 Sources)

View
11 Downloads
Available from
15 Jan 2013

Keywords

adopted mutual exclusion patterns
 
cases
 
code components
 
concrete instance
 
concurrent access
 
consistent data access
 
data protection
 
incompatible locks
 
legacy data management systems
 
literal translation
 
low level concurrency primitives
 
migrating legacy systems
 
modern constructs
 
modern data management system
 
modern data management systems
 
native support
 
problems
 
static flow analysis
 
transaction management