Edwin Rodriguez | Universidad Autonoma de Baja California (original) (raw)

Uploads

Papers by Edwin Rodriguez

Research paper thumbnail of Specification and Checking of Software Contracts for Conditional Information Flow

Lecture Notes in Computer Science, 2008

Research paper thumbnail of Precise and Automated Contract-Based Reasoning for Verification and Certification of Information Flow Properties of Programs with Arrays

Lecture Notes in Computer Science, 2010

Research paper thumbnail of Checking Strong Specifications Using an Extensible Software Model Checking Framework

Lecture Notes in Computer Science, 2004

Research paper thumbnail of A Comparison of Hybrid Incremental Reuse Strategies for Reinforcement Learning in Genetic Programming

Lecture Notes in Computer Science, 2004

Research paper thumbnail of Extending JML for Modular Specification and Verification of Multi-threaded Programs

Lecture Notes in Computer Science, 2005

Research paper thumbnail of Specification and Checking of Software Contracts for Conditional Information Flow

Design and Verification of Microprocessor Systems for High-Assurance Applications, 2010

Research paper thumbnail of Precise and Automated Contract-Based Reasoning for Verification and Certification of Information Flow Properties of Programs with Arrays

European Symposium on Programming, 2010

Embedded information assurance applications that are critical to national and international infra... more Embedded information assurance applications that are critical to national and international infrastructures, must often adhere to certification regimes that require information flow properties to be specified and verified. SPARK, a subset of Ada for engineering safety critical systems, is being used to develop multiple certified information assurance systems. While SPARK provides information flow annotations and associated automated checking mechanisms, industrial experience has revealed that these annotations are not precise enough to specify many desired information flow policies. One key problem is that arrays are treated as indivisible entities – flows that involve only particular locations of an array have to be abstracted into flows on the whole array. This has substantial practical impact since SPARK does not allow dynamic allocation of memory, and hence makes heavy use of arrays to implement complex data structures. In this paper, we present a Hoare logic for information flow that enables precise compositional specification of information flow in programs with arrays, and automated deduction algorithms for checking and inferring contracts in an enhanced SPARK information flow contract language. We demonstrate the expressiveness of the enhanced contracts and effectiveness of the automated verification algorithm on realistic embedded applications.

Research paper thumbnail of A Flexible Framework for the Estimation of Coverage Metrics in Explicit State Software Model Checking

Construction and Analysis of Safe, Secure, and Interoperable Smart Devices, 2004

Research paper thumbnail of Specification and Checking of Software Contracts for Conditional Information Flow

World Congress on Formal Methods, 2008

Information assurance applications providing Multi-Level Secure (MLS) solutions must often implem... more Information assurance applications providing Multi-Level Secure (MLS) solutions must often implement information flow policies that are conditional in the sense that data is allowed to flow between system components only when the system satisfies certain state predicates. However, existing specification and verification environments, such as SPARK, used to develop such applications, are capable of capturing only unconditional information flows. Motivated by the need to better formally specify and certify MLS applications in industrial contexts, we present an enhancement of the SPARK system that enables specification, inference, and compositional checking of conditional information flow contracts. We report on the use of this framework for a collection of SPARK examples.

Research paper thumbnail of Checking Strong Specifications Using an Extensible Software Model Checking Framework

Tools and Algorithms for Construction and Analysis of Systems, 2004

The use of assertions to express correctness properties of programs is growing in practice. Asser... more The use of assertions to express correctness properties of programs is growing in practice. Assertions provide a form of checkable redundancy that can be very effective in finding defects in programs and in guiding developers to the cause of a defect. A wide variety of assertion languages and associated validation techniques have been developed, but run-time monitoring is commonly thought to be the only practical solution. In this paper, we describe how specifications written in the Java Modeling Language (JML), a general purpose behavioral specification language for Java, can be validated using a customized model checking framework. Our experience illustrates the need for customized state-space representations and reduction strategies in model checking frameworks in order to effectively check the kind of strong behavioral specifications that can be written in JML. We discuss the advantages of model checking relative to other specification validation techniques and present data that suggest that the cost of model checking strong program specifications is practical for several real programs.

Research paper thumbnail of Extending JML for Modular Specification and Verification of Multi-threaded Programs

European Conference on Object-Oriented Programming, 2005

The Java Modeling Language (JML) is a formal specification language for Java that allows develope... more The Java Modeling Language (JML) is a formal specification language for Java that allows developers to specify rich software contracts for interfaces and classes, using pre- and postconditions and invariants. Although JML has been widely studied and has robust tool support based on a variety of automated verification technologies, it shares a problem with many similar object-oriented specification languages—it currently only deals with sequential programs. In this paper, we extend JML to allow for effective specification of multi-threaded Java programs. The new constructs rely on the non-interference notion of method atomicity, and allow developers to specify locking and other non-interference properties of methods. Atomicity enables effective specification of method pre- and postconditions and supports Hoare-style modular reasoning about methods. Thus the new constructs mesh well with JML’s existing features. We validate the specification language design by specifying the behavior of a number of complex Java classes designed for use in multi-threaded programs. We also demonstrate that it is amenable to automated verification using model checking technology.

Research paper thumbnail of Specification and Checking of Software Contracts for Conditional Information Flow

Lecture Notes in Computer Science, 2008

Research paper thumbnail of Precise and Automated Contract-Based Reasoning for Verification and Certification of Information Flow Properties of Programs with Arrays

Lecture Notes in Computer Science, 2010

Research paper thumbnail of Checking Strong Specifications Using an Extensible Software Model Checking Framework

Lecture Notes in Computer Science, 2004

Research paper thumbnail of A Comparison of Hybrid Incremental Reuse Strategies for Reinforcement Learning in Genetic Programming

Lecture Notes in Computer Science, 2004

Research paper thumbnail of Extending JML for Modular Specification and Verification of Multi-threaded Programs

Lecture Notes in Computer Science, 2005

Research paper thumbnail of Specification and Checking of Software Contracts for Conditional Information Flow

Design and Verification of Microprocessor Systems for High-Assurance Applications, 2010

Research paper thumbnail of Precise and Automated Contract-Based Reasoning for Verification and Certification of Information Flow Properties of Programs with Arrays

European Symposium on Programming, 2010

Embedded information assurance applications that are critical to national and international infra... more Embedded information assurance applications that are critical to national and international infrastructures, must often adhere to certification regimes that require information flow properties to be specified and verified. SPARK, a subset of Ada for engineering safety critical systems, is being used to develop multiple certified information assurance systems. While SPARK provides information flow annotations and associated automated checking mechanisms, industrial experience has revealed that these annotations are not precise enough to specify many desired information flow policies. One key problem is that arrays are treated as indivisible entities – flows that involve only particular locations of an array have to be abstracted into flows on the whole array. This has substantial practical impact since SPARK does not allow dynamic allocation of memory, and hence makes heavy use of arrays to implement complex data structures. In this paper, we present a Hoare logic for information flow that enables precise compositional specification of information flow in programs with arrays, and automated deduction algorithms for checking and inferring contracts in an enhanced SPARK information flow contract language. We demonstrate the expressiveness of the enhanced contracts and effectiveness of the automated verification algorithm on realistic embedded applications.

Research paper thumbnail of A Flexible Framework for the Estimation of Coverage Metrics in Explicit State Software Model Checking

Construction and Analysis of Safe, Secure, and Interoperable Smart Devices, 2004

Research paper thumbnail of Specification and Checking of Software Contracts for Conditional Information Flow

World Congress on Formal Methods, 2008

Information assurance applications providing Multi-Level Secure (MLS) solutions must often implem... more Information assurance applications providing Multi-Level Secure (MLS) solutions must often implement information flow policies that are conditional in the sense that data is allowed to flow between system components only when the system satisfies certain state predicates. However, existing specification and verification environments, such as SPARK, used to develop such applications, are capable of capturing only unconditional information flows. Motivated by the need to better formally specify and certify MLS applications in industrial contexts, we present an enhancement of the SPARK system that enables specification, inference, and compositional checking of conditional information flow contracts. We report on the use of this framework for a collection of SPARK examples.

Research paper thumbnail of Checking Strong Specifications Using an Extensible Software Model Checking Framework

Tools and Algorithms for Construction and Analysis of Systems, 2004

The use of assertions to express correctness properties of programs is growing in practice. Asser... more The use of assertions to express correctness properties of programs is growing in practice. Assertions provide a form of checkable redundancy that can be very effective in finding defects in programs and in guiding developers to the cause of a defect. A wide variety of assertion languages and associated validation techniques have been developed, but run-time monitoring is commonly thought to be the only practical solution. In this paper, we describe how specifications written in the Java Modeling Language (JML), a general purpose behavioral specification language for Java, can be validated using a customized model checking framework. Our experience illustrates the need for customized state-space representations and reduction strategies in model checking frameworks in order to effectively check the kind of strong behavioral specifications that can be written in JML. We discuss the advantages of model checking relative to other specification validation techniques and present data that suggest that the cost of model checking strong program specifications is practical for several real programs.

Research paper thumbnail of Extending JML for Modular Specification and Verification of Multi-threaded Programs

European Conference on Object-Oriented Programming, 2005

The Java Modeling Language (JML) is a formal specification language for Java that allows develope... more The Java Modeling Language (JML) is a formal specification language for Java that allows developers to specify rich software contracts for interfaces and classes, using pre- and postconditions and invariants. Although JML has been widely studied and has robust tool support based on a variety of automated verification technologies, it shares a problem with many similar object-oriented specification languages—it currently only deals with sequential programs. In this paper, we extend JML to allow for effective specification of multi-threaded Java programs. The new constructs rely on the non-interference notion of method atomicity, and allow developers to specify locking and other non-interference properties of methods. Atomicity enables effective specification of method pre- and postconditions and supports Hoare-style modular reasoning about methods. Thus the new constructs mesh well with JML’s existing features. We validate the specification language design by specifying the behavior of a number of complex Java classes designed for use in multi-threaded programs. We also demonstrate that it is amenable to automated verification using model checking technology.