What Are Design Pattern Rationale Graphs?
Design patterns have shown to be proven solutions to solving common software design problems. Design pattern rationale graphs visually connect related bits of codes and concepts found inside of a software system design pattern. The intent of DPRG is to increase the reader's understanding of the design pattern being presented.
-
Purpose
-
Software engineers aiming to solve problems, and evolve their existing software systems, can use design patterns to find out what code changes will lead to specific design patterns. For example, an engineer can better assess the flexibility of his existing code infrastructure faster than doing it manually. The visualizations of the code structure allow the engineer to trace roots of code and highlight design concepts in the existing code.
Source Code Evolution
-
A key benefit of creating a design pattern rationale graph is that it reveals the reasoning behind specific elements of your code design, thus allowing you to find out what mistakes and good decisions you made. Further, it allows the engineer to develop more confidence in how he can better achieve software system design goals. It also enables developers to have a more thorough knowledge of the software system.
-
Difficulty of Design Pattern Rationale
-
The complexity of a software system can be reduced if its engineers better understand the rationale behind certain architectural system decisions. The reason for some design goals can be more abstract and not necessarily quantifiable, such as usability. Some design goals, such as memory allocation, can be more evident. Software system design decisions impact multiple parts of a program, so visualizing the interaction facilitates a better understanding of the overall system.
Graph Formation
-
The DPRG graph is formed by examining the text of the design pattern documentation, which is usually the code base. The DPRG then enables developers to view design pattern information that's relevant to individual design goals, then consequently trace those goals to the corresponding bits of the entire code base.
-