Results 1  10
of
61
Discovering Algebraic Specifications from Java Classes
 In ECOOP
, 2003
"... We present and evaluate an automatic tool for extracting algebraic specifications from Java classes. Our tool maps a Java class to an algebraic signature and then uses the signature to generate a large number of terms. The tool evaluates these terms and based on the results of the evaluation, it pro ..."
Abstract

Cited by 86 (4 self)
 Add to MetaCart
(Show Context)
We present and evaluate an automatic tool for extracting algebraic specifications from Java classes. Our tool maps a Java class to an algebraic signature and then uses the signature to generate a large number of terms. The tool evaluates these terms and based on the results of the evaluation, it proposes equations. Finally, the tool generalizes equations to axioms and eliminates many redundant axioms. Since our tool uses dynamic information, it is not guaranteed to be sound or complete. However, we manually inspected the axioms generated in our experiments and found them all to be correct.
Logical Systems for Structured Specifications
, 2000
"... We study proof systems for reasoning about logical consequences and refinement of structured specifications, based on similar systems proposed earlier in the literature [ST 88, Wir 91]. Following Goguen and Burstall, the notion of an underlying logical system over which we build specifications is fo ..."
Abstract

Cited by 46 (1 self)
 Add to MetaCart
We study proof systems for reasoning about logical consequences and refinement of structured specifications, based on similar systems proposed earlier in the literature [ST 88, Wir 91]. Following Goguen and Burstall, the notion of an underlying logical system over which we build specifications is formalized as an institution and extended to a more general notion, called (D, T )institution. We show that under simple assumptions (essentially: amalgamation and interpolation) the proposed proof systems are sound and complete. The completeness proofs are inspired by proofs due to M. V. Cengarle (see [Cen 94]) for specifications in firstorder logic and the logical systems for reasoning about them. We then propose a methodology for reusing proof systems built over institutions rich enough to satisfy the properties required for the completeness results for specifications built over poorer institutions where these properties need not hold.
Discovering documentation for java container classes
 IEEE Transactions on Software Engineering
, 2007
"... Modern programs make extensive use of reusable software libraries. For example, we found that 17 % to 30 % of the classes in a number of large Java applications use the container classes from the java.util package. Given this extensive code reuse in Java programs, it is important for the reusable in ..."
Abstract

Cited by 32 (1 self)
 Add to MetaCart
(Show Context)
Modern programs make extensive use of reusable software libraries. For example, we found that 17 % to 30 % of the classes in a number of large Java applications use the container classes from the java.util package. Given this extensive code reuse in Java programs, it is important for the reusable interfaces to have clear and unambiguous documentation. Unfortunately, most documentation is expressed in English, and therefore does not always satisfy these requirements. Worse yet, there is no way of checking that the documentation is consistent with the associated code. Formal specifications present an alternative which does not suffer from these problems; however, formal specifications are notoriously hard to write. To alleviate this difficulty, we have implemented a tool which automatically derives documentation in the form of formal specifications. Our tool probes Java classes by invoking them on dynamically generated tests and captures the information observed during their execution as algebraic axioms. While the tool is not complete or correct from a formal perspective we demonstrate that it discovers many useful axioms when applied to container classes. These axioms then form an initial formal documentation of the class they describe. 1
Development Graphs  Proof Management for Structured Specifications
, 2005
"... Development graphs are a tool for dealing with structured specifications in a formal program development in order to ease the management of change and reusing proofs. In this work, we extend development graphs with hiding (e.g. hidden operations). Hiding is a particularly difficult to realize operat ..."
Abstract

Cited by 29 (19 self)
 Add to MetaCart
Development graphs are a tool for dealing with structured specifications in a formal program development in order to ease the management of change and reusing proofs. In this work, we extend development graphs with hiding (e.g. hidden operations). Hiding is a particularly difficult to realize operation, since it does not admit such a good decomposition of the involved specifications as other structuring operations do. We develop both a semantics and proof rules for development graphs with hiding. The rules are proven to be sound, and also complete relative to an oracle for conservative extensions. We also show that an absolutely complete set of rules cannot exist. The whole framework is developed in a way independent of the underlying logical system (and thus also does not prescribe the nature of the parts of a specification that may be hidden). We also show how various other logic independent specification formalisms can be mapped into development graphs; thus, development graphs can serve as a kernel formalism for management of proofs and of change.
A Note on Test Oracles and Semantics of Algebraic Specifications
"... Algebraic testing is an automated software testing method based on algebraic formal specifications. It tests if a program correctly implements an algebraic specification by checking if the equations of the specification are satisfied. One of the key techniques of algebraic testing is the use of obs ..."
Abstract

Cited by 23 (5 self)
 Add to MetaCart
(Show Context)
Algebraic testing is an automated software testing method based on algebraic formal specifications. It tests if a program correctly implements an algebraic specification by checking if the equations of the specification are satisfied. One of the key techniques of algebraic testing is the use of observation contexts as a test oracle so that the comparison of values of structured data can be realised by comparing values of simple data types. This leads to a behavioural semantics of algebraic specifications and divides sorts into observable and nonobservable. To represent the structure of objectoriented programs and to facilitate incremental integration testing, this paper extends the notion of observable sorts by introducing a partial ordering between sorts to represent the importation relation between classes. In this framework, the validity of test oracles is formally proved in final algebra semantics. 1.
On Correct Program Schemas
"... We present our work on the representation and correctness of program schemas, in the context of logic program synthesis. Whereas most researchers represent schemas purely syntactically as higherorder expressions, we shall express a schema as an open firstorder theory that axiomatises a probl ..."
Abstract

Cited by 19 (11 self)
 Add to MetaCart
We present our work on the representation and correctness of program schemas, in the context of logic program synthesis. Whereas most researchers represent schemas purely syntactically as higherorder expressions, we shall express a schema as an open firstorder theory that axiomatises a problem domain, called a specification framework, containing an open program that represents the template of the schema. We will show that using our approach we can define a meaningful notion of correctness for schemas, viz. that correct program schemas can be expressed as parametric specification frameworks containing templates that are steadfast, i.e. programs that are always correct provided their open relations are computed correctly.
Correctschemaguided Synthesis of Steadfast Programs
 In M. Lowry and Y. Ledru (eds), Proc. of ASE'97
, 1997
"... It can be argued that for (semi)automated software development, program schemas are indispensable, since they capture not only structured program design principles, but also domain knowledge, both of which are of crucial importance for hierarchical program synthesis. Most researchers represent sche ..."
Abstract

Cited by 15 (9 self)
 Add to MetaCart
(Show Context)
It can be argued that for (semi)automated software development, program schemas are indispensable, since they capture not only structured program design principles, but also domain knowledge, both of which are of crucial importance for hierarchical program synthesis. Most researchers represent schemas purely syntactically (as higherorder expressions) . This means that the knowledge captured by a schema is not formalised. We take a semantic approach and show that a schema can be formalised as an open (firstorder) logical theory that contains an open logic program. By using a special kind of correctness for open programs, called steadfastness, we can define and reason about the correctness of schemas. We also show how to use correct schemas to synthesise steadfast programs. 1. Introduction It can be argued that any systematic approach to software development must use some kind of schemabased strategies. In (semi)automated software development, program schemas become indispensable, s...
Unit Testing for Casl Architectural Specifications
 Proc. 27th Intl. Symp. on Mathematical Foundations of Computer Science
, 2002
"... The problem of testing modular systems against algebraic specifications is discussed. We focus on systems where the decomposition into parts is specified by a Caslstyle architectural specification and the parts (units) are developed separately, perhaps by an independent supplier. We consider ho ..."
Abstract

Cited by 12 (1 self)
 Add to MetaCart
(Show Context)
The problem of testing modular systems against algebraic specifications is discussed. We focus on systems where the decomposition into parts is specified by a Caslstyle architectural specification and the parts (units) are developed separately, perhaps by an independent supplier. We consider how to test such units without reference to their context of use. This problem is most acute for generic units where the particular instantiation cannot be predicted.
Constructive Data Refinement in Typed Lambda Calculus
, 2000
"... . A new treatment of data refinement in typed lambda calculus is proposed, based on prelogical relations [HS99] rather than logical relations as in [Ten94], and incorporating a constructive element. Constructive data refinement is shown to have desirable properties, and a substantial example of ..."
Abstract

Cited by 12 (7 self)
 Add to MetaCart
(Show Context)
. A new treatment of data refinement in typed lambda calculus is proposed, based on prelogical relations [HS99] rather than logical relations as in [Ten94], and incorporating a constructive element. Constructive data refinement is shown to have desirable properties, and a substantial example of refinement is presented. 1 Introduction Various treatments of data refinement in the context of typed lambda calculus, beginning with Tennent's in [Ten94], have used logical relations to formalize the intuitive notion of refinement. This work has its roots in [Hoa72], which proposes that the correctness of a concrete version of an abstract program be verified using an invariant on the domain of concrete values together with a function mapping concrete values (that satisfy the invariant) to abstract values. In algebraic terms, what is required is a homomorphism from a subalgebra of the concrete algebra to the abstract algebra. A strictly more general method is to take a homomorphic relatio...
Duality in knowledge sharing
 IN 7TH INTERNATIONAL SYMPOSIUM ON ARTIFICIAL INTELLIGENCE AND MATHEMATICS, FT
, 2002
"... I propose a formalisation of knowledge sharing scenarios that aims at capturing the crucial role played by an existing duality between ontological theories one wants to merge and particular situations that need to be linked. I use diagrams in the Chu category and colimits over these diagrams to acco ..."
Abstract

Cited by 12 (9 self)
 Add to MetaCart
(Show Context)
I propose a formalisation of knowledge sharing scenarios that aims at capturing the crucial role played by an existing duality between ontological theories one wants to merge and particular situations that need to be linked. I use diagrams in the Chu category and colimits over these diagrams to account for the reliability and optimality of knowledge sharing systems. Furthermore, I show how we may obtain a deeper understanding of a system that shares knowledge between a probabilistic logic program and Bayesian belief networks by reanalysing the scenario in terms of the present approach.