-
AOP without the buzzwords: The Ted Neward Challenge (31 messages)
- Posted by: Dion Almaer
- Posted on: May 31 2004 22:59 EDT
Ted Neward gave the AOP panelists at TheServerSide Symposium a challenge. He wanted them to explain what AOP is without using the buzzwords (e.g. cross-cutting, modularize concerns, pointcut, join point, etc). Adrian Colyer took a crack at it. What do you think?
Read AOP without the buzzwords
Jon Tirsen has also written about how AOP is not just de-scatter, de-tangle.Threaded Messages (31)
- AOP without the buzzwords: The Ted Neward Challenge by Markus Zywitza on June 01 2004 10:28 EDT
- AOP without the buzzwords: The Ted Neward Challenge by thoff thoff on June 01 2004 11:03 EDT
- AOP without the buzzwords: The Ted Neward Challenge by Aaron Evans on June 01 2004 12:10 EDT
- AOP without the buzzwords: The Ted Neward Challenge by jeff smith on June 02 2004 14:38 EDT
- Good by murat mergen on December 09 2010 04:55 EST
- RELATE THE UNRELATED by Constantin Gonciulea on June 01 2004 11:29 EDT
- Many concept already exists in OO by Lester Balmaceda on June 01 2004 12:54 EDT
- Main word is obviousness by Renat Zubairov on June 01 2004 12:58 EDT
- Main word is obviousness by Constantin Gonciulea on June 01 2004 13:12 EDT
- How about... by Stephen Colebourne on June 01 2004 13:26 EDT
- How about... by Juozas Baliuka on June 02 2004 02:59 EDT
- AOP without the buzzwords: The Ted Neward Challenge by Peter Swords on June 01 2004 17:49 EDT
- AOP without the buzzwords: The Ted Neward Challenge by thoff thoff on June 01 2004 20:10 EDT
- AOP without the buzzwords: The Ted Neward Challenge by Brian Neal on June 01 2004 23:29 EDT
- AOP without the buzzwords: The Ted Neward Challenge by bob farmer on June 02 2004 01:55 EDT
- AOP without the buzzwords: The Ted Neward Challenge by Tom Gardner on June 02 2004 04:09 EDT
- AOP without the buzzwords: The Ted Neward Challenge by J Bond on June 02 2004 10:12 EDT
-
Of course nobody needs AOP... by Markus Zywitza on June 03 2004 04:45 EDT
-
Of course nobody needs AOP... by J Bond on June 03 2004 07:18 EDT
-
Of course nobody needs AOP... by Juozas Baliuka on June 03 2004 10:35 EDT
- Of course nobody needs AOP... by D Johnson on June 03 2004 10:49 EDT
-
Of course nobody needs AOP... by Juozas Baliuka on June 03 2004 10:35 EDT
-
Of course nobody needs AOP... by J Bond on June 03 2004 07:18 EDT
-
Of course nobody needs AOP... by Markus Zywitza on June 03 2004 04:45 EDT
- J2EE sans buzzwords by Allan Halme on June 02 2004 17:21 EDT
- BUZZWORDS.......Speak bloody english by D Johnson on June 03 2004 04:45 EDT
- BUZZWORDS.......Speak bloody english by Juozas Baliuka on June 03 2004 06:24 EDT
- BUZZWORDS.......Speak bloody english by D Johnson on June 03 2004 04:45 EDT
- AOP without the buzzwords: The Ted Neward Challenge by J Bond on June 03 2004 07:22 EDT
- AOP without the buzzwords: The Ted Neward Challenge by D Johnson on June 03 2004 09:05 EDT
- AOP without the buzzwords: The Ted Neward Challenge by Juozas Baliuka on June 03 2004 11:06 EDT
- AOP without the buzzwords: The Ted Neward Challenge by D Johnson on June 03 2004 09:05 EDT
- AOP without the buzzwords: The Ted Neward Challenge by yasal turk on October 06 2010 13:29 EDT
- sadasdd by asdada asdadad on October 30 2010 23:18 EDT
- thanks by hikaye hikaye on November 10 2010 22:03 EST
- good by hikaye hikaye on November 10 2010 22:06 EST
-
AOP without the buzzwords: The Ted Neward Challenge[ Go to top ]
- Posted by: Markus Zywitza
- Posted on: June 01 2004 10:28 EDT
- in response to Dion Almaer
Well, that isn't too hard...
When OOP models things of the real world, AOP models processes and rules. For example, when you have modeled a class BankAccount, you will most likely want to assure that all clients check certain conditions before they carry out a transaction on an instance of BankAccount.
Now you can either write the checking code into all clients of your class or you can start using nasty design patterns. But the best solution would be to define a rule: Before making a transaction, check this and that.
AOP is nothing but defining rules and who has to comply to them before or after doing a specific action. And the AOP framework makes sure that all your clients comply to those rules without that you have to code it seperately.
Markus -
AOP without the buzzwords: The Ted Neward Challenge[ Go to top ]
- Posted by: thoff thoff
- Posted on: June 01 2004 11:03 EDT
- in response to Markus Zywitza
using nasty design patterns
I guess i don't use the nasty ones, you do?
>AOP is nothing but defining rules and who has to comply
> to them before or after doing a specific action.
Where do actions come from then? The aspects you are
talking about are the actions. They aren't separate.
I think you should just drop AOP from OOP and just
compose programs using aspects directly rather than
maintain the fiction that you are just extending an
existing program structure. -
AOP without the buzzwords: The Ted Neward Challenge[ Go to top ]
- Posted by: Aaron Evans
- Posted on: June 01 2004 12:10 EDT
- in response to Markus Zywitza
I thought AOP was more that you coded to interfaces based on the attributes of objects, so your bank account class would be "Tranactible", "Persistable", or "GUI Displayable" so that the various engines responsible for those aspects could act independently. Or maybe I'm confusing that with the new metadata, .net, and my own wishful thinking.
I don't know about all this bleeding edge stuff though, I'm just a though-poseur who still doesn't get design patterns. -
AOP without the buzzwords: The Ted Neward Challenge[ Go to top ]
- Posted by: jeff smith
- Posted on: June 02 2004 14:38 EDT
- in response to Markus Zywitza
Interesting article and example (Observer pattern). I guess AOP could prevent the 1:N code bloat that accompanies programs with lots of logging code too. -
Good[ Go to top ]
- Posted by: murat mergen
- Posted on: December 09 2010 04:55 EST
- in response to Markus Zywitza
Thank you. Good information.Ver nice post
-
RELATE THE UNRELATED[ Go to top ]
- Posted by: Constantin Gonciulea
- Posted on: June 01 2004 11:29 EDT
- in response to Dion Almaer
I see AOP as a way to relate things which initially are not necessarily related, or don't even exist.
Similar example in math: one defines different concepts, like segment, triangle, rectangle, etc, and their properties are gathered/studied in a separate chapter for each shape. However, the notion of area is defined in a different chapter, where all the previous (and future) shapes are treated. Also, different textbooks will start with different definitions for area (one can start with a 1x1 square to define the unit for area, divide a shape into small rectangles etc., another one can do it differently). There is clearly a benefit in separating this cross-cutting concept, but nothing prevents a report about shapes to provide a formula for the area at the same place where other properties of the shape are shown (this would be similar to an aspect browser).
Software designs are similar to math/scientific presentations after all both are organizing concepts), and a lot of useful paradigms/patterns can be lifted directly from the latter. -
Many concept already exists in OO[ Go to top ]
- Posted by: Lester Balmaceda
- Posted on: June 01 2004 12:54 EDT
- in response to Dion Almaer
I think many of "AOP concepts" already exist in OO, for example, aspects are about SoC (but incorrectly used only for technical concerns), but in OO this is the concept of domain, if you BankAccount of course the "persistent mechanism" is not about banking, so persistence is another "domain", in the same way a Workflow is a domain itself, different (but cross-cut) with Sale Order domain.
The major problem is not the concept behind OO but the current implemented solutions, that in many cases breake OO principles. I see AOP ideas interesting but I'm concerning this is about fixing the languages and frameworks with new "brand", the same for "service-oriented architecture", what are this guys are talking about, OO and component development has been about message passing, cohesion and decoupling always. The invocation method (API, SOAP or whatever) is only the way to transport the messages between objects.
Another thing is about patterns, I think patterns are the key for continuing improvement of software quality, of course there are many stupids patterns around there, but the idea of patterns is really good, so I'm sure you can found stupid designed OO software too. -
Main word is obviousness[ Go to top ]
- Posted by: Renat Zubairov
- Posted on: June 01 2004 12:58 EDT
- in response to Dion Almaer
Copied from www.manageability.org:
Robert Filman has a boat load of interesting papers about Aspect Oriented Programming (AOP). Well he's got a pretty simple and general definition in one of his papers.
AOP is the ability to assert quantified statements over programs written by oblivious programmers.
... -
Main word is obviousness[ Go to top ]
- Posted by: Constantin Gonciulea
- Posted on: June 01 2004 13:12 EDT
- in response to Renat Zubairov
AOP is the ability to assert quantified statements over programs written by oblivious programmers....
Well said. The programmers are oblivious of the fact that their programs can be related by a common quantified statement. -
How about...[ Go to top ]
- Posted by: Stephen Colebourne
- Posted on: June 01 2004 13:26 EDT
- in response to Dion Almaer
"AOP allows you to add a try catch finally block to any method after the method was originally written":
try {
// doSomethingPre();
// call original method
// doSomethingPostSuccess()
} catch {
// doSomethingPostFailure()
} finally {
// doSomethingFinally()
}
To make life even simpler, you can define a normal Java interface and integrate that using AOP:
public interface AOPMethod {
doSomethingPre();
doSomethingPostSuccess();
doSomethingPostFailure();
doSomethingFinally();
}
Using the interface, virtually all the AOP buzzwords disappear ;-) And people start to understand AOP (we implemented AOP at my company using an interface like this, without using an AOP framework) -
How about...[ Go to top ]
- Posted by: Juozas Baliuka
- Posted on: June 02 2004 02:59 EDT
- in response to Stephen Colebourne
"AOP allows you to add a try catch finally block to any method after the method was originally written":try { // doSomethingPre(); // call original method // doSomethingPostSuccess()} catch { // doSomethingPostFailure()} finally { // doSomethingFinally()}To make life even simpler, you can define a normal Java interface and integrate that using AOP:public interface AOPMethod { doSomethingPre(); doSomethingPostSuccess(); doSomethingPostFailure(); doSomethingFinally();}Using the interface, virtually all the AOP buzzwords disappear ;-) And people start to understand AOP (we implemented AOP at my company using an interface like this, without using an AOP framework)
I think you are talking about design patterns. There is no problems to use AOP principes without AOP language and AOP framework just helps to do it. I have used OOP without OOP language, it is possible to write procedures using "goto/jump" too ( procedure becomes a design pattern in this code ). AOP just makes things more clear and there is nothing bad to think about it as about design pattern too. A lot of people use plain C and have no problems with design. -
AOP without the buzzwords: The Ted Neward Challenge[ Go to top ]
- Posted by: Peter Swords
- Posted on: June 01 2004 17:49 EDT
- in response to Dion Almaer
OOP is to programming what essentialism is to philosophy - the belief that everything has a true essence; to distinguish between essential qualities and other qualities, an essential quality is one where the object would no longer be of the same type if the quality was removed (cf. the wikipedia definition of essentialism). Our (somewhat arbitrary, or at least context-dependent) decisions as to what is essential to a class perforce reduces other aspects to non-essentials. When we perceive a regularity across the non-essentials of multiple classes we can either a) reorganise our class definitions to incorporate the regularity as an essential (attribute or behaviour), inevitably consigning some existing essentials to oblivion or b) provide an alternative classification that co-exists with the existing one. AOP allows us to classify certain behaviours without abandoning others that we have heretofore considered essential. -
AOP without the buzzwords: The Ted Neward Challenge[ Go to top ]
- Posted by: thoff thoff
- Posted on: June 01 2004 20:10 EDT
- in response to Peter Swords
the belief that everything has a true essence
No, it is saying there is a namable abstraction to solve
a particular software issue in a particular context. There
isn't anything deeper than that or more general than that.
Abstractions and implementations
are composable in many different ways. AOP is one
such way. It's not the only way. I don't even know
it's the best way when you have source code. -
AOP without the buzzwords: The Ted Neward Challenge[ Go to top ]
- Posted by: Brian Neal
- Posted on: June 01 2004 23:29 EDT
- in response to Dion Almaer
...Ted Neward gave the AOP panelists at TheServerSide Symposium a challenge. He wanted them to explain what AOP is without using the buzzwords (e.g. cross-cutting, modularize concerns, pointcut, join point, etc)...
Hmmm..."Patching the binary"?
:)
Brian Neal
BEA Systems, Inc. -
AOP without the buzzwords: The Ted Neward Challenge[ Go to top ]
- Posted by: bob farmer
- Posted on: June 02 2004 01:55 EDT
- in response to Brian Neal
"Patching the binary" is good. "Bullsh*t injection" maybe, freely after Fowlers famous other injection thingy. Or "Hey, I fucked up, I'm gonna inject me some of that crosscutting stuff and hope it'll fix it". -
AOP without the buzzwords: The Ted Neward Challenge[ Go to top ]
- Posted by: Tom Gardner
- Posted on: June 02 2004 04:09 EDT
- in response to Brian Neal
Hmmm..."Patching the binary"? :)
That's not funny...
...but it is probably an accurate summary of how it will be misused :(
My pessimism is based on some of the abuses of OO and non-OO code that I've seen. (I use the word "code" advisedly). Optimistically, I suppose that means that I don't think AOP will make anything any worse :) -
AOP without the buzzwords: The Ted Neward Challenge[ Go to top ]
- Posted by: J Bond
- Posted on: June 02 2004 10:12 EDT
- in response to Brian Neal
...Ted Neward gave the AOP panelists at TheServerSide Symposium a challenge. He wanted them to explain what AOP is without using the buzzwords (e.g. cross-cutting, modularize concerns, pointcut, join point, etc)...Hmmm..."Patching the binary"?:)Brian NealBEA Systems, Inc.
Well said. or Bull Sh*t injection as another poster said!
I still believe a proper design will solve a lot of problems. -
Of course nobody needs AOP...[ Go to top ]
- Posted by: Markus Zywitza
- Posted on: June 03 2004 04:45 EDT
- in response to J Bond
I still believe a proper design will solve a lot of problems.
I guess that's somehow like what Stroustrup might have been told when he came up with a "C with objects":
"I still believe a proper design will solve a lot of problems. There is nothing that cannot be realized with function and void pointers if you do it right..." ;-)
Of course almost everything can be implemented using clever Design Patterns. But is it worth the effort? I don't mean using AOP for fixing code that is poorly designed, as comments like "Patching the binary" or "B*llsh*t Injection" imply, but instead using AOP as an integral part of software design.
You can of course stick to what you know and ignore everything else. If you're fine with a 1000-pages catalog of design patterns, that's ok, though it somehow remembers me of those guys that only used "The Black Art of C" and refused to learn modeling with objects...
-Markus -
Of course nobody needs AOP...[ Go to top ]
- Posted by: J Bond
- Posted on: June 03 2004 07:18 EDT
- in response to Markus Zywitza
If you're fine with a 1000-pages catalog of design patterns, that's ok, though it somehow remembers me of those guys that only used "The Black Art of C" and refused to learn modeling with objects... -Markus
So far, AOP has not made any compelling points to adopt it. Agreed, I am not an AOP expert. I would be happy to learn something that really makes sense to use it.
But so far, AOP has not made any sense (at least to me!). May be one day, it will make sense, but I have my own doubts about AOP concept's ability to make in roads the way OOP did.
Call it "The Black Art of Java" or anything. But I will use AOP only if it makes any sense to me :0) -
Of course nobody needs AOP...[ Go to top ]
- Posted by: Juozas Baliuka
- Posted on: June 03 2004 10:35 EDT
- in response to J Bond
But so far, AOP has not made any sense (at least to me!).
Very possible you use AOP, but do not know you use it :). If you use "Proxy","Decorator", "Interceptor" or "Filter" design pattren and code generation then it is almost the the same as AOP does in practice, It just helps to do the same as you used before to reduce code duplication. -
Of course nobody needs AOP...[ Go to top ]
- Posted by: D Johnson
- Posted on: June 03 2004 10:49 EDT
- in response to Juozas Baliuka
As far as I can see the main reason that there is code duplication in projects is because the timelines are so tight that things are just done and not refactored enough to extract the duplications.
All those times you hear 'just get it working and we will come back to it at a later stage and refactor out any commonalities'...except that time never comes as who has ever heard of a project having time at the end or the middle or any time for that matter to refactor anything.
Good software takes time...but a project plan in the mix and the quality will drop.
So after reading what I've wrote for a change....if AOP will give you this from the beginning then maybe it has some merit!? -
J2EE sans buzzwords[ Go to top ]
- Posted by: Allan Halme
- Posted on: June 02 2004 17:21 EDT
- in response to Dion Almaer
What about J2EE without the buzzwords? Or, how would you describe J2EE to your (proverbial) mother-in-law? -
BUZZWORDS.......Speak bloody english[ Go to top ]
- Posted by: D Johnson
- Posted on: June 03 2004 04:45 EDT
- in response to Allan Halme
So how about getting rid of the buzzwords altogether. They are unnecessary, hard to understand and only serve to complicate what could be a simple explanation of some systems functionality.
Buzzwords while useful for sales/marketing types to justify and high cost of the software and baffle the client into thinking they are getting something fantastic, should have no place in normal language.
Everything can be explained in simpler terms, and it doesnt mean that you are not intelligent if you use simle and straightforward language, only it makes you look like you are trying to be intelligent by throwing useless 'buzzwords' and phrases around the place.
I love java and technology in general and am proud of what I do but it embarrases me when you hear such sh*t as (e.g. cross-cutting, modularize concerns, pointcut, join point) over the watercooler in the kitchen.
These words were invented by people who are trying to make themselves out to be better/more intelligent than the rest of us.
TO complicate something id far easier than to simplify it down so that everyone can understand, discuss and use it. Getrid of the pretentiousness and just develop. -
BUZZWORDS.......Speak bloody english[ Go to top ]
- Posted by: Juozas Baliuka
- Posted on: June 03 2004 06:24 EDT
- in response to D Johnson
I do not think AOP terms are just buzzwords,
they are well defined like OOP terms, it is more about computer science, but if is very good if you can explain it in "popular" terms, I like simple and clear things too. As I understand buzzword is something "undefined" invented to confuse people and to sell technology as some kind of magic. -
AOP without the buzzwords: The Ted Neward Challenge[ Go to top ]
- Posted by: J Bond
- Posted on: June 03 2004 07:22 EDT
- in response to Dion Almaer
The problem is not buzz words. After all every profession got its own buzzwords.
But the problem is, despite my interest to learn AOP, b'cos so many people are crying that AOP is the next best thing after sliced bread or next best invention after wheel, the coolest killer technology etc, I was struggling to make any sense out of it.
Call me a stupid or anything you like, but still AOP does not make any sense to use it! -
AOP without the buzzwords: The Ted Neward Challenge[ Go to top ]
- Posted by: D Johnson
- Posted on: June 03 2004 09:05 EDT
- in response to J Bond
Agreed. The days of just adopting a technology because it's 'cool' to do so are gone.
A technology has to have a clear purpose that will compliment something already in existence or improve on some deficiency in whats out there at the moment.
As far as I can see AOP is in this category....'next best thing'...well explain it in real terms, show us where and how it will improve on what we've got and then maybe it will get adopted...if it is good enough and makes sense. -
AOP without the buzzwords: The Ted Neward Challenge[ Go to top ]
- Posted by: Juozas Baliuka
- Posted on: June 03 2004 11:06 EDT
- in response to D Johnson
As far as I can see AOP is in this category....'next best thing'...well explain it in real terms, show us where and how it will improve on what we've got and then maybe it will get adopted...if it is good enough and makes sense.
It is possible to explain it in very trivial way, AOP just reduces code duplication, you can do the same with your favorite design patterns, AOP just helps to do it. It is possible to explain it by analogy and by example:
void doSomethig() throws SomethingWrongException {
try{
Transaction tx = lookupTransaction();
Resource resource = lookupResource();
try{
Query query = resource.getQuery(QUERY_STRING);
try{
resource.removeAll(query.execute());
tx.commit();
}finally{
query.close();
}
}cath(Exception e){
tx.rollback();
throw e;
}finally{
resource.close();
}
}cath(Exception e){
throw new SomethingWrongException(e);
}
}
Ugly code to do trivial things, is not it ? It will be more ugly if I will implement a few hundred this kind of methods in some application
( realistic project, is not it ? ).
AOP must help to write it this way:
void justDoIt() {
//probably it is not a very good idea
// to retrieve something for remove :)
remove(execute(QUERY_STRING));
}
You can do it without any clever framework or programming language, but AOP must help to do it. -
AOP without the buzzwords: The Ted Neward Challenge[ Go to top ]
- Posted by: yasal turk
- Posted on: October 06 2010 13:29 EDT
- in response to Dion Almaer
really very useful information. thank you. dizi izle I like your site. porno izle
-
sadasdd[ Go to top ]
- Posted by: asdada asdadad
- Posted on: October 30 2010 23:18 EDT
- in response to Dion Almaer
When you are replying and click "QUOTE ORIGINAL MESSAGE", the text of the original message appears in a blockquote. porno siki? To add a hyperlink, type and highlight the copy you want to link, and click on the chain icon. Type in the URL, including the prefix, e.g. http:// and click "INSERT". To remove a link, highlight it and click on the broken chain icon. porno izle > No spam, which includes blatant, out of context product marketing (NOTE: This is different from someone talking about a product where it is in context with the thread.) > No cross posting > No obvious flame bait
-
thanks[ Go to top ]
- Posted by: hikaye hikaye
- Posted on: November 10 2010 22:03 EST
- in response to asdada asdadad
I thought AOP was more that you coded to interfaces based on the attributes of objects, so your bank account class would be "Tranactible", "Persistable", or "GUI Displayable" so that <a href="http://www.askimiza.com" target="_blank">güzel sözler</a> the various engines responsible for those aspects could act independently. Or maybe I'm confusing that with the new metadata, .net, and my own wishful thinking.
I don't know about <a href="http://www.bilgisayarhane.com" target="_blank">bilgisayar teknik servis</a> all this bleeding edge stuff though, I'm just a though-poseur who still doesn't get design patterns. -
good[ Go to top ]
- Posted by: hikaye hikaye
- Posted on: November 10 2010 22:06 EST
- in response to Dion Almaer
Thank you. Good information.Ver nice post <a href="http://www.bilgisayarhane.com" target="_blank">bilgisayar teknik servis</a></p>