Over a million developers have joined DZone.

Example: Cross Cutting Concerns of an Application

· Integration Zone

Build APIs from SQL and NoSQL data sources in seconds. Read the Creating REST APIs white paper, brought to you in partnership with CA Technologies.

A little while ago I was given an opportunity to design and implement a new system that sent data via an HTTP Post method and then processed the results that were returned so that they could be inserted in to a database. My system had eight core concerns that it needed to fulfill.

Eight Core Concerns

  • Database Access
  • Data Entities
  • Worker
  • Result Processing
  • Process Flow Manager
  • Email/Notification
  • Error Handling
  • Logging

Of these eight, five were actually cross cutting concerns.

5 Cross Cutting Concerns

  • Database Access
  • Data Entities
  • Email/Notification
  • Error Handling
  • Logging

These five cross cutting concerns were determined after I created an aspect oriented model to help identity the system components that could be factored out into separate components.  These separated components would then be included in the system so that they could be used by various other components.  These five components allow all of the other components to access the database, store data, send notifications, handle errors, and log all system events.  Thus, these components are used to share unique aspects to the system via their implementation.

The use of Aspect Oriented Architecture greatly helped me define what components I needed to create and what each of those components could do.  It also showed how all of the other aspects depended on each other so that each component did not have to re-implement code that was already created in the existing system.

The Integration Zone is brought to you in partnership with CA Technologies.  Create app backends instantly with REST APIs and reactive logic using CA Live API Creator.

Topics:

Published at DZone with permission of Todd Merritt , DZone MVB .

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}