It's taken me a long time to come around to the view that SOA was more than just early 1970's procedural programming wrapped up in an open transport protocol. I've been widely skeptical of all the claims that "SOA is a new way of building software," and "SOA is a whole new paradigm." All of this struck me as RDD (resume driven development.)
I liked this article in SD Times this week that pushes the notion that SOA is not about reuse. Some of the guys on my team have been telling me this for months. They've been pushing the idea that SOA is all about agility. The idea of software as swappable and replaceable blades.
And I've been replying that this might be all very well but I wanted to hear their reuse strategy. Reuse is still the best way of improving programmer productivity. Not writing code because you are reusing something that already exists is better than any alternative.
What's condensed from the intellectual debate that has ensued in the team these past months is the idea that we have a two pronged reuse strategy - a pincer movement on the enterprise services we're writing. The first is very traditional - basic good internal code quality based on structured methods, object and aspect-orientation. The second is leading edge - we're using Software Factories to templatize much of what it takes to create, manage and deploy a service, based on a schema, allowing the developers to focus on the business logic and behavior that belongs in the service - that business logic being written using the basic good internal code quality that comes from disciplined adherence to best practice in structured methods, OO and AO. The result is both code and pattern reuse, with automation of final code generation that eliminates defect insertion opportunities.
I'm finally happy that we have an ability to move forward with service-orientation for all the positive reasons (agility, flexibility) and avoid throwing the reuse baby out with the bathwater that came with the earlier generation of enterprise reusable component frameworks. Technorati tag: Agile, SOA, Service+Orientation, OO, Object+Oriented, Software+Engineering, Software+Factories