3 CONCLUSIONS
Very often, a system or technology can be defined
by means of the problems that it tries to solve.
Identifying those problems and having an overview
of the state of the art in this respect is a necessary
step in the process of producing a new proposal.
This research work reaches several objectives.
First of all, it highlights what the main problems in
SPL are, currently, as well as how they are being
solved using patterns. This has been achieved
empirically, studying the appearance frequency of
patterns, instead of basing conclusions on personal
opinions.
Secondly, this article shows a new line of
research that aims to cover gaps in research on the
use of refactorings, bad smells, design principles,
design heuristics and design rules in Product Lines.
In addition, we propose that future work can be
focused on the lack of a detailed library that analyses
and evaluates each relevant pattern-based solution
and then gives guidelines as to which proposal
should be used in different cases.
ACKNOWLEDGEMENTS
This research is partially supported by the ESFINGE
project of the General Research Council (Dirección
General de Investigación) of the Spanish Ministry of
Education and Science (TIC 2003-02737-C02-02)
and ENIGMAS (Entorno Inteligente para la Gestión
del Mantenimiento Avanzado del Software),
supported by the Department of Education and
Science of the Junta de Comunidades de Castilla-La
Mancha (Regional Government of Castilla-La
Mancha) (PBI-05-058).
REFERENCES
Bachmann, F. & Bass, L. (2001) Managing variability in
software architectures, Symposium on Software
Reusability ACM Press
Biolchini, J., Mian, P. G., Natali, A. C. C. & Travassos, G.
H. (2005) Systematic Review in Software Engineering.
Rio de Janeiro, COPPE / UFRJ.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P.
& Stal, M. (1996) Pattern-Oriented Software
Architecture – A System of Patterns, John Wiley and
Sons Ltd.
Clements, P. & Northrop, L. (2001) Software Product
Lines: Practices and Patterns, Addison-Wesley.
Coplien, J., Hoffman, D. & Weiss, D. (1998)
Commonality and Variability in Software Engineering.
IEEE Software 15, 37 - 45.
Fowler, M. (1999) Refactoring, Addison Wesley.
Gamma, E., Helm, R., Johnson, R. & Vlissides, J. (1995)
Design Patterns, Addison-Wesley.
Garzás, J. & Piattini, M. (2005) An ontology for micro-
architectural design knowledge. IEEE Software
Magazine, 22, 28-33.
Goedicke, M., Köllmann, C. & Zdun, U. (2004) Designing
runtime variation points in product line architectures:
three cases. Science of Computer Programming, 53,
353 - 380
Harsu, M. (2001) A Survey of Product-Line Architectures.
Tampere, Tampere University of Technology.
Keepence, B. & Mannion., M. (1999) Using patterns to
model variability in product families. IEEE Software,
16, 102-108.
Kitchenham, B. (2004) Procedures for Performing
Systematic Reviews. Keele University Technical
Report. Keele, Software Engineering
Group.Department of Computer Science. Keele
University.
Muthig, D., John, I., Anastasopoulos, M., Forster, T.,
Dörr, J. & Schmid, K. (2004) GoPhone - A Software
Product Line in the Mobile Phone Domain. IESE-
Report. Fraunhofer IESE.
Myllymäki, T. (2002) Variability Management in Software
Product Lines. Tampere, Institute of Software
Systems. Tampere University of Technology.
Parnas, D., Clements, P. C. & Weiss, D. (1984) The
Modular Structure Of Complex Systems, International
Conference on Software Engineering Orlando, Florida,
IEEE Press.
Ziadi, T., Jézéquel, J.-M. & Fondement., F. (2003)
Product Line Derivation with UML, Groningen
Workshop on Software Variability Management,
ICSOFT 2007 - International Conference on Software and Data Technologies
408