Applications should be designed so that they can be extended to include new functionality. Such a design usually means implementing functionality on a modular level and with extension hooks. If one module is enhanced, others can leverage the new extensions with minimal effort. Using extension hooks enables you to add functionality without breaking the implementation.
You can define the areas where you will make most of your customizations. Create a filter guide, or active link guide, where you can put your own customized workflow that automatically starts in the context of a particular action. Doing so defines a known interface where you can make changes, and provides an interface for adding new functionality in future releases. For more information about guides, see Business logic objects.
You can also design applications so that they are more data driven. If there are areas where changing data lets a function perform in multiple different ways, then the functionality should be implemented that way. An example is auto-assignment. By entering in data, the auto-assignment functionality can run using different load-balancing methods.
When assessing extensibility, BMC suggests that you ask the following questions:
- Will a function be extended to perform new tasks in future releases?
- Can you configure this function to perform in multiple different ways with the data, rather than having to change the workflow?
- How many temporary (display-only) fields does this function require?
- Is this functionality implemented the same way on the client and the server?