2022 June Release

Fabasoft app.ducxPermanent link for this heading

Fabasoft app.ducx provides powerful domain-specific languages supporting the rapid implementation of CCAs.

Benefits of Fabasoft app.ducxPermanent link for this heading

Fabasoft app.ducx relies on cutting-edge technology to facilitate rapid application development. This chapter gives a concise overview of the main benefits of Fabasoft app.ducx.

Shorter Time to ValuePermanent link for this heading

The use case oriented approach of developing CCAs with Fabasoft app.ducx focuses on the perspective of the end user. Powerful domain-specific languages reduce the complexity of projects leading to less ambiguity and fewer errors between specification and implementation. As a result, maintenance and development costs can be reduced while at the same time increasing end user satisfaction.

Integrated in the Development EnvironmentPermanent link for this heading

In keeping with Fabasoft’s commitment to provide platform independence, Fabasoft app.ducx is a development platform for both the Microsoft Windows and Linux worlds and is therefore integrated into Eclipse. This means greater flexibility for your organization while developing solutions.

Localization and CustomizationPermanent link for this heading

Fabasoft app.ducx allows for an easy and effortless localization and customization of your CCAs.

Integrated CompilerPermanent link for this heading

Fabasoft app.ducx allows you to benefit from the rich metadata, compile-time syntax checking, static typing and auto-completion previously available only to imperative programming languages.

Using the compiler provided with Fabasoft app.ducx, a DUCX project can be compiled by simply triggering the build process of the respective development environment, which produces a Fabasoft Folio container file (with a .coo extension) and – if the project also contains use case implementations in Java – a Java archive (.jar) file. These files are then automatically packaged and loaded into the Fabasoft Folio domain.

LoaderPermanent link for this heading

The app.ducx compiler produces a Fabasoft Folio container file, which is uploaded to a web service connected to your Fabasoft DUCX domain.

Automatic Address ManagementPermanent link for this heading

With Fabasoft app.ducx, you do not need to worry about address management anymore. Fabasoft app.ducx automatically assigns addresses to all component objects created and keeps track of address assignments.

“Convention Over Configuration” PrinciplePermanent link for this heading

Fabasoft app.ducx uses a set of coding and naming conventions that when adhered to eliminate the need for configuring every single aspect of your software solution. As a result, you need to write less code which will make software development and maintenance much easier.

Domain-Specific LanguagesPermanent link for this heading

Developing use case-oriented software solutions requires managing different aspects and elements such as data structures, user interface design, the implementation of methods and business rules.

In order to account for this concept in an optimal manner, Fabasoft app.ducx is comprised of several declarative modeling languages, each designed for covering a particular aspect of solution development. For example, Fabasoft app.ducx includes a modeling language that has been designed explicitly for the definition of an object model. In addition to this, Fabasoft app.ducx includes languages for defining resources, a user interface model, an implementation model, a process model, and an organizational structure model.

These modeling languages are referred to as domain-specific languages (DSLs), where each DSL was designed for addressing a certain aspect of use case-oriented software development.

DUCX Object Model LanguagePermanent link for this heading

The purpose of the DUCX object model language is to define the persistent object model for a software component.

Using the DUCX object model language, you can easily define the basic elements that make up the object model:

  • object classes
  • properties and fields
  • enumeration types
  • compound types
  • extensions of existing object classes and types

DUCX Resource LanguagePermanent link for this heading

The DUCX resource language allows you to define resources such as string objects, error messages and icons. Using the DUCX resource language, you can create culture- and language-independent solutions as it allows you to avoid hard-coded, culture- and language-specific values in your solution.

DUCX User Interface LanguagePermanent link for this heading

The DUCX user interface language allows you to define forms, form pages, menu items and other user interface elements for your object classes.

DUCX Business Process LanguagePermanent link for this heading

The DUCX business process language allows you to define the process model for your software component. The process model is comprised of one or more template processes defining an ordered list of sequential or parallel activities and process control elements such as conditions or loops. Each activity definition consists of a list of steps that need to be carried out by a user responsible for completing a particular activity.

DUCX Use Case LanguagePermanent link for this heading

The purpose of the DUCX use case language is to define and implement use cases. With the DUCX use case language, you can define new use cases, and provide method implementations for these use cases that are written in Java. Alternatively, you can also use DUCX expression language or virtual applications to implement use cases.

DUCX Organizational Structure LanguagePermanent link for this heading

The abstract elements of the organizational structure required for your solution are defined using the DUCX organizational structure language.

DUCX Customization LanguagePermanent link for this heading

The purpose of the DUCX customization language is to define, customize and tailor your software component to project- or solution-specific requirements.

DUCX Unit Test LanguagePermanent link for this heading

Unit testing is an important part of the development process. By using the DUCX unit test language it is possible to create unit tests and bundle them within unit test groups. With scenarios you can establish a stable test environment.

General Use of Fabasoft app.ducxPermanent link for this heading

Fabasoft app.ducx is seamlessly integrated in Eclipse, a popular and powerful development environment for Microsoft Windows and Linux.

The software development life cycle is controlled from within your development environment.

InstallationPermanent link for this heading

Fabasoft app.ducx must be installed in the Fabasoft Folio domain that is used for development.

The Fabasoft Folio domain can also be installed on a remote computer. Only the app.ducx Eclipse plug-in has to be installed on the developer’s computer. The app.ducx Eclipse plug-in supports basic authentication. All information required by Fabasoft app.ducx is retrieved through its service-oriented architecture. Thus, it is still possible to continue development if the connection to the development web server becomes unavailable.

Working With app.ducx ProjectsPermanent link for this heading

The main use cases for working with app.ducx projects in Eclipse are:

  • Create a new project.
  • Compile and run projects. The project can be immediately tested in the automatically started Fabasoft Folio Web Client.
  • Add software component references to be able to use short references.
  • Add additional source files or resources like icons.
  • Manage address ranges and work together using a third-party version control system.
  • Export an app.ducx project and use it in a productive environment.

Productivity FeaturesPermanent link for this heading

Following features provide effective development with Fabasoft app.ducx:

  • app.ducx Eclipse perspective and outline view
  • Syntax highlighting
  • Syntax check
  • IntelliSense
  • Quick fixes
  • Folding of source code blocks
  • Go to definition
  • Code snippets
  • Generated comment blocks e.g. for use cases
  • Generated Java templates for use case implementations