RSRG: Components


Java Component Samples

If you're trying to get an idea of what Resolve-style code looks like in an "industrial strength" language, this is the place to look for the RSRG's Java components that we have used in both research and instructional activities. These components are used in the introductory courses for CS majors at OSU; click here for more info, including links to course materials (slides, assignments, etc.) and to a JAR file containing these components that is provided to students in these courses. They reflect our thinking about how the Resolve discipline can be observed and encoded in Java.

Resolve/C++ Component Samples

If you're trying to get an idea of what Resolve-style code looks like in an "industrial strength" language, this is the place to look for the Resolve/C++ components that we have used in both research and instructional activities. They reflect our thinking about how the Resolve discipline can be observed and encoded in C++.

Checked Pointer Components

In "Checkmate: Cornering C++ Dynamic Memory Errors With Checked Pointers", Proceedings of the Thirty-First SIGCSE Technical Symposium on Computer Science Education, ACM Press, March 2000 (PDF; 27K), we introduced a simple and inexpensive way to develop C++ programs involving pointers that is safer than using normal C++ pointers.  A technical addendum explains the major design decisions involved in developing the "checked pointers" idea, which were beyond the scope of the published paper because of page limitations, and contains links to the free code components we provided at the time.  Subsequently, a much improved and more sophisticated version of the above ideas has been developed by Steve Edwards at Virginia Tech.  Contact him for details and code.

Older (1995) Resolve Component Samples

Another larger but older sample of components is also available. If you're trying to get an idea of what Resolve-style code looked like as of 1995, this is the place to look for Resolve/Ada and Resolve/C++ implementations of Resolve specifications. Some components here are special ones that are used to create a seamless (as possible) interface between ordinary Ada or C++ and Resolve/Ada or Resolve/C++. But most components are regular Resolve/Ada or Resolve/C++ components. Over time, we expect to add (to the current component catalog) components with the functionality and performance of some of these older ones.

For each Resolve/Ada component, there is at least one applicable Resolve conceptual module (.rcm file), and generally one or more Ada implementations (.ads and .adb files). There is also a Test subdirectory for each Resolve/Ada component that contains a test driver main program, a sample input test script, and the test driver's expected output for that input script. 

Historical Roots: MacSTILE

The current RSRG work has roots in various previous research projects of the faculty involved. One of these projects was an early tool for describing what has since become popularly known as "software architecture": MacSTILE. Originally a commercial product that we put into the public domain with the release of the MacSTILE 1.3.1 Distribution, MacSTILE exhibits a number of interesting features involving reusability of components that still have not appeared in other software system design tools. Although written over a quarter-century ago, amazingly the code still runs if you can find a Macintosh that can be run in "classic" mode; but a clumsy user interface designed for a 9" black-and-white monitor belies its age and the inherent limitations of the interactive computing environment of the mid-1980s.


Bruce W. Weide
Last modified: Tue Nov 5 14:35:53 EST 2013