skip to main content
10.1145/3123569.3123570acmconferencesArticle/Chapter ViewAbstractPublication PagesicfpConference Proceedingsconference-collections
research-article

eAOP: an aspect oriented programming framework for Erlang

Published: 08 September 2017 Publication History

Abstract

Aspect oriented programming (AOP) is a paradigm ideal for defining cross-cutting concerns within an existing application. Although several AOP frameworks exist for more renowned languages such as Java and C#, little to no frameworks have been developed for actor oriented languages such as Erlang. We thus present eAOP, a new AOP framework specifically designed to instrument actor-oriented constructs in Erlang such as message sends and receives, along with other traditional constructs such as function calls.

References

[1]
G. Agha. An overview of actor languages. ACM, 1986.
[2]
J. Armstrong. Programming Erlang: Software for a Concurrent World. Pragmatic Bookshelf, 2007.
[3]
D. P. Attard, I. Cassar, A. Francalanza, L. Aceto, and A. Ingolfsdottir. A runtime monitoring tool for actor-based systems. Behavioural Types: from Theory to Tools., 2017.
[4]
V. Bala, E. Duesterwald, and S. Banerjia. Dynamo: a transparent dynamic optimization system. ACM, 35:1–12, 2000.
[5]
A. Bawiskar, P. Sawant, V. Kankate, and B. Meshram. Spring Framework: A Companion to JavaEE. IJCEM, 1:41–49, 2012.
[6]
G. A. T. Bayona. Aspect oriented programming meets design patterns. Master’s thesis, University of Manchester, Faculty of Engineering and Physical Sciences, 2013.
[7]
D. Bruening and Q. Zhao. Practical memory checking with Dr. Memory. In IEEE/ACM Symposium on Code Generation and Optimization, pages 213–223. IEEE, 2011.
[8]
D. Bruening, Q. Zhao, and S. Amarasinghe. Transparent dynamic instrumentation. ACM, 47:133–144, 2012.
[9]
N. Cacho, C. Sant’Anna, E. Figueiredo, A. Garcia, T. Batista, and C. Lucena. Composing design patterns: A scalability study of aop. In AOSD, pages 109–121. ACM, 2006.
[10]
I. Cassar and A. Francalanza. On synchronous and asynchronous monitor instrumentation for actor-based systems. arXiv:1502.03514, 2015.
[11]
I. Cassar and A. Francalanza. Runtime adaptation for actor systems. In RV, pages 38–54. Springer, 2015.
[12]
I. Cassar and A. Francalanza. On implementing a monitor-oriented programming framework for actor systems. In IFM, pages 176–192. Springer, 2016.
[13]
I. Cassar, A. Francalanza, L. Aceto, and A. Ingólfsdóttir. A Survey of Runtime Monitoring Instrumentation Techniques. In PrePost, EPTCS, 2017. (To appear).
[14]
F. Chen and G. Roşu. MOP: An efficient and generic Runtime Verification framework. In ACM SIGPLAN Notices 2007, volume 42, pages 569–588.
[15]
F. Chen and G. Roşu. Java-MOP: A Monitoring Oriented Programming Environment for Java, pages 546–550. 2005.
[16]
S. Chiba and R. Ishikawa. Aspect-oriented programming beyond dependency injection. ECOOP, pages 121–143, 2005.
[17]
Y. Coady, G. Kiczales, M. Feeley, and G. Smolyn. Using AspectC to improve the modularity of path-specific customization in operating system code. In ACM SIGSOFT, volume 26, pages 88–98. ACM, 2001.
[18]
Ericsson. Compiler reference manual. Online. http://erlang.org/doc/man/compile. html#file-2 .
[19]
M. Fayad and D. C. Schmidt. Object-oriented application frameworks. Commun. ACM, 40(10):32–38, Oct. 1997.
[20]
I. Figueroa, N. Tabareau, and É. Tanter. Effective Aspects: A Typed Monadic Embedding of Pointcuts and Advice, pages 145–192. Springer, 2014.
[21]
G. Fraiteur. A Thread-Safe Extension to Object-Oriented Programming. Technical report, PostSharp Technologies.
[22]
A. Francalanza and A. Seychell. Synthesising correct concurrent runtime monitors. FMSD, 46(3):226–261, 2015.
[23]
A. Francalanza, L. Aceto, and A. Ingólfsdóttir. On verifying hennessy-milner logic with recursion at runtime. In RV, pages 71–86, 2015.
[24]
K. Gregor, H. Erik, H. Jim, K. Mik, P. Jeffrey, and G. G. William. An Overview of AspectJ. In ECOOP, 2001.
[25]
K. Havelund and G. Roşu. An Overview of the RV tool Java PathExplorer. FMSD, 24(2):189–215, 2004.
[26]
A. Hernandez. Yaws 1.89: Directory Traversal Vulnerability. Available online at www.exploit-db.com/exploits/15371/, 2010. Accessed on 24/5/2017.
[27]
I. Jacobson and P.-W. Ng. Aspect-oriented software development with use cases. Addison-Wesley Professional, 2004.
[28]
G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. Lopes, J.-M. Loingtier, and J. Irwin. Aspect-oriented programming, pages 220–242. Springer, 1997.
[29]
M. Kim, M. Viswanathan, S. Kannan, I. Lee, and O. Sokolsky. Java-MaC: A run-time assurance approach for Java programs. FMSD, 24(2):129–155, 2004.
[30]
R. Laddad. AspectJ in action: practical aspect-oriented programming. Dreamtech Press, 2003.
[31]
Mountainminds GmbH & Co. KG. EclEmma - Java Code Coverage for Eclipse. Online. www.eclemma.org/ .
[32]
N. Nethercote. Dynamic binary analysis and instrumentation. PhD thesis, University of Cambridge, 2004.
[33]
H. Rajan and K. Sullivan. Aspect language features for concern coverage profiling. AOSD, pages 181–191. ACM, 2005.
[34]
C. Sant’Anna, A. Garcia, U. Kulesza, C. Lucena, and A. v. Staa. Design patterns as aspects: A quantitative assessment. JBCS, 10(2):42–55, 2004.
[35]
K. Sirbi and P. J. Kulkarni. Stronger enforcement of security using AOP and Spring AOP. arXiv:1006.4550, 2010.
[36]
O. Spinczyk, A. Gal, and W. SchrÃűder-Preikschat. AspectC++: An AspectOriented Extension to the C++ Programming Language. In CRPIT ’02, pages 53–60, 2002.
[37]
G. Xu, Z. Yang, H. Huang, Q. Chen, L. Chen, and F. Xu. JAOUT: Automated generation of Aspect-oriented unit test. In APSEC, pages 374–381, Nov 2004.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
Erlang 2017: Proceedings of the 16th ACM SIGPLAN International Workshop on Erlang
September 2017
65 pages
ISBN:9781450351799
DOI:10.1145/3123569
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 08 September 2017

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Actor Systems
  2. Aspect Oriented Programming
  3. Code instrumentation
  4. Concurrency
  5. Erlang

Qualifiers

  • Research-article

Conference

ICFP '17
Sponsor:

Acceptance Rates

Overall Acceptance Rate 51 of 68 submissions, 75%

Upcoming Conference

ICFP '25
ACM SIGPLAN International Conference on Functional Programming
October 12 - 18, 2025
Singapore , Singapore

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)1
  • Downloads (Last 6 weeks)0
Reflects downloads up to 08 Mar 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Executable contracts for elixirJournal of Logical and Algebraic Methods in Programming10.1016/j.jlamp.2024.101019(101019)Online publication date: Oct-2024
  • (2022)Improving Fault Tolerance and Reliability of Heterogeneous Multi-Agent IoT Systems Using Intelligence TransferElectronics10.3390/electronics1117272411:17(2724)Online publication date: 30-Aug-2022
  • (2022)A theory of monitorsInformation and Computation10.1016/j.ic.2021.104704281:COnline publication date: 3-Jan-2022
  • (2021)On Bidirectional Runtime EnforcementFormal Techniques for Distributed Objects, Components, and Systems10.1007/978-3-030-78089-0_1(3-21)Online publication date: 8-Jun-2021
  • (2019)Runtime type safety for Erlang/otp behavioursProceedings of the 18th ACM SIGPLAN International Workshop on Erlang10.1145/3331542.3342571(36-47)Online publication date: 18-Aug-2019
  • (2019)Runtime Verification in Erlang by Using ContractsFunctional and Constraint Logic Programming10.1007/978-3-030-16202-3_4(56-73)Online publication date: 16-Mar-2019
  • (2017)A Foundation for Runtime MonitoringRuntime Verification10.1007/978-3-319-67531-2_2(8-29)Online publication date: 6-Sep-2017

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media