What does the software architecture of a QAFE application look like?

The software architecture that is used in QAFE is the result of years of experience in the field, best practices, and software engineering theory. The architecture is divided into four clear layers, each with its own function:
Presentation tier (the GUI)
Business tier (for combining several services and functioning as the bridge between the presentation-tier and the service)
Service tier (where you specify the API on the lower level resource that you want to use)
Resource tier (where you define the lower level resource on which you want to work!)

Where can I find the API documentation?

QAFE Documentation can be found on this page.

Will the target application be a JEE application? In that case what are the choices we’ll have in terms of OS, database, and application/web server platforms?

QAFE is actually a platform running on JEE Servers. We’ve tested on JBoss, Oracle WebLogic, Websphere, Tomcat and Jetty. The OS is independent, since the only requirement is that there must be a Java6 version on that OS available. The database can be any database as long there is a JDBC driver for it. We have tested with Oracle 9i/10g/11g, MySQL and Teradata.

If it is a JEE application, how much the application will rely on the QAFE framework? Will there be a possibility to convert the application to fully JEE compliant one later on by refactoring layer-by-layer, event driven web forms, Spring IOC, any O-R or SQL Map solutions for data persistence?

QAFE is an engine, which interprets the QAML files and creates Web2.0 applications. Note the word “Engine”, since it’s all happening in memory/on the fly. We created what is currently known as Single Page Web Applications. JSF is a page-oriented design for Web, current and modern apps use a more data-oriented approach (see Google Web Toolkit and other Google online products). Actually it’s not strange in the JEE world to be dependent on another library, for example Spring, JSF, Database drivers, etc.
Since we have layered approach, it’s easy to use (and move to) another class/implementation/database, since the layer is loosely coupled. So to use Open Source/Non OpenSource libraries/classes is not a problem at all: for example, at a big telecom provider, QAFE was implemented on JBOSS using an Informix database AND an Oracle database at the same time. QAFE was used as a front-end technology on JBOSS workflow was used to guide the process in the backend. For another project, we have used QAFE combined with Cassandra (also used by Facebook) and a cloud server.
Since QAFE is a JEE based platform, all the mentioned technologies are free to use (and easy to use with QAFE).

How far the system is layered?

Please see the architecture description on this page
There is a clear distinction between the Business Logic Layer (we call those the Business-actions) and the Service layer (in case of a database layer, we have an intelligent DOA mechanism, because this pattern was repeated too often in Enterprise WebApps). Component Based Development and Reusability were one of our first requirements: This has all to do with the Service Oriented Architecture, which is embedded in QAFE.

Where can I get the source code?

The source code of QAFE is not publicly available.

Will the user interaction events like an validation of certain items, general a post to the web or is it ‘Ajaxified’?

The core of QAFE is that we want to use Modern Web Technologies (like Google Web toolkit (GWT), Adobe Flex, etc., unlike JSF, which is from 2002!). These modern technologies don’t work with full-page refreshes. GWT has an advanced AJAX mechanism, which is really powerful and designed for performance (writing AJAX manually is easy, but to tune is less trivial). Luckily QAFE builds on top of GWT and with QAFE writing GWT applications is easy.

What is the Java Version/Naming convention?

Since the programming model in QAFE is technology-independent, the programming is mostly done in XML. XML is already structured and compliant to the corresponding XSD. XML requires a unique id for each component or other element. Camel case (the first letter lower case and each subsequent word with initial capital, for example “myQafeApplication” is advised for readability. Of course all of this can be graphically managed in the QAML Builder.

So it’s XML. Enterprise applications are often very large; what will be the effect on my XML?

It’s true that a large application defined in QAFE will result in a large XML file. We tackle this problem by allowing the developer to decide when to split up the files. For example, you can make a file for each tier or for each window. Several QAML files can be merged together to become one application. It’s also possible to read a directory containing multiple QAML files. All the files in this directory are merged to one application. See Application Context for configuring applications.

What about validation of QAML code?

QAML code is validated against the XSD definition that was developed by the QAML team. The QAML Builder, our IDE based on Eclipse, validates the QAML code while developing. See also the documentation. Of course any XML Editor with XSD validation can be used too.

What is the output of the business action?

The output of a business action is always a variable that is stored in the data store/pipeline. With a “name” you can retrieve the data. The data store can contain the following data:

  • A map containing key-value pairs to represent objects/single rows.
  • A list of maps containing a collection of maps with key-value pairs that represent a single row. In SQL this is the output of an SQL statement, and in Java it’s a collection.

Can I specify another directory on my file system instead of putting every file in the WEB-INF directory?

Yes you can! In the application tag in the application-context, just use the root attribute and provide any directory you want.

How does QAFE behave in an MS .Net environment?

QAFE is written in Java, so it will run on any JEE Appserver or even the lightweight Tomcat/Jetty. The logic that is written in .NET can be accessed through WebServices. The .NET developer needs to provide the WSDL.

We’re developing in Java using, for example, Struts, Hibernate, and Spring. What added value does QAFE provide?

Well, Struts is a typical Web 1.0 technology, i.e. it assumes a Page-Oriented Approach. Hibernate and Spring are tied together and most probably used on the back-end. QAFE can easily use the logic on the back-end. The front-end can be replaced by a QAFE Presentation tier that will result in much more interactive and intuitive experience for the end user.

Do I have to code QAML myself or is this generated?

We have tooling available that will help you reduce the time that you need to write the code. The QAML Builder really allows you to graphically ‘write’ your code. You don’t even need to see the QAML code. It’s all managed for you.

A lot of code could introduce a maintenance issue. How does QAFE avoid ending up in an uncontrollable situation with application maintenance?

QAML is plain XML. Of course XML files can become large. We have a feature that allows you to split up a big file into smaller chunks. These are glued together as a single file at runtime. Since QAML is plain XML, tools like Subversion and CVS can be used for the history and maintenance.

What abilities does QAFE have for code generation?

QAML Generator and QAML GUI are tools that generate the front end and SOA-enable your database or java class/services. The Forms conversion process does all the work for you to get to a Web 2.0 application.

Can I build screens by dragging-and-dropping using my favorite IDE?

Eclipse/JDeveloper/Netbeans, etc. have an editor to create Swing Applications. You can use this to create swing applications in a drag-and-drop fashion. With QAFE GUI Conversion it is possible to extract the presentation tier of the QAFE from the Swing application. You instantly go from a desktop technology to a modern web technology.

What programming languages does QAFE use?

The QAFE application can use the following languages:

  • Java services (optional)
  • Database services (optional)
  • For logical expressions, the powerful Python scripting language is used. Python allows you to create and evaluate complex expressions.

Why would I consider using QAFE’s security for my application?

The security model is role-based. Some methods need to be defined in order to make it work. You can decide for yourself where to store the user information (authentication and authorization). Note: connection to a LDAP is possible.

How does auditing and monitoring add to my application?

These are additional features that are optional (since some parties already have something in place).

How do you debug applications in QAFE?

Since QAFE has declarative debugging, this is not actually needed.
In the QAML Builder the logic in the specific technology can be debugged.

Which Eclipse should be used for QAML Builder plugin installation?

It is advised to use Eclipse for Java EE Developers [Eclipse 3.7 ((Indigo)] for installing QAML Builder plugin. Otherwise. Just download the prebuilt QAFE Development Environment.

What should I do when I am getting missing plugin dependency error messages when I try to Install maven plugin?

If you are trying to install QAML Builder on to your existing eclipse please make sure that plugins for eclipse EMF and GMF is already installed. If Eclipse Java EE Developers is used this won’t be needed. You also need to install maven plugin and then finally the QAML Builder plugin.