Tersus
Tersus Visual Programming Platform is a general purpose software development platform that enables the development of applications, mainly rich web applications, by drawing flow diagrams instead of writing code. It is dual licensed as open-source and proprietary software.
The Tersus Modeling Language is a visual language for defining user interface, client side behavior and server side processing. The language shares many features of dataflow programming languages.
When used for web development, Tersus can be classified as Client Side + Server Side (using AJAX techniques). The modeled applications are executed by the Tersus Server.
Tersus Studio is an IDE, an extension of the Eclipse platform, used by developers (modelers) to graphically define the functionality of applications.
The platform also contains a visual debugging capability. The Tersus Server can record every step during the application’s execution, and this recording ("trace") can then be played back in the Tersus Studio to view the flow of the application and the value of each data element.
Both the Studio and the Server are available on a variety of platforms, including Microsoft Windows, UNIX, Linux, and Mac OS X. The latest stable version of Tersus is version 2.1.31.4, released August 27, 2014.
The Tersus Visual Programming Platform version is published under the GPL v2 license.[1] There's also a Tersus Enterprise Platform version under a commercial license providing additional integration features and support.[2]
Concept
An application is defined by a hierarchy of visual models, where high level models are composed of lower level components. The developer (modeler), employing an “infinite drawing board” that displays graphically the whole model hierarchy, starts at a top-level diagram representing the whole system, and then continues with an iterative top-down refinement process, drilling down from each model to specify its components. At the lowest level, a library of atomic building blocks is used, including, among others, data types, GUI elements, mathematical functions, database actions, and document handling actions.
Processes (and in certain cases also display elements) can receive and send out data through input "slots" ("triggers") and output slots ("exits"). The flow of data between processes, as well as the sequencing of processes, is governed by "flows" (visually represented as arrows connecting model elements).
When developing a web application, the high level models define the application's screen layout and GUI, using "display elements" (text displays, links, buttons, tables, images, etc.). Lower level models define the application's logic, using "data elements" and "process elements".
Architecture
The platform includes:
- Tersus Studio, the IDE used by modelers. It manages projects, each containing the models and resources of one application. The application models are saved as a set of XML files, each containing the details of all models in a certain package within the project.
- Model Libraries, containing building blocks for assembling applications.
- Tersus Server, which executes the modeled applications and performs the required database updates. It contains an embedded application server (Tomcat) and an embedded database server (HSQLDB), which allow for immediate testing of the modeled applications. External application servers and database servers can be used to deploy applications operationally.
The Tersus Studio and Tersus Server are implemented in Java, while client side behavior is implemented by Javascript and HTML which are generated by the Tersus Server according to the model.
End-users invoke the applications from their browsers (for web applications), or directly from their mobile devices (e.g. for native iPhone applications).
Features
- Language independence (model names and GUI can be in any language)
- Model templates and model prototypes (templates with constraints)
- User-defined data types (data element with restricted content)
- Importing WSDL definitions of web services as Tersus building blocks
- Look and feel customization through CSS
- Visual debugging (tracing) by playback of application execution
- Automated testing through the definition of "test suites"