Here are some of the frequently asked questions in regards to PBE:
Q. What’s the difference between a pattern implementation and a pattern specification?
A. A pattern specification is the formal written documentation that describes a pattern. This is the more traditional approach that’s been followed in regards to capturing patterns. A pattern implementation is the codification of a pattern in tooling – thereby automating the application of the pattern. There are a number of different ways in which we can create pattern implementations. In addition, there are a number of tools available that can help us to create pattern implementations.
Q. Do I need to use tools from a specific vendor to apply patterns?
A. No. As a matter of fact you do not need to use any tooling at all. As mentioned in this posting, there are two main types of patterns – pattern specifications and pattern implementations. Pattern specifications are the formal written documentation that describes a pattern. In contrast a pattern implementation is the codification of the pattern in tooling – thereby automating the application of the pattern. Within PBE, ideally we use a combination of pattern implementations and pattern specifications. However, we can use just pattern specifications – and thereby avoid the use of any tools to create pattern implementations. And when we decide to use pattern implementations we are not bound to a specific vendor. In one of the annexes of the book we list some of the available tooling (open source and commercial) available to create pattern implementations.
Q. So should I just use Pattern Specifications?
A. No – ideally we would use a combination of pattern specifications and pattern implementations. We look to add pattern implementations to the mix as they boost productivity, reduce errors and support governance. Being able to automate the application of the pattern is fast, is consistent, and can be validated with tooling. And on the flip-side, we also don’t want to focus on pattern implementations to the exclusion of pattern specifications. Both are important and a balanced approach is the best path forward.
Q. How do I find patterns?
A. A good place to start is to review the Find Project Patterns task from the PBE Practice. As highlighted in the task, we can look to find and reuse existing patterns – or we may look to find new patterns. For existing patterns, sources spread from books, to articles to websites, but there is no common portal or easy way to find patterns. A current, in progress project for creating a dynamic online catalog of patterns is available at Grady Booch’s architecture handbook website. This project provides pointers to published patterns and also provides a classification of these patterns to make their discovery easier to users. For our own organization, we may wish to create a repository of patterns that are especially useful to our domain and needs. This repository could be something as simple as a wiki, or may be as involved as hosting an asset repository.
When looking for new patterns, we first look at existing gaps in our pattern portfolio. Do we even need to capture new patterns? If a gap does indeed exist – and there is a need and value in filling that gap, then we can start to look for a new pattern. Some of the places we would look include investing whether there is an opportunity for a compound pattern, scrutinizing the frameworks we use looking for recurring occurrences of best practices, reviewing organizational best practices and tribal knowledge, and investigating whether our subject matter experts are fielding the same questions many times over.
Q. Which is more important – producing patterns or consuming patterns?
A. This is a bit tricky. There are already thousands of patterns available. And as an industry, we struggle in using patterns effectively and efficiently. With that in mind – we have to say that we need to put much more importance and effort into how we consume patterns. If patterns are created but never consumed we’ve failed! Coming in a close second is the effort that we put into identifying and creating patterns. Essentially we need to create a mindset and organizational culture that is always on the lookout to use patterns – and for opportunities to create new patterns.
Q. What is the most important aspect of PBE?
A. The most important aspect of PBE is creating a culture that is aware of patterns, recognizes where patterns can be used, identifies opportunities to create patterns and places value and importance on reusing the patterns.
Q. How do I get started with PBE?
A. You can consult the PBE practice and pick out a subset of tasks that you can use as you ramp up. A positive aspect of this approach is that the tasks from the practice will help relate the roles, work products and patterns and guidelines to help you succeed with PBE. But as every process/practice the devil is on the details. You should not try to implement every task/role/work product but adapt it to your needs. The tasks to start within include: Find Project Patterns, Design a Pattern, Build a Pattern Implementation, Use a Pattern, and Capture Reuse Metrics.
Q. What is the PBE Practice?
A. The PBE Practice is a software development practice. Think of it as a development process component. When we define a software development process for our organization we can pick and choose the components that make sense for our situation. The components may come from vendors, the community or be self-sourced.
Q. Do I need to buy any tools to work with the PBE Practice?
A. Nope. In the Downloads widget, we’ve supplied a published configuration of the practice that can be viewed in any standard web browser. In addition, we’ve hosted a copy of the practice ourselves, so you can view the content without having to download the configuration. If you need to customize the content, integrate it with other process components – then you can look at using Eclipse Process Framework Composer (EPFC). It’s free and open source.
Q. Can I reuse or update the PBE Practice?
A. Yes – we hope that you do. In addition to making a published configuration of the practice available, we’ve also provided you with the option of downloading the source plug-in. This allows you to update and enhance the content as needed. You will need a tool such as Eclipse Process Framework Composer or Rational Method Composer to perform the editing. Before making changes, you should review the licensing terms for the content.
Q. How long does it take to create a pattern implementation?
A. Usually we find that the challenge is not in learning how to create a pattern implementation, nor building a pattern once you’ve learned the requisite skills. The challenge is in finding your patterns – those proven best practices. This can take some time to find them and then ensuring that they truly represent the best practice. Once in place, it becomes much more of a mechanical effort to create the automation.