The OpenEdge Reference Architecture (OERA) describes an overall structure and pattern for the architecture of modern applications, but does not in itself specify any particular implementation. Progress Software (PSC) has generated a series of whitepapers over recent years which discuss various aspects of this architecture with some sample code, but this code is limited in scope and there is no pretense of it illustrating production-ready techniques. More recently, PSC introduced AutoEdge, an “application example” meant to illustrate one way in which OERA principles might be applied in a real application, but it too is built on a number of simplifying assumptions and does not pretend to offer production ready code on which customers might build real systems without significant further work.
With the exception of three very recent whitepapers, all of the sample and example code has been built using procedures, albeit with some “imitations” of object-oriented (OO) design principles. However, since OpenEdge release 10.1A over a year ago, the Advanced Business Language (ABL) has contained true OO capabilities. This raises the obvious question, particularly since the broader world of software design patterns and tools is dominated by OO, of whether future sample and example code should utilize the OO features in ABL.
The three recent whitepapers and associated webinar dealing with using OO for OERA suggest that PSC believes that some form of guidance on using OO in these contexts is an appropriate goal to which PSC should commit some resources. However, the models presented in these materials do not conform to generally accepted OO design principles. Instead, they present a sort of hybrid model with some OO characteristics, but which also makes use of ABL features for handling data in a relational fashion, rather than in an object fashion. I have questioned the desirability of this approach in forums on the Progress Software Developers Network (PSDN) and it is the intent of the current writing to explore this question more fully.
There are a number of interrelated questions which arise in examining the question of whether and how to use OO in OERA sample and example code. These include:
- What are the pros and cons of the various ways in using or not using OO for samples, examples, or production code?
- Should PSC be selecting a best practice strategy from among these options to advocate exclusively going forward or should it create materials using multiple strategies?
- Should there be an “AutoEdge 2.0” which incorporates lessons learned and possibly illustrates a different strategy than the one used in the initial AutoEdge?
- Is it desirable for PSC to attempt to create production quality examples or even framework components or should PSC confine itself to the current level of samples and examples?
Download document to read the rest.