Aspect Oriented Programming
Architecture and Design Patterns have simplified & provided consistent structure to the software code. This helped architects to design large complex products in repetitive ways which normal programers can follow.
Clean architecture or Onion architecture, Dependency injection or separation of concerns pattern helped large teams to build large and complex product independently without impacting other team members work. Automated unit test frameworks provided additional benefits of testing modular code independently, even when its dependencies were not ready, with the help of mocking frameworks.
Though All these patterns helps a programmer to write modular code, programmers are still writing lot of code which is not 100% related to business logic or code implementation. You might see lot of functions, which contain code for logging information to file or database table. Code to check current user’s permissions to run that specific function, persist data updates through transaction or maintain audit log of entity changes. All these non-core business logic code clutter the actual implementation and makes a simple code difficult to follow.
Aspect Oriented Programming addresses this in nice and clean way. You can identify these concerns which cut across your architecture layer and implement them as Aspect. And then you can configure these aspects to run before and / or after any function execution. This simplifies your business logic code in great extent and your programmer can focus only on writing code business code.
Initially Sprint framework, adopted aspect oriented programming and now all major languages provides aspected oriented programming. We have helped many of our clients to build modern modular products by following these patterns & practices. If you are starting new development initiative or has an old legacy code that you want to upgrade to take advantage of modern architecture, we will be happy to assist you.