Product evaluation: OutSystems

OutSystems is a low-code development platform from Portuguese company OutSystems.
OutSystems Service Studio, the platform’s dedicated development tool, is used to develop business applications by writing visual models.

In OutSystems, the development and execution environments are integrated and OutSystems Service Studio is used for all processes, including development, testing and deployment.

The development and execution environment support both cloud and on-premise operations, enabling applications to be developed and released immediately, particularly when OutSystems’ public cloud environment is used.

Modeling languages

In OutSystems, applications are expressed by four models: processes, interfaces, logic and data.

Model elements in OutSystems Description
Processes These implement business processes that are executed separately from screen operations, such as workflows and timers (batches).
Interfaces These implement screens, screen transitions and processes in each screen.
Logic Implements processes linked to screens and databases, individual processes that are not linked to these and interfaces with external systems.
Data Implements table definitions and simple CRUD processes for databases in table units.

Model-driven development

In OutSystems, the main features of screens are automatically generated as models from a database using the automatic generation feature. The user then completes the application by adding visual models using the GUI base tool.

Automatic generation feature

OutSystems has a feature to automatically generate the following processes from table definitions.

  • Database processes to perform simple CRUD operations for tables.
  • List screens for tables and detail screens and basic processes for browsing and editing.

As each screen contains the following features, no modifications need to be made for simple maintenance applications after they are automatically generated.

  • List screens
    These contain tables with all columns displayed, paging functions for cases where there is a large number of items for the tables and along with searching and sorting functions.
  • Detail screens
    These contain tables with all items displayed, features for adding, updating and deleting items and a validation feature to ensure that it is not possible to register data that contradicts the data format set for the data model.

Visualization of the internal processes of widgets in interface

In OutSystems, the internal processes of the widgets that form the components of screens, such as database access, are visualized in an Action Flow.

The Action Flow below shows the process by which data in a detail screen is saved to the database. The flowchart visualizes the activation of the validation process, saving to the database, displaying messages and exceptional processes.

An Action Flow like the one above is generated by the automatic generation feature. This can be customized to add various other features.

Flexibility of screen design

Screens are generally made using templates provided by OutSystems. OutSystems also provides a large number of UI components that are frequently used in applications, such as toggle buttons, as design components (widgets), which users can assemble to customize screens.
Fine adjustments can be made, such as changing the position or decorations of the widget in the screen, but the HTML source code cannot be directly modified. Unique designs that are not included in the templates can be added using CSS created by the user.

Flexibility and extensibility of logic

Process logic can be generated in interface models and logic models. In both cases, the logic is expressed as an Action Flow and equation using the GUI base tool.
It is also possible to include code implemented in DLL or C#. Original components prepared in C# can be used to extend the logic, or existing materials from sources such as DLL can be reused.

As Action Flow support elements such as branches, loops and subprocess calls, they presumably enable a level of expression equivalent to standard programming languages, but there is a risk that they will become overly large for complicated processes. As mentioned earlier, these can be assembled with C# implementation to implement complicated processes while keeping the Action Flow slim.

A developer’s impression of this product

Below is a developer’s impression of OutSystems.
(This impression is based on the developer’s experience in building a sample application after attending the free seminar and learning from publicly available materials. A developer who pays to attend the full three- to five-day training may have a different impression.)

Internal operations of widgets, such as accessing databases, are visualized in OutSystems, so there tends to be a large volume of processing logic related to screens.The benefit of OutSystems is that internal operations can be assessed, making it easy to predict the specifications of operations during execution.
When I built the sample application, I didn’t fully understand the specifications of things like components, but I was able to predict the specifications of operations by referencing the Action Flow, which made it easy to find ways to customize them.In screens where an equation needed to be input, OutSystems not only provided an autofill feature but displayed objects such as widgets, data models and variables that could be referenced during coding, which enabled me to complete the code for referencing objects just by clicking.
This feature enabled me to develop the application without manual referencing.My impression was that this tool will be very easy to use for engineers who have a lot of development experience with languages such as Java.

Situations where OutSystems is effective

Below are the benefits of OutSystems and the situations it is suited to.

  • Application definitions are completed through visual modeling using the GUI base tool, including the logic parts.
    ->Ideal for situations where developers and users develop and maintain the system together.
    ->Also ideal for developers who want to create a variety of features.
  • Highly suited to engineers with experience in scratch development as internal processes of widgets, such as accessing databases, are visualized in an Action Flow, making it easy to assess operations.
    ->Ideal for development projects where most of the engineers are used to scratch development.
  • Processes such as deployment and version management are performed all in one.
    ->Ideal for developers who want to build new environments such as a source code management or a release operation.
  • A public cloud version is available as soon as the user agrees to the contract.
    ->Ideal for developers who want to set up the service quickly.
  • OutSystems is priced according to scale of development.
    ->Ideal for developers who want to start small and gradually increase the scale.

These documents are provided under the Creative Commons Attribution + ShareAlike 4.0 license.