Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] JavaBlackBelt exam on AspectJ

This looks quite good and very nearly complete as far as I can tell.
There can be endless of tinkering and endless details to add to each
section, but what you have is very good.

Some comments below.

On Sun, Sep 7, 2008 at 3:59 PM, Simone Gianni <simoneg@xxxxxxxxxx> wrote:
> Exam title : "AspectJ basic exam"
> This exams evaluates the ability of the candidate to operate with
> AspectJ aspects, write simple aspects and use aspects libraries. It will
> not cover more advanced features.
>
> Section 1 : "Understanding AOP"
> Covers the understanding of the AOP basics :
> - Know what a cross cutting concern is
> - Understand the advantages of using aspect oriented programming
Also the disadvantages
> - Differentiate and identify various basic joinpoints (call, execution,
> get and set)
- Also understanding that CCCs can appear in other programming
languages and also modelling languages and use cases (or just about
any structured document).


>
> Section 2 : "Programming AspectJ theory"
> Covers theoretical basic knowledge of AspectJ :
> - Understand advices (before, after and around)
> - The weaving process (includes load time weaving and compile time
> weaving, classes exposed to the weaver)
>
> Section 3 : "Basic AspectJ grammar"
> Covers basic knowledge of AspectJ grammar :
> - .aj files and correlation to .java files
> - Definition of an aspect
> - Definition of simple pointcuts (call, execution, get and set - class
> and member patterns)
Emphasize the distinction between call and execution joinpoints, one
of the most common beginner problems.
> - Definition of advices (before, after and around)
> - Usage of AspectJ specific java extensions (proceed(), thisJoinPoint)
Also named pointcuts


I might move this section to the advanced area, very useful aspects
can be written without any of these features
> Section 4 : "More about AspectJ aspects"
> Covers more advanced topics about aspects in general :
> - Privileged aspects
> - Writing abstract and generic aspects
> - Using aspect libraries and extending abstract aspects
> - Pointcuts combination
>
> Section 5 : "Parameters"
> Covers extraction of parameters from pointcuts and usage of parameters
> in advices :
> - The args()
> - The this() and target()
> - Using parameters in advices
>
> Section 6 : "Basic Intertype declarations"
> Covers how AspectJ can be used to add methods and fields to existing classes
> - Adding a field to an existing class, and using it inside the aspect
> - Adding a method to an existing class
> - Adding an annotation to an existing class or method
> - Declaring a parent interface to an existing class
>

Section 7 : @AspectJ style
Covers how to use annotations to define aspects


> -- End of exam
>
> Exam title : "AspectJ advanced exam"
> This exam evaluates the ability of the candidate to use advances AspectJ
> features, like conditianls, execution flows, aspect lifecycles etc.. and
> understand performance issues related
>
> Section 1 : "More pointcuts"
> Covers the usage of additional, more advanced pointcuts :
> - The if() pointcut
> - The handler() pointcut
> - The within and withincode pointcuts
>
> Section 2 : "Advicing constructors"
> - The initialization pointcut
> - The constructor pattern
> - Understand implications of a "before" advice on a constructor
> - Understand implications of an "around" advice on a constructor
>
> Section 3 : "Control flow"
> Covers understanding and usage of control flow conditional pointcuts
> - The control flow
> - The cflow pointcut
> - The cflowbelow pointcut
>
> Section 4 : "Aspect lifecycle"
> Covers the aspect default lifecycle and possible modifications to it
> - The default singleton lifecycle
> - Using perthis and pertarget
> - Using percflow and percflowbelow
>
> Section 5 : "Performance impacts"
> Asserts knowledge about performance impacts of :
> - Conditional pointcuts
> - Different lifecycles
> - Lazy thisJoinPoint
> - Benefits of thisJoinPointStaticPart
>
> Section 6 : "Precedence"
> Covers what gets executed before and what after, among different aspects
> and different advices in the same aspect
> - Precedence between different type of advices (before/after and around)
> - Precedence between same types of advices in the same aspect
> - Precedence between aspects
> - The "declare precedence"
I might put this into the expert exam.  For the advanced level, it's
important to know that precedence exists and that's it.  The precise
way of doing this is arcane and doesn't (in my experience) come up
very often.

>
> Section 7 : "More Intertype Declarations"
> Covers more advanced forms of intertype decalarations
> - Declaring default interface implementation
> - Declaring a different parent, limitations and implications
> - Softening exceptions
> - Declaring errors and warnings
- Differences between @AspectJ @DeclareParents and code style declare parents

>
> Section 8 : "Basic AspectJ internals"
> Covers the public exposed part of the AspectJ API accessible from
> thisJoinPoint and thisJoinPointStaticPart
aspectOf(), hasAspect()

Section 9 : "AspectJ 5"
- Generic matching
- Annotation matching
- Varargs matching

>
> -- End of exam
>
> Exam title : "AspectJ expert exam"
> I need an expert to write this :)
>
> Simone
>
> Simone Gianni wrote:
>> Hi Andy,
>> nice to hear you are interested. I just posted on the Java Black Belt
>> forum about your approval.
>>
>> If I understood correctly how it works, we should first think about exam
>> objectives, that is define what a person that passes this exam must be
>> able to do and what not, choose a number of topics like "Basic
>> understanding of joinpoints" "Understanding advice parameters" and so
>> on, together with a brief explanation of what must be covered by each
>> section, like "This section covers the most common joinpoint types, it's
>> objectives are * Understand and identify call() and execution()
>> joinpoints * Understand and identify get() and set() joinpoints * Be
>> able to use join points composition" .. etc...
>>
>> Any idea?
>>
>> Simone
>>
>> Andy Clement wrote:
>>
>>> Hi Simone,
>>>
>>> I'm sure I can help with this, and find some other volunteers that
>>> will help come up with questions.  So if you want to tell them to
>>> create the template we can look to create some suitable questions.
>>> Just going through bugzilla over the last few years would yield a few
>>> common pitfalls and questions ;)
>>>
>>> cheers,
>>> Andy.
>>>
>>> 2008/8/11 Simone Gianni <simoneg@xxxxxxxxxx <mailto:simoneg@xxxxxxxxxx>>
>>>
>>>     Hi all,
>>>     I'm getting addicted to JavaBlackBelt. It is a site where there
>>>     are some
>>>     exams you can take, earn "knowledge points", and show your friends
>>>     (and
>>>     the world) what a cool programmer you are.
>>>
>>>     Today I noticed that there was no AOP or AspectJ exam, not even
>>>     planned.
>>>     So I asked in the forum, and someone is answering that they'd like to
>>>     have it.
>>>
>>>     Since exams are built by the community (meaning that people write the
>>>     questions, other will vote if they like them, and those who are
>>>     eligible
>>>     find their place in the exam test) it would be nice if someone is
>>>     interested to answer back in the forum, so that the JavaBlackBelt
>>>     administrator will eventually create a draft for the exam, and then
>>>     contribute questions if and when the exam will be created.
>>>
>>>     The java black belt site : http://www.javablackbelt.com/
>>>     The forum entry :
>>>     http://www.javablackbelt.com/forum/posts/list/112.page#469
>>>
>>>     Just to let you know,
>>>     Simone
>>>
>>>     --
>>>     Simone Gianni
>>>     http://www.simonegianni.it/
>>>     CEO Semeru s.r.l.
>>>     Apache Committer
>>>
>>>     _______________________________________________
>>>     aspectj-users mailing list
>>>     aspectj-users@xxxxxxxxxxx <mailto:aspectj-users@xxxxxxxxxxx>
>>>     https://dev.eclipse.org/mailman/listinfo/aspectj-users
>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> aspectj-users mailing list
>>> aspectj-users@xxxxxxxxxxx
>>> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>>>
>>>
>>
>>
>>
>
>
> --
> Simone Gianni
> http://www.simonegianni.it/
> CEO Semeru s.r.l.
> Apache Committer
>
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>


Back to the top