Advanced Component Framework (ACF)

ACF is a C++ based, cross-plattform component framework, that was especially designed for creation of very complex, customizable and highly scalable applications. ACF provides instruments to build software from reusable components and serves interfaces and concepts to create those components. It contains several standard implementations of most usefull design patterns, such Serialization, Model/Observer, Factory, Dependency Injection. ACF implements a powerfull component concept and includes many well designed components, which you can directly use in your application. The UI-part of the framework is based on Qt library from Nokia. ACF is open source and released under the terms of the GNU Lesser General Public License (LGPL).

How it works

The main idea behind ACF is to see each software product as a composition of components with clearly defined interfaces. Interface is also the only way for communication between components. The usual steps to implement a component are:

  • An C++ interface must be defined.
    A class which implements this interface must be created.
    There are several ways to make a "normal" C++ class to a ACF-Component, simplest is to derive from a corresponding basic implementation or use a generic macro.
    A component can have dependencies from other components (e.g. component A needs component B to realize some functionality)
    and can have attributes. Via attributes it is possible, to parameterize some behaviour aspects of the component.
  • Another way to create a component is to combine more existing components into a composition. This composition is also perceived by the framework as a component. Creates a composition with the framework tool called Compositor.
    Compositor provides graphical editing for the component dependencies and attributes. The compositions are stored in so-called ARX files (we also call them registries).
  • If a component is implemented, it must be registered in a so called Package. Component packages are logical containers of components. There are two kinds of packages:
    • For C++ based component the package is a DLL with special export interface.
    • For component compositions the package is a special folder in the file system.

To keep the management component packages consistent, all kind of packages have the same file extension - ARP (ACF Registry Package).

If all the necessary components have been implemented, the application can be executed. There are two basic ways. A composition of components can be run directly by Framework-Runtime.
However, this mechanism is usefull only in the prototyping stage. For the final application a different approach can be used. ACF provides a special source-code generator,
which makes it possible to produce source code back from component compositions. The resulting source code is then compiled by the usual way.
This has the advantage that during the runtime of the application no modules (DLLs) must be loaded.

Features

Below are some of the main features of ACF:

  • Graphical overview and editing of component connections and properties in UML-like manner
  • Definition of composite components
  • C++ Code Generator (ARX Compiler)
  • C++ library containing several implementatons of common business logik components, which can be used in every application
  • Component library for abstract data model definition, visualization and processing
  • High level components for data binding and persistence
  • Multi-Document Interface application framework
  • Component library for industrial and scientic image processing
  • Component library for 2D and 3D visualization
  • Component wrappers for popular 3rd-party libraries such:
    • Qt/Qt Solutions
    • Qwt
    • Qwt3d
    • OpenCV
    • phonon
    • FFMpeg
    • zlib
    • QScintilla

Getting and Installation

There are several ways to get ACF:
  • Download the installation package for your plattform, install it and start working with it.
  • Use Public ACF SVN repository to get the latest sources, which are produced by our build server. In this case you are always up to date.

Detailed information about installation aspects you will find in Installation section.

Documentation

You can find the technical documentation here. If want to see some examples, go to our Tutorials page. Please check also our F.A.Q. page.
ACF is concept-oriented framework, so you can find more about concepts using in ACF on the Concepts page. The german version of this page is can be found hier.
To find more how to create and build ACF components see ACF build concept and directory structure.

Online demo

A short online demo can be found here: http://www.imagingtools.de/Acf/Presentations/SimpleAppl_en.htm.

A german version can be viewed here: http://www.imagingtools.de/Acf/Presentations/SimpleAppl_de.htm

Support & getting help

For getting help or discussing about ACF, you can browse the ACF forums hosted right here on ACF project page or contact us over skype (User: ACF_infoline).
You can also register on this page and submit a bug report or a feature request.

Who uses ACF?

Hier is a short list of some companies and projects using ACF: