application complexity grows over time, application architecture becomes more important. A carefully selected architectural style can help address the complexities of interoperability, distribution, compatibility or adaptability. Together, component-based and service-oriented styles are addressing the more complex and enterprise-wide concerns for application developers today.
When a developer evaluates and selects open source ingredients for an application, aligning architectural style between the application and its open source choices is important. This allows for better absorption, integration and functional growth, thus creating a more cohesive and easier to maintain application. As the complexities of functional and extra-functional requirements increase, so does the value of using and building software whose styles are more component- or service-oriented.
A well defined architectural framework supports the selected architectural style. An architectural framework can address the critical concerns for constructing applications that must exist within an enterprise-wide context. A good framework enables the selection, integration and deployment of best-of-breed ingredient technology (open source, commercial, etc.) required to meet changing business concerns without significantly impacting functional development.
Therefore, implementing an architectural framework allows the developer to retain architectural control of his application by remaining technology independent, address critical and strategic concerns, and free to swap open source ingredient technology ‘A' with open source technology ‘B' when needed without major rework or refactoring.
This may sound a little preachy, but the fact is that many application developers do not generally take the time or are ignorant on how to protect themselves from open source train wrecks. Small- to medium-sized application development teams tend to lock-in tightly with open source solutions, only to find out too late they are in trouble when their open source selection goes stale or inadequate support is realized. An architecture framework is extremely important to be able to change ingredient(s) with little or no effect to the rest of the application. This is critical for enterprise-wide applications (distributed, highly available, redundant) - but may be outside of the realm of most application developers' focus.
Many open source communities promote best practices in their software, making it easy for developers to absorb their software into an application and into a development environment. Open source projects typically demonstrate:
- Agile-centric development. Aids integration of open source projects' sporadic release cycles into the application environment through continuous build processes. Captures issues early and often with a test driven harness
- Component-based development. Makes it easier to control the complexities of component integration (open source, internal and/or commercial) during development and deployment. Promotes autonomy and cost effectiveness.
- Single purpose discipline. Seeks open source technology that is built to address a specific requirement. Avoids stretching the boundaries of open source software to fulfill a requirement it is not fully capable to perform.
- Separation of concerns. Applies appropriate architectural style and framework for the application and its runtime and development environments to protect the functional development activity from the volatility of ingredient technology change - a major contributor being open source software.
By applying an architecture-centric approach a developer's open source strategy can successfully address the challenges of open source software. The benefits can also be extended in a sustaining and repeatable manner by equipping the application's development and runtime environments with an architecture that promotes longevity and technology independence, whenever open source projects come available or fade away. An architecture-centric approach ultimately supercharges an application making it adaptive to a myriad of demands, able to deliver when needed at a price point that the business can afford.
An architecture style and supporting framework can enable the integration of different frameworks, styles, and standards found in many proven