Architecting for User Extensibility
May 2013 • Presentation
A presentation from the ninth annual SATURN conference, held in Minneapolis, MN, April 29 - May 3, 2013.
Software Engineering Institute
The Open/Closed principle tells us that we should keep software open for extension but closed for modification. Not only is staying open for extension a sound principle, but also it is being demanded as a feature for enterprise software solutions. Customers expect these solutions to act more like a platform than a point solution—a platform on which they can extend and build their own tailored solutions.
To achieve the level of extensibility required to satisfy market demands, it is critical to use an architectural approach that does not bake in the "what" and the "how" of the system. That is, the problem domain's object model and behavior need to be completely externalized and extensible by the customer.
Extensibility itself is nothing new; however, in the past, extension primarily meant dropping in dynamically loaded libraries or using a few software patterns like Visitor. Now it is more commonly required that this extensibility be more systemic than applying a few simple patterns.
The customer expects to do much of the extension without touching code or files. Instead, the user largely extends the system through the UI, and those extensions are immediately available for use without a system restart. It is also expected that it be easy to migrate those extensions from a development environment, to test, and into production, all without impacting system availability and with a clean rollback capability.
The speaker is the architect of just such an enterprise platform with significant requirements around extensibility. The speaker will quickly outline the extensibility requirements that the platform meets and then explain a solid architectural approach to meet these extensibility requirements.
The attendees will
- gain insight into the general value of externalizing the object model and business logic
- gain an understanding of the architectural approach utilized to implement the extensibility
- see a few brief examples of how easily the customer can extend such a platform