|
ABSTRACT
Micro patterns are similar to design patterns, except that micro patterns are stand at a lower, closer to the implementation, level of abstraction. Micro patterns are also unique in that they are mechanically recognizable, since each such pattern can be expressed as a formal condition on the structure of a class.This paper presents a catalog of 27 micro-patterns defined on Java classes and interfaces. The catalog captures a wide spectrum of common programming practices, including a particular and (intentionally restricted) use of inheritance, immutability, data management and wrapping, restricted creation, and emulation of procedural-, modular-, and even functional- programming paradigms with object oriented constructs. Together, the patterns present a set of prototypes after which a large portion of all Java classes and interfaces are modeled. We provide empirical indication that this portion is as high as 75%.A statistical analysis of occurrences of micro patterns in a large software corpus, spanning some 70,000 Java classes drawn from a rich set of application domains, shows, with high confidence level that the use of these patterns is not random. These results indicate consciousness and discernible design decisions, which are sustained in the software evolution. With high confidence level, we can also show that the use of these patterns is tied to the specification, or the purpose, that the software realizes.The traceability, abundance and the statistical significance of micro pattern occurrence raise the hope of using the classification of software into these patterns for a more founded appreciation of its design and code quality.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
 |
1
|
Ellen Agerbo , Aino Cornils, How to preserve the benefits of design patterns, Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.134-143, October 18-22, 1998, Vancouver, British Columbia, Canada
|
 |
2
|
Jonathan Aldrich , Valentin Kostadinov , Craig Chambers, Alias annotations for program understanding, Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, November 04-08, 2002, Seattle, Washington, USA
|
| |
3
|
|
| |
4
|
|
| |
5
|
K. Beck. JUnit Pocket Guide. O'Reilly, 2004.
|
| |
6
|
|
| |
7
|
|
 |
8
|
|
| |
9
|
K. Brown. Design Reverse-Engineering and Automated Design Pattern Detection in Smalltalk. Masters thesis, North Carolina State University, 1996.
|
| |
10
|
|
| |
11
|
|
| |
12
|
|
| |
13
|
T. Cohen and J. Gil. Self-calibration of metrics of Java methods. In Proc. of the 37th International Conference on Technology of Object-Oriented Languages and Systems (TOOLS'00 Pacific Conference), pages 94--106, Sydney, Australia, Nov. 20-23 2000. Prentice-Hall.
|
| |
14
|
|
 |
15
|
Brian Demsky , Martin Rinard, Automatic detection and repair of errors in data structures, Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications, October 26-30, 2003, Anaheim, California, USA
|
| |
16
|
A. H. Eden. Formal specification of object-oriented design. In Proc. of the International Conference on Multidisciplinary Design in Engineering (CSME-MDE'01), Montreal, Canada, Nov. 21-22 2001.
|
| |
17
|
A. H. Eden. A visual formalism for object-oriented architecture. In Proc. of the 6thIntegrated Design and Process Technology (IDPT'02), California, June 23-28 2002. Society for Design and Process Science.
|
| |
18
|
|
| |
19
|
|
| |
20
|
G. Florijn, M. Meijers, and P. van Winsen. Tool support for object-oriented patterns. In Proc. of the 11th European Conference on Object-Oriented Programming (ECOOP'97), pages 472--495, Jyväskylä, Finland, June 9-13 1997. Springer.
|
| |
21
|
|
| |
22
|
|
| |
23
|
|
| |
24
|
|
| |
25
|
|
 |
26
|
Michele Lanza , Stéphane Ducasse, A categorization of classes based on the visualization of their internal structure: the class blueprint, Proceedings of the 16th ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications, p.300-311, October 14-18, 2001, Tampa Bay, FL, USA
|
| |
27
|
|
| |
28
|
|
| |
29
|
|
| |
30
|
|
| |
31
|
|
| |
32
|
N. H. Minsky. Law-governed Linda communication model. Technical Report LCSR-TR-221, Dept. of Comp. Sc.Lab. for Comp. Sc. ResearchThe State Univ. of New Jersey RUTGERS, Mar. 1994.
|
| |
33
|
|
| |
34
|
|
| |
35
|
M. Odersky, P. Altherr, V. Cremet, B. Emir, S. Maneth, S. Micheloud, N. Mihaylov, M. Schinz, E. Stenman, and M. Zenger. An overview of the Scala programming language. Technical Report IC/2004/64, EPFL Lausanne, Switzerland, 2004.
|
| |
36
|
L. Prechelt and C. Krämer. Functionality versus practicality: Employing existing tools for recovering structural design patterns. J.UCS: Journal of Universal Computer Science, 4(12):866--882, 1998.
|
 |
37
|
|
| |
38
|
N. Schärli, S. Ducasse, O. Nierstrasz, and A. Black. Traits: Composable units of behavior. In Proc. of the 17th European Conference on Object-Oriented Programming (ECOOP'03), Darmstadt, Germany, July 21--25 2003. Springer.
|
| |
39
|
|
 |
40
|
|
| |
41
|
|
| |
42
|
|
| |
43
|
|
| |
44
|
S. T. Taft and R. A. Duff, editors. Ada 95 Reference Manual, Language and Standard Libraries, International Standard ISO/IEC 8652: 1995(E), volume 1246 of LNCS. Springer, 1997.
|
| |
45
|
P. E. van Emde Boas. Resistance is futile; formal linguistic observations on design patterns. Technical Report ILLC-CT-1997-03, The Institute For Logic, Language, and Computation (ILLC), University of Amsterdam, Feb. 1997.
|
| |
46
|
N. Wirth. The programming language Pascal. Acta Informatica, 1:35--63, 1971.
|
| |
47
|
|
CITED BY 12
|
Sushil Bajracharya , Trung Ngo , Erik Linstead , Yimeng Dou , Paul Rigor , Pierre Baldi , Cristina Lopes, Sourcerer: a search engine for open source code supporting structure-based search, Companion to the 21st ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications, October 22-26, 2006, Portland, Oregon, USA
|
|
|
|
|
|
|
|
Gareth Baxter , Marcus Frean , James Noble , Mark Rickerby , Hayden Smith , Matt Visser , Hayden Melton , Ewan Tempero, Understanding the shape of Java software, ACM SIGPLAN Notices, v.41 n.10, October 2006
|
|
|
|
|
Lerina Aversano , Gerardo Canfora , Luigi Cerulo , Concettina Del Grosso , Massimiliano Di Penta, An empirical study on the evolution of design patterns, Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering, September 03-07, 2007, Dubrovnik, Croatia
|
|
|
|
|
|
|
|
|
|
|
|
|