Table of Contents

Application Design Principles

Application Scope

A key tenet of System Design is to avoid duplication of processing logic, data and the technology platforms that are required to support them, which has the following key benefits:

To achieve these goals an Application aims to deliver a discrete set of Functionality, and that encapsulates the underlying Data associated with that Functionality.

Applications requiring or updating information owned by another application typically do so via interaction with component on the owning application rather than directly accessing the data.

An Application should ideally not be constrained by:

Applications requiring or updating information owned by another application typically do so via interaction with component on the owning application rather than directly accessing the data. Application interfaces may be in real time or via batch / scheduled processing that may do this via a common integration layer. Refer to Integration Principles for more details.

Functional Demarcation

It is important that application components are firstly defined based on the functionality to be supported since there often a tendency to demarcate components based on the underlying technology platform. If the design is based on platform boundaries then this results in the application abstraction layer not being realised in the software, which results in more tightly coupled / monolithic functionality and duplication across platforms.

Any given functionality should be encapsulated within a single application, but within that application it should be implemented separately from other functions. Functionality should also be abstracted from the platform technology, noting that it may be delivered across more that one platform (e.g. to support both presentation and service logic).

Whilst there will be dependencies between functions, in particular to deliver end-to-end processes, these should be abstracted away from the individual functions where possible – for example into process control components. It is also important that processing supports error and exception management to help minimise functional dependencies where possible. Given that a function may support multiple processes, and may need to deliver tailored functionality to each, common processing should be identified and tailored processing separated within the function.

Therefore a holistic view of the functional design should be maintained in order to be able to identify and manage components that are a common across multiple different initiatives.

Application Processing Styles

Applications can support various Process Styles that support different behaviour and require specific supporting Application Frameworks:

These may be supported by various data/content management and persistence services.

Online Transaction Processing

Online applications are not separated based on the User Service Classes (combination of user group and channel) they support but on the capabilities they deliver to these. This approach is important in order to ensure that capabilities are delivered consistently across all the User Service Classess supported.

Cross Channel Consistency

Similar to the key concept of delivering consistent processing across the User Service Classes and associated channels that an Application serves, it is also important to deliver a consistent Look and Feel across all of the Applications delivered over a given channel.

Application Design supports consistent Process and Activities across channels whilst the Channel Design supports consistent Look and Feel across Applications.

Whilst a common look and feel can be achieved through design it may be only be actually realised through common platform presentation cervices to facilitate consistency and integration. However, whilst this is a valid approach for the Platform Design, the logical Application design must define proper separation between Applications irrespective of this.

Process Flexibility

There are options for the way that business activities are delivered to support online processing, as illustrated below. A more granular approach where each business activity is considered a logical unit of work is generally recommended where possible. Note that the Service Control layer defined above typically relates to the physical transaction boundary in the Platform Design, since it generally manages persistence of the outcome of the logical unit of work.

Batch Transaction Processing

Batch transactional processing differs from online transactional processing in two key ways:

Key design considerations include:

Reporting & Analytical Processing

Whilst Transaction Processing services focus on managing data integrity, Reporting & Analytical Services are focused on:

Analytical Application Frameworks

Their are a variety of Application Frameworks to support this processing depending on the specific requirements, including Business Rules, Business Intelligence & Reporting, and specialised Expert Systems. Some of the features of these may include:

Reporting Styles

There are generally two types of report processing:

Static reports are typically delivered by IT, however the relatively low complexity and independence from transaction processing allow the approach to be adapted to minimise delivery timescales

Ad-hoc reporting is typically undertaken to meet the dynamic demands of specialised teams with Finance, Operations and Marketing. These may be delivered by specialist teams that may involve IT for some aspects.

There are also different types of reporting functionality: