The graphic below is an over-simplified, yet representative view, of the emerging software stacks (i.e. layers) concept. The premise is that layers lower in the stack have no knowledge of layers above them. This approach embodies the “separation of concerns” abstraction. The top three layers represent where you add value and where you are likely to leverage enabling technologies for competitive advantage.
The only architecture that matters resides within this layer. It embodies the XYX architectural framework and represents how we do architecture around here. This layer should provide an architectural abstraction of your commercial plumbing layer, not because you will be replacing it anytime soon (you won’t), but because it simplifies the layers above it. How? Largely by codifying decisions related to the base services that commercial plumbing provides:
and so on. In a sense this layer rationalizes the commercial plumbing layer in a manner that makes sense for your organization. If this layer is missing then your development teams will need to make thousands of design decisions every time you require a new wiz-bang app. The impact on the DIP should be clear by now. The more decisions you need to make the longer development will take, often by orders of magnitude. In addition, you will require a small army to support disparate implementations.
It should be obvious that commercial plumbing vendors, or anyone else, will not be able to provide this layer completely off the shelf. However, industrial strength component parts are available and should be leveraged. This layer is almost always ignored as corporations rush to build apps. The reasons for this are obvious. XYZ Plumbing will not result in any visible competitive advantage in the short run (i.e. the next two financial quarters). In fact, its implementation could slightly delay the delivery of XYZ’s next killer app.
Look into the future five years and it will become apparent which organizations built this layer. It will largely determine the winners from the losers for all the reasons covered in the introduction to this chapter.