Star: An Executable Software System Specification Language
Publication Date: 2010-Dec-04
The IP.com Prior Art Database
Star is the name of a specification language that was first introduced in 2001 as part of a software product called “StarCASE”. StarCASE is a computer program generator that processes software requirement specifications to generate C programs. (The “CASE” in StarCASE stands for Computer Aided Software Engineering). The Star language is an executable specification language. As a specification language it can be characterized as “attribute-based”. Star allows for statements and expressions that directly describe system requirements involving both computer memory objects and objects in the environment of a software-based system that are capable of being detected and controlled or affected by a software process. Star introduces a concept called “attachment”, a method for declaring and describing system and system environment objects. The Star language as it existed within the StarCASE product laid important groundwork for executable specifications. In particular, Star within StarCASE contained the attribute-based object model. The Star language also supported the generation of non-procedural code for several important classes of problems, including the generation of source code that accomplished a specified system requirement “goal” where multiple antecedent steps were involved. This type of code generation included logic to exclude “already-happened” antecedent steps from the generated procedural code. An overview of the algorithm that accomplishes this is presented; in general it uses a form of backward reasoning that involves a set of rule base rules, in which the steps to accomplish a goal are recursively assembled in order to form a sub-system that accomplishes the goal. The Star language nevertheless did not incorporate language features that addressed important areas sometimes associated with specification: these include support for automatic code generation to support specifications that referred to complex conditions, including those that involved reference to past states of objects. The language did not incorporate support for “functional attributes”, e.g. attributes of values that have reference to behavioral or functional properties of those values (irrespective of their stored location). In addition, Star did not incorporate support for an important notational abbreviation: the “forallx” quantifier. Each of these areas is important from the perspective of algorithm synthesis; a set of conceptual foundations along with some proposed language features to handle these areas is presented. This document has several purposes: first, it contains a description of the Star language as it was in StarCASE; second, it is a collection of resources pertaining to Star and StarCASE, including lists of desired features and of problematic areas. Third, it explores the advanced specification features that could be incorporated into Star in the future. Finally, due to the complexities of the problem domain and to the nature of this project as a work in-progress, many of the sections of this document are presented in “draft” form.
Copyright 2010 Glenn Hofford. All rights reserved.
Product and company names mentioned herein may be the trademarks of their respective owners.
Date of authorship: December 4, 2010
The methods and techniques described herein are hereby placed in the public domain. All software in this document is covered by the following:
THIS SOFTWARE IS PROVIDED BY GLENN HOFFORD ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GLENN HOFFORD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1) Introduction. 2
2) Background: Software Development and Star/StarCASE. 3
3) Key Points. 4
4) Classes of Problems Handled by Star Version 1. 6
5) Advantages/Features of Star Version 1. 7
6) Prediction and Attachment 10
7) Specification: Star Language Basics. 15
8) Ontology and the Star Object Model 36
9) Application of the Object Model to a Problem Domain. 45
10) Questions and Challenges. 50
11) Future Directions for the Star Language. 52
12) [Draft] Artificial Intelligence Features of StarCASE. 54
13) [Draft] Advanced Specification. 68
14) StarCASE V1 Include Files and Samples. 75
Star[i] is a language for specifying computer software systems. It is a specification language for use by systems analysts, designers and implementers. Star is an executable specification language for several important classes of problems. It has many features in common with computer programming languages such as ‘C’ and Java; however it differs in a number of important ways. First, Star uses an object-attribute approach for specification, whereas programming languages use a combination of statements, expressions and function calls. Second, Star allows for the specification of system requirements that pertain directly to objects in the environment of a system. For instance, Star specifications can directly refer to windows on a screen, or to fields and records in a database table. In contrast, statements and expressions of a traditional programming language can only directly refer to objects in computer memory. Third, Star is a language for specifying requirements. The built-in constructs of Star can be used to specify requirements at any level; regardless of whether or not the code generator or...