aspect oriented programming - tut ·  · 2004-12-20when designing software, ... aspectj an aspect...

37
© IBM Corporation 1 Aspect Oriented Programming Why, What and How? Andy Clement AspectJ Committer IBM Hursley Park [email protected]

Upload: buidiep

Post on 19-May-2018

219 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

© IBM Corporation1

Aspect Oriented ProgrammingWhy, What and How?

Andy ClementAspectJ Committer

IBM Hursley [email protected]

Page 2: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

2© IBM Corporation

Agenda

� Why?– Why do we need AOP ?

� What?– What is AOP?– AspectJ

� How?– The need for tool support– Demo: AspectJ Development Tools (AJDT) for Eclipse– Demo: Using AOP on real middleware– Adopting the technology

Page 3: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

3© IBM Corporation

Good Modularity: What oo is good at…

� XML parsing in org.apache.tomcat– Red shows relevant lines of code– Nicely fits in one box

���������

����������� �

Page 4: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

4© IBM Corporation

Good Modularity: What oo is good at…

� URL pattern matching in org.apache.tomcat– Red shows relevant lines of code– Nicely fits in two boxes (using inheritance)

� ���������� �����

����������� �

Page 5: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

5© IBM Corporation

No Modularity: What oo is bad at…

� Where is logging in org.apache.tomcat?– Not in just one place, not even in a small number of places– Scattered and tangled

��������

����������� �

Page 6: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

6© IBM Corporation

The Cost of Tangled Code

� Redundant code– Same fragment of code in many places– e.g. �������������������� �����

� Difficult to reason about– Non-explicit structure– The big picture of the tangling isn’t clear

� Difficult to change– Have to find all the code involved– And be sure to change it consistently– And be sure not to break it by accident

Page 7: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

7© IBM Corporation

AO tries to recognize …

� Crosscutting concerns:– Are inherent in any complex system– Have a clear purpose– Have a natural structure

� Lets capture them explicitly:– In a modular way– With language and tool support

When designing software, the ideal mapping is 1..1:One concept at the design level maps to one class or package

(one module) at the code level

Page 8: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

8© IBM Corporation

AspectJ

� An aspect oriented programming (AOP) language

� Java language extension

� Divides system into – core concerns (classes)– crosscutting concerns (aspects)

� Broad IDE support– Eclipse, Emacs, JBuilder, NetBeans, …

Page 9: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

9© IBM Corporation

What is an AspectJ Aspect?

� Aspects are...– At the design level … concerns that crosscut– At the implementation level … a programming

construct

Aspect = pointcut + advice

Page 10: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

10© IBM Corporation

What’s a Pointcut?

� Join point– An event in the execution of Java program.– e.g. Method call, field access, exception

handler, object initialization

� Pointcut– Picks out joinpoints in a particular system– e.g. call of method ‘foo()’, set of field ‘x’,

constructor for object ‘Fred’– Can also expose context from the matched

join point

Page 11: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

11© IBM Corporation

Types of Pointcuts

Event based - well defined execution points, e.g.– method calls, executions – field gets / sets– exception handling– object and class initialisation

Scoping - only select joinpoints within a certain scope, e.g.– within a set of packages, – within the implementation of a method,– in the control flow of some event (e.g. downstream of an

unsecured call)

Context matching - expose context at the joinpoint, e.g.– identity of the caller– identity of the target object– exception being handled– value being put into a field

Page 12: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

12© IBM Corporation

What’s Advice?

� Advice– Java logic to execute when conditions of a pointcut are

met.

� Types of Advice:– before()

� Executes before the joinpoint– after() throwing/returning

� Executes after the joinpoint, execution can be made conditional on how joinpoint exits (i.e. with/without exception)

– around()� Executes ‘instead of’ the joinpoint – has a choice about

whether to invoke the original logic

� Can be parameterized to process context exposed by the pointcut

Page 13: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

13© IBM Corporation

Eclipse is #1 for AOSD

� AspectJ Development Tools (AJDT) for Eclipse– Open Source– Developed in Hursley– Partnership with AspectJ team– Fully tested in WebSphere Studio and Rational

Eclipse based tools

Page 14: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

14© IBM Corporation

AJDT Demo - Figures

��� ������ �����������������

��������������������� ����! ��������"������ ��#����$���#��%��&��� ����� �������"���� �

Page 15: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

15© IBM Corporation

Webservices Invocation Framework

� Middleware component– Simple Java API for invoking webservices, no matter how or

where they are provided

� Released to Apache– But IBM wants a version tightly coupled to IBMs normal

‘qualities of service’� IBM tracing/monitoring/management

� How do we manage this?– Manage an IBM internal of the apache codebase?– Put the IBM facilities into the open source codebase?

Page 16: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

16© IBM Corporation

AJDT Demo - WSIF

��� �' �()� �����������������

��������������������� ����! ��������"������ ��#����$���#��%��&��� ����� �������"���� �

Page 17: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

17© IBM Corporation

Demo conclusions

� Capabilities of AOP technology look very promising– Code size reduction– No tangling– Faster development times– Product-line engineering

Page 18: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

18© IBM Corporation

Eliminating tangling

�����������������������������������������

����������������� �����!�"������ ��#���� � ���

$$�%��&����#������� ��#����$$�%��&����#������� ��#����$$�%��&����#������� ��#����$$�%��&����#������� ��#����� '(������#��������('()*+('� '(������#��������('()*+('� '(������#��������('()*+('� '(������#��������('()*+('�!����!����!����!���

���������!��,�� �

�����--���������������..�������������..�������������..�������������..�

����������%�--���������������%�--���������������%�--���������������%�--����� �/��0--����/��0--����/��0--����/��0--�������������%�--���������������%�--���������������%�--���������������%�--���������

������������������������������������������������������������������������ ��������/���-�����������-�#0���!������������������&&���������-����&&���������-����&&���������-����&&���������-����������

��&&���� ����'(#����������&&���� ����'(#����������&&���� ����'(#����������&&���� ����'(#��������(�(�(�(�

�����������������������������������������

����������������� �����!�"������ ��#���� � ������������!��,�� �

�����--�����������/���-�����������-�#0���!����

Crosscutting concernsextracted

Example: Code to handle EJB Entity bean passivation

BEFORE AFTER

Page 19: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

19© IBM Corporation

Adopting AOP

time & confidence

reward

Page 20: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

20© IBM Corporation

Adopting AOP

time & confidence

reward

Risky Space

Page 21: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

21© IBM Corporation

Adopting AOP

time & confidence

reward

exploration/enforcement

auxiliary /infrastructure

core /business

AO Analysis,AO Design,AO Strategy

Page 22: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

22© IBM Corporation

Exploration & Enforcement

� Aspects to monitor, analyze, debug system– Can use individually or share with team

� Aspects that ensure design integrity– Can run privately, as part of nightly build, or shared w/ team

� Sharing with team can be supported by– integration in IDE or including in ant script

� No runtime dependency on AspectJ– production code has not been touched by AspectJ

Page 23: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

23© IBM Corporation

Don’t use System.err.println !!!

#0�-�����#���#0�-�����#���#0�-�����#���#0�-�����#��� ���������&&��&���������&&��&���������&&��&���������&&��& ����

#�����0�#�����0�#�����0�#�����0� ���#�1���#�1���#�1���#�1,��!��,��!��,��!��,��!������� ��#-������ ��#-������ ��#-������ ��#-���2��2��2��2 ........����,��!��,��!��,��!��,��!��%����-����0&&��%����-����0&&��%����-����0&&��%����-����0&&������

#�����0�#�����0�#�����0�#�����0� #������&1#������&1#������&1#������&1&��&��&��&��2222 ��������0���������0���������0���������0� 33333333 &��&��&��&��2222 ���������������������������������������� 33333333��--��--��--��--2222 4!��,��-�5�#��������64����4!��,��-�5�#��������64����4!��,��-�5�#��������64����4!��,��-�5�#��������64��������

���-������-������-������-��� ,�����&,�����&,�����&,�����&1111 ���#����#����#����#� ........ #������&1#������&1#������&1#������&17���8��#����'�0����!��-�&&��77���8��#����'�0����!��-�&&��77���8��#����'�0����!��-�&&��77���8��#����'�0����!��-�&&��7����

� Warn developers using System.out, System.err and printStackTrace

Page 24: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

24© IBM Corporation

Architectural Layering

View

Persistence

Model

Controller Layer 1

Layer 2

Layer 3

Layer 4

Page 25: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

25© IBM Corporation

Map packages to components

��#�����#�����#�����#��� 9��!�����0����9��!�����0����9��!�����0����9��!�����0����

#�����0�#�����0�#�����0�#�����0� ��:��,��:��,��:��,��:��,�1��1��1��1�,��!��,��!��,��!��,��!�����,���,���,���,��2���2���2���2�#�����0�#�����0�#�����0�#�����0� ��;���-��;���-��;���-��;���-�1��1��1��1�,��!��,��!��,��!��,��!������-����-����-����-��2���2���2���2�#�����0�#�����0�#�����0�#�����0� ��%�����--����%�����--����%�����--����%�����--���1�1�1�1 ,��!��,��!��,��!��,��!��������--��������--��������--��������--����2���2���2���2�#�����0�#�����0�#�����0�#�����0� �����������������������������������������������������1��1��1��1�,��!��,��!��,��!��,��!��#����������#����������#����������#������������2���2���2���2�

<<<<

Page 26: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

26© IBM Corporation

‘External’ calls into components

<<<<

#�����0�#�����0�#�����0�#�����0� ���,%�--���,%�--���,%�--���,%�--1111 ��--��--��--��--2����,��2���..��2����,��2���..��2����,��2���..��2����,��2���..����:��,��:��,��:��,��:��,����

#�����0�#�����0�#�����0�#�����0� ����-%�--����-%�--����-%�--����-%�--1111 ��--��--��--��--2�����-��2���..��2�����-��2���..��2�����-��2���..��2�����-��2���..����;���-��;���-��;���-��;���-����

#�����0�#�����0�#�����0�#�����0� ������--��%�--������--��%�--������--��%�--������--��%�--1111 ��--��--��--��--2�������--����2���..��2�������--����2���..��2�������--����2���..��2�������--����2���..����%�����--����%�����--����%�����--����%�����--������

#�����0�#�����0�#�����0�#�����0� #����������%�--#����������%�--#����������%�--#����������%�--1111 ��--��--��--��--2�#������������2���..2�#������������2���..2�#������������2���..2�#������������2���..������������������������������������������������������������

#�����0��#�����0��#�����0��#�����0������%�--����%�--����%�--����%�--�1�1�1�1 ��--��--��--��--2�2�2�2����� ��=-���� ��=-���� ��=-���� ��=-��2�����2�����2�����2���

<<<<

Page 27: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

27© IBM Corporation

Compile warnings for illegal calls

<<<<

���-����,�����&����-����,�����&����-����,�����&����-����,�����&�1�1�1�1�������--��%�--������--��%�--������--��%�--������--��%�--�1��1��1��1�7777>����--�������������--��>����--�������������--��>����--�������������--��>����--�������������--��7�7�7�7�

���-����,�����&����-����,�����&����-����,�����&����-����,�����&�1�1�1�1����,%�--���,%�--���,%�--���,%�--�..���..���..���..����%�����--����%�����--����%�����--����%�����--���1��1��1��1�7777��-��������--���������--����,��-��������--���������--����,��-��������--���������--����,��-��������--���������--����,7�7�7�7�

���-����,�����&����-����,�����&����-����,�����&����-����,�����&�1�1�1�1�����-%�--����-%�--����-%�--����-%�--�..���..���..���..����%�����--����%�����--����%�����--����%�����--���33��33��33��33���:��,��:��,��:��,��:��,�1��1��1��1�7777��-�����,�����������--���������--�����-��-�����,�����������--���������--�����-��-�����,�����������--���������--�����-��-�����,�����������--���������--�����-7�7�7�7�

���-����,�����&����-����,�����&����-����,�����&����-����,�����&�1�1�1�1�#����������%�--#����������%�--#����������%�--#����������%�--�..���..���..���..����;���-��;���-��;���-��;���-�1��1��1��1�7777��-������-������������#�����������-������-������-������������#�����������-������-������-������������#�����������-������-������-������������#�����������-����7�7�7�7�

���-����,�����&���-����,�����&���-����,�����&���-����,�����& 1�1�1�1�����%�--����%�--����%�--����%�--�..���..���..���..�������������������������������������������������������1��1��1��1�7777������������-�����!���-����--����������������������-�����!���-����--����������������������-�����!���-����--����������������������-�����!���-����--����������7�7�7�7�

Page 28: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

28© IBM Corporation

Auxiliary/Infrastructure

� Whole team awareness– developers know aspects are there– runtime dependency on aspectjrt.jar

� But only some developers – change working practices– change day-to-day tools

� Easily understood business case

Page 29: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

29© IBM Corporation

Examples…

� Tracing, logging� Error and exception handling� Monitoring and statistics gathering� Transactions� Session management (for e.g. persistence)� Threading� Synchronization� Caching� Remote access� …

Page 30: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

30© IBM Corporation

Building the Case

� Factors:– Number of source files in project– Average time spent per file over a release

� (e.g. on tracing code)

?@@���-��� �?A����0����/�)A�#������!�0��

A@@���-��� �?A����0����/�*�A�#������,��6�

?@@@���-��� �?A����0����/�+�#������,��6�

Page 31: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

31© IBM Corporation

Building the Case

� You can certainly– write and test a simple tracing aspect in < 25

hours– write and test a good tracing aspect in < 50 hours– and save a lot of time

?@@���-��� �?A����0����/�)A�#������!�0��

A@@���-��� �?A����0����/�*�A�#������,��6�

?@@@���-��� �?A����0����/�+�#������,��6�

Page 32: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

32© IBM Corporation

Core/Business Aspects

� Using aspects when implementing application’s core functionality (e.g. security)

� Requires full team buy-in to AspectJ� Changes to tool set (e.g. JDT -> AJDT)� You’ll be ready if you followed staged

approach– enough developers will understand technology– enough developers will be aware of value– management will be aware of value

Page 33: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

33© IBM Corporation

[email protected]*� CapitalOne

� Virtusa Virtusa.com (a global provider of software development services)

� fcspartners.fi

� Siruis Software

� Cardinal Health, Dublin, OH 43017

� BerMark Dynamics Inc.

� Tavant Technologies

� Asset Group, part of SAIC - fortune 500. asset.com

� Haywood Associates

� SpinSoftware

� The Middleware Company

� atSistemas (atsistemas.com)

� Wells Fargo

� IntelliJ

� Perot Systems (trcinc.com)

� ESRI (GPS and mapping software specialists) esri.com

� Oracle

� ARINC "the world leader in transportation communications and systems engineering" Arinc.com

� MAN-Corporate

� BEA

� Bell Canada (sympatico.ca)

� Dimension Data http://www.didata.com/na/contactus.asp

� Husky Injection Molding Systems husky.ca

� Covansys Global Technology Services covansys.com

� OleCenter Addecco Group olecenter.com

� Bell South (.net)

� EDS

� Simtel Group Simtel.ie

� HP

� Data Transfer datatransfer.com.ar

� matrix-media.com

� MetCash (marketing an distribution) metcash.com

� SG Corporate & Investmen Banking (sgcib.com

� Siemens

� Computer Sciences Corporation csc.com

� hpsglobal.com

� CheckFree

� Allstate Insurance

� iceCentric (icecentric.com) - CRM company

� Intuit intuit.com

� Disney disney.com

� CrimsonLogic crimsonlogic.com

� Reflective Solutions reflective.com (J2EE consultancy)

� New Aspects of Software

� etracksolutions.com

� Nulogy Corporation nulogy.com

� SAS sas.com

� VMS vmsinfo.com

� Deloitte dc.com

� Global Net Services gnsi.com

� A G Edwards (finance company) AGEDWARDS.com

� Akzo Nobel (pharmaceuticals) AkzoNobel.com

*posters to AspectJ usermailing list, Jan-May 2004,where affiliation canbe determined.

Page 34: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

34© IBM Corporation

Summary

� Object Oriented Development has some shortcomings for coping with certain kinds of feature/concern

– AOP can help solve this problem

� You need tools support

� Adopt AOP through managed phases– Get increasing benefit as your confidence and expertise grows

� Who’s doing it?– IBM is doing it– Other AspectJ users are doing it– You can do it too!

Page 35: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

35© IBM Corporation

Beyond Java …

� Obviously– there are languages other than Java

� BPEL, WSDL, C, C++, etc, etc…

– there are artifacts other than code� Documentation, build scripts, UML models

� IBM is exploring this space– check out the CME project http://eclipse.org/cme

Page 36: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

36© IBM Corporation

More information…

� AspectJ homepage– http://eclipse.org/aspectj

� AJDT homepage– http://eclipse.org/ajdt

� Books– ‘AspectJ in Action’

� ISBN 1930110936 – ‘Eclipse AspectJ’

� ISBN 0321245873

� Contact me!– Andy Clement– [email protected]

Page 37: Aspect Oriented Programming - TUT ·  · 2004-12-20When designing software, ... AspectJ An aspect oriented programming (AOP) language Java language extension Divides system into

37© IBM Corporation

The End