577 research outputs found
Fast Recompilation of Object Oriented Modules
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
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
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
Link-time static analysis for efficient separate compilation of object-oriented languages
International audienc
Contract-Based Programming on Modern C++
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
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
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
2+122hlm.;24c
An optimizing delivery system for object-oriented software
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
- …