What is aspect-oriented programming? What is trustworthy software development? How are they related? How do I implement them? Vladimir Safonov has taken these questions and addressed them in a concise, understandable way. He uses both Java and Microsoft.Net as programming platforms, but emphasizes Microsoft.Net and the Aspect.Net framework.
Aspect-oriented programming's approach to modularity is different from object-oriented programming's. Like OOP, AOP separates logic into concerns or modules, but AOP then looks for concerns, such as authentication and transaction logic, that cut across modules—as opposed to the application's core concern or business logic. Trustworthy computing addresses the security, privacy, and reliability issues that an application requires but might not address in its core concern or business logic.
Safonov describes how to combine the AOP paradigm with trustworthy computing requirements to address many business software requirements in a maintainable and functional way. In OOP, concerns such as authentication and transaction logic can be too tightly coupled and result in less-than-desirable cohesion. AOP with trustworthy computing makes a logical separation of cohesive modules that enable easier-to-maintain code and more understandable objects.
AOP is still used mostly in academic circles, but it represents a paradigm shift from OOP, and object-oriented programmers would benefit from acquainting themselves with its practices together with trustworthy computing. AOP lets you weave code fragments into an application according to rules that provide functionality such as security, logging, and synchronization, which cross multiple modules throughout the application. Programmers can centralize these features (aspects) and weave them into application modules to implement the functionality, making for easier implementation and far less spaghetti code.
Safonov is a professor at St. Petersburg University in Russia. He takes great care to assess the key features of both AOP and trustworthy computing as well as the Aspect.Net architecture. He's also the chief architect of the Aspect.Net framework. His book includes a guide for teaching, and a companion website offers sample code and a wealth of information for implementing his ideas.
As a result of reading this book, I've become more adept with this paradigm and finding places to use it. Many have noted OOP’s "issues." AOP with trustworthy computing might address some of them.
Scott Brookhart is a software architect/engineer. Contact him at email@example.com.