85 research outputs found

    The Larch/Smalltalk Interface Specification Language

    Get PDF
    Object-oriented programming languages, such as Smalltalk, help one to build reusable program modules. The reuse of program modules requires adequate documentation --- formal or informal. Larch/Smalltalk is a formal specification language for specifying such reusable Smalltalk modules. Larch/Smalltalk firmly separates specification from implementation. In Larch/Smalltalk, the unit of specification is an abstract data type, which is an abstraction of the behavior produced by one or more Smalltalk classes. A type can be a subtype of other types, which allows types to be organized based on specified behavior, and also allows for inheritance of their specifications. Larch/Smalltalk specifications are developed using specification tools integrated in the Smalltalk programming environment

    Gentle Introduction to Larch / Smalltalk Specification Browsers

    Get PDF
    This paper provides a tutorial introduction to the Larch/Smalltalk specification browsers. The browsers are specification support tools providing a powerful and sophisticated environment for writing and managing Larch/Smalltalk specifications. They are integrated in the Smalltalk-80 programming system. The reader is assumed to have some familiarity with the Smalltalk system and Larch-style specification

    An Overview of Larch/C++: Behavioral Specifications for C++ Modules

    Get PDF
    An overview is presented of the behavioral interface specification language Larch/C++. The features of Larch/C++ used to specify the behavior of C++ functions and classes, including subclasses, are described, with examples. Comparisons are made with other object-oriented specification languages. An innovation in Larch/C++ is the use of examples in function specifications. Copyright (c) Kluwer Academic Publishers, 1996. Used by permission. An abbreviated and earlier version of this paper is chapter 8 in the book Specification of Behavioral Semantics in Object-Oriented Information Modeling, edited by Haim Kilov and William Harvey (Kluwer Academic Publishers, 1996), pages 121-142

    The Larch Environment - Python programs as visual, interactive literature

    Get PDF
    The Larch Environment' is designed for the creation of programs that take the form of interactive technical literature. We introduce a novel approach to combined textual and visual programming by allowing visual, interactive objects to be embedded within textual source code, and segments of source code to be further embedded within those objects. We retain the strengths of text-based source code, while enabling visual programming where it is bene�cial. Additionally, embedded objects and code provide a simple object-oriented approach to extending the syntax of a language, in a similar fashion to LISP macros. We provide a rapid prototyping and experimentation environment in the form of an active document system which mixes rich text with executable source code. Larch is supported by a simple type coercion based presentation protocol that displays normal Java and Python objects in a visual, interactive form. The ability to freely combine objects and source code within one another allows for the construction of rich interactive documents and experimentation with novel programming language extensions

    Designing precise and flexible graphical modelling languages for software development

    Get PDF
    Model-driven approaches to software development involve building computerized models of software and the environment in which it is intended to operate. This thesis offers a selection of the author’s work over the last three decades that addresses the design of precise and flexible graphical modelling languages for use in model-driven software development. The primary contributions of this work are: • Syntropy: the first published object-oriented analysis and design (OOAD) method to fully integrate formal and graphical modelling techniques. • The creation of the Object Constraint Language (OCL) and its integration into the Unified Modeling Language (UML) specification. • The identification of requirements and mechanisms for increasing the flexibility of the UML specification. • The design and implementation of tools for implementing graphical Domain Specific Languages (DSLs). The starting point was the author’s experience with formal specification techniques contrasted with the lack of precision of published object-oriented analysis and design methods. This led to a desire to fully integrate these two topics – formal specification and object-orientation - into a coherent discipline. The Syntropy approach, created in 1994 by this author and John Daniels, was the first published complete attempt to do this. Much of the author’s subsequent published work concerns the Unified Modeling Language (UML). UML represented a welcome unification of earlier OOAD approaches, but suffered badly from inflexibility and lack of precision. A significant part of the work included in this thesis addresses the drawbacks of the UML and proposes improvements to the precision of its definition, including through the invention of Object Constraint Language (OCL) and its incorporation into the UML specification, and the consideration of UML as source material for the definition of Domain Specific Languages (DSLs). Several of the author’s published works in this thesis concern mechanisms for the creation of DSLs, both within a UML framework and separately

    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/CORBA: Specifying the Behavior of CORBA-IDL Interfaces

    Get PDF
    The Common Object Request Broker Architecture (CORBA) provides mechanisms for developing heterogeneous, interoperable distributed object systems. In CORBA, the interfaces of objects are specified using the Interface Definition Language (IDL). However, clients and object implementors also need information on the behavior of such objects. Larch/CORBA extends IDL to formally specify the behavior of objects. The language provides mechanisms to specify the concurrency that is inherent in distributed systems. Our goal is to design a language that is usable directly by system designers and programmers. A notable feature of Larch/CORBA is its focus on data rather than on objects in specifying concurrency. It also provides a general mechanism for specifying synchronization. This report presents a preliminary design of Larch/CORBA and a suite of example specifications.END:: ncstrl.iastate//TR95-27

    FORMAL SPECIFICATIONS AND COMMAND MODELING IN SOFTWARE SYSTEMS WITH A COMPLEX COMMAND STRUCTURE

    Get PDF
    Commands are an important part of large scale industrial software specifications, especially where the specification is separated from its implementation as in open software standards. Commands can be complex because of large numbers of parameters, dependencies among parameters, subtle side effects, and lack of abstraction. We present a formal approach for command modeling and apply it to IBM\u27s Distributed Data Management Architecture (DDM), a complex, large scale specification of data access on remote and heterogeneous IBM systems. Our approach consists of three parts: a declarative, executable command specification language, an incremental specification technique, and automated reasoning tools. The command specification language provides a formal interpretation of the structural (input-output) and behavioral properties (state constraints/change) of commands. To manage the details of complex commands with numerous inter-dependent arguments, a novel incremental specification technique and several tools for incremental definition and browsing are presented. Two forms of automated reasoning are also demonstrated: type checking to ensure well-typed expressions and target system tracing to simulate command execution. Lessons learned from our experience with the DDM are also discussed
    • …
    corecore