Design artifacts detection. Review of the approaches
In this paper, the review of the literature dedicated to the detection of the different artifacts (patterns, defects, errors, antipatterns and etc.) in software source code, documentation and other information sources is given. The systematization of the approaches on several grounds is achieved. In the study approaches the following artifacts can be used as the purpose for the search: 1. Design patterns. Patterns detection in the source code is important part of the reverse design. The automation of this process makes it possible to significantly increase the quality of the collected information and to decrease both time and material costs. 2. Antipatterns, design principle violations, code defects. Antipatterns and other design defects detection makes it possible to increase the quality of developed applications. 3. Micro pattern is traceable patterns, which are limited by the one class/interface. Their detection creates foundation for determining more complex constructions. Secondly, the classification of approaches is based on the data source for conducting the analysis. There are 3 types of the analysis in the literature: 1. The static analysis is the analysis of the source code and documentation. Programming languages Java and C++ are the most popular for source code writing. Also, some researchers use UML-diagrams as documentation for analysis. 2. The dynamic analysis is that of application in runtime. Java-bytecode is used as the source data. 3. The combined analysis is combination of static and dynamic analysis. The static analysis of the source code is used for the detection of "candidates", dynamic analysis is used for checking "candidates" if they correspond to one or another design pattern. The following detection strategies are proposed in the study approaches: 1. Metrics. 2. Graphs. 3. Visual analysis. 4. Bayesian Belief Networks. 5. Java-annotations. 6. Predicates. 7. Bit arrays operations. 8. Analysis of textual representation of visual language. Besides those enumerated above, researchers proposed the different methods of the manual detection of artifacts. The corresponding realizations were developed by authors on the base of several described approaches. The most of them are IDE Eclipse plugins and analyses Java source code. Open source code of popular frameworks (JHotDraw and etc.) is used for testing such plugins. Approaches for antipatterns detection so have several realizations. Besides plugins for source code analysis, the approach realization for design patterns refactoring in UML-diagrams is accessible in the Internet. The analysis of literature showed that the DPD issue is sufficiently popular. The procedures proposed by researchers have both advantages and disadvantages. The main disadvantage in the majority of the approaches proposed is dependence on the concrete programming language. It is necessary to perform work in the domain of the analysis of UML- diagrams and others language information sources, which are independent of the realization.
Keywords
паттерн,
антипаттерн,
анализ данных,
UML,
design pattern,
antipattern,
data analysis,
UMLAuthors
Zmeev Oleg A. | Tomsk state university | ozmeyev@gmail.com |
Ivanova Lidia S. | Tomsk state university | lida@redlg.ru |
Всего: 2
References
Gamma E., Helm R., Johnson R., Vlissides J. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.
Arcelli Fontana F., Zanoni M. A tool for design pattern detection and software architecture recognition // Information Sciences. 2011. V. 181. P. 1306-1324.
Bergenti F., Poggi A. Improving UML Designs Using Automatic Design Pattern Detection // Proc. 12th. International Conference on Software Engineering and Knowledge Engineering. 2000. URL:http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.22.3764
Beyer D., Lewerentz C. CrocoPat: efficient pattern analysis in object-oriented programs // Proceedings of the International Workshop on Program Comprehension (IWPC'03). 2003. P. 294-295.
BirknerM. Object-oriented design pattern detection using static and dynamic analysis in java software / MB-PDE Java Software De sign Pattern Detection Engine. URL: https://mb-pde.googlecode.com/files/MasterThesis.pdf
Blewitt A., Bundy A., Stark I. Automatic verification of design patterns in Java // ASE '05 Proceedings of the 20th IEEE/ACM interna tional Conference on Automated software engineering. ACM, New York, 2005. P. 224-232.
De Lucia A., Deufemia V., Gravino C., Risi M. Design pattern recovery through visual language parsing and source code analysis // The Journal of Systems and Software. 2009. No. 82. P. 1177-1193.
Dietrich J., Elgar C. Towards a web of patterns // Web Semantics: Science, Services and Agents on the World Wide Web. 2007. No. 5(2). P. 108-116.
Fabry J., Mens T. Language-independent detection of object-oriented design patterns // Computer Languages, Systems & Structures. 2004. V. 30. P. 21-33.
Gueheneuc Y., Hamel S., Kaczor O. Efficient identification of design patterns with bit-vector algorithm // Proceedings of European Conference on Software. Maintenance and Reengineering (CSMR'06). Bari, 2006. P. 175-184.
Towards pattern design recovery / J. Niere et. al. // Proceedings of International Conference on Software Engineering (ICSE'02). Orlando, 2002. P. 338-348.
Olsson, R., Shi, N. Reverse engineering of design patterns from java source code // Proceedings of IEEE/ACM International Conference on Automated Software Engineering (ASE'06). Tokyo, 2006. P. 123-134.
Pande A., GuptaM., Tripathi A.K. A decision tree approach for design patterns detection by subgraph isomorphism // Communications in Computer and Information Science. 2010. V. 101. P. 561-564.
Rasool G., Philipow I., Mader P. Design pattern recovery based on annotations // Advances in Engineering Software. 2010. V. 41. P. 519-526.
Singh Rao R., Gupta M. Design Pattern Detection by Multilayer Neural Genetic Algorithm // International Journal of Computer Science and Network. 2014. No. 3(1). P. 9-14.
Tsantalis N., Chatzigeorgiou A., Stephanides G., Halkidis S.T. Design pattern detection using similarity scoring // IEEE TRANSACTIONS ON SOFTWARE ENGINEERING. 2006. No. 32(11). P. 896-909.
Wang W., Tzerpos V. DPVK - an eclipse plug-in to detect design patterns in Eiffel systems // Electronic Notes in Theoretical Computer Science. 2004. V. 107. P. 71-86.
Riel A.J Object-Oriented Design Heuristics. Addison-Wesley, 1996.
Top Down Design in An Object Oriented World // University of SAN FRANCISCO. Department of computer science. URL: http://www.cs.usfca.edu/~parrt/course/601/lectures/top.down.design.html
Christopoulou A., Giakoumakis E.A., Zafeiris V.E., Soukara V. Automated refactoring to the Strategy design pattern // Information and Software Technology. 2012. No. 54. P. 1202-1214.
Dhambri K., Sahraoui H., Poulin P. Visual detection of design anomalies // Software Maintenance and Reengineering. 2008. P. 279-283.
Khomh F., Vaucher S., Gueheneuc Y.-G., Sahraoui H. BDTEX: a cgm-based Bayesian approach for the detection of antipatterns // The Journal of Systems and Software. 2011. No. 84. P. 559-572.
Marinescu R. Detection strategies: metrics-based rules for detecting design flaws // Software Maintenance. 2004. P. 350-359.
Meyer M. Pattern-based reengineering of software systems // WCRE '06: Proceedings of the 13th Working Conference on Reverse Engineering. Washington, 2006. P. 305-306.
Moha N., Gueheneuc G., Duchien L., Le Meur A.F. Decor: a method for the specification and detection of code and design smells // Software Engineering, IEEE Transactions on. 2009. No. 36(1). P. 20-36.
Travassos G., Shull F., FredericksM., Basili V.R. Detecting defects in object-oriented designs: using reading techniques to increase software quality / Computer Science. Universuty of Maryland. URL: http://www.cs.umd.edu/projects/SoftEng/ESEG/ pa-pers/oopsla99.pdf
Wieman R. Anti-pattern Scanner: an approach to detect anti-patterns and design violations / The Software Evolution Research Lab. URL: http://swerl.tudelft.nl/twiki/pub/Main/PastAndCurrentMScProjects/Thesis_RubenWieman2011.pdf
OMG Unified Modeling Language (OMG UML), Infrastructure / Documents Associated With Unified Modeling Language (UML), V.2.4.1. UML: http://www.omg.org/spec/UML/2.4.1/Infrastructure/PDF/
Gil J., Maman I. Micro Patterns in Java Code // OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications. ACM, New York, 2005. P. 97-116.
Abstract semantic graph // Wikipedia - free encyclopedia. URL: http://en.wikipedia.org/wiki/Abstract_semantic_graph
Basili R., Weiss D.M. A methodology for collecting valid software engineering data // IEEE Transactions on Software Engineering. 1984. No. 10 (6). P. 728-738.
Web Ontology Language // Wikipedia - free encyclopedia. URL: http://en.wikipedia.org/wiki/Web_Ontology_Language
Arcelli F., Caracciolo A., Zanoni M. A Benchmark for Design Pattern Detection Tools: a Community Driven Approach // Special theme: Evolving Software. 2012. No. 88. P. 32.