Mining Control Patterns from Java Program Corpora

Java programming, based on the Object-Oriented (OO) paradigm, has played a major role in program design and implementation due to the fact that it is extensible, maintainable, and reusable in software system construction. Experiences with using Java programming have indicated that there also exist disadvantages with respect to its execution inefficiency and complicated runtime behaviors. Code-patterns are statically recurring structures specifically related to a programming language. They can be used in parallel to help programmer design software systems to solve particular problems. In opposition to the role of code-patterns in assisting compilation, control-patterns are dynamically recurring structures invoked during program execution time. They can be used to understand the run-time behaviors of OO-programs with respect to the underlying architecture, such as Java-VM. A control pattern describes the model of control transfer among objects during OO program execution. In this paper, several control patterns are proposed and discussed. We have analyzed and collected several control patterns from several Java program corpora. The experimental results show that control patterns do exist and provide information for quantitative analysis. Simple patterns, compound patterns, and complex patterns have different ratios depending on their source programs. Collected control patterns can be used to provide guidelines for Java programmers so that they can write more effective Java programs.