increases with the size of the database, that is to say,
more code is automatically generated. Figure 3
illustrates a study of four databases with different
sizes, and the average number of code lines
generated for each product.
Lines of Code (LOC) for each Product in several
Databases
0
20000
40000
60000
Database Size
LOC
Pipes
Queues
Signals and Alerts
Pipes
363 1.551 5.781 11.361
Queues
1.413 5.793 21.393 41.993
Signals and
Alerts
726 3102 11562 22722
1234
Figure 3: Code Lines vs. Database Size.
In this study we have considered different
implementation technologies and databases. The
first database has the smallest size, with only 8
tables that contains changes notifications features
and with 10 subscribers to the notifications changes
service. The second one contains 50 tables and 10
subscribers. The third one contains 200 tables and 30
subscribers and in the last one there are 400 tables
and 50 subscribers. In all cases there is an average
size of the fields for each table.
3. Effort to Build the SPL. To make this
estimation, measured in lines of code (LOC), it is
taken into account: the development of the test
products developed, the exemplar, the generators
and the entire generation of the NSCL. For example,
in a database of average size (50 tables and 10
subscribers), this effort is equivalent to the
development of a dozen products.
7 CONCLUSIONS
This paper has showed the construction of a SPL
using a generative programming approach. A new
DSL, called NCSL, has been developed to gather the
domain variability. EDD and EFL [Heradio, 2007]
have been used as supporting tools to build the
product line.
The SPL presented has been applied to solve
different study cases related with change
notifications service in databases. In all of these
studies the SPL was able to generate the 100% of the
new products, covering all the requirements
specified.
The profitability analysis shows great benefits of
applying this SPL. This profitability increases with
the database size.
REFERENCES
Czarnecki, K.; Eisenecker, U. W. Generative
Programming. Methods Tools and Applications.
Addison-Wesley, 2000.
Frankel, D. John Wiley and Sons, 2003. Model Driven
Architecture: Applying MDA to enterprise Computing.
Gamma, E.; Helm, R.; Johnson, R.; Vlissides, J. Design
Patterns: Elements of Reusable Object-Oriented
Software. Addison Wesley. 1994.
Clements, P.; Northrop, L. SOFTWARE PRODUCT
LINEs: Practices and Patterns. Boston, MA: Addison-
Wesley, 2002.
Verlage, M.; Kiesgen, T. Five years of product line
engineering in a small company. Proceedings of 27th
International Conference on Software Engineering,
2005 (ICSE 2005), pp. 534-543.
Weis, T.; Ulbrich, A.; Geihs, K. Mode metamorphosis.
Software, IEEE. Volume 20, Issue 5, Sept.-Oct. 2003
Page(s):46 – 51.
Cleaveland, J. C. Program Generators with XML and
JAVA. Prentice Hall, 2001.
Greenfield, J.; Short, K. Software Factories: assembling
Patterns, Models, Frameworks, and Tools. Wiley,
2004.
Krueger, C. Eliminating the adoption barrier. IEEE
Software, Volume 19, Issue 4, 2002, pp. 29-31.
Heradio, R. Metodología de desarrollo de software
basada en el paradigma generativo. Realización
mediante la transformación de ejemplares. Ph. D.
Thesis, Ingeniería de SW y Sistemas Informáticos de
la UNED, España. 2007.
Czarnecki, K.; Helsen, S.; Eisenecker, U. Staged
Configuration Using Feature Models. Software
Product Lines Conference (SPLC). Boston, MA, USA,
August 30-September 2, 2004, pp. 266-283.
Czarnecki, K.; Bednasch, T.; Unger, P.; Eisenecker, U.W.
Generative programming for embedded software: An
industrial experience report. ACM
SIGPLAN/SIGSOFT Conference on Generative
Programming and Component Engineering
GPCE’02), Pittsburgh, October 6–8, 2002, LNCS
2487, Springer-Verlag (2002), pp. 156–172
Thomas, D.; Fowler C.; Hunt, A.; Programming Ruby:
The Pragmatic Programmers' Guide. Pragmatic
Bookshelf; 2nd edition (October 1, 2004).
Heradio, 2008, A Ruby implementation of EFL in
RubyForge: http://rubyforge.org/projects/efl/
ICEIS 2008 - International Conference on Enterprise Information Systems
424