Vishwamohan

Welcome to Vishwa's blog - Technology, Spirituality and More...

Pros & Cons of Designing Application using OOA vs. SOA

In many organization, it is asked how would we benefit by taking this particular approach of Designing and Developing Application. It can be a brand new application or porting a legacy code. In most cases organization wants a quick solution to address the immediate need, some may come back later and rework in a phased approach but some just keep moving with quick and dirty solutions until a situation demand for real upgrade or rewrite.

 

As we all know, there are different application design patterns evolved over period of time, no one pattern is best in every situation but some of them stood out and consistently used even today. I would focus mainly on three different designs, which indicates an era in its own. However they are being still used today. They are – Procedural, Object Oriented and Service Oriented Designs. Many people would ask what would be the pros and cons of using one over the other, so I thought to come up with comparison chart, and here it goes.

 

Area

Design and Development

 

Procedural

Object Oriented

Service Oriented

1. Reuse of code

&

Resource

Limited to None

(Localized to Page, method, process or stored procedure, generally customized according to respective requirement)

Highly reusable but limited to internal consumers only(closely coupled with application)

a. Business Objects are Centralized

b. Business Process and Logics may be Centralized

c. Generally same cached data can be used by the respective server consumers only

Highly reusable and can be used by Internal and External consumers by design

a. Business Objects are Centralized

b. Business Process and Logics are Centralized

c. Standard communication Channels with diverse options become available to ensure the respective change or new capability of the service to get uniformly distributed to its consumers

d. Same cached data is shared among different consumers calling from different platforms

2. Interoperability

None

None or Limited to same technology

(e.g. Even within Microsoft Platform a .NET Component cannot be reused in Classic ASP)

Highly interoperable by design and technology neutral, thus it can be used by diverse technology platforms

3. Organizational Agility

None

(Any new business change will require refactor of the code completely)

Medium

(Any new business change will require, modification or extension of objects)

High

(Services capability can be composed, extended or concurrent capability can be provided to address new requirements while keeping the old one as it is)

4. Security

Lowest

(Tightly coupled with application)

Low to Medium

(Coupled with application but also logically abstracted in objects)

High

(Can be customized as per need, decoupled from application and service security can be independently governed as needed)

5. Scalability

Lowest

(Only allows Vertical scalability without redundant install )

Low to Medium

(Mostly allows vertical scalability without redundant install or Business objects designed to be used over network)

High

(Allows both vertical and scalability with or without redundant install)

6. Performance

Low for Complex Application

High for Simple Application

(As it depends on several factors – usually applications are tightly coupled from UI, Business Logic and Database which makes it difficult to abstract & individually optimize certain part of the process)

Medium for both Simple of Complex Application

(Since major objects, functionality and data layer are usually abstracted, it is easier to optimize for better performance)

High for complex Application

 

(A Process is centralized and reused by different consumer consistently)

Low for Simple Application

(A Process has to unnecessarily pass through several steps and perform data transfer to do a simple task

7. Development Time

Fastest(X)

Generally 1.5 to 2X depending on size & complexity of project

Generally 2 to 2.5X depending on size & complexity of project

8. Development & Infrastructure Cost

Low

(No specialized skillset required for this type of development, application can be deployed on just one box)

Medium

(Specialized skillset is to implement object orientation principles and application may be deployed on more than one machine)

High

(Very specialized skillset required to understand the service oriented principles to implement the design appropriately. Multiple machines are usually involved as it is naturally fall under distributed application architecture)

9. ROI

Highest in short term

 

(Usually in 1st Year because immediate business needs were quickly addressed)

Lowest in long term

 

(Usually after a year the value starts going down due to lack of reuse and rework to redeliver new business needs)

Moderate

The value always stays in the middle due to internal reuse of the components

Lowest in the Short Term

 

(Usually in 1st year due to more time and money spend to develop a functionality, centralized logic and process)

Highest in the Long Term

(As time passes by and more and more service operations and processes are reutilized, the cost of development time is saved

10. Interruption in application uses during deployment

Users will be always kicked off

Users will be kicked out if Business objects deployed along with application.

Users will less likely to be affected

Loading