did-you-know? rent-now

Amazon no longer offers textbook rentals. We do!

did-you-know? rent-now

Amazon no longer offers textbook rentals. We do!

We're the #1 textbook rental company. Let us show you why.

9780321219763

Aspect-Oriented Software Development

by ; ; ;
  • ISBN13:

    9780321219763

  • ISBN10:

    0321219767

  • Edition: 1st
  • Format: Paperback
  • Copyright: 2004-10-06
  • Publisher: Addison-Wesley Professional
  • Purchase Benefits
  • Free Shipping Icon Free Shipping On Orders Over $35!
    Your order must be $35 or more to qualify for free economy shipping. Bulk sales, PO's, Marketplace items, eBooks and apparel do not qualify for this offer.
  • eCampus.com Logo Get Rewarded for Ordering Your Textbooks! Enroll Now
List Price: $64.99

Summary

The definitive reference on the emerging and dynamic field of Aspect-Oriented Software Development (AOSD).

Author Biography

Aspect-Oriented Software Development About the Editors

Robert E. Filman is a senior scientist at the Research Institute for Advanced Computer Science at NASA Ames Research Center, working on frameworks for distributed applications. He has worked and published in the areas of software engineering, distributed computing, network security, programming languages, artificial intelligence, algorithms, and human-machine interface. He received his Ph.D. in Computer Science in 1979 from Stanford University.

Tzilla Elrad is a research professor in the Department of Computer Science at Illinois Institute of Technology, where she heads the Concurrent Software Systems research group. She received her B.S. in mathematics and physics from the Hebrew University and her M.S. and Ph.D. in Computer Science from Syracuse University, NY and the Technion, Israel, respectively. Her research interests include concurrent programming languages design, adaptive software systems development, and formal reasoning.

Siobhán Clarke is a lecturer in the Department of Computer Science at Trinity College, Dublin. Her research interests include aspect-oriented software development, context-aware computing and programming models for mobile, sentient, context-aware systems. She received her B.S. and Ph.D. degrees from Dublin City University. Prior to her career in research, she worked as a software engineer with IBM for 11 years.

Mehmet Aks¸it holds an M.S. from the Eindhoven University of Technology and a Ph.D. from the University of Twente. He is a professor in the Department of Computer Science, University of Twente, and he is also affiliated with the Centre for Telematics and Information Technology. He (and his group) have developed the composition filters aspect-oriented programming technique, synthesis-based architecture/software design, and techniques to synthesize architectures from solution domains for creating stable software systems, have applied fuzzy-logic to software design, and have created design formalisms such as Design Algebra for balancing various quality factors at different stages of software development.


© Copyright Pearson Education. All rights reserved.

Table of Contents

About the Editors xxv
About the Contributors xxvii
Preface xxxix
Introduction
1(8)
Book Organization
2(1)
Common Terminology
3(3)
Historical Context
6(3)
Part 1 Languages and Foundations
9(362)
Traditional Engineering
10(1)
Software Development Is Engineering
11(1)
The Chapters
12(6)
Dimensions of Aspect Language Design
18(2)
References
20(1)
Aspect-Oriented Programming Is Quantification and Obliviousness
21(16)
Robert E. Filman
Daniel P. Friedman
Introduction
21(1)
Local and Unitary Statements
22(2)
Obliviousness
24(1)
Quantification
24(3)
Static Quantification
25(1)
Dynamic Quantification
26(1)
Implementation Issues
27(1)
Aspect-Oriented Languages
28(1)
Related Work
29(1)
Closing Remarks
29(8)
Acknowledgments
31(1)
References
31(6)
N Degrees of Separation: Multi-Dimensional Separation of Concerns
37(26)
Peri Tarr
Harold Ossher
Stanley M. Sutton, Jr.
William Harrison
Introduction
37(2)
Motivation
39(5)
The First Go-Round
39(1)
Evolving the SEE: An Environmental Hazard
40(2)
The Postmortem
42(1)
Breaking the Tyranny
43(1)
Multi-Dimensional Separation of Concerns
44(9)
A Model of Conventional Software
44(2)
Multi-Dimensional Decomposition: Hyperslices
46(2)
Composing Hyperslices Using Hypermodules
48(3)
Using the Model
51(2)
Instantiation
53(2)
Mapping to Units and Modules
54(1)
Representation of Hyperslices
55(1)
Support for Composition
55(1)
Related Work
55(3)
Conclusions and Future Work
58(5)
Acknowledgments
59(1)
References
59(4)
Principles and Design Rationale of Composition Filters
63(34)
Lodewijk Bergmans
Mehmet Aksit
Introduction
63(2)
Background and Aims of the Composition Filters Model: Finding the Right Abstractions
64(1)
Example: Social Security Services
65(2)
An Overview of the Application
65(1)
The Software System
66(1)
Intra-Object Crosscutting with Composition Filters
67(10)
Concern Instance = Object + Filters
68(1)
Evolution Step 1: Protecting Documents
69(1)
A Composition Filters Solution
70(2)
Message Processing
72(5)
Intra-Object Crosscutting
77(1)
Inter-Object Crosscutting
77(8)
Evolution Step 2: Adding Workflow Management
78(4)
Evolution Step 3: Adding Logging
82(3)
Evaluation
85(5)
Implementations of the CF Model
85(2)
Inlining Composition Filters
87(3)
Conclusion
90(7)
References
92(5)
AOP: A Historical Perspective (What's in a Name?)
97(26)
Cristina Videira Lopes
A Matter of Style
97(1)
Research Trends in the Early '90s
98(6)
Formulation of the Problem
99(1)
Analysis of the Problem and Specialized Solutions
100(1)
Identifying Concerns That Can Be Separated
101(1)
Separation Techniques
101(3)
The Birth of AOP at PARC
104(9)
RG
105(1)
AML
106(1)
ETCML
106(1)
DJ
107(2)
DJava
109(1)
AspectJ
110(3)
Building Communities
113(1)
Researchers
113(1)
Practitioners
114(1)
Looking Back
114(2)
The Essence of AOP
116(1)
Future Challenges
117(6)
Acknowledgments
118(1)
References
118(5)
AspectJ
123(22)
Adrian Colyer
AspectJ Goals
123(3)
General Purpose
123(1)
Direct Support in the Programming Language
124(1)
Easy to Learn
125(1)
Incremental Adoption
125(1)
Easy to Integrate
125(1)
Suitable for Real Applications
126(1)
The AspectJ Language
126(9)
Join Points
126(1)
Pointcuts
127(3)
Advice
130(2)
Inter-Type Declarations
132(1)
Aspects
133(2)
Further Reading
135(1)
AspectJ Tools
135(7)
History
135(1)
The Compiler
135(2)
IDE Support for AspectJ
137(2)
Generating Documentation with ajdoc
139(3)
Ant Tasks
142(1)
Future Directions
142(1)
Concluding Remarks
142(3)
Acknowledgments
143(1)
References
143(2)
Coupling Aspect-Oriented and Adaptive Programming
145(20)
Karl Lieberherr
David H. Lorenz
Introduction
145(1)
Concern-Shy Programming
145(1)
Structure-Shy Programming
146(1)
Shyness as a Metaphor for Adaptive Behavior
146(4)
How Shyness Relates to AP
148(1)
How Shyness Relates to AOP
148(1)
Law of Demeter
149(1)
Law of Demeter for Concerns
149(1)
Reflective Adaptive Programming with DJ
150(7)
Implementation Highlights
155(2)
Aspectual Adaptive Programming with DAJ
157(2)
Strategy Graph Intersection
157(1)
Visitor Classes
158(1)
Related Work
159(1)
Conclusion
160(5)
References
161(4)
Untangling Crosscutting Models with Caesar
165(36)
Mira Mezini
Klaus Ostermann
Introduction
166(7)
Requirements on Language Support
170(2)
Contribution and Structure of the Chapter
172(1)
Join Point Interception
173(4)
Lack of Support for Multi-Abstraction Aspects
175(1)
Lack of Support for Sophisticated Mapping
176(1)
Lack of Support for Reusable Aspect Bindings
177(1)
Lack of Support for Aspectual Polymorphism
177(1)
The Caesar Model
177(13)
Aspect Collaboration Interfaces
179(1)
Aspect Implementations
180(1)
Aspect Bindings
181(1)
Wrapper Recycling
181(2)
Most Specific Wrappers
183(1)
Pointcuts and Advices
184(1)
Weavelets and Deployment
185(4)
Virtual Classes and Static Typing
189(1)
Evaluation
190(3)
Problems Revisited
190(2)
Explicit Versus Implicit Aspect Instantiation/Deployment
192(1)
Implementation
193(1)
Related Work
193(3)
Open Classes
193(2)
Adaptive Plug and Play Components
195(1)
Collaboration-Based Decomposition
195(1)
Implementation of Dynamic Deployment
196(1)
Summary and Future Work
196(5)
References
197(4)
Trace-Based Aspects
201(18)
Remi Douence
Pascal Fradet
Mario Sudholt
Introduction
201(2)
Characteristics of Trace-Based Aspects
203(2)
Observable Execution Trace
203(1)
Aspect Language
203(1)
Weaving
204(1)
Expressive Aspects and Equational Reasoning
205(1)
Detection and Resolution of Aspect Interactions
206(3)
Aspect Interactions
208(1)
Support for Conflict Resolution
209(1)
Static Weaving of Safety Properties
209(4)
Example
210(1)
Weaving Phases
211(2)
Just-In-Time Weaving
213(1)
Conclusion
213(6)
References
215(4)
Using Mixin Technology to Improve Modularity
219(24)
Richard Cardone
Calvin Lin
Introduction
219(2)
Mixin Technology
221(3)
Mixins
221(2)
Stepwise Refinement
223(1)
Mixin Layers
223(1)
Fidget Design
224(6)
Architecture
225(1)
Components
226(1)
The Sibling Pattern
227(2)
JL's Implicit This Type Parameter
229(1)
Using Fidget
230(2)
Mixin Programming Support
232(1)
Constructor Propagation
232(1)
Deep Conformance
232(1)
Future Work
233(4)
Semantic Checking
233(1)
Class Hierarchy Optimization
233(1)
Mixins as Types
234(1)
Implementing Parametric Polymorphism
235(2)
Related Work
237(1)
Conclusion
238(5)
Acknowledgments
238(1)
References
238(5)
Separating Concerns with First-Class Namespaces
243(18)
Oscar Nierstrasz
Franz Achermann
Introduction
243(2)
Piccola
245(5)
Piccola Layers
246(2)
Generic Wrappers
248(2)
Example: Mixin Layer Composition
250(4)
Mixin Layers in Piccola
251(1)
Software Evolution with Mixin Layers
252(2)
Specifying Compositional Styles with Forms
254(2)
Conclusion
256(5)
Acknowledgments
256(1)
References
257(4)
Supporting AOP Using Reflection
261(22)
Noury Bouraqadi
Thomas Ledoux
What Is Reflection?
262(7)
Base-Level Versus Meta-Level
262(1)
Meta-Objects and Their Protocols
263(1)
Meta-Link and Meta-Object Cooperation
264(1)
Example of a Reflective Programming Language and its MOP
265(4)
AOP Using Reflection
269(6)
From Reflection to AOP
269(1)
Example of an Application with Multiple Aspects
270(1)
Separating Aspects
271(2)
Weaving Aspects
273(2)
Discussion
275(3)
Flexibility
275(1)
Performance
276(1)
Complexity
277(1)
Tooling
277(1)
Reuse
277(1)
Conclusion
278(5)
References
278(5)
Inserting Ilities by Controlling Communications
283(14)
Robert E. Filman
Stuart Barrett
Diana D. Lee
Ted Linden
Achieving Ilities by Controlling Communication
284(1)
Object Infrastructure Framework
285(6)
Injectors
286(1)
Annotations
287(2)
Pragma
289(2)
Applied Ilities
291(2)
Reliability
291(1)
Quality of Service
291(1)
Manageability
292(1)
Security
292(1)
Related Work
293(1)
Conclusion
294(3)
References
294(3)
Using Bytecode Transformation to Integrate New Features
297(14)
Geoff Cohen
Aspects and Transformation
298(1)
An Overview of Bytecode Transformation
299(2)
Static Transformation
299(1)
Dynamic Transformation
300(1)
Programming Transformation
301(3)
Selection
302(1)
Use in AOSD
302(2)
Lessons Learned
304(4)
Interface Design
304(1)
Safety, Security, and Correctness
305(1)
Multiple Namespaces
306(1)
Reflection
307(1)
Addressing Transformed Functionality
307(1)
Debugging Transformed Code
308(1)
Conclusion
308(3)
References
308(3)
JMangler---A Powerful Back-End for Aspect-Oriented Programming
311(32)
Gunter Kniesel
Pascal Costanza
Michael Austermann
Introduction
311(3)
Challenges for Aspect Weaving
312(1)
Promises of Load-Time Analysis and Transformation (LAT)
313(1)
Aspect-Oriented LAT with JMangler
313(1)
Generic Interception
314(3)
Java's Class Loader Architecture
314(2)
Class-Loader Dependent Interception
316(1)
JVM-Dependent Interception
316(1)
Platform-Dependent Interception
316(1)
Portable Generic Interception
316(1)
Open Architecture
317(1)
Support for Non-Local Transformations
318(2)
The BCEL Weaver
320(6)
Transformations and Aspects
320(1)
Transformers
321(1)
Use of Transformers
321(1)
Unanticipated Composition of Transformers
321(1)
The Transformation Process
322(1)
Example
323(1)
Creation of Interface Transformers
324(2)
Creation of Code Transformers
326(1)
Usage Scenarios
326(4)
Load-Time Weaving with JMangler
326(1)
Run-Time Weaving with JMangler
327(1)
Advanced Features
327(3)
Related Work
330(1)
Conclusions and Future Work
330(13)
Acknowledgments
331(1)
Appendix 15.A Simple Code Coverage
332(3)
Implementation of the CodeCoverTransformer
335(2)
Activation
337(2)
References
339(4)
Aspect-Oriented Software Development with Java Aspect Components
343(28)
Renaud Pawlak
Lionel Seinturier
Laurence Duchien
Laurent Martelli
Fabrice Legond-Aubry
Gerard Florin
JAC Framework and Programming Model
343(1)
Programming Model
344(1)
Design Notation
344(10)
Aspect Component Classes
345(1)
Pointcut Definition
346(4)
A First Simple Example
350(1)
Extended Design Notation for Distribution
351(3)
JAC Architecture for Distribution
354(6)
Aspects Deployment and Distribution
354(1)
Distributed Application Example
355(5)
Implementation and Performance Issues for JAC
360(2)
Implementation of JAC
360(1)
Performance Measurements
361(1)
Related Technologies and Tools
362(4)
Aspect-Oriented Languages and Tools
362(2)
Comparison with Design Notations for Aspects
364(2)
Conclusion
366(5)
References
366(5)
Part 2 Software Engineering
371(256)
The Chapters
373(5)
References
378(1)
Engineering Aspect-Oriented Systems
379(28)
Gordon S. Blair
Lynne Blair
Awais Rashid
Ana Moreira
Joao Araujo
Ruzanna Chitchyan
Requirements Engineering
380(4)
Specification
384(3)
Design
387(3)
Implementation
390(2)
Evolution
392(4)
Aspect Interaction
396(1)
Conclusion
397(10)
References
398(9)
Aspect-Orientation in the Software Lifecycle: Fact and Fiction
407(18)
Pedro J. Clemente
Juan Hernandez
Jose Luis Herrero
Juan Manuel Murillo
Fernando Sanchez
Introduction
407(2)
Aspects at Implementation Level
409(5)
Motivating Example
409(3)
AOP: Fact and Fiction
412(2)
Aspects at Design Level
414(7)
Aspects in UML
414(3)
Aspects from the Software Architecture Perspective
417(4)
Conclusion
421(4)
Acknowledgments
422(1)
References
422(3)
Generic Aspect-Oriented Design with Theme/UML
425(34)
Siobhan Clarke
Robert J. Walker
Introduction
425(2)
Motivation
427(1)
Crosscutting Themes: The Model
428(4)
Specifying Templates
428(1)
Specifying Crosscutting Behavior
429(1)
Composition Binding Specification
430(1)
Composition Output
431(1)
Aspects as Themes: Examples
432(8)
Library Base Design
433(1)
Example 1: Synchronization Aspect
433(3)
Example 2: Observer Aspect
436(4)
Map to Hyper/J
440(5)
Hyper/J Programming Elements
440(2)
Observer in Hyper/J
442(3)
Map to AspectJ
445(7)
AspectJ Programming Elements
445(1)
Algorithm for Mapping to AspectJ
445(5)
Observer in AspectJ
450(2)
Mapping to Programming Models
452(1)
Related Work
453(2)
Conclusion
455(4)
References
456(3)
Expressing Aspects Using UML Behavioral and Structural Diagrams
459(20)
Tzilla Elrad
Omar Aldawud
Atef Bader
Introduction
459(2)
Concepts, Notation, and the Modeling Language
461(4)
Aspect-Oriented Programming
461(1)
The Unified Modeling Language (UML)
461(4)
The Process Prescribed by Our Methodology
465(8)
AO Modeling Steps
465(1)
The Concurrent Bounded Buffer Problem
465(1)
Analysis and Design
466(3)
Structural Description Using Class Diagrams
469(1)
Modeling Crosscutting Concerns (Steps 6-8)
470(3)
Realizing the Benefits of Our Methodology
473(3)
Implicit Weaving
473(1)
Loose Coupling
473(1)
Extensibility
474(1)
Traceability
475(1)
Case Tools Support for Our Methodology
475(1)
Automatic Code Generation and Round-Trip Development
475(1)
Conclusion
476(3)
Acknowledgments
476(1)
References
476(3)
Concern Modeling for Aspect-Oriented Software Development
479(28)
Stanley M. Sutton Jr.
Isabelle Rouvellou
Introduction
479(1)
What Is a Concern?
480(1)
A View of Concerns
481(1)
Why Do We Need Concern Modeling?
482(3)
Specification and Analysis of Concerns Across the Development Lifecycle and Artifacts
482(1)
Enhancement of Traditional Development Tasks
483(1)
Support of AOSD
484(1)
Concern Modeling as a First-Class Undertaking
485(3)
Requirements for a Concern-Modeling Schema
485(2)
Process Considerations
487(1)
Cosmos: A Concern-Space Modeling Schema
488(2)
A Concern-Model Example
490(4)
Related Work
494(4)
Traditional (Non-Aspect Oriented) Modeling
494(2)
Aspect-Oriented Modeling
496(2)
Additional Discussion
498(2)
Formalization of the Notion of ``Concern''
498(2)
Nature of the Contribution to AOSD
500(1)
Conclusion
500(7)
Acknowledgments
501(1)
References
502(5)
Design Recommendations for Concern Elaboration Tools
507(24)
Gail C. Murphy
William G. Griswold
Martin P. Robillard
Jan Hannemann
Wesley Leong
The Tools Studied
509(5)
AspectBrowser
509(2)
AMT
511(1)
FEAT
511(3)
Study Format
514(2)
The Jex Case
514(1)
The AMT Case
515(1)
The AspectBrowser Case
515(1)
Data
516(5)
Strategies Used
516(3)
Concern Code Identified
519(2)
Results
521(4)
Tool Design Recommendations
521(1)
Concern Characterization
522(2)
Study Validity
524(1)
Related Work
525(2)
Studies About Program Change Tasks
525(1)
Feature Location Approaches
526(1)
Impact Analysis Approaches
527(1)
Conclusion
527(4)
Acknowledgments
528(1)
References
528(3)
An Initial Assessment of Aspect-Oriented Programming
531(26)
Robert J. Walker
Elisa L. A. Baniassad
Gail C. Murphy
AspectJ
533(2)
Experiments
535(10)
General Format
536(1)
Experiment 1: Ease of Debugging
537(1)
Format
537(1)
Results
538(3)
Experiment 2: Ease of Change
541(4)
Insights from Combined Analysis
545(3)
Aspect-Core Interface Matters
545(2)
Aspects May Alter Task Strategies
547(1)
Experimental Critique
548(1)
Related Work
549(2)
Summary
551(6)
Acknowledgments
552(1)
Appendix 23.A
552(2)
References
554(3)
Aspect-Oriented Dependency Management
557(28)
Martin E. Nordberg III
Dependency Management Principles
557(4)
Dependencies
558(1)
Dependency Rigidity
558(1)
Principles
559(2)
Indirection as a Generalized Principle: From Pointers to Design Patterns and Beyond
561(3)
More Than Pointers
561(1)
Object-Oriented Indirection
561(1)
Design Patterns and Indirection
562(1)
Aspect-Oriented Indirection
563(1)
Aspect-Oriented Alternatives to Design Patterns
564(14)
Visitor
564(2)
Observer
566(6)
Extension Object
572(2)
Virtual Construction
574(4)
Guidelines for Aspect-Oriented Dependency Management
578(2)
Object-Oriented Indirection
578(1)
Aspect-Oriented Indirection
579(1)
Combined Object- and Aspect-Oriented Indirection
579(1)
Modeling Benefits from Aspect-Oriented Dependency Management
580(5)
References
583(2)
Developing Software Components with Aspects: Some Issues and Experiences
585(20)
John Grundy
John Hosking
Introduction
585(1)
Motivation
586(3)
Our Approach
589(1)
Component Specification and Design with Aspects
590(2)
Component Implementation with Aspects
592(2)
Using Aspects at Runtime
594(2)
Related Work
596(3)
Evaluation
599(1)
Future Research Directions
600(1)
Conclusion
601(4)
References
601(4)
Smartweaver: A Knowledge-Driven Approach for Aspect Composition
605(22)
J. Andres Diaz Pace
Marcelo R. Campo
Federico U. Trilnik
Knowledge-Driven Weaving
606(4)
The Smartbooks Documentation Method
607(1)
Programming Tasks in Smartbooks
608(1)
The Smartbooks Engine
609(1)
A Workflow Application Example
610(2)
The Aspect-Moderator Framework
611(1)
Applying Smartweaver: The Developer's Viewpoint
612(5)
Design of the Target Application
612(1)
Interaction with the Task Manager
613(4)
Defining the Weaving Knowledge: The Designer's Viewpoint
617(5)
Documentation Books of Support Technology
617(1)
Adding Weaving Information
618(3)
Internal Representation of Aspect Requirements
621(1)
Related Work
622(2)
Conclusion
624(3)
References
625(2)
Part 3 Applications
627(104)
Harnessing the C3
627(1)
Harnessing Quantification
628(1)
Harnessing Obliviousness
629(1)
The Chapters
629(4)
Developing Secure Applications Through Aspect-Oriented Programming
633(18)
Bart De Win
Wouter Joosen
Frank Piessens
Introduction
633(1)
The Domain of Application-Level Security
634(1)
An Experience Report
635(7)
A Personal Information Management System
635(4)
An FTP Server
639(1)
Toward a Framework of Aspects
640(2)
Discussion
642(3)
A Positive Experience
642(1)
Requirements for AOP Environments
643(2)
Related Work
645(1)
Conclusion
646(5)
Acknowledgments
647(1)
References
647(4)
Structuring Operating System Aspects
651(6)
Yvonne Coady
Gregor Kiczales
Mike Feeley
Norm Hutchinson
Joon Suan Ong
AspectC
652(4)
Normal Behavior Prefetching in AspectC
653(1)
Pointcut Declarations
653(2)
Advice Declarations
655(1)
Implementation Comparison
655(1)
Conclusion
656(1)
References
656(1)
Aspect-Oriented Programming for Database Systems
657(24)
Awais Rashid
Introduction
657(2)
Crosscutting Concerns in Object-Oriented Database Systems
659(6)
Crosscutting Concerns at the DBMS Level
660(3)
Crosscutting Concerns at the Database Level
663(2)
AOP in Object-Oriented Database Systems
665(8)
DBMS-Level Aspects
665(6)
Database-Level Aspects
671(2)
Evaluation of the Aspect-Oriented Approach
673(2)
Other Approaches to Modularizing Crosscutting Concerns in Database Systems
675(1)
Conclusion
676(5)
References
677(4)
Two-Level Aspect Weaving to Support Evolution in Model-Driven Synthesis
681(30)
Jeff Gray
Janos Sztipanovits
Douglas C. Schmidt
Ted Bapty
Sandeep Neema
Aniruddha Gokhale
Model-Integrated Computing and AOSD
683(8)
Model-Integrated Computing
684(2)
Crosscutting Concerns in Domain Modeling
686(2)
Model Weavers
688(3)
Example: Model Weaving of Eager-Lazy Evaluation Constraints
691(7)
Modeling Bold Stroke Components in GME
692(2)
Strategies for Eager/Lazy Evaluation
694(4)
Generating Aspect Code from Domain-Specific Models
698(5)
Synthesizing Aspects
699(4)
Conclusion
703(8)
Future Work
703(1)
Related Work
704(1)
Acknowledgments
705(1)
References
705(6)
Dynamic Aspect-Oriented Infrastructure
711(20)
Andrei Popovici
Gustavo Alonso
Thomas Gross
Introduction
711(1)
Application Scenario
712(2)
Application Awareness Using Aspect Orientation
714(4)
Design Alternatives for Dynamic AOP
715(3)
Meeting Application-Awareness Requirements with PROSE
718(4)
Addressing Application Awareness in PROSE
718(1)
PROSE Architecture
719(3)
Weaving Aspects in a Community of Nodes
722(1)
Aspect Distribution
722(1)
Lifecycle of Aspects
722(1)
Software Architecture Issues
723(1)
Usage Examples of AOP in Application Awareness
723(3)
Location-Specific Functionality for Robotics
723(3)
Other Examples of Application Awareness
726(1)
Conclusion
726(5)
Acknowledgments
727(1)
References
727(4)
Index 731

Supplemental Materials

What is included with this book?

The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.

The Used, Rental and eBook copies of this book are not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.

Excerpts

Aspect-Oriented Software Development PrefaceSoftware development is changing. The opportunities of the Internet, computerized businesses, and computer-savvy consumers, the exponential decline in the cost of computation and communication, and the increasingly dynamic environment for longer-living systems are pressing software developers to come up with better ways to create and evolve systems. There is fomenting in software development process, system structure, programming, quality assurance, and maintenance.Software is about building computational models of some part of the elements or information flow of the world. For all but the most trivial software systems, conquering the engineering of the system requires (perhaps recursively) dividing the system into chunks that can be (by and large) separately created and managed. The last decade of the twentieth century saw the rise (and perhaps dominance) of the object-oriented perspective on system modularization. Object-orientation focuses on selectingobjectsas the primary unit of modularity and associating with these objects all the system's behavior. Objects are typically elements of the domain or of the computational process.Object-orientation is reaching its limits. Many things one cares about in creating a software system (concerns) are not neatly localized to the behavior of specific "things." Building diverse systems requires simultaneously manipulating many concerns. Examples of concerns range from non-functional notions such as security, reliability, and manageability to precise implementation techniques such as concurrency control, caching, and error recovery. Since conventional programming technologies are centered on producing a direct sequence of instructions, they require the programmer to remain cognizant of all such concerns throughout the programming process. The programmer must explicitly intermix the commands to achieve these concerns with the code for the primary application functionality. This produces tangled code and erroneous and difficult-to-maintain systems.New technologies are emerging to allow richer specifications of programs and better modularization of these specifications. Along with these new technologies, we are also seeing novel software engineering methodologies for using them. One of the most exciting of these new technologies isaspect-oriented software development(AOSD). AOSD programming technologies (aspect-oriented programming, or AOP) provide linguistic mechanisms for separate expression of concerns, along with implementation technologies for weaving these separate concerns into working systems.Aspect-oriented software engineering(AOSE) technologies are emerging for managing the process of developing systems within this new paradigm. About This BookThis book grew out of our experience with the special issue on aspect-orientation in the October, 2001 Communications of the ACM. Seven times as many papers were submitted to that issue as we could print; those that appeared proved among the most popular in the ACM digital library. Simultaneously, we saw a growing number of increasingly popular workshops on aspect-oriented topics. There was clearly great interest in the computer science community for learning more about aspects. This led to two ideas--establishing an international conference on aspect-oriented software development and creating a book to illustrate to the advanced software development community the diversity of ideas in this space. The conference, organized by the Aspect-Oriented Software Association and co-sponsored by ACM, has recently had its third annual meeting; the proceedings are in the ACM digital library.We intend this book as a volume for advanced software engineers interested in learning about this new direction in software development. To populate the b

Rewards Program