developers need to solve. Strategies for integrating
multiple domain-specific generators and embedding
them into systems implemented using yet other
techniques have yet to be developed. One of the
reason for success of compiler generators is that
compilation on its own is a self-contained domain.
Rich abstractions lead to powerful generators.
Without sufficient abstractions, there is not much we
can automate. We believe not enough of general-
purpose abstractions is the main reason why, despite
much research, we have not achieved success in
domain-independent, generation-based automatic
programming. This also reminds us Brooks’ doubts
about reducing essential program complexity by
means of abstraction (Brooks, 1986).
10 CONCLUSIONS
In the paper, I discussed a multi-faceted
phenomenon of software similarities. Starting with
software clone definition, I analysed common
reasons why clones occur in programs, their impact
on software development and maintenance, and
productivity benefits that can be gained by avoiding
clones. The core of the paper focused on
redundancies that, despite potential benefits, are
difficult to avoid with conventional programming
languages and design techniques. Finally, I
demonstrated a possible solution to avoiding such
redundancies with meta-level generative techniques.
ACKNOWLEDGEMENTS
Author thanks PhD students and research assistants
at the National University of Singapore who
developed clone detection tools, implemented ART
processor, and participated in studies on software
redundancies.
REFERENCES
Basit, A.H., Rajapakse, D. and Jarzabek, S. 2005. Beyond
Templates: a Study of Clones in the STL and Some
General Implications. In Int. Conf. Soft. Eng.,
ICSE’05, St. Louis, USA, May 2005, pp. 451-459
Basit, A.H. and Jarzabek, S. 2005. Detecting Higher-level
Similarity Patterns in Programs. In ESEC-FSE'05,
European Soft. Eng. Conf. and ACM SIGSOFT Symp.
on the Foundations of Soft. Eng., ACM Press,
September 2005, Lisbon, pp. 156-165
Basit, A.H. and Jarzabek, S. 2009. A data mining
approach for detecting higher-level clones. In IEEE
Trans. on Soft. Eng., 35(4): 497-514, 2009
Batory, D., Singhai, V., Sirkin, M. and Thomas, J. 1993.
Scalable software libraries.. In ACM SIGSOFT’93:
Symp. on the Foundations of Software Engineering,
Los Angeles, California, pp. 191-199
Baxter, I., Yahin, A., Moura, L., Sant’Anna, M., and Bier,
L. 1998. Clone detection using abstract syntax trees. In
Proc. Int. Conf. Soft. Maintenance 1998, pp. 368–377
Brooks, F. 1995. The Mythical Man-Month, Addison
Wesley
Brooks, F.P. 1986. No Silver Bullet. 1986. In Proc. IFIP
10
th
World Computing Conference, H. K. Kugler, ed.,
Elsevier Science, pp. 1069-1076
Clements, P. and Northrop, L. 2002. Software Product
Lines: Practices and Patterns, Addison-Wesley
Cordy, J. R., 2003. Comprehending Reality: Practical
Challenges to Software Maintenance Automation. In
Proc. 11
th
IEEE Intl. Workshop on Program
Comprehension, pp. 196-206
Czarnecki, K. and Eisenecker, U., 2000. Generative
Programming: Methods, Tools, and Applications,
Addison-Wesley
Deelstra, S., Sinnema, M. and Bosch, J., 2000.
Experiences in Software Product Families: Problems
and Issues during Product Derivation. Proc. Software
Product Lines Conf., SPLC3, Boston, pp/ 165-182
Ducasse, S., Rieger, M. and Demeyer, S. 1999. A
language independent approach for detecting
duplicated code. In Int. Conf. on Soft. Maintenance,
ICSM’99, Oxford, UK pp. 109-118
Fowler, M. 1997. Analysis Patterns: Reusable Object
Models, Addison-Wesley
Fowler M. 1999. Refactoring - improving the design of
existing code, Addison-Wesley
Gamma, E., Helm, R., Johnson, R. and Vlissides, J. 1995.
Design Patterns – Elements of Reusable Object-
Oriented Software, Addison-Wesley
Garcia, R. et al., 2003. A Comparative Study of Language
Support for Generic Programming. In Proc. 18
th
ACM
SIGPLAN Conf. on Object-oriented Prog., Systems,
Languages, and Applications, pp. 115-134.
Goguen, J.A. 1984. Parameterized Programming. IEEE
Trans. on Software Engineering, Vol. SE-10, No. 5,
pp. 528-543
Hammad, M. Basit, H., Jarzabek, S. and Koschke, R. A
Mapping Study of Clone Visualization. 2020.
Computer Science Review (accepted in final form)
Jarzabek, S. and Li, S. 2003. Eliminating Redundancies
with a “Composition with Adaptation” Meta-
programming Technique. In Proc. ESEC-FSE'03,
European Software Engineering Conference and ACM
SIGSOFT Symposium on the Foundations of Software
Engineering, Helsinki, pp. 237-246
Jarzabek, S. and Li, S. 2006. Unifying clones with a
generative programming technique: a case study. In
Journal of Software Maintenance and Evolution:
Research and Practice, John Wiley & Sons, Vol. 18,
Issue 4, pp. 267-292