What is Patternity?

Design Patterns are a major step in Software Development, and contribute to enhance both documentation and quality of software. However, there has been little effort to automate applying patterns into code and to provide formal pattern documentation. Patternity aims at being such a tool, and focuses on being easy to use and really usefull, to really help developers, not to bother them.

Patternity uses custom Javadoc tags, e-g "@pattern Adapter.adapter some comment" to:
1) help in implementing common patterns through additive-only code generation (typically, to generate complete stubs)
2) add pattern-specific documentation in the usual Javadoc html documentation, including cross-references between pattern participants

Patternity is designed so that features can be added easily (implementation variations, new patterns). Considered patterns may be design patterns, coding patterns (idoms), architecture patterns, gui or web patterns. While designed in Java for Java, Patternity is expected to work for other languages, especially C++ (code generation would be much more useful), Python, PHP... provided a Java-written Javadoc parser for these languages.

Patternity uses Javadoc tool only. It is just another doclet for the developer toolbox.

Licence

BSD License - Open Source

Credits

Cyrille Martraire

References

Design Patterns:
Design patterns: Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns. Elements of Reusable Object-oriented Software. Addison-Wesley, 1995.
Analysis Patterns: Martin Fowler, Reusable Object Models, Addison-Wesley, 1996.
Pattern Languages Of Programs PLoP: http://jerry.cs.uiuc.edu/~plop/

Design Patterns & Code Generation:
Automatic Code Generation from Design Patterns, Frank Budinsky, Marilyn Finnie, Patsy Yu, Toronto Software Laboratory
John Vlissides, T.J. Watson Research Center
Design patterns: representation, detection and code generation from a meta-model, Hervé Albin-Amiot, Yann-Gaël Guéhéneuc
Implementing Design Patterns as Declarative Code Generators, Kris De Volder
Compositional Design Reuse, Johannes R. Sametinger Rudolf K. Keller

Design Patterns Documentation:
Documenting Pattern Use in Java Programs, Marco Torchiano
Evolution Support by Homogeneously Documenting Patterns, Aspects and Traces, Johannes Sametinger, Matthias Riebisch
A Controlled Experiment in Maintenance Comparing Design Patterns to Simpler Solutions, Peter Brossler, Lutz Prechelt, Barbara Unger, Walter F. Tichy

Doclets:
doclet API: http://java.sun.com/products/jdk/1.2/docs/tooldocs/javadoc/doclet/index.html
xDoclet: http://xdoclet.sourceforge.net/
taglet API: javaworld javadoc-based code generation: http://www.javaworld.com/javaworld/jw-08-2000/jw-0818-javadoc_p.html
The Javadoc Tool homepage: http://java.sun.com/products/jdk/javadoc/

 
 
SourceForge Logo