OOP in BPM
BPM is still something of an exotic animal compared to most other IT tools. BPM tools represent a blend of features inherent in 4th generation programming languages with some tools such as Pega's PRPC adding a strong flavor of 5th generation facilities. In the rush to distance such tools from the practices employed by developers of 3rd generation (Java, C#, C++ etc.) object oriented applications, BPM developers have so far failed to emphasize those computational best-practices that still apply to application development using these new tools. The promise of these higher-level generations is to remove the programmer from the development chain; perhaps this promise precludes those mental models that require professional mentality to understand and exploit. Whatever the case, we Knowledge Warriors are clearly members of the professional caste of BPM practitioners and, as such, will need to balance best-practices in computation with business savvy.
Object Oriented Programming techniques as a computational best-practice are very much germane to our development of BPM-enabled applications. By extension, OO Design Patterns should also be part of our toolbox. For a good, basic intro to OO Design Patterns that a quasi-geek can understand, check-out the book "Head First Design Patterns" published by OReilly. For a nerdier treatise, check-out the, now classic, "Gang of Four": Design Patterns: Elements of Reusable Object-Oriented Software.
I will try to give you a brief review of this thinking and draw parallels to PRPC development over the course of the next month. Here are the major OO Design principles to be aware of with links to some detailed articles on what each one means.
The first five principles are principles of class design. For the most part these OO Classes translate into PRPC Classes. The principles are:
SRP | A class should have one, and only one, reason to change. | |
OCP | You should be able to extend a classes behavior, without modifying it. | |
LSP | Derived classes must be substitutable for their base classes. | |
DIP | Depend on abstractions, not on concretions. | |
ISP | Make fine grained interfaces that are client specific. |
The next six principles are about packages. In our context a package is a unit of deployment rather than of programming: usually this means a RuleSet but might also be an Application or Product collection.
The first three package principles are about package cohesion, they tell us what to put inside packages:
REP | The granule of reuse is the granule of release. | |
CCP | Classes that change together are packaged together. | |
CRP | Classes that are used together are packaged together. |
The last three principles are about the couplings between packages, and talk about metrics that evaluate the package structure of a system.
ADP | The dependency graph of packages must have no cycles. | |
SDP | Depend in the direction of stability. | |
SAP | Abstractness increases with stability. |
Labels: Public
0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home