DevX Skillbuilding for IBM DeveloperWorks
DevX Skillbuilding for IBM DeveloperWorks
DevX Skillbuilding for IBM DeveloperWorks
Get regular email alerts when we publish new features!
DevX Update for IBM developerWorks

More Newsletters
Pattern Implementations for More Efficiency, Consistency, Quality, and Fast Results (cont'd)

Why You Should Care About Pattern Implementations
Pattern-based development solves many of the problems inherent in traditional and manual application development. It lets you proceed from a more abstract view of your design to a more detailed view. It also lets you go from a more detailed view to a more abstract view. It accelerates and automates the building and testing of software by enforcing architectural design and coding standards. This enables the entire development team, even at different offices around the globe, to closely adhere to the architectural specifications of the software project.

Pattern implementations transform the software design into code that conforms precisely to the specifications. It eliminates any undesirable creativity or inconsistent interpretation of the specification—even within globally distributed development teams. The pattern implementations can generate the source code, related test artifacts, and various other text based resources. Once the pattern implementations are created, they can automatically be applied repeatedly and thus eliminate having to manually recreate redundant algorithms.

As you apply a pattern, traceability links are automatically created between the design elements and the artifacts that were generated. This traceability maps the elements of the solution back to the requirements, enabling you to assess what to expect from changes made to either the requirements or to the code. This increases the quality of the software early in the project and improves software governance. It also minimizes the impact on the code when necessary changes are made.

Pattern implementations can also transform code artifacts into design elements, enabling you to reconcile and trace them back to the original design specification throughout the development process. When you add connections that link elements of the design to the requirements, the pattern implementations are able to mimic these actions improving productivity and saving time.

This type of reconciliation has traditionally been done manually on a best effort basis. Automation eliminates these often poorly executed, tedious, mechanical tasks. Automation is more cost effective and enables you to produce higher quality components, services, and applications.

Since pattern implementations capture the knowledge, best practices, and experience of the domain experts who created the exemplars, they can be used by anyone on the team—even new team members or developers without the same level of expertise. When the intellectual property has been infused into the tooling, even if the experts are no longer with the organization, their intelligence is still part of the business. Furthermore, by leveraging this knowledge, you raise the skill set of the entire team. This enables everyone to operate at a much higher level of efficiency without needing to know how to recreate the solution manually. In addition, the development teams can focus their time and efforts on creating solutions to new problems rather than simply re-implementing old ones.

Tooling Maximizes Pattern Implementations
Using tools that employ pattern implementations allow you to focus your efforts on the essential aspects, variables, and elements of your design—and eliminates many of the repetitive and mundane aspects of software development. Implementing, using, and sharing reusable software artifacts, such as pattern implementations, are easier when assisted by tooling capabilities of products such as IBM Rational Software Architect.

IBM Rational Software Architect takes a model-driven approach to patterns. With the tools necessary to create, reuse, and execute pattern implementations, it's easy to codify and package best practices for reuse. Patterns, models, requirements, and other assets can be combined to form large-grained solutions, called recipes. Recipes contain the documentation on the use, organization and links between specified patterns, guidance for using patterns, and descriptions of any additional assets necessary for pattern implementation. Recipes enable you to align the output of one pattern with the inputs of another pattern.

Rational Software Architect stores patterns, recipes, transforms, and other assets in an asset repository. It provides the mechanisms to graphically represent your code, services, and assets in UML diagrams, so you can find, visually represent, and understand how all the components of your application fit together. An example of one such recipe from IBM is a collection of Rational Software Architect patterns and transforms called the SOA Implementation and Optimization Recipe, which manipulates UML models to produce and optimize services for SOA.

Within RSA you are able to create and use patterns implementations in a number of different ways:

  • Model to model transformations—allow you to leverage abstraction using multiple models to capture the relevant aspects of a solution. A transformation allows you to automate how you move between the levels of abstraction (either from more abstract to more detailed, or from more detailed to more abstract). The model could be UML or some DSL created using Eclipse Modeling Framework (EMF) and Eclipse's Graphical Modeling Framework (GMF) to view your model at a higher level of abstraction. As an example; model to model transformations can take you from a use-case model to a services model, from a data model to an analysis model, from an analysis model to a design model, etc.
  • Model to text transformations—allow you to generate text-based elements (or artifacts) such as WSDL, Java, DDL deployment descriptors, configuration files, configuration scripts, test scripts, etc., from a model at a higher level of abstraction. Model to text transformations allow users to specify high-level aspects of a system to be created in a model and generate a larger percentage of the solution. You can generate anything that is text based.
  • UML Patterns—When working within a model, you can use a UML Pattern to both automate and visualize the application of best practices. In contrast, both the model to model and model to text transformations are used to move between models (which usually exist at different levels of abstraction).
Pattern implementations are one of the most powerful software engineering tools you can use to improve development and productivity in your organization. Their use eliminates tedious, error-prone tasks, minimizes complexity and confusion, improves governance, and increases the overall quality of any type of software project. Pattern implementations are easy to use and allow you to respond more quickly and cost-effectively to changing business conditions. More importantly, they remove the repetitive software development drudgery, so you can focus on the tasks in software development that you enjoy most.

Additional Resources

Previous Page: Code Better with Patterns  
Rikki Kirzner is a freelance writer and veteran computer industry professional with experience as an analyst and former Research Director for IDC, Gartner Group, and Meta Group and as a Senior Editor with Open Computing Magazine. Rikki covers software, development, open source, SOA, and mobile computing.
Page 1: Code Better with PatternsPage 2: Why You Should Care About Pattern Implementations