Specialization design considerations
Ensuring extensibility and scalability in software applications is crucial to accommodating future changes, growth, and increased user demands. The extensibility of applications should not compromise performance and security. The time, cost, and effort required for extensibility should be considered while designing and building an application.
To ensure that Rules are extensible in Pega Platform™, always follow object-oriented principles and SOLID principles (Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, and Dependency Inversion). However, any principles that support modularity and reusability can be considered for application development.
The Situational Layer Cake approach
Applications built on Pega Platform follow a "layer cake" approach, which helps achieve modularity and reusability. As each layer fulfills the requirements of that level, adding one more layer on top of it simplifies the specialization of the layer. This concept is known as the Situational Layer Cake™.
The Situational Layer Cake is the backbone of the Center-out™ business architecture. The Situational Layer Cake structure consists of Enterprise, Division, and Unit Layers, where each layer wraps everything built at that level. For example, the Division Layer wraps all departments and their applications, reusable business logic, and anything specific to the department. Here, the term 'layer' refers to everything built at a particular level in the application stack.
The following figure shows an application stack using the Situational Layer Cake approach:
This figure shows organizational settings in applications. However, it is not necessary for the level above the enterprise layer to always be the Division layer. It can simply be a layer containing an application and reusable code built on an Enterprise layer. The following figure shows an application built on the Enterprise layer without using organizational settings, such as division or unit:
Specialized layer
Specialization or extensibility requirements are applied to either some of the code in the application or the whole application. The representation of specialization in the Situational Layer Cake approach is shown in these figures as a separate layer. However, that does not mean an entire specialized application must be created. The specialized layer can contain circumstance Rules, specialized classes, and Rulesets, or a specialized application. The specialization to be used is decided based on the requirements and the impact on performance and maintenance. The following figure shows a specialization layer as a pictorial representation of the level that contains the specialized code:
When considering specialization, be aware of the following items:
- A specialization layer is not a technical record or Rule to be created; it is just a representation.
- A specialization layer does not need to be specific to one type of application. Instead, it can support multiple applications across an enterprise.
- Circumstancing and class specialization techniques can eliminate the need to define a specialization application.
Technical aspects of specialization and summary
The code that you develop according to object-oriented principles is inherently extensible. In fact, Build for change® is Pega's philosophy, so Pega applications are highly adaptable to ever-changing business requirements. Pega Platform supports the concept of the Situational Layer Cake through specialization techniques. The specialization of an application refers to its extensibility and scalability. Extensibility is the ability to accommodate required changes and add functionality without requiring major modifications. In contrast, scalability refers to the ability to handle a growing amount of work, resources, and users without impacting performance.
Pega Platform supports specialization by circumstance, class, Ruleset, and application. Performance and maintenance are the two most important factors to consider when designing specialization techniques.
Check your knowledge with the following interaction:
This Topic is available in the following Module:
Want to help us improve this content?