399 research outputs found

    Unification of LARCH and Z-Based Object Models to Support Algebraically-based Design Refinement: The LARCH Perspective

    Get PDF
    This research describes the feasibility of developing object-oriented LARCH specifications, part of a dual approach for formally extending object-oriented analysis models using LARCH and Z. The first phase consisted of two steps establishing a set of transformation heuristics for algebraically representing object models and implementing a robust LARCH parser. The LARCH parser produced abstract syntax trees ASTs of objects forming the basis for analyzing the similarities and differences between Z-based and LARCH-based object representations. The second phase used the analysis of LARCH and Z to identify fundamental core constructs in the languages and abstract syntax trees. These core constructs consisted of similar syntactic and semantic notions of signatures and axioms for describing a problem domain, thereby forming a canonical framework for formal object representations. This canonical framework provides a front-end for producing design refinement artifacts such as interface languages theorem proving sentences, and synthesis diagrams. The final phase demonstrated the feasibility of interface language generation by establishing an executable framework. This executable framework mapped LARCH into the SOFTWARE REFINERY™ Programming Environment to rapidly prototype object-oriented LARCH specifications

    Unification of LARCH and Z-based Object Models to Support Algebraically-based Design Refinement: The Z Perspective

    Get PDF
    This research established a foundation for formalizing the evolution of based object models to theories, part of a dual approach for formally extending object-oriented analysis models using the Z and LARCH languages. For the initial phase, a comprehensive, consistent, and correct Z language parser was implemented within the SOFTWARE REFINERY™ Programming Environment. The Z parser produced abstract syntax trees (ASTs) of objects, thereby forming the basis for analyzing the similarities and differences between the based and LARCH-based object representations. The second phase used the analysis of the two languages to identify fundamental core constructs that consisted of similar syntactic and semantic notions of signatures and axioms for describing a problem domain, thereby forming a canonical framework for formal object representations. This canonical framework provides a front-end for producing design refinement artifacts such as synthesis diagrams, theorem proving sentences and interface languages. The final phase of the process demonstrated the feasibility of interface language generation by establishing an executable framework that mapped Z into the SOFTWARE REFINERY™ Environment to rapidly prototype object-oriented Z specifications

    Specification and implementation of the Larch shared language

    Get PDF
    This project aims to prototype formal specification in Larch. The motivation for looking at formal specifications stems from an appreciation of the problem outlined above, frustration with current methods, and a desire to practise what is preached. The aim is to implement a formal specification language, to write a non-trivial specification and to employ formal methods of specification during software development. As a result, one should have a thorough understanding of a formal specification language, and the practical implications of using it as a basis for formal methods

    Tools for producing formal specifications : a view of current architectures and future directions

    Get PDF
    During the last decade, one important contribution towards requirements engineering has been the advent of formal specification languages. They offer a well-defined notation that can improve consistency and avoid ambiguity in specifications. However, the process of obtaining formal specifications that are consistent with the requirements is itself a difficult activity. Hence various researchers are developing systems that aid the transition from informal to formal specifications. The kind of problems tackled and the contributions made by these proposed systems are very diverse. This paper brings these studies together to provide a vision for future architectures that aim to aid the transition from informal to formal specifications. The new architecture, which is based on the strengths of existing studies, tackles a number of key issues in requirements engineering such as identifying ambiguities, incompleteness, and reusability. The paper concludes with a discussion of the research problems that need to be addressed in order to realise the proposed architecture

    Forcing Behavioral Subtyping Through Specification Inheritance

    Get PDF
    A common change to object-oriented software is to add a new type of data that is a subtype of some existing type in the program. However, due to message passing unchanged parts of the program may now call operations of the new type. To avoid reverification of unchanged code, such operations should have specifications that are related to the specifications of the appropriate operations in their supertypes. This paper presents a specification technique that uses inheritance of specifications to force the appropriate behavior on the subtype objects. This technique is simple, requires little effort by the specifier, and avoids reverification of unchanged code. We present two notions of such behavioral subtyping, one of which is new. We show how to use these techniques to specify examples in C++

    Towards the Formal Specification and Verification of Maple Programs

    Full text link
    In this paper, we present our ongoing work and initial results on the formal specification and verification of MiniMaple (a substantial subset of Maple with slight extensions) programs. The main goal of our work is to find behavioral errors in such programs w.r.t. their specifications by static analysis. This task is more complex for widely used computer algebra languages like Maple as these are fundamentally different from classical languages: they support non-standard types of objects such as symbols, unevaluated expressions and polynomials and require abstract computer algebraic concepts and objects such as rings and orderings etc. As a starting point we have defined and formalized a syntax, semantics, type system and specification language for MiniMaple

    JML\u27s Rich, Inherited Specifications for Behavioral Subtypes

    Get PDF
    The Java Modeling Language (JML) is used to specify detailed designs for Java classes and interfaces. It has a particularly rich set of features for specifying methods. This paper describes those features, with particular emphasis on the features related to specification inheritance. It shows how specification inheritance in JML forces behavioral subtyping, through a discussion of semantics and examples. It also describes a notion of modular reasoning based on static type information, supertype abstraction, which is made valid in JML by methodological restrictions on invariants, history constraints, and initially clauses and by behavioral subtyping

    Larch/C++ Reference Manual

    Get PDF
    Larch/C++ is a notation for formally specifying the behavior and interfaces of C++ classes and functions. The goal of this reference manual is to precisely record the design of Larch/C++. We try to give examples and explanations, and we hope that these will be helpful to readers trying to learn about formal specification using Larch/C++
    • …
    corecore