There is great power in being able to manipulate collective things as one single thing. It gives you simplicity, hence control. You can focus your attention on it and reason about it, even though behind the hood it is made of many parts. The composite thing is kept simple, therefore you can also deal with [...]
Continue Reading »
Tags: abstraction, classification, collective, design, group, methodology, multiplicity, pattern, problem, Programming, solution, solving
Posted in General, Patterns, Physical Computing, Programming • Comments Off
Patterns represent a couple (intent, solution); sometime they refer to a solution, more often they essentially represents an intent, independently of its solution. Sometimes the solution part of patterns includes a trick or a workaround to overcome the limits of a language, but patterns cannot be reduced to that trick. Indeed, a very important role [...]
Continue Reading »
Tags: convention, dependencies, design, intent, language, pattern, patternity, Programming
Posted in Patternity, Patterns, Programming • Comments Off
Sounds like a challenge: a paper is proposing an approach for a formal definition of architecture, design, and implementation, among other things. The link was offered and commented on a post from Ralph Johnson, that everyone knows for being one of the four in the « Gang of Four ». Though I have not tried to fully understand [...]
Continue Reading »
Tags: architecture, concept, design, pattern, research
Posted in Programming • 1 Comment »
Patterns represent a couple (intent, solution), where the intent matters most. Based on that intents, that can be generic or specialized, I propose to consider patterns like types in languages with strong typing, for the compiler to enforce their constraints. Declaring patterns: what for? Consider the very simple Quantity pattern from Analysis Patterns (Fowler): Represent [...]
Continue Reading »
Tags: analysis, ddd, design, intent, java, methodology, pattern, Programming, tdd, typing
Posted in Patternity, Patterns, Programming • 1 Comment »
Low coupling between objects is a key principle to help you win the battle against software entropy. Making sure your dependencies are under control matters. Several tools can enforce dependencies restrictions, such as JDepend. However in a real project with many classes, packages and modules, the real issue is how to decide and configure the [...]
Continue Reading »
Tags: abstraction, analysis, dependencies, design, domain, interface, java, oo, pattern, patternity, Programming, research, tool
Posted in Patternity, Patterns, Programming • Comments Off
In finance, options are powerful tools for traders, and many design practices including design patterns can be seen as options. Options can -perhaps- yield a great benefit for a certain and immediate cost. If this cost is cheap enough it can be quite attractive. An option to buy a stock is a right to buy [...]
Continue Reading »
Tags: abstraction, design, java, oo, pattern, patternity, Programming
Posted in Patternity, Patterns, Programming • Comments Off
The more patterns developers know, the most efficient they become within a team: it only takes one or two words (the pattern name) to communicate a design decision or proposal, instead of 10 mn of explanations. Communication also gets much more accurate and to-the-point (or less fuzzy). Because patterns often form a pattern language, not [...]
Continue Reading »
Tags: analysis, book, design, domain, education, java, pattern, problem, Programming, solution
Posted in Patterns • 2 Comments »
Composite patterns, such a the Bureaucracy pattern, are patterns built by the composition of other « smaller » patterns. However even usual design patterns can be considered composite patterns made of smaller subpatterns. The goal is therefore to find out which are the main subpatterns that enable to reconstruct as many design patterns as possible. The subpatterns [...]
Continue Reading »
Tags: classdiagram, combinatorial, java, oo, pattern, patternity, research, svg, tool, uml, variant, visual
Posted in Patternity, Patterns, Programming • 4 Comments »
After my initial attempt at doing something useful and automated around design patterns, I started working again on a brand new version of a pattern-aware tool: Patternity. No more code generation, the focus is now on the generation of documentation artifacts (UML class and sequence diagrams, reports, enhanced Javadoc…) from the source code annotated with [...]
Continue Reading »
Tags: automation, java, pattern, patternity, tool
Posted in Patternity • Comments Off
I have experimented an approach that considers every design pattern as the recursive composition of smaller patterns. This led to a prototype tool to illustrate its benefits by generating design-level documentation of annotated source code. Eat your own dog food The source code of this tool itself was used as the code base to apply [...]
Continue Reading »
Tags: api, application, classdiagram, design, framework, oo, pattern, patternity, research, tool, uml, visualization
Posted in Patternity • 1 Comment »