The Tools allow creating software systems from a model, working at a level of abstraction higher than that of individual programming languages. The model itself may be created from scratch, or may be extracted from existing software. There are facilities, also, for model editing and adjustment.
This is not a new concept: we're not the first to do it. However, previous products by others have had two material shortcomings: They have been very expensive, and they have supported only a small number of platforms. (Often, this is because the vendors only want to support users of their other software and hardware products. We admit to biases and preferences, but we aren't making money from anything else, so we're indifferent as far as that goes.) We aim to create an inexpensive system which will support a wide variety of platforms.
The end goal, which we realize may never be completely attainable — certainly in any short time — is to create and to maintain software without requiring any code to be written. We'd like to go so far as to allow non-programmers, in some situations, to create software, but that probably won't happen right away. As much as we see enormous effort being wasted writing and maintaining code, it remains true that non-programmers often have a difficult time describing what they want. That's not going to change. Programmers aren't going to be out of work any time soon. For the foreseeable future, we will be content to create a kind of “programmer's assistant”.
There are two levels of components in the Toolset: the model level, and the programming language level. They overlap to some extent, because they are linked by the Pangloss source files. Panglosss is a common component, which ties the two levels together.
The main components of the Toolset are related as shown in the following diagram. The arrows represent important data flow directions.
Pangloss™ is a Lisp-based language which tries to represent the semantics (but not the syntax) of a variety of other programming languages. Pangloss and additional, related components are described on a separate page; those constitute the lower, programming level layer of the Toolset.
The main model level layer components are:
The system model describes not only the behaviour of the software system, but also of the system's immediate environment. The environment includes not only hardware and operating system(s), but also external entities such as those which trigger system functions (what causes the programs to run?) and which affect operation (how long are backup copies of files retained?). Think UML and SysML, extended to include things such as control diagrams with transfer functions; the specification of interfaces to external databases, networks, and repositories; formulae and recipes; and documentation.
A model editor for users and developers to explore and to modify the system model.
Analysis tools perform consistency verification, test the model's design against its own and a priori rules, and generate notations in the model to give users insight into model structure.
A simulator will, to some extent, allow testing and observation of model behaviour without complete implementation. The simulator may be used to explore subsets of the complete model.
The source analyzer builds a partial model based on the behaviour described in the Pangloss source. Pangloss, in turn, can be created by compilation of ordinary programming source code as described on this page.
The metacode generator is the first step in realization of an actual system from the model. It generates Pangloss, which will then be used to create ordinary programming source code.
Because the Toolset is agnostic with regard to the ultimate programming environment, as long as suitable compilers and transcoders exist, the model developer or user need not be concerned, for the most part, with the specific platform to be used for deployment. Moreover, because the Toolset is built using itself, it will run on a variety of platforms.
©2017 Ulterior Logic. Pangloss™ and Coyotemath™ are trademarks of Ulterior Logic.