180 likes | 635 Views
AOP-Driven Variability in Software Product Lines. Vander Alves, Ayla Dantas, and Paulo Borba Informatics Center – UFPE – Brazil {vra,add,phmb}@cin.ufpe.br. Motivation. Demand for pervasive computing applications Different devices and features
E N D
AOP-Driven Variability in Software Product Lines Vander Alves, Ayla Dantas, and Paulo Borba Informatics Center – UFPE – Brazil {vra,add,phmb}@cin.ufpe.br
Motivation • Demand for pervasive computing applications • Different devices and features • Comply with ever-increasing quality and productivity requirements
Key idea • Product line approach using AOP to implement feature variability
Product Line Development Product Development Core Asset Development Management
Product line Source: SEI
Product line Source: SEI
Aspect-oriented programming (AOP) • Distribution, persistence, synchronization, logging, protocols. • Crosscuting concerns • Spread and tangled code • Hard to maintain and reuse • OO techniques cannot completely address
AOP • AOP modularizes crosscutting concerns • Join point model • Aspect = {pointcut, advice, introduction} • Localized implementation • Composability • Examples: AspectJ, HyperJ
Feature= Aspect+ auxiliary classes Feature Modeling Design product line architecture Compose aspects of a product and business classes using AOP Weavers Design variations using aspects Generate version of a product Our approach
Case study: J2ME dictionary 1. Feature View • Define product line features • Identify common features for all products • Identify variable features
Case study: J2ME dictionary 2. Architecture View • Design flexible architecture • Focus on mandatory features • Use architectural/design patterns
Case study: J2ME dictionary 3. Variation View • Identify application points to be crossed • Design aspects correspondent to variable features (feature -> aspect) • Design auxiliary classes • Use design patterns
Weaver Case study: J2ME dictionary 4. Composition View • Collect the aspects relative to the desired features • Select auxiliary classes • Use an AOP Weaver • Generate weaved code
Case study: J2ME dictionary 5. Product Generation View • Process code • Package the application • Install and test
References • http://www.sei.cmu.edu/plp/framework.html • Sérgio Soares, Eduardo Laureano, Paulo Borba. Implementing distribution and persistence aspects with AspectJ. In 17th Annual ACM Conference on Object-Oriented Programming, Systems, Languages and Applications, OOPSLA'2002, pages 174-190, Seattle, USA, 4th-8th November 2002. • www.cin.ufpe.br/gpqs • Krzystof Czarnecki and Ulrich Eisenecker. Generative Programming: Methods, Tools, and Applications. Addison-Wesley.2000 • http://gpce.org