net.work

The Way Business Is Moving

net.work published by
Issue Date: March 2006

Patterning Java development

1 March 2006

Why do what has already been done unless you can do it better? Patterns package the best design concepts for easy and unique re-use.
Every business thinks that it is unique and has unrivalled business processes that give it an edge in the market. This thinking has led many companies to designing and developing their own business applications from scratch, going through the process of creating and recreating business components that are commonly used around the world.
"While every company likes to think it is unique, the truth is that the majority of business processes are common," says Malcolm Rabson, MD of Dariel Solutions. "For example, there is no competitive advantage in a general ledger or HR application that performs the same function as any other.
Malcolm Rabson, MD of Dariel Solutions
Malcolm Rabson, MD of Dariel Solutions
"Spending money on developing software that delivers no business advantage is a lost and expensive cause. It is only when software differentiates companies from their competitors that the time and cost involved in the development process pays off."
Unfortunately, even when developing such software, common business processes force designers to cater for certain common software components that do not add value. Businesses can decide to carry the cost of developing these components in the belief that the returns the final system will deliver will pay for the extra work, or they can look for ways in which to simplify the creation of these components.
One way of avoiding the added programming burden is to buy components from other software developers, but this approach is fraught with pitfalls. Another solution is Design Patterns.
A pattern for successful development
Design Patterns, first written about in 1977, are abstract descriptions of commonly used software components. Software patterns describe in detail the way in which a recurring problem can be solved, but leaves the actual coding to the programmer. This results in a unique application being developed on each occasion, even though the concept was derived from a standard description of the solution.
Using a vocabulary unique to patterns, each is described in specific terms to allow programmers to easily understand where their use would be pertinent. When used appropriately, patterns can dramatically improve the productivity of developers and lower the overall costs of software projects.
"It is important to note, however, that patterns are not silver bullets to every programming problem," Rabson adds. "Patterns should only be used in appropriate situations where they have been designed to solve a specific software problem. Simply forcing a pattern into a problem situation without the necessary forethought can create more trouble than it solves."
Experience is therefore a crucial component of successful pattern use. Developers and designers with substantial experience are more easily able to determine the usefulness of patterns in specific situations than novices are.
Java and patterns
A critical aspect of patterns is that they are founded on openness. "You simply cannot have proprietary patterns," explains Rabson. "They are therefore also completely language and platform agnostic. However, there are certain languages that make pattern usage easier, such as Java."
Java first came to the fore when object-oriented design (including patterns) was finding its feet in mainstream enterprise development projects. Java has therefore been built with patterns as an integral component of the platform and the language.
Rabson continues that other object-oriented languages, such as C++ and Smalltalk are also pattern-centric, but of the more commonly used languages in the market today, Java is the forerunner. Microsoft's C# is very similar to Java and that makes it easy to cross-skill people in both languages, but patterns are only now finding traction in the Microsoft world because object-orientation has not always been the primary development technique employed.
The financial and productivity benefits of Design Patterns are seeing a growing number of designers and developers delving into the world of patterns. It should be noted once again that pattern usage is no silver bullet and can lead to problems if novice programmers are forced to use them without first learning about them, including how and where to use them effectively.
"Patterns are simply another tool in the developer's toolbox," concludes Rabson. "When used with care, however, they hold great potential."


Others who read this also read these articles

Others who read this also read these regulars

Search Site





Subscribe

Previous Issues