9 research outputs found

    A methodology for producing reliable software, volume 1

    Get PDF
    An investigation into the areas having an impact on producing reliable software including automated verification tools, software modeling, testing techniques, structured programming, and management techniques is presented. This final report contains the results of this investigation, analysis of each technique, and the definition of a methodology for producing reliable software

    A portability assistant for Fortran applications

    Get PDF
    This thesis addresses the issues of porting software from one machine environment to another. Some general observations are made about the definition of Portability and the design and portability of programs written in high level programming languages, in particular Fortran. Two areas of portability are considered in detail: (i) Portability Criteria and Measures - The main criteria affecting the portability of Fortran applications are identified and possible measures of the effects of these criteria considered. A Portability Function is defined for obtaining a measure of the percentage portability of Fortran programs. (ii) Portability Assistant - The use of existing analysis tools to obtain measures of the criteria affecting the portability of Fortran programs is considered. A portability assistant is provided in the form of an Ingres Relational Database, which holds die data obtained from these measures, enables the portability function to be applied to the application and assists in the porting of the application. The methods of measuring the criteria affecting Fortran programs and the use of an Ingres database as a portability assistant is then applied to a particular example, the porting of NOMIS, a large manpower database

    Production of optimised machine-code for high-level languages using machine-independent intermediate codes

    Get PDF
    The aim of this work was to investigate the problems associated with using machine-independent intermediate codes in the translation from a high-level language into machine code, with emphasis on minimising code size and providing good run-time diagnostic capabilities. The main result was a machine-independent intermediate code, I-code, which has been used successfully to develop optimising and diagnostic compilers for the IMP77 language on a large number of different computer systems. In addition, the work has been used to lay the foundations for a project to develop an intermediate code for portable SIMULA compilers. The major conclusions of the research were that carefully designed machine-independent intermediate codes can be used to generate viable optimising and diagnostic compilers, and that the commonality introduced into different code generators processing the code for different machines simplifies the tasks of creating new compilers and maintaining old ones

    Abstract machine design for increasingly more powerful ALGOL-languages

    Get PDF
    This thesis presents the work and results of an investigation into language implementation. Some work on language design has also been undertaken. Three languages have been implemented which may be described as members of the Algol family with features and constructs typical of that family. These include block structure, nested routines, variables, and dynamic allocation of data structures such as vectors and user-defined structures. The underlying technique behind these Implementations has been that of abstract machine modelling. For each language an abstract intermediate code has been designed. Unlike other such codes we have raised the level of abstraction so that the code lies closer to the language than that of the real machine on which the language may be implemented. Each successive language is more powerful than the previous by the addition of constructs which were felt to be useful. These were routines as assignable values, dynamically initialised constant locations, types as assignable values and lists. The three languages were, Algol R a "typical" Algol based on Algol W h an Algol with routines as assignable values, enumerated types, restriction of pointers to sets of user-defined structures, and constant locations. nsl a polymorphic Algol with types as assignable values, routines as assignable values, lists, and type- and value-constant locations. The intermediate code for Algol R was based on an existing abstract machine. The code level was raised and designed so that it should be used as the input to a code generator. Such a code generator was written improving a technique called simulated evaluation. The language h was designed and a recursive descent compiler written for it which produced an intermediate code similar in level to the previous one. Again a simulated evaluation code generator was written, this time generating code for an interpreted abstract machine which implemented routines as assignable and storable values. Finally the language nsl was designed. The compiler for it produced code for an orthogonal, very high level tagged architecture abstract machine which was implemented by interpretation. This machine implemented polymorphism, assignable routine values and type- and value- constancy. Descriptions of the intermediate codes/abstract machines are given in appendices

    Conception d'une architecture logicielle permettant le contrôle de machines-outils dans un contexte d'ouverture du contrôleur

    Get PDF
    L'usinage par commande numérique est un domaine où bon nombre d'innovations ont pu être constatées depuis plusieurs années. Ces innovations ont eu lieu surtout du point de vue mécanique, avec de nouvelles techniques permettant de diminuer le temps d'usinage, améliorer la durée de vie des outils et augmenter la précision et la répétivité des machines. Cependant, tous ces changements n'ont pas nécessairement donné lieu à des innovations équivalentes dans la portion logicielle des machines. Celles-ci sont toujours contrôlées à l'aide d'une technologie logicielle vieille de plus de quarante ans. La langage de programmation accessible à l'usager, les Codes-G, n'a que très peu évolué. Quelques problèmes peuvent être identifiés. Tout d'abord, les Codes-G ne forment en rien un véritable langage de programmation. Certaines extensions ont bien été ajoutées au fil des années, mais elles restent très limitées. De plus, l'ajout de fonctions de plus en plus variées sur les machines-outils favorise la création d'architectures ouvertes où l'usager peut étendre les fonctionnalités du contrôleur et de la machine au besoin. Les Codes-G n'offrent cependant qu'un contrôle très sommaire de la machine. Il apparaît donc que l'utilisation des machines-outils à leur plein potentiel se heurte aux limites de la couche logicielle actuellement utilisée pour accéder à leurs fonctionnalités. Une nouvelle architecture logicielle permettant la mise en oeuvre de contrôleurs à architecture ouverte, l'architecture BNCL (Basic Numerical Control Language), a donc été conçue. La base de cette architecture est une machine virtuelle réalisant l'abstraction de l'environnement d'exécution du contrôleur, et un ensemble de matériel virtuel réalisant l'abstraction des particularités physiques de la machine-outil. Grâce à ces deux axes d'abstraction, les développements logiciels effectués sur un contrôleur sont portables. De plus, la prise en charge des extensions personnalisées de la machine-outil par l'utilisateur devient possible. Ce système permet également l'utilisation de tout langage informatique jugé pertinent par l'usager pour peu qu'un compilateur existe pour cette architecture. La liberté de choix est donc totale tant du point de vue de la machine physique que des outils logiciels utilisés. Les avantages escomptés de l'utilisation d'une telle architecture ont fait l'objet d'essais qui ont permis de confirmer la pertinence de cette approche. Cette nouvelle architecture logicielle constitue une contribution importante au domaine de recherche sur le contrôle des machines-outils à commande numérique

    Levels of language for portable software

    No full text
    corecore