Every organisation that develops software wants to minimise the work needed to build new IT systems. But no matter how effective a development process may be, a real reduction in the work will only be achieved if one stops reinventing the wheel and starts reusing software.

So here’s a new project for chief software architects: reuse software rather than building it from scratch. In today’s market of dropping rates and shrinking margins, this approach has never been more relevant. And even though the route to successful reuse can be quite long, it is definitely the way ahead for anyone who is serious about software development.

The first step is to clearly define standard technology stacks and design principles. The next stage is to create the executable core architectures into which individual components can be plugged. Both steps require careful analysis and planning. Even slight deviations in the choice of technologies or the design could render the components completely incompatible.

Without this technological and architectural alignment, it is unrealistic to assume that a module built for one system will run smoothly with a module built for a different one. That is why it is critical to put considerable effort into defining core architectures and to start planning reusable components from day one, rather than leaving them for a later phase once the development project is running.

What is needed to make software reuse a reality?

  • Make it a key activity and not something to do when things are less busy.
  • Management that empowers its people to encourage reuse.
  • Define standard technology stacks and core architectures to facilitate component consistency and increase reuse potential.
  • Components that are part of a living portfolio which is governed and managed by specific processes and tools, while at the same time controlled by strict quality standards.

Software reuse is definitely worth the effort. It reduces development work in two ways: you don’t waste time making something that already exists and because you are using tried and tested building blocks you avoid bugs. On top of that, promoting best practices and replicating successful solutions leads to knowledge sharing. A final important point is that developers love building elegant code and a joint collaboration is a great boost to team spirit and job satisfaction.

Constantinos Simatos, Senior Solution Architect