TOP stands for "Task Oriented Programming".

How to present information and interaction to end-users?
Which data need to be shared?
Which tasks need to be done?
What are the domain specific notions and computations?

In Task Oriented Programming we distinguish the following components:

  1. What are the domain specific notions (data) and computations on that data that play a role in the domain for which the software has to be made?
  2. What are the activities (Tasks) that need to be done by people, software applications, and computer systems, and how are they related?
  3. Which information needs to be shared between the tasks, who needs to see what in which format?
  4. How should the Graphical User Interfaces look like?
GUI Specialisation (UI)
Shared Data Sources (SDS)
Task Definitions (WF)
Traditional Functional Programming (TFP)
Data
Types

Each of the above components are defined in a separate way as indicated in the diagram above:

  1. The properties of the domain and the computations that need to be done can be described compactly and precisely in a strongly typed pure Functional Programming Language (Clean). The types of the data being used in the domain play a central role because they form the glue between all components.

    In a Functional Programming Language (FPL) such as Clean and Haskell, software can be described extremely compact and concise. These languages are particularly suitable for defining concise, reliable, modular, self-contained, and highly reusable components. This considerably reduces the chance of errors in the software.

  2. The Tasks to do are defined in terms of sub-tasks. One defines the order in which Tasks have to be done (sequential, parallel), and the data dependencies between the tasks. The progress of a task can be observed and may affect the work others can see or do. Virtually any way people and systems collaborate can be expressed in our system.
  3. We define which of the data, e.g. stored in databases, coming from sensors, or other data people work on or with, has to be shared with others. The system will take care by using a publish-subscribe system, that the data will be communicated to the parties that need them.
  4. Finally (!) we ensure that a well-designed user-interface is offered to the end user. Most software designers take the user interface as a starting point, but in our approach the work that needs to be done a certain point in time is leading. The user interface is not fixed, but is generated "at run-time" depending on the concrete work someone has to do.

The iTask System is an implementation of the TOP concept. It is made in the lazy, pure and strongly typed functional programming language Clean. In addition to the iTask system which is intended for man-machine communication using browsers, there is an mTask system for performing tiny (micro) tasks on IoT devices. Both systems are interconnected enabling to interact with any configuration of IoT devices remotely on the internet.

The iTask System can be seen as a distributed multi-platform middleware which will do a lot of things automatically such that a software developer can concentrate on the essence of the application and does not need to worry about the technical realization.

From a compact TOP description in iTasks we generate software for (web) servers and (web) clients that coordinate the activities described. Using a publish-subscribe system, every user on the web will automatically be provided with the information that is needed for doing the work. The iTask System can also be used to coordinate existing applications or systems.

Our TOP, agile, style of making software enables us to create a working prototype very quickly, which we then further develop into the desired functionality in close consultation with the customer and end-users. This allows us to produce reliable custom software, faster, and much cheaper.

With TOP we can control any complex distributed network of people and systems, where a lot of information needs to be passed near real-time to the collaborating parties, such as Command and Control Systems.

The concepts behind TOP, iTasks and Clean are based on decades of scientific research and are described in hundreds of scientific publications.

We generate native Intel or ARM code for all commonly used platforms (Mac OS, Windows, Linux, Android, Raspberry Pi), JavaScript for HTML5 compatible browsers, and byte code which can interpreted on small standard IoT devices.

All code from 1 source, for all Platforms, Servers & Clients