On the other hand, designers have not attempted to address the second type of selection problem. That is, the problem of selecting among the same pattern that addresses the problem at hand, as shown in the Accounts example above. In design patterns, several factors can assist in choosing the appropriate pattern for such situations. One of these factors relates to the implementation issues. The implementation language used in the development of a project could make the implementation of one pattern look less complex, compared to the other. Thus, a decision on which pattern to choose becomes more obvious and apparent.
Another aspect that might help in choosing the appropriate design pattern relates to the solution that it proposes, and how it resolves the forces of the problem it solves. It is very hard for one solution to resolve all the forces of the problem it solves. Therefore, different designs may weigh the forces of the problem in a different manner, which is the normal expectation. The developer can then decide on which pattern to choose, depending on which forces are more critical to the system.
However, choosing the suitable design pattern is not that straightforward nor is it very easy, even with the guidelines described above. There are still many problematic issues, which are associated with making the right decision. For instance, we should remember that patterns aim at helping novice developers, as well as seasoned and skilled professionals. Therefore, with the assumption that the design patterns described only for the novice and average OO developers, it is still difficult to distinguish between different design solutions. Most of the decision-aiding factors require some level of previous experience. It might not be too obvious for a novice developer, how different forces conflict with each other, and which are the most critical forces for the system.
With analysis patterns, the situation is far more complex. Unlike design patterns, where decisions directed at choosing the appropriate design, the choice between different analysis patterns is a matter of finding the right analysis, instead of the appropriate analysis. Consequently, designers make decisions based on validating the different patterns, and examining how accurate they are in modeling the corresponding problem. Without considering time as a critical factor in analysis, validating analysis patterns is not a defined or systematic process to apply. Thus, it is very difficult to guarantee the right type of decision. Therefore, patterns will lose their main advantage of being an easier way to develop systems. Moreover, novice developers will most likely not have the adequate experience for examining different analysis models and choosing the right one.
In conclusion, there should be processes that are more effective or relevant tools that help developers to select the right patterns for the given job. These processes and techniques should not be restricted to specific kinds or groups of patterns, as is the case today.
References
[1] M.E. Fayad. Stable Design Patterns (SDPs) (BASE)” Aeeh Press, Inc, San Jose, CA. December 2024
[2] M. E. Fayad. “Stable Design Patterns for Software and Systems” Boca Raton, FL: Auerbach Publications, Taylor & Francis Catalog #: K24656, September 2017. ISBN-13: 978-1-4987-0330-7
[3] Vivek Wadhwa is an Indian-American technology entrepreneur and academic, Wiki
[4] Gamma, E. et al., Design Patterns: Elements of Reusable Object-Oriented Software Addison-Wesley Professional Computing Series. Addison-Wesley Publishing Company, New York, 1995.
[5] Buschmann, F. et al., Pattern-Oriented Software Architecture, A System of Patterns, John Wiley & Sons Ltd, Chichester, 1996.