I don't know anything about AOSD, can you explain it succinctly?
Adrian Colyer has made this attempt to explain AOSD without resorting to specialized terminology.
Isn't AOSD/AOP just AspectJ and isn't that just a new programming language?
Why should I develop using aspects?
How should I introduce AOSD into my company?
What are the major commercial aspect frameworks?
Are there any success stories of large projects that have used an aspect-oriented approach?
Three open source projects that are using AOP in a large scale manner are:
Other open source projects using AOP include:
- Jakarta Cactus
- Objectweb Cooperative Open Workflow
- Objectweb Java Open Transaction Manager
- GridSphere portal framework
- MySQL Connector/J
Here is one story that has appeared on the AOSD-discuss [Mailing Lists|mailing list]:
We here at Senselogic.se have been using AOP as the foundation for our CMS/portal products (SiteVision) since the beginning in 2002. We are now one of the top three vendors in this space in Sweden, and have found that AOP is indeed one of the main reasons for our success. Thanks to AOP we have been able to create vast amounts of functionality with a small number of developers using only a fraction of the time that would have been necessary using other methodologies.
There have been a number of case studies posted to the AspectJ users list and to news sites:
- In a huge application for implementing trading and settlement system back office we have deployed aspects and AOP for implementing application level fail-over...
- I built an Java/Swing (read Fat Client) for a Collections Call Center app. This app was deployed to 3000+ users on the desktop...
- also used AspectJ in a project for a large electronics company for processing rows in a data-mart application...
- My group is building a web application framework we're calling the Toolkit and AspectJ is one of the technologies we're using...
There are also other case studies in print such as "Real-world AOP Tool Simplifies OO Development" in the September 2001 issue of Java Report, by Rich Price.
Don't aspects break the encapsulation that is assured by object-oriented and procedural programming?
Yes they do. When coding an aspect, the developer must know the places (Join Points) where it will be used i.e. know the internal details.
However improvements can be made in AOP constructs so as to respect encapsulation.
What are the open areas of research in AOSD?
What is the difference between AOSD (Aspect-Oriented Software Development) and AOP (Aspect-Oriented Programming)?
What are orthogonal concerns? Can aspects be used to encapsulate orthogonal concerns only?
Orthogonal concerns are separated from the base program in that the base program is oblivious to the concern's existance. This means that the concern can be added or removed without affecting the behavior of the base program (modulo the removed concern). An example of this is logging. The addition or removal of a logging aspect does not affect the behavior of the program except to add logging functionality. Therefore the logging concern is orthogonal.
Of course, there are other ways that orthogonal concerns may indirectly affect program behavior. These include larger memory footprint, longer runtime, etc. Nonetheless, these concerns are still considered orthogonal.
In practice, many concerns are non-orthogonal and aspect-oriented programming languages have capabilities to encapsulate them as well.
A detailed description of how to edit can be found on the Help:Editing page.