Aspect-oriented programming: Difference between revisions

Content deleted Content added
No edit summary
Citation bot (talk | contribs)
m Alter: title, others, isbn. Add: citeseerx. Removed parameters. | You can use this bot yourself. Report bugs here. | User-activated.
Line 217:
Indeed, the pointcut may depend on runtime condition and thus not be statically deterministic. This can be mitigated but not solved by static analysis and IDE support showing which advices ''potentially'' match.
 
General criticisms are that AOP purports to improve "both modularity and the structure of code", but some counter that it instead undermines these goals and impedes "independent development and understandability of programs".<ref name="steimann">{{Cite journal | doi = 10.1145/1167515.1167514| title = The paradoxical success of aspect-oriented programming| journal = ACM SIGPLAN Notices| volume = 41| issue = 10| pages = 481| year = 2006| last1 = Steimann | first1 = F. | citeseerx = 10.1.1.457.2210}}, ([http://people.dsv.su.se/~johano/ioor/succ_aop.pdf slides] {{webarchive|url=https://web.archive.org/web/20160304060007/http://people.dsv.su.se/~johano/ioor/succ_aop.pdf |date=2016-03-04 }},[http://www.eecs.ucf.edu/~leavens/modular-aop/Discussion.pdf slides 2] {{webarchive|url=https://web.archive.org/web/20150923234021/http://www.eecs.ucf.edu/~leavens/modular-aop/Discussion.pdf |date=2015-09-23 }}, [http://www.oopsla.org/2006/submission/essays/the_paradoxical_success_of_aspect-oriented_programming.html abstract] {{webarchive|url=https://web.archive.org/web/20150924060711/http://www.oopsla.org/2006/submission/essays/the_paradoxical_success_of_aspect-oriented_programming.html |date=2015-09-24 }}), Friedrich Steimann, Gary T. Leavens, [[OOPSLA]] 2006</ref> Specifically, quantification by pointcuts breaks modularity: "one must, in general, have whole-program knowledge to reason about the dynamic execution of an aspect-oriented program."<ref>{{cite web|url=http://www.eecs.ucf.edu/~leavens/modular-aop/|title=More Modular Reasoning for Aspect-Oriented Programs|publisher=|accessdate=11 August 2015|deadurl=no|archiveurl=https://web.archive.org/web/20150812045258/http://www.eecs.ucf.edu/~leavens/modular-aop/|archivedate=12 August 2015|df=}}</ref> Further, while its goals (modularizing cross-cutting concerns) are well understood, its actual definition is unclear and not clearly distinguished from other well-established techniques.<ref name="steimann"/> Cross-cutting concerns potentially cross-cut each other, requiring some resolution mechanism, such as ordering.<ref name="steimann"/> Indeed, aspects can apply to themselves, leading to problems such as the [[liar paradox]].<ref>{{cite web|url=http://www.fernuni-hagen.de/ps/pubs/FOAL2006.pdf|title=AOP and the Antinomy of the Liar|author=|date=|website=fernuni-hagen.de|accessdate=5 May 2018|deadurl=no|archiveurl=https://web.archive.org/web/20170809201001/http://www.fernuni-hagen.de/ps/pubs/FOAL2006.pdf|archivedate=9 August 2017|df=}}</ref>
 
Technical criticisms include that the quantification of pointcuts (defining where advices are executed) is "extremely sensitive to changes in the program", which is known as the ''fragile pointcut problem''.<ref name="steimann"/> The problems with pointcuts are deemed intractable: if one replaces the quantification of pointcuts with explicit annotations, one obtains attribute-oriented programming instead, which is simply an explicit subroutine call and suffers the identical problem of scattering that AOP was designed to solve.<ref name="steimann"/>
Line 233:
*[[COBOL]]<ref>{{cite web|url=http://homepages.vub.ac.be/~kdeschut/cobble/|title=Cobble|author=|date=|website=vub.ac.be|accessdate=5 May 2018}}{{dead link|date=May 2018 |bot=SheriffIsInTown |fix-attempted=yes }}</ref>
*The [[Cocoa (API)|Cocoa]] [[Objective-C]] frameworks<ref>{{cite web|url=http://www.ood.neu.edu/aspectcocoa/|title=AspectCocoa|author=|date=|website=neu.edu|accessdate=5 May 2018|deadurl=yes|archiveurl=https://web.archive.org/web/20071026022525/http://www.ood.neu.edu/aspectcocoa/|archivedate=26 October 2007|df=}}</ref>
*[[ColdFusion]]<ref>{{cite web|url=http://coldspringframework.org/|title=ColdSpring Framework: Welcome|author=|date=5 November 2005|website=archive.org|accessdate=5 May 2018|deadurl=bot: unknown|archiveurl=https://web.archive.org/web/20051105014513/http://coldspringframework.org/|archivedate=5 November 2005|df=}}</ref>
*[[Common Lisp]]<ref>{{cite web|url=http://common-lisp.net/project/closer/aspectl.html|title=Closer Project: AspectL.|publisher=|accessdate=11 August 2015|deadurl=no|archiveurl=http://archive.wikiwix.com/cache/20110223172923/http://common-lisp.net/project/closer/aspectl.html|archivedate=23 February 2011|df=}}</ref>
*[[Borland Delphi|Delphi]]<ref>{{cite web|url=https://code.google.com/p/infra/|title=infra - Frameworks Integrados para Delphi - Google Project Hosting|publisher=|accessdate=11 August 2015|deadurl=no|archiveurl=https://web.archive.org/web/20150909070130/http://code.google.com/p/infra/|archivedate=9 September 2015|df=}}</ref><ref>{{cite web|url=https://code.google.com/p/meaop/|title=meaop - MeSDK: MeObjects, MeRTTI, MeAOP - Delphi AOP(Aspect Oriented Programming), MeRemote, MeService... - Google Project Hosting|publisher=|accessdate=11 August 2015|deadurl=no|archiveurl=https://web.archive.org/web/20150910210536/http://code.google.com/p/meaop/|archivedate=10 September 2015|df=}}</ref><ref>{{cite web|url=https://code.google.com/p/delphisorcery/|title=Google Project Hosting|publisher=|accessdate=11 August 2015|deadurl=no|archiveurl=https://web.archive.org/web/20141225080131/https://code.google.com/p/delphisorcery/|archivedate=25 December 2014|df=}}</ref>
*[[Delphi Prism]]<ref>{{cite web|url=http://prismwiki.codegear.com/en/Cirrus|title=RemObjects Cirrus|author=|date=|website=codegear.com|accessdate=5 May 2018|deadurl=yes|archiveurl=https://web.archive.org/web/20120123094027/http://prismwiki.codegear.com/en/Cirrus|archivedate=23 January 2012|df=}}</ref>
*[[E (verification language)|e]] (IEEE 1647)
Line 257:
*[[Squeak]] [[Smalltalk]]<ref>{{cite web|url=http://www.prakinf.tu-ilmenau.de/~hirsch/Projects/Squeak/AspectS/|title=AspectS|author=|date=|website=tu-ilmenau.de|accessdate=5 May 2018|deadurl=yes|archiveurl=https://web.archive.org/web/20060106112030/http://www.prakinf.tu-ilmenau.de/~hirsch/Projects/Squeak/AspectS/|archivedate=6 January 2006|df=}}</ref><ref>{{cite web|url=http://csl.ensm-douai.fr/MetaclassTalk|title=MetaclassTalk: Reflection and Meta-Programming in Smalltalk|publisher=|accessdate=11 August 2015|deadurl=no|archiveurl=https://web.archive.org/web/20150729062351/http://csl.ensm-douai.fr/MetaclassTalk|archivedate=29 July 2015|df=}}</ref>
*[[UML 2|UML 2.0]]<ref>{{cite web|url=http://www.iit.edu/~concur/weavr|title=WEAVR|author=|date=|website=iit.edu|accessdate=5 May 2018|deadurl=no|archiveurl=https://web.archive.org/web/20081212200221/http://www.iit.edu/~concur/weavr/|archivedate=12 December 2008|df=}}</ref>
*[[XML]]<ref>{{cite web|url=https://code.google.com/p/aspectxml/|title=aspectxml - An Aspect-Oriented XML Weaving Engine (AXLE) - Google Project Hosting|publisher=|accessdate=11 August 2015|deadurl=no|archiveurl=https://web.archive.org/web/20150912161613/http://code.google.com/p/aspectxml/|archivedate=12 September 2015|df=}}</ref>
 
==See also==
Line 276:
==Further reading==
* {{Cite conference | doi = 10.1007/BFb0053381| title = Aspect-oriented programming| work = Proceedings of the 11th European Conference on Object-Oriented Programming| conference = [[European Conference on Object-Oriented Programming|ECOOP]]'97| volume = 1241| pages = 220–242| series = [[Lecture Notes in Computer Science|LNCS]]| year = 1997| last1 = Kiczales | first1 = G. | author1-link = Gregor Kiczales | last2 = Lamping | first2 = J. | last3 = Mendhekar | first3 = A. | last4 = Maeda | first4 = C. | last5 = Lopes | first5 = C. | last6 = Loingtier | first6 = J. M. | last7 = Irwin | first7 = J. | isbn = 3-540-63089-9| citeseerx = 10.1.1.115.8660| url = http://www.cs.ubc.ca/~gregor/papers/kiczales-ECOOP1997-AOP.pdf}} The paper generally considered to be the authoritative reference for AOP.
* {{cite book |author1=Andreas Holzinger |author2=M. Brugger |author3=W. Slany | year = 2011 | title = Applying Aspect Oriented Programming (AOP) in Usability Engineering processes: On the example of Tracking Usage Information for Remote Usability Testing.|others=D. A. Marca, B. Shishkov and M. v. Sinderen (editors)|work=Proceedings of the 8th International Conference on electronic Business and Telecommunications. Sevilla|pages=53–56}}
* {{cite book |author1=Robert E. Filman |author2=Tzilla Elrad |author3=Siobhán Clarke |author4=Mehmet Aksit | year = 2004 | title = Aspect-Oriented Software Development | isbn = 978-0-321-21976-73}}
* {{cite book |author1=Renaud Pawlak, Lionel Seinturier |author2=Jean-Philippe Retaillé |lastauthoramp=yes | year = 2005 | title = Foundations of AOP for J2EE Development | isbn = 978-1-59059-507-67}}
* {{cite book | first = Ramnivas | last = Laddad | authorlink = Ramnivas Laddad | year = 2003 | title = AspectJ in Action: Practical Aspect-Oriented Programming | isbn = 978-1-930110-93-69}}
* {{cite book | first = Ivar | last = Jacobson | authorlink = Ivar Jacobson |author2=[[Pan-Wei Ng]] | year = 2005 | title = Aspect-Oriented Software Development with Use Cases | isbn = 978-0-321-26888-14}}
* [http://www.cmsdevelopment.com/en/articles/aosdinphp/ Aspect-oriented Software Development and PHP, Dmitry Sheiko, 2006]
* {{cite book |author1=Siobhán Clarke |author2=Elisa Baniassad |lastauthoramp=yes | year = 2005 | title = Aspect-Oriented Analysis and Design: The Theme Approach | isbn = 978-0-321-24674-85}}
* {{cite book |author = Raghu Yedduladoddi |date = 2009 | title = Aspect Oriented Software Development: An Approach to Composing UML Design Models | isbn = 978-3-639-12084-14}}
* "Adaptive Object-Oriented Programming Using Graph-Based Customization" – Lieberherr, Silva-Lepe, ''et al.'' - 1994
* {{cite journal|last=Zambrano Polo y La Borda|first=Arturo Federico|title=Addressing aspect interactions in an industrial setting: experiences, problems and solutions|date=5 June 2013|pages=159|url=http://sedici.unlp.edu.ar/handle/10915/35861|accessdate=30 May 2014}}