An operator calculus for transforming assignment statements, loops, and choice constructs into equation-of-state expressions is shown to be powerful enough to synthetically execute a given computer program and its test data. A demonstration of the program is equivalent to applying an operator formalism to the equation-of-state in order to reduce...
Microprogramming has evolved since its introduction in 1951 by Maurice Wilkes. The most significant change that has taken place is the recent growth of interest in user microprogramming. However, user microprogramming is a difficult task because of various complex and intricate features of the host processors. A microprogrammer must be...
Yashar is a rule based meta-tool for rapidly producing tools to increase programming speed through automating restructuring of existing source code modules so they can be reused, generating of syntax-directed tools, language-to-language translation, automated document generation , and various debugging tools. The main significance of Yashar is that it can...
Arash is a rule-based tool for re-structuring source programs in order to build software systems from reusable components. Arash incorporates a collection of Generalizers which transform source code modules into abstracted modules. Conversely, a collection of Refiners produce a concrete instance from an abstracted source module . Both Generalizers and...
Artimis is part of an environment for software reuse consisting of two logically independent portions, 1) the indexing and retrieval facility called, GrabBag, for storage and subsequent retrieval of reusable modules, and 2) a set of tools called Browsers, which aid reading and understanding of source programs. GrabBag creates a...
This tutorial discusses one of the oldest problems in computing: how to search and retrieve keyed information from a list in the least amount of time. Hashing -- a technique that mathematically converts a key into a storage address -- is one of the best methods of finding and retrieving...
We extend previous results for optimally scheduling concurrent program modules, called tasks, on a fixed, finite number of parallel processors in two fundamental ways: (1) we introduce a new heuristic which considers the time delay imposed by message transmission among concurrently running tasks; and (2) we introduce a second heuristic...
Two methods for parallelizing WHILE loops are presented. The first method converts a WHILE loop into a FORALL construct, and the second method pipelines a WHILE loop. Each of the methods is based on a transformation that makes explicit the loop counting. Also, we propose two parallel WHILE constructs.
Oregon Speedcode Universe (OSU) is a software development system employing on-screen editing of standard graphical user interface objects, prototyping, program generation, and automatic analysis tools which are typically used to accelerate the production of running applications. A programmer uses OSU to design and implement all user interface objects such as...
This tutorial discusses one of the oldest problems in computing: how to search and retrieve keyed information from a list in the least amount of time. Hashing - a technique that mathematically converts a key into a storage address - is one of the best methods of finding and retrieving...
ELGDF (Extended Large Grain Data Flow) is a design language that allows representation of a wide variety of parallel programs. The syntax is graphical and hierarchical to allow construction and viewing of realistically sized programs. ELGDF language facilitates describing parallel programs in a natural way for both shared memory model...
Oregon Speedcode Universe (OSU) is a software development environment for design, implementation, and maintenance of large soft.ware systems. Designed to be highly visual, OSU combines traditional structured analysis techniques found in most CASE tools with advanced graphical user interface management systems (UIMS) found on most contemporary workstations. This paper describes...
New parallel algorithms for solving the decomposed linear programs are developed. Direct parallelization of the sequential algorithm results in very limited performance improvement using multiple processors. By redesigning the algorithm, we achieved more than 2*P times performance improvement over the sequential algorithm, where P is the number of processors used...
Object oriented programming features information hiding and encapsulation, meaning that 1) each object hides the the implementation details tram access from outside and only a set of methods (interface routines) are visible outside of the object, and 2) changes to the implementation of the object do not require changes to...
This paper describes the program transformation method used in DataLab, a general-purpose system for the specification and synthesis of abstract data types (ADTs). We present a model for transforming visual specifications of ADTs to imperative code. This model includes two forms of internal representations: one for the ADTs visual specifications...
This research paper is limited to the User Interface of the modeling language of HELM (Hierarchical Environment for Linear Modeling). In attempt to better describe the user interface for HELM, some examples and portions of Carol Brown's report are included for ease of reading and a brief overview of the...
Parallel software development requires the flexibility to describe algorithms regardless of hardware specification, the ability to accommodate existing applications. and maintainability throughout the software life cycle. We propose the following model to address these issues. Our model incorporates aspects of the object-oriented and large grain data flow programming paradigms, and...
This paper describes HelpDez, a colored-Petri-net-based approach for the design, simulation, and construction of hypermedia help systems. The storage model, system capabilities, and user interface model of a hypermedia help system are examined. Colored Petri nets are chosen to model hypermedia help systems due to their graphical expressiveness and their...
The Parallel Programming Support Environment (PPSE) is an experimental integrated set of tools for the design and construction of large software systems to run on parallel computers. The tools include a graphical de.sign editor, a graphical target machine description system, a task mapper/scheduler tool, parallel code generator, and graphical aids...
In this paper we study the problem of scheduling parallel program tasks that are enclosed in a set of nested loops on parallel computers. We first introduce a representation of the tasks and their relations in a loop. The representation allows us to express loop-carried data dependences among tasks as...
It is suggested that the best way to learn about a Macintosh application is to play around with it. We agree with this philosophy and believe that most of the features in the Parallel Programming Support Environment (or PPSE) are easy enough to learn without referring to this manual. Most...
Heuristics for static scheduling of task graphs using list scheduling techniques have continued to improve by adding real-world factors such as processor speed, network transmission speed, interconnection topology, and link contention considerations to the basic task graph model. Yet, the resulting schedules do not fully model program loops and branches,...
As UNIX operating system's popularity increases, so arises the greater need for performance data gathering and resources management of the systems. Contrary to the expectation of UNIX users, however, there is only a limited set of tools available, and these tools are difficult to correlate data from different sources and...
We provide a new solution to the problem of scheduling parallel program tasks that are enclosed in a set of nested loops on distributed-memory parallel computers. The new solution is extended to a new scheduling heuristic for scheduling unrolled loops onto arbitrary target machines. Our technique allows several iterations of...