Aspect-Oriented Programming to Improve Modularity of Object-Oriented Applications

The separation of concerns design principle improves software reutilization, understandability, extensibility and maintainability. By using the object- oriented paradigm, it is not always possible to separate into independent modules the different concerns of an application. The result is that the source code of crosscutting concerns are tangled and scattered across the whole application. Aspect-oriented programming offers a higher level of modularity, providing a solution for the code tangling and scattering problem. To show how aspect- oriented programming can be used as a suitable mechanism to improve the modularity of object-oriented applications, this divulgative article presents the implementation of a typical design pattern following both the object- and aspect- oriented paradigms. The two approaches are compared from the modularity perspective, establishing a discussion on the benefits provided and is current use.

[1]  Raúl Izquierdo,et al.  The Runtime Performance of invokedynamic: An Evaluation with a Java Library , 2014, IEEE Software.

[2]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[3]  J. Baltasar García Pérez-Schofield,et al.  Efficient virtual machine support of runtime structural reflection , 2009, Sci. Comput. Program..

[4]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[5]  Madjid Merabti,et al.  Applying Dynamic Separation of Aspects to Distributed Systems Security , 2010 .

[6]  Juan Manuel Cueva Lovelle,et al.  Dynamic adaptation of application aspects , 2004, J. Syst. Softw..

[7]  Alfred V. Aho,et al.  Debugging Aspect-Enabled Programs , 2007, SC@ETAPS.

[8]  Ramnivas Laddad A Real-World Perspective of AOP , 2011, LNCS Trans. Aspect Oriented Softw. Dev..

[9]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[10]  Francisco Ortin,et al.  Achieving Multiple Dispatch in Hybrid Statically and Dynamically Typed Languages , 2013, WorldCIST.

[11]  Francisco Ortin,et al.  JINDY: A java library to support invokedynamic , 2014, Comput. Sci. Inf. Syst..

[12]  Rémi Douence,et al.  Detection and resolution of aspect interactions , 2002 .

[13]  Bertrand Meyer,et al.  Object-Oriented Software Construction, 2nd Edition , 1997 .

[14]  Madjid Merabti,et al.  A performance cost evaluation of aspect weaving , 2013 .

[15]  Francisco Ortin,et al.  Union and intersection types to support both dynamic and static typing , 2011, Inf. Process. Lett..

[16]  Francisco Ortin,et al.  DSAW - A Dynamic and Static Aspect Weaving Platform , 2008, ICSOFT.

[17]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[18]  Friedrich Steimann The paradoxical success of aspect-oriented programming , 2006, OOPSLA '06.

[19]  Francisco Ortin,et al.  The Dsaw Aspect-Oriented Software Development Platform , 2011, Int. J. Softw. Eng. Knowl. Eng..

[20]  Stanley M. Sutton,et al.  Hyper/J™: multi-dimensional separation of concerns for Java™ , 2001, ICSE '02.

[21]  J Glaser,et al.  Separation of Concerns , 2014 .

[22]  Francisco Ortin,et al.  Designing an adaptable heterogeneous abstract machine by means of reflection , 2005, Inf. Softw. Technol..

[23]  J. Baltasar García Pérez-Schofield,et al.  Separating adaptable persistence attributes through computational reflection , 2004, IEEE Software.