Emergo


Introduction

Features in product lines eventually share elements between them, which might break feature modularization, since modifications in a feature result in problems for another. The concept of Emergent Interfaces aims to establish contracts between features, to prevent developers from breaking other features when performing a maintenance task. Emergo is an Eclipse plug-in that automates the computation of feature dependencies in preprocessor-based product lines.

Emergo


Main functionalities

Emergo's main functionality is the automatic computation of emergent interfaces, which establish contracts between features and make developers aware of feature dependencies. Supporting this main functionality, Emergo provides the following facilities:

  • Provides two views to show emergent interfaces: one based on table and one based on graph;
  • Better navigation on the source code: from both table and graph views, developers can find feature dependencies in source code through mouse clicks;
  • Takes the feature model product line into consideration;


Download and Installing

We tested Emergo in Eclipse 3.6 SR2. Before installing Emergo, please install the Zest plugin. Zest contains a graph layout package which we use to generate emergent interfaces based on graphs. Afterwards, all you need to do is to place the Emergo jar file into the plugins folder of your Eclipse. Please, notice that Emergo is a prototype. We will be glad to hear from you any suggestions and bug reports.


Getting started

After installing, open a Java project. The project must contain an ifdef.txt file in the root folder. This file contains the list of features and the feature model of the product line. Here is an example of a product line that you can use to test Emergo.

Views

Emergent interfaces can be visualized by using two views: based on a table or on a graph. Before trying to generate emergent interfaces, open these views. To do so, Window -> Show View -> Other -> Emergo Views. Open the Emergo Table View and the Emergo Graph View.

Emergo views

Properties

After opening the views, select the type of analysis that will be used for generating the interfaces. There are two types of analyses available: intraprocedural and interprocedural. Open the project properties (right click on the project, Properties -> Emergo).

The Intraprocedural analysis computes feature dependencies exclusively within the method where the selection occurred. Interprocedural analysis computes dependencies from the method where the selection occurred and other methods. Depending on the product line size (number of lines of code, number of methods, number of features etc), when computing emergent interfaces using the Interprocedural analysis, Emergo can take several minutes to finish the computation.

Emergo views

Generating Emergent Interfaces

To generate emergent interfaces, the first step consists of selecting the maintenance point. After selecting, you can either press Ctrl+9 or right click on the editor, then Emergo -> Generate Interface. The results will appear in both Emergo Table View and Emergo Graph View.

Emergo menu


Publications

[BrabrandEtal12]
Claus Brabrand, Márcio Ribeiro, Társis Toledo, and Paulo Borba. Intraprocedural dataflow analysis for software product lines. In Proceedings of the 11th International ACM Conference on Aspect-Oriented Software Development (AOSD 2012), New York, NY, USA, 2012. ACM. [ .pdf ]
[RibeiroEtal12]
Márcio Ribeiro, Társis Toledo, Johnni Winther, Claus Brabrand, and Paulo Borba. Emergo: A tool for improving maintainabiliy of preprocessor-based product lines. In Proceedings of the 11th International ACM Conference on Aspect-Oriented Software Development (AOSD 2012), Companion, Demo Track, New York, NY, USA, 2012. ACM. [ .pdf ]
[RibeiroEtal11]
Márcio Ribeiro, Felipe Queiroz, Társis Toledo, Claus Brabrand, Paulo Borba, and Sérgio Soares. On the impact of feature dependencies when maintaining preprocessor-based software product lines. In Proceedings of the 10th International Conference on Generative Programming and Component Engineering (GPCE 2011), New York, NY, USA, 2011. ACM. [ .pdf ]
[RibeiroEtal11b]
Márcio Ribeiro, Társis Toledo, Paulo Borba, and Claus Brabrand. A tool for improving maintainabiliy of preprocessor-based product lines. In Tools Session of the 2nd Brazilian Congress on Software (CBSoft 2011), 2011. [ .pdf ]
[RibeiroEtal10]
Márcio Ribeiro, Humberto Pacheco, Leopoldo Teixeira, and Paulo Borba. Emergent feature modularization. In Proceedings of Onward! ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for Humanity (SPLASH 2010), pages 11-18, New York, NY, USA, 2010. ACM. [ .pdf ]
[RibeiroBorba10]
Márcio Ribeiro and Paulo Borba. Towards feature modularization. In Doctoral Symposium of the ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for Humanity (SPLASH'10), pages 225-226, New York, NY, USA, 2010. ACM. [ .pdf ]


Would you like to contribute?

Please, contact us!

  • Sign up at www.assembla.com
  • Let us know your login
  • Then, we create a branch for your Emergo extension

Contacts

-- MarcioRibeiro - 2012-05-23 -- MarcioRibeiro - 07 Feb 2012 -- MarcioRibeiro - 05 Feb 2012 -- MarcioRibeiro - 22 Sep 2011

Topic revision: r8 - 2012-07-12 - TarsisToledo
 
This site is powered by the TWiki collaboration platformCopyright © 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback

mersin escort bayan adana escort bayan izmit escort ankara escort bursa escort