Example: Cross Cutting Concerns of an Application
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.