Refinement Methodology (RM) is presented for the design of Ada programs. The methodology blends stepwise refinement and the information-hiding principle. When Ada is used as a programminglanguage and Refinement Met...
详细信息
Refinement Methodology (RM) is presented for the design of Ada programs. The methodology blends stepwise refinement and the information-hiding principle. When Ada is used as a programminglanguage and Refinement Methodology Program Design language (RMPDL) as a design language, the resulting combination is semi-incremental. The steps of the methodology are explained and demonstrated by an example. A step consists of these activities: 1. selection of a cluster of entities from the current backlog interface, 2. definition of all entities of the cluster, 3. update of the backlog interface, and 4. scanning of the backlog interface for integrity of dataflow and other completeness criteria. A portion of the methodology is a collection of rules by which procedures acquire parameters, called first and 2nd rules for parameters. Past experience with RM is condensed. It is argued that ''with'' clauses of Ada, together with Ada order of compilation, encourage bottom-up programming while discouraging top-down programming, and thus should be considered harmful.
Tagging is the augmentation of run-time data with some form of self-description for type checking or storage management purposes. We have studied the contribution of automatic tagging by converting two programs writte...
详细信息
Tagging is the augmentation of run-time data with some form of self-description for type checking or storage management purposes. We have studied the contribution of automatic tagging by converting two programs written in object-oriented languages to PL/1. We had thought that much of the apparent superiority of the object-oriented version came from dynamic binding of operator invocations. However, of several factors contributing to program quality, automatic storage management and the availability of generic abstract data types seem equally important in the examples studied. Tags turned out to be needed for only a few data objects and are used in only a few places. When the obligatory tags are modelled in PL/1, the code becomes particular to the problem at hand and is less elegant. On the other hand, current implementations of object-oriented languages have considerable overhead in both time and space for tags. This led us to consider combining tagged and non-tagged objects in a single language.
Methods are presented for verifying loops which iterate over elements of data structures. This verification is done in the functional style developed by Mills and others, in which code is verified against the function...
详细信息
Methods are presented for verifying loops which iterate over elements of data structures. This verification is done in the functional style developed by Mills and others, in which code is verified against the function that the code is intended to compute. The methods allow the verifier to concentrate on the essential computation performed on each element of the structure, and separate out such concerns as data-structure access and termination so that they do not need to be verified again for every loop in the program. The methods are applicable to a large class of data structures and iterations over them.
The number of programminglanguages is large and steadily increasing. However, little structured information and empirical evidence is available to help software engineers assess the suitability of a language for a pa...
详细信息
The number of programminglanguages is large and steadily increasing. However, little structured information and empirical evidence is available to help software engineers assess the suitability of a language for a particular development project or software architecture. We argue that these shortages are partly due to a lack of high-level, objective programminglanguage feature assessment criteria: existing advice to practitioners is often based on ill-defined notions of 'paradigms' [3, p. xiii] and 'orientation', while researchers lack a shared common basis for generalisation and synthesis of empirical results. This paper presents a feature model constructed from the programmer's perspective, which can be used to precisely compare general-purpose programminglanguages in the actor-oriented, agent-oriented, functional, object-oriented, and procedural categories. The feature model is derived from the existing literature on general concepts of programming, and validated with concrete mappings of well-known languages in each of these categories. The model is intended to act as a tool for both practitioners and researchers, to facilitate both further high-level comparative studies of programminglanguages, and detailed investigations of feature usage and efficacy in specific development contexts. (C) 2014 Elsevier B.V. All rights reserved.
Most class-based Object-Oriented programminglanguages (OOPLs) are strongly typed languages, which means every object created in a program is associated with a type. However how to add object dynamic behaviors modeled...
详细信息
ISBN:
(纸本)9781932415759
Most class-based Object-Oriented programminglanguages (OOPLs) are strongly typed languages, which means every object created in a program is associated with a type. However how to add object dynamic behaviors modeled by Harel's statecharts into object types is a challenging task. In this paper, we propose adding states and state transitions, which are largely unstated in object type theory, into object type definitions and typing rules. We argue that in order to ensure the correctness of the type system in OOPLs, the state changes of objects during their execution should be properly defined and enforced. As a consequence, we propose our tau-calculus, which refines zeta-calculus in defining object types. By adding states and state transitions into object types, we propose modifying current class based programminglanguages to fit the needs of state tracking. Adding states and state transitions into object types further indicates that inheritance implies also behavioral inheritance. We modify the object subtyping theory based also on behavioral inheritance between object types. We argue that the tau-calculus with modified class definitions can be implemented efficiently in object-oriented programminglanguages.
In current class-based Object-Oriented programminglanguages (OOPLs), object types include only static features. How to add object dynamic behaviors modeled by Harel's statecharts into object types is a challengin...
详细信息
In current class-based Object-Oriented programminglanguages (OOPLs), object types include only static features. How to add object dynamic behaviors modeled by Harel's statecharts into object types is a challenging task. We propose adding states and state transitions, which are largely unstated in object type theory, into object type definitions and typing rules. We argue that dynamic behaviors of objects should be part of object type definitions. We propose our type theory, the tau-calculus, which refines Abadi and Cardelli's zeta-calculus, in modeling objects with their dynamic behaviors. In our proposed type theory, we also explain that a subtyping relation between object types should imply the inclusion of their dynamic behaviors. By adding states and state transitions into object types, we propose modifying programming language constructs for state tracking.
暂无评论