Development architecture

The SPM Development Environment is composed of a SPM Server Development Environment (SDEJ) and a SPM Client Development Environment (CDEJ).

The Social Program Management development approach has the following key features:

  • Metamodel-based development approach.
  • Application model that is based on UML.
  • Code generators that produce significant portions of client/server applications.
  • Simplified coding of handcrafted business logic.
  • Simplified development of user interfaces.
  • High-level business infrastructure.

Server Development Environment

The Server Development Environment uses a model-based approach to development. An application model is defined in a business-centric and platform-independent manner using a UML modeling tool.

The model is the key building block for the code generators as it defines all the required entity objects and process objects.

The generators will create the necessary classes and files for the application structure. This structure will also have all the Remote Interface Layer code, the Data Access Layer code and the Business Object Layer code as well as handcrafted code.

The application model contains:

Domains:
Application-specific datatypes.
Entities:
The objects modeled and persistently stored by the application.
Processes:
Related sets of activities to achieve some business goal.
Value objects:
Passed as messages throughout the application.

Client Development Environment

The IBM Cúram Social Program Management client consists of HTML pages that are generated by JSPs. The JSPs are generated from XML screen definitions and style sheets control the formatting of screen pages. The XML screen definitions are independent of the presentation layer, and the IBM Cúram Social Program Management specific format is called user interface metadata (UIM) format.

Automatic data validation and conversion is based on application model definitions with support for custom widgets and JavaScript exit points.

User interface development

A major goal of the IBM Cúram Social Program Management development environment is to simplify user interface creation. You can associate client pages with particular back-end server interfaces. Because metadata about these interfaces is already captured in the application model, you can use this information for user interface generation.

Most of the remaining work for client development is to list the fields for each client page. Default widget types are provided for fields and controls on the screen, which is based on its information of the datatypes that are associated with fields.

Fields follow a grid layout in clusters and lists that are specified in XML along with the overall page hierarchy. Widget types are determined automatically by connections.

An example of the User Interface Metadata (UIM) code for the firstname field is as follows:

          <FIELD LABEL="Field.Label.FirstName">
          <CONNECT>
          <SOURCE NAME="Interface1" PROPERTY="firstForename"/>
          </CONNECT>
                   </FIELD>
        

The LABEL attribute of the FIELD element describes the label text that is associated with this field when a client page is displayed. The value Field.Label.FirstName is a reference to the actual label value in a separate property file. Using strings that are externalized in property files allows for easy localization of client applications. The SOURCE element describes where this field's contents comes from when the page is displayed. The NAME attribute of the SOURCE element specifies a specific back-end interface that is defined in the application model. The PROPERTY attribute specifies a particular datum that is returned by the back-end interface.

The exact location of the field on the screen is not specified. There is no information about the field's datatype or the associated HTML control. All of this information is provided automatically at application build time. The simplicity of UIM pages makes them easy to copy and paste from templates, which contributes to a high level of developer productivity.