Welcome!

Java Authors: Michael Sheehan, Maureen O'Gara, Jonny Defh, Suresh Krishna Madhuvarsu, RealWire News Distribution

Related Topics: SOA & WOA, Java

SOA & WOA: Article

Agile Methodologies to Improve SOA

Leveraging ‘Agile SOA’ can get you back on track to attaining your SOA dreams

Recently industry analysts, press, and bloggers have been writing about the state of service-oriented architecture (SOA) and whether it's "dead" or in the "trough of disillusionment."

These discussions have been fueled by surveys that suggest a decline in the number of organizations considering SOA, or that organizations have evaluated, but decided to shelve SOA for the time being. Or, even worse, that after an initial investment in implementing SOA architectures, organizations have been unable to capitalize on these investments.

So, what's happening? What were these companies expecting and where did things go wrong? More importantly, can anything be done to put things back on track?

Let's review the original promises of SOA and the most likely culprits in its perceived demise. And after all the doom and gloom, I'll suggest how practitioners can revive their SOA dreams and turn them into a new and valuable reality by introducing Agile technologies as a part of your SOA development methodologies. We'll call this Agile SOA.

The Promise of SOA
The promise of SOA is essentially the promise of agility for a company's IT landscape as defined in three main categories:

  1. Flexibility: By using SOA, technology reuse of legacy and existing systems in the enterprise becomes possible. The premise is that by using SOA you can create flexibility (agility) in systems at the front-end while reusing existing legacy systems at the back-end.
  2. Productivity: SOA will enable higher productivity by helping companies react faster to changes in their business processes and providing the possibility of delivering new applications more rapidly by reusing existing code.
  3. Expandability: SOA creates the possibility of new business applications while reusing existing systems and ensuring that the business value encompassed in these legacy systems is (re)used and expanded. SOA transforms point-to-point integrated environments into a more service-oriented architecture that in turn encourages scalability.

So, Where Did Things Go Wrong?
Early adopters embraced SOA practices and forged ahead toward implementation with the promise of flexibility, productivity, and expandability as their goal. However, many of these companies failed in delivering on SOA and value to the business.

So, let's examine what might have gone wrong with some of these SOA projects. Here are the top four likely culprits:

1. Misconceptions About SOA
Ask a question and you're likely to get several different answers to "What is SOA?" According to one very broad definition:

A service-oriented srchitecture is essentially a collection of stateless services. These services communicate with each other. The communication can involve either simple data passing or it could involve two or more services coordinating some activity. Some means of connecting services to each other is needed.

However, some people only think of a Web Service (WSDL) when thinking of SOA, and because of this misconception, there can be a lot of stuff considered "SOA-enabled." Others believe that implementing an Enterprise Service Bus (ESB) brings you to a SOA state. And then there are the software vendors proclaiming their products to be SOA-ready, which typically means they've exposed some Web Services. However, these are often too fine-grained to be called services and are delivered as one size fits most to satisfy the general marketplace. These services are usually more oriented to building the technology infrastructure and, initially, don't deliver any new functionality to the business.

Organizations that purchase SOA-ready products must build a specific layer on top of the product's technology to make it align with their company - without doing this, the chances of the SOA project failing are high.

2. Lack of Business Commitment
Most SOA projects are driven by someone in the IT department. The CIO, enterprise architect, or IT manager believes that SOA might be a solution to their ever-present problems - slow delivery; ever-increasing project backlog; or enhancement requests to legacy applications. This person directs the developers to build applications based on SOA principles. The problem with this is that there's typically a lack of commitment from the business. SOA isn't a technology that can be introduced without visibility to the end user. SOA requires commitment from the business because it touches many different systems across multiple departments.

If any part of the business fails to sign up to the SOA way of thinking, the chain is broken and, once again, SOA fails to live up to its promise.

3. Lack of Funding
Starting a SOA project can be a costly exercise. First, there's the cost of technology. You'll need a platform with which to build your services, security, wrappers for existing systems, etc. Then, there's the cost of expertise and initial SOA projects that typically equate to steep learning curves and require high levels of commitment. This can be done by hiring experienced people or a consulting partner. Either way, you have to include this in your budget.

Remember, the first project is usually the project that puts the SOA architecture and its technologies in place; it doesn't deliver the promised business application services. Getting funding for projects with a high business value is difficult at the best of times - and getting funding without immediate return is almost impossible in today's economy.

Implementing SOA without the appropriate budget or support from the business for the expenditure is another cause of failure.

4. Project Execution
Most SOA projects are managed and executed using Waterfall-style project methods. This means defining a project whose duration is from nine-12 months in which the whole SOA infrastructure is defined, coded, and in the end implemented.

This top-down approach to implementing SOA delivers neither immediate value nor working business applications for two reasons. One, there's little end-user involvement, which increases the risk of failing to meet the true business needs of IT or the business. And, this approach doesn't take into account that the world, and the requirements, usually change over time. It's a common misconception that when all required services are defined upfront that the need for change will be minimal. This misconception existed for object orientation and is equally true for SOA.

Services will change, so the technologies used for a SOA implementation must be flexible and support change. If the architecture used to implement SOA is not agile enough and inflexible SOA will fail.

Can These Issues Be Resolved?
How do we solve these issues and get SOA users to climb the path to enlightenment? How do we get commitment from the business, free up funding, and make sure we have a flexible SOA that speeds up application delivery times?

The focus needs to shift away from issues of implementing a new technology architecture to delivering tangible benefits to the business for every project, namely:

  • Improving alignment with the business
  • Accelerating time-to-market of business applications
  • Reducing the cost of building and managing business applications
  • Providing flexibility to respond better to changing business requirements
  • Reducing project backlogs

The answer is introducing Agile technologies as a part of your SOA development methodologies; we call this Agile SOA. Agile SOA is the bottom-up approach to SOA development.

Now, it may seem a bit strange since SOA architecture is widely seen as something that doesn't really fit well with an Agile approach. After all, the common perception of Agile is that it works best when there are lots of fuzzy requirements and user interaction. A SOA implementation seems to be just the opposite, it's definitive in its requirements and IT is usually the sole sponsor. In addition, there's a widespread perception that taking a bottom-up approach to a SOA project isn't practical.

Through our interactions with customers, OutSystems found that these perceptions are easily avoided. Based on our experience, success starts with setting the appropriate strategy for the SOA project:

  1. Do not buy a product to SOA-enable your business. Every company has its own specific processes that need to be defined as services in their unique way.
  2. Make sure that your base architecture will let you define services that aren't too fine-grained.
  3. Spend time to find the right technology to support your ever-changing environment.

Once the technology and architecture are determined, the next most important issue is getting business commitment.

This means demystifying SOA for the business and transforming SOA from a technology into a business benefit. This can be achieved by keeping in mind two key points:

  1. Perceived business value is high when real-world issues are solved. So, find a project that will solve a real business issue and contribute to a part of the SOA infrastructure layer. Try to find a project from the backlog that needs to (re)use data and business logic from existing systems.
  2. Make sure the project can be delivered less than three months. This limits the budget risks for the user and ensures the business won't change too much during project execution. Plus it sets you up to run additional short-lived projects that can begin to leverage and reuse existing services. The business will rapidly see an improvement in time to delivery and perceive benefit from this thing called SOA!

All these things will help you get commitment and funding from the business and enable you to get started on implementing a solid SOA architecture.

There's one last thing.

To ensure that what you deliver provides the necessary functionality and is accepted without organizational blockage - you must involve the end user in the project. Then, and only then, are you doing Agile SOA!

Agile SOA will help you get commitment from the business, help you fund the project, and reduce the risk of failure. Agile SOA especially helps you realize the advantages of a SOA infrastructure when budgets are tight, while at the same time delivering business value. With an Agile SOA approach you'll avoid the troughs of disillusionment or the death of SOA and ascend straight up the slope of enlightenment with a successful SOA implementation.

More Stories By Tony van Büüren van Heijst

Tony van Büüren van Heijst is a senior pre-sales consultant at OutSystems, responsible for supporting OutSystems customers, prospects, and partners in Northern Europe. Tony specializes in advising organizations on how to apply Agile technologies to develop processes and effective SOA infrastructures. With more than 15 years of experience in IT development, he has been involved in multiple aspects of the application lifecycle as a consultant, project manager and now pre-sales.

Comments (1) View Comments

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


Most Recent Comments
chriscmuir 05/13/09 09:42:00 AM EDT

Hi Tony

Thanks for your article, I appreciate its depth and summary of the SOA state of affairs.

Some constructive criticism I'd like to put before you to hear your opinion please

I often find the why-SOA-fails message shallow. To explain why:

In addressing your first failure point "Misconceptions About SOA" – SOA vendors, consultants etc seem to spend a lot of its time saying "but you don't understand SOA". If SOA can't define itself technically, architecturally or as a paradigm "simply", and there's frequent confusion, it stands to reason SOA is badly defined or overly complex. If SOA hasn't worked out its "message" after near 5+ years in the IT industry, it's probably never going to.

In addition in addressing your second failure point "Lack of Business Commitment" – I think I'd be on safe ground to say business commitment is driven by need and understanding of that need. As we're so often asked in IT, what's the business cost-benefit for your solution? If business can't see the need or direct savings of SOA, which is driven by business can't understand the "message" of SOA (as per #1 "what is SOA?" or "SOA is a weekly defined concept anyhow"), is the fault that of business commitment or is the fault in the hands of SOA?

Finally addressing "Lack of Funding" – is there any surprise if the organisation doesn't understand SOA, the business doesn't understand the need or commitment for SOA, that any effort to set a budget will be based on false facts and assumptions and will be underfunded? Project management dictates bad or poorly defined requirements means project overruns requiring greater funding to see the project straight. At the point the SOA project crumbles because the extra "funding" isn't there, should the blame be put at "lack of funding" or the feet of SOA in the first place.

So my question to you isn't the whole problem with SOA, SOA itself? Not all these other failure points, they're just symptoms of the original problem called "SOA".

Btw, all of the above doesn't imply SOA can't succeed, it surely can (and I'd be stupid to claim otherwise), but the point is when it fails, the reasons why it fails need to be revisited.

Regards,

CM.