Pennsylvania Department of human services

<System Name>

Application Architecture

<System Name>

Application Architecture

<Version #>

Revision History

Date	Version	Description	Author

Table of Contents

1.	Introduction	3

2.	Overall Application Structure and Layering	3

3.	Presentation Layer	3

3.1	State Management	3

4.	Business Layer	3

5.	Persistence Layer	3

6.	Cross-Layer Concerns	3

6.1	Security	3

6.2	Validations	3

6.3	Transactions	3

6.4	Logging	3

6.5	Exception Handling	3

6.6	Reference Tables	3

6.7	Internationalization	3

7.	Information Architecture	3

8.	Middleware	3

9.	Unit Testing Framework	3

10.	Deployment	3

Introduction

[In this section, outline the design summary and technical design (including design considerations and major components) for the application. This document contains technical information that will help the technical team (including application architects and developers) understand the application architecture and design. The aim is to facilitate a common understanding of the application architecture, the quality and reliability of the system, and insure its extensibility for future expansion.

Also, provide a summary of the document highlighting the key points in each section, if applicable.]

Overall Application Structure and Layering

[The purpose of this section is to provide an overview of the application layering scheme and the interaction between them. At a minimum, this section should identify and describe all the different layers in the application architecture. A visual diagram should be included to illustrate the different layers in the application and their relation. There should be a separate top-level heading in this document for each layer in the architecture. By default this document is structured with a three-layer structure (presentation, business, persistence), but additional layers may be added if necessary, and some of these layers may be removed if not necessary (for instance, if the application has no user interface and thus does not require a presentation layer].

Application Structure Example

Presentation Layer

[In this section, the structure of the presentation layer should be defined. The information can be presented visually or in a table, at minimum it should include the following details:

The different presentation layer technologies utilized by the application, including:

MVC frameworks

Design standards and conventions for the presentation layer

Illustrative examples in UML and other diagrams

In addition, this section should contain any other additional aspects of the design in the application architecture which are unique to this application layer. Other design aspects which may need to be documented in this layer could include creating template approaches or the use of presentation-tier caching.]

State Management

[This section describes overall state management techniques used in the application]

Business Layer

[In this section, the structure of the business layer should be defined. In should at minimum include the following details:

Identification of any tools or frameworks used in this layer

Design standards and conventions for the business layer

Illustrative examples in UML and other diagrams]

Persistence Layer

[In this section, the structure of the persistence layer should be defined. In should at minimum include the following details:

Identification of any tools or frameworks used in this layer, such as the ORM tools or other persistence technologies

Design standards and conventions for the persistence layer

The classes (either diagrammatically, tabular or in narrative form) that comprise the persistence layer and

How the persistence layer is invoked by the subsystems and modules within the application and what are the steps performed to interact with the persistence layer.]

Cross-Layer Concerns

[This section identifies specific application architecture components that will be used to design and build the <Project> application which are not specific to any one of the application’s layers and also how they are invoked so they can be used in a repeatable and uniform manner throughout the application.

As each application architecture component is discussed, this section describes the tools used, the <Project> usage approach, and sample code artifacts for implementation.]

Security

[Define the approaches used to secure the application including:

Method for authentication

Authorization, including the need for role-based access to resources and the method by which this will be achieved

HTTPS and other transport security for secure information

Prevention of common types of security attacks such as script and SQL injection, XSS attacks]

Validations

[In this section, describe the business validations that are completed in the business layer, if applicable.]

Transactions

[Define the types of transactional control, if any, used by the application, such as distributed XA transactions.]

Logging

[Describe the application infrastructure that supports anticipated and unanticipated events such as operating system exceptions, specific application errors and how the logging is invoked by other subsystems and modules within the application. This section also identifies and defines the classes (either diagrammatically or in narrative or tabular form) and the sequence diagram that shows how the logging is used.]

Exception Handling

[The approach to application exception handling should be defined here. As part of the exception handling approach, the project should also document how the exception will eventually be handled and logged and how it will be presented to the user.

This section should identify the classes (either diagrammatically, in narrative or tabular form) that comprise the exception handling approach, and the sequence of actions and interactions among different components within the application system as part of exception handling. ]

Reference Tables

[This section should identify the static look-up tables or reference tables’ information here and also identify the classes that define the reference table design approach. In addition, this section should define how the reference tables are invoked by the subsystems and modules within the application.]

Internationalization

[This section describes the approach to handle internationalization for the application, if applicable and should include support for multi-lingual, different character sets, etc.]

Information Architecture

[This section outlines the design for an operational data store (ODS), Imaging architecture, Reporting architecture, and Information Lifecycle Management (ILM) architecture, if applicable.]

Middleware

[This section identifies the design of any guaranteed cross platform transactional update techniques, usage of any enterprise level middleware (such as MoveIT, and ECS), and any enterprise service bus design (ESB), if applicable.]

Unit Testing Framework

[This section outlines the design for the interface that the developers can use to write automated unit tests during their unit testing activities. In addition to the unit testing framework classes, this section should also describe the sequence of actions and interactions among different components within an application system and the unit testing framework.]

Deployment

[Include any necessary details about the deployment of the application here. This section should include the following information, as necessary:

How the application is packaged into binaries

The different server environments where the application is deployed.]