Component Based Architectures
Software reusability: myth or reality?
The concepts of design for reusability and design for extensibility have been covered by many books in the last fifteen years. However, when it comes to the Java Enterprise application we develop and use every day, how many times have we seen these ideas translated in a clean, easy and working architecture?
There are many reasons why applications end up being monolithic, hardly maintainable and impossible to reuse: time constraints, customer specific business logic, developer turnover are the usual suspects. However, the most important reasons are the lack of proper tools and of a disciplined methodology to enforce modularity. The adoption of a real, industry-proven dynamic module system for the Java platform like OSGi is the first step towards building real modular architectures that can be reused in your projects or in your line of products.
Besides real-world software reuse, a dynamic modular architectures brings many advantages:
- Reduxed Complexity - Modules are well defined piece of code; boundaries are clear: most part of the code is invisible to other modules, only interfaces are published
- Easy of deployment - Module distribution (in your local PC, embedded devices, in your cluster or even in a cloud of Amazon EC2 nodes) can be managed centrally using standard protocols
- Versioning - Module versions are explicitely managed, and different versions of the same module can run, side by side, in the same application
- Dynamic updates - Modular applications can be remotely upgraded, piece by piece, without causing any significant downtime in the whole platform







