577 research outputs found

    Fast Recompilation of Object Oriented Modules

    Full text link
    Once a program file is modified, the recompilation time should be minimized, without sacrificing execution speed or high level object oriented features. The recompilation time is often a problem for the large graphical interactive distributed applications tackled by modern OO languages. A compilation server and fast code generator were developed and integrated with the SRC Modula-3 compiler and Linux ELF dynamic linker. The resulting compilation and recompilation speedups are impressive. The impact of different language features, processor speed, and application size are discussed

    Concurrent object-oriented programming: The MP-Eiffel approach

    Get PDF
    This article evaluates several possible approaches for integrating concurrency into object-oriented programming languages, presenting afterwards, a new language named MP-Eiffel. MP-Eiffel was designed attempting to include all the essential properties of both concurrent and object-oriented programming with simplicity and safety. A special care was taken to achieve the orthogonality of all the language mechanisms, allowing their joint use without unsafe side-effects (such as inheritance anomalies)

    Metamodel-based model conformance and multiview consistency checking

    Get PDF
    Model-driven development, using languages such as UML and BON, often makes use of multiple diagrams (e.g., class and sequence diagrams) when modeling systems. These diagrams, presenting different views of a system of interest, may be inconsistent. A metamodel provides a unifying framework in which to ensure and check consistency, while at the same time providing the means to distinguish between valid and invalid models, that is, conformance. Two formal specifications of the metamodel for an object-oriented modeling language are presented, and it is shown how to use these specifications for model conformance and multiview consistency checking. Comparisons are made in terms of completeness and the level of automation each provide for checking multiview consistency and model conformance. The lessons learned from applying formal techniques to the problems of metamodeling, model conformance, and multiview consistency checking are summarized

    Contract-Based Programming on Modern C++

    Get PDF
    Contract-based Programming or Design By Contract (DBC) is a discipline for system construction that in recent years has postulated to be one of the most solid and reliable models for software creation. It is well known that in the software industry the number of projects not being successfully developed is huge. The main cause of the failure is that projects do not meet user expectations. In this context, Design By Contract seems to emerge as a solution to decrease this failure rate. This philosophy provides a set of mechanisms for the validation of part of the requirements specification. In recent years, several programming languages started to implement DBC, either as part of the language or an external library. The main programming languages that support contract-based programming are Ada 2012, Spark, Eiffel, D, C# CodeContracts or Microsoft Source-Code Annotation Language (Microsoft SAL). Traditionally, C++ has been a programming language focused on flexibility, performance and efficiency. This has attracted many people to carry out projects using this programming language. However, trends make programming languages change, and the interests of the industry are leaning towards solid solutions. Those solutions shall include frameworks that are reliable. With this same purpose, C++ has designed a specification for the implementation of Design By Contract in the programming language. This new specification has been accepted by the ISO C++ committee to be included in C++20. The specification includes several clauses that allow the user to write pre/postconditions on the code. This allows part of the requirement specification to be merged into the code, enabling traceability between the phases of the software project. The specification of a new feature in a programming language implies changes in how the language is understood by a compiler. For the implementation of a new specification, several changes are required at different levels. This document describes these changes. Additionally, it provides an overview of the structure of a compiler, and a brief description of all the parts of the Clang C++ compiler.La programación por contratos es una disciplina de construcción de sistemas que recientemente se ha postulado como una de las más solidas y fiables para la creación de sistemas software. Se sabe que la industria de desarrollo de software no está siendo exitosa debido en parte a la tasa de fallos que hay en éstos. En este contexto, la programación por contratos emerge como una solución para reducir esta tasa de fracaso en la industria. Esta tendencia de desarrollo provee a los usuarios con mecanismos para la validación de los requisitos. En los últimos años, varios lenguajes de programación han comenzado a implementar la programación por contratos, bien como parte del lenguaje o como una biblioteca externa. Los principales lenguajes de programación que a día de hoy soportan programación por contratos son Ada 2012, Spark, Eiffel, D, C# CodeContracts or Microsoft Source-Code Annotation Language (Microsoft SAL). Tradicionalmente, C++ ha sido un lenguage de programación centrado en proveer al usuario con flexibilidad, rendimiento y eficiencia. Estas características han atraido a muchos clientes de cara a utilizar este lenguaje de programación en proyectos. Sin embargo, las tendencías fuerzan cambios en los lenguajes de programación, y los intereses de las empresas actualmente se están inclinando hacia soluciones robustas. Estas soluciones, deben incluir marcos de trabajo que sean fiables. Con esto en mente, se ha diseñado una especificación para la programación por contratos en el lenguaje de programación. Esta nueva especificación, ha sido aceptada para por el Comite ISO C++ para ser incluida en C++20. Esta especificación provee al usuario con varios mecanismos que permiten verificar condiciones en el código. Esto permite directamente enlazar la especificación de requisitos con la implementación de los mismos. La especificación de una nueva característica dentro de un lenguaje de programación implica cambios en como el lenguaje es entendido por un compilador. Para la implementación de estos nuevos requisitos se requiere de realizar modificaciones en el compilador en distintos niveles de análisis. En este proyecto, se describe un resumen de los cambios que son necesarios dentro de un compilador. Estos cambios incluyen un resumen de la estructura del compilador, posteriormente se desglosa la estructura del compilador de C++ Clang y por último se describen las modificaciones en cada una de las partes involucradas.Ingeniería Informátic

    Objective Caml on .NET: The OCamIL Compiler and Toplevel

    Get PDF
    International audienceWe present the OCamIL compiler for Objective Caml that targets .NET. Our experiment consists in adding a new back-end to the INRIA Objective Caml compiler, that generates MSIL bytecode. Among all the advantages of code reuse, ensuring compatibility while keeping all the expressiveness of the original language is particularly interesting. This allowed us to bootstrap the OCamIL compiler as a .NET component and build an interactive loop (toplevel) which may be embedded within .NET applications. This work deals with typing issues, because OCamIL needs to translate an untyped intermediate language into a typed bytecode. We discuss various intermediate language retyping techniques and their consequences on performances. We also present applications of interoperability of Objective Caml and C# components

    OpenJML: Software verification for Java 7 using JML, OpenJDK, and Eclipse

    Full text link
    OpenJML is a tool for checking code and specifications of Java programs. We describe our experience building the tool on the foundation of JML, OpenJDK and Eclipse, as well as on many advances in specification-based software verification. The implementation demonstrates the value of integrating specification tools directly in the software development IDE and in automating as many tasks as possible. The tool, though still in progress, has now been used for several college-level courses on software specification and verification and for small-scale studies on existing Java programs.Comment: In Proceedings F-IDE 2014, arXiv:1404.578

    Supporting the evolution of software

    Get PDF
    2+122hlm.;24c

    An optimizing delivery system for object-oriented software

    Get PDF
    An open-ended and flexible object-oriented language ideally requires its compiler to optimize code at the time of building complete application systems. Optimum code can be judged in terms of its size, which should be compact, and speed of execution, which should be fast. In addition, the turn-around time for recompilation should be as short as possible. Four strategies, based on graph analysis, have been developed which allow these objectives to be attained in a more consistent manner than with current compilers. The findings are being incorporated in BRUNEL, a new object-oriented language and programming environment, which aims to provide a higher degree of support for abstract design, while generating optimal code for applications. -from Author
    corecore