CTC Software Technology is solution focussed. The whole point is to provide solutions to perceived problems and not to simply jump on the latest bandwagon.

This page lists of many of the problems addressed and the solutions provided.

To be able to define models and directly derive fully working applications

This is an unlikely possibility, and one that has been a distant objective of this project.

This has now been realised. The Alchemist (self-generated) web application can be used to describe new models, experiment with models incrementally, and then generate java source code, compile and deploy the new web applciation.

The possibility now exists for designers to sit down with customers, to interactively determine application requirements and within an hour or two to show them a working application.

Along the way a number of other problems have had to be solved. They have remained solved and for those interested in these solutions the technology is demonstrably effective.

To be able to reallocate file-based storage

The IStore package provides a straightforward interface to access and re-allocated file-based storage. This allows programmers access to file store very similar to memory allocation and re-allocation.

To be able to synchronize runtime objects with external, file-based data representation.

The Generic Persistent Object Model provides a transparent persistent representation. Furthermore, the object model patterns directly supported are themselves hugely simplifying.

To productively implement object designs

An object model may be described in an xml file that can be processed by the Alchemist system generator. This will generate a complete object model using the Generic Persistent Object Model.

To productively implement a web-based application

The Alchemist generator can produce a customizable web application, providing a war file for installation in a Tomcat server.

To be able to specify and implement validation rules

The concept of type refinemement as an approach to constraints and validation is introduced and supported by the Alchemist. The generated web applications generate javascript based validation that validates on character input, not simply on "submit".

Supported type refinements include regular expressions as well as numeric range and various date constraints.

To be able to query an object model using the understood associations

The new GPath query language uses an XPath-like syntax to directly navigate the model.

To be able to integrate query results with the standard programming model

The result returned by a GPath query is a Striterator that can be further refined using java programming and then can be refined using further queries. This level of query integration is quite novel.

To be able to access "historical" data

The WORM (Write Once Read Many) store can be utilized by GPO to implement high level transaction isolation, but it can also provide very efficient access to snapshots of previously committed state. This approach allows direct navigation of the state of the datastore at a specific time, without the need to associate time information directly with any data.

To be able to use "spreadsheet-like" formulas in defining a model

The Generic Persistent Object model supports a rich dependency structure that has been extended to provide support for "data-flow" based formula calculations. This scalable solution provides functionality surpassing database approaches such as "triggers" and "computed values".

The unification of procedural/object-oriented programming, database and spreadsheets provides a genuine new approach and is extremely powerful.

To be able to declaratively compose interfaces

The new InterActor package provides a "structural" approach to interface composition and "update". Built using Java2D a transformation model is supported that makes features such as "zoom-in/zoom-out" straightforward to implement.

To be able to easily define java-based presentations and animations

An IAMovie class provides a "flash-like" composition model.

To process complex xml files

MiniDOM provides an alternative to SAX processing whilst retaining the scalable, event-based approach. With MiniDOM complete elements are passed to any registered handlers.

To access large read-only xml files quickly

QUDOM is a W3C DOM API that provides a low-overhead alternative to Xerces using as little as one seventh the java memory, whilst parsing the file in under half the time.

To access huge xml files

PDOM is a W3C DOM API that builds on the Generic Persistent Object Model to provide an efficient persistent system. PDOM can manage multiple documents as well as huge individual documents. The java memory requirements remain broadly constant no matter how large the data.