and design techniques that positively impact on
framework reusability. These works served as basis
for the F3 approach, specially regarding the creation
of the F3 patterns (Keepence and Mannion, 1999;
Almeida et al., 2007; Loo and Lee, 2010; Srinivasan,
1999; Lopes et al., 2009; Stanojevic et al., 2011).
Xu and Butler (2006) proposed an cascaded
refactoring method which addresses the identification
of variability and framework development. In this
method, a framework is specified by different models,
sorted from the most abstract (feature model) to the
least abstract (source-code). A set of refactorings is
performed sequentially on the models and alignment
maps are defined to maintain the traceability amongst
the models by linking correspondent elements. In the
F3 approach the domain variabilities are documented
in the F3 models. Moreover, the F3 patterns can
provide a traceability between the features in these
models and the elements of the design and the
implementation of the framework (Xu and Butler,
2006).
Amatriain and Arumi (2011) also proposed a
method for the development of a framework through
iterative and incremental activities. In their method,
the domain of the framework could be defined from
existing applications and the framework could be
implemented through a series of refactorings over
these applications. The advantage of this method
is a small initial investment and the reuse of the
applications. Although it is not mandatory, the
F3 approach can also be applied in iterative and
incremental activities, starting from a small domain
and then adding features. Applications can also be
used to facilitate the identification of the features
of the domain. However, the advantage of the
F3 approach is the fact that the design and the
implementation of the frameworks are performed
with the support of patterns specific for framework
development (Amatriain and Arumi, 2011).
6 CONCLUDING REMARKS AND
FUTURE WORK
This paper proposed the F3 approach for the
development of white box frameworks from feature
models. The F3 approach uses a kind of feature model
that combines characteristics from conventional
feature models and metamodels to define the domain
of the framework. Then, to design and implement the
framework, the approach offers patterns that indicates
the classes, properties and operations that should be
created based on the elements and relationships found
in the domain model of the framework.
The F3 model allows the developers to define
the domain of the framework regardless design and
implementation details. It can reproduce different
domain scenarios that involve decompositions,
dependencies, and variabilities of the features.
The F3 patterns are independent of programming
language, although their documentation contains
examples of code implemented in Java. Their
design solution can be used to develop many versions
of the same framework implemented in different
programming languages.
More F3 patterns are being created to deal with
data persistence in the frameworks. Moreover, a
tool with a F3 model editor and a code generator
based in the F3 patterns are being developed. In
other future works we also intend to create patterns to
provide a Model-View-Controller architecture to the
frameworks created with the F3 approach.
ACKNOWLEDGEMENTS
We would like to thank CAPES and FAPESP for
financial support.
REFERENCES
Abi-Antoun, M. (2007). Making Frameworks Work:
a Project Retrospective. In Companion to the
22nd ACM SIGPLAN conference on Object-Oriented
Programming Systems and Applications, OOPSLA
’07, pages 1004–1018, New York, NY, USA. ACM.
Almeida, E. S., Alvaro, R., Garcia, V. C., Nascimento,
R., Meira, S. L., and Lucrdio, D. (2007). A
systematic approach to design domain-specific
software architectures. Journal of Software, 2(2).
Amatriain, X. and Arumi, P. (2011). Frameworks Generate
Domain-Specific Languages: A Case Study in the
Multimedia Domain. Software Engineering, IEEE
Transactions on, 37(4):544–558.
Bayer, J., Flege, O., Knauber, P., Laqua, R., Muthig, D.,
Schmid, K., Widen, T., and DeBaud, J.-M. (1999).
Pulse: a methodology to develop software product
lines. In Proceedings of the 1999 symposium on
Software reusability, pages 122–131. ACM.
Fayad, M. and Schmidt, D. C. (1997). Object-Oriented
Application Frameworks. Communications of ACM,
40(10).
Fowler, M. (2003). Patterns. IEEE Software, 20(2):56–57.
Frakes, W. and Kang, K. (2005). Software reuse research:
Status and future. Software Engineering, IEEE
Transactions on, 31(7):529–536.
Gomaa, H. (2004). Designing Software Product Lines with
UML: From Use Cases to Pattern-Based Software
Architectures. Addison-Wesley.
ICEIS2013-15thInternationalConferenceonEnterpriseInformationSystems
116