SMALLTALK-80: the interactive programming environment
SMALLTALK-80: the interactive programming environment
Measuring software design quality
Measuring software design quality
Introduction to algorithms
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
Programming in Oberon: steps beyond Pascal and Modula
Programming in Oberon: steps beyond Pascal and Modula
Seesoft-A Tool for Visualizing Line Oriented Software Statistics
IEEE Transactions on Software Engineering - Special issue on software measurement principles, techniques, and environments
Object-oriented software metrics: a practical guide
Object-oriented software metrics: a practical guide
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Smalltalk: best practice patterns
Smalltalk: best practice patterns
How to preserve the benefits of design patterns
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
The Java programming language (2nd ed.)
The Java programming language (2nd ed.)
Proceedings of the 20th international conference on Software engineering
Data mining: practical machine learning tools and techniques with Java implementations
Data mining: practical machine learning tools and techniques with Java implementations
Cognitive strategies and looping constructs: an empirical study
Communications of the ACM
Effective Java programming language guide
Effective Java programming language guide
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
The C++ Programming Language, Third Edition
The C++ Programming Language, Third Edition
Object-Oriented Software Construction
Object-Oriented Software Construction
The Java Tutorial: A Short Course on the Basics
The Java Tutorial: A Short Course on the Basics
Patterns in Java: A Catalog of Reusable Design Patterns Illustrated with UML
Patterns in Java: A Catalog of Reusable Design Patterns Illustrated with UML
Alias annotations for program understanding
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A Metrics Suite for Object Oriented Design
IEEE Transactions on Software Engineering
Design Patterns: Abstraction and Reuse of Object-Oriented Design
ECOOP '93 Proceedings of the 7th European Conference on Object-Oriented Programming
Precise Visual Specification of Design Patterns
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
ECCOP '96 Proceedings of the 10th European Conference on Object-Oriented Programming
Architecture, design, implementation
Proceedings of the 25th International Conference on Software Engineering
Elemental Design Patterns: A Formal Semantics for Composition of OO Software Architecture
SEW '02 Proceedings of the 27th Annual NASA Goddard Software Engineering Workshop (SEW-27'02)
Manipulating and documenting software structures using SHriMP views
ICSM '95 Proceedings of the International Conference on Software Maintenance
Automatic Design Pattern Detection
IWPC '03 Proceedings of the 11th IEEE International Workshop on Program Comprehension
Automatic Verification of Java Design Patterns
Proceedings of the 16th IEEE international conference on Automated software engineering
Automatic detection and repair of errors in data structures
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Precise Modeling of Design Patterns in UML
Proceedings of the 26th International Conference on Software Engineering
Proceedings of the 2006 international workshop on Mining software repositories
Type-theoretic design patterns
Proceedings of the 2006 ACM SIGPLAN workshop on Generic programming
A framework for implementing pluggable type systems
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Understanding the shape of Java software
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Sourcerer: a search engine for open source code supporting structure-based search
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
An empirical study of cycles among classes in Java
Empirical Software Engineering
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
Proceedings of the 6th international symposium on Memory management
PTIDEJ and DECOR: identification of design patterns and design defects
Companion to the 22nd ACM SIGPLAN conference on Object-oriented programming systems and applications companion
Understanding programmer language
Companion to the 22nd ACM SIGPLAN conference on Object-oriented programming systems and applications companion
Journal of Software Maintenance and Evolution: Research and Practice
A study of Java object demographics
Proceedings of the 7th international symposium on Memory management
Detecting Patterns of Poor Design Solutions Using Constraint Propagation
MoDELS '08 Proceedings of the 11th international conference on Model Driven Engineering Languages and Systems
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
From Java to UpgradeJ: an empirical study
Proceedings of the 1st International Workshop on Hot Topics in Software Upgrades
Sourcerer: mining and searching internet-scale software repositories
Data Mining and Knowledge Discovery
The Java Programmer's Phrase Book
Software Language Engineering
Is Structural Subtyping Useful? An Empirical Study
ESOP '09 Proceedings of the 18th European Symposium on Programming Languages and Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Are We Ready for a Safer Construction Environment?
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Design pattern density defined
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Simple and safe SQL queries with C++ templates
Science of Computer Programming
Assessing traditional and new metrics for object-oriented systems
Proceedings of the 2010 ICSE Workshop on Emerging Trends in Software Metrics
Metrics-based detection of micro patterns
Proceedings of the 2010 ICSE Workshop on Emerging Trends in Software Metrics
Fundamental Nano-Patterns to Characterize and Classify Java Methods
Electronic Notes in Theoretical Computer Science (ENTCS)
Generating a catalog of unanticipated schemas in class hierarchies using Formal Concept Analysis
Information and Software Technology
The use of overloading in JAVA programs
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Java nano patterns: a set of reusable objects
Proceedings of the 48th Annual Southeast Regional Conference
A tool for design pattern detection and software architecture reconstruction
Information Sciences: an International Journal
Metamodel usage analysis for identifying metamodel improvements
SLE'10 Proceedings of the Third international conference on Software language engineering
Canonical method names for Java: using implementation semantics to identify synonymous verbs
SLE'10 Proceedings of the Third international conference on Software language engineering
Large-scale, AST-based API-usage analysis of open-source Java projects
Proceedings of the 2011 ACM Symposium on Applied Computing
Automatically detecting and describing high level actions within methods
Proceedings of the 33rd International Conference on Software Engineering
How Well Do Search Engines Support Code Retrieval on the Web?
ACM Transactions on Software Engineering and Methodology (TOSEM)
How much information do software metrics contain?
Proceedings of the 3rd ACM SIGPLAN workshop on Evaluation and usability of programming languages and tools
QoSA'10 Proceedings of the 6th international conference on Quality of Software Architectures: research into Practice - Reality and Gaps
An analysis of anti-micro-patterns effects on fault-proneness in large Java systems
Proceedings of the 27th Annual ACM Symposium on Applied Computing
JStereoCode: automatically identifying method and class stereotypes in Java code
Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering
Understanding design patterns — what is the problem?
Software—Practice & Experience
Understanding privacy policies
Empirical Software Engineering
What programmers do with inheritance in java
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Hi-index | 0.00 |
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.