Sunday, January 31, 2010

Many Development Methodologies - Which one to choose, Hyrbid might be the ANSWER

Well, the time has changed like the speed of sound since the era when Waterfall model was considered to be best methodologies for Software Development.

But now in new information age, where frequently changing user requirements, challenging timelines, tight budget and competitive bids are driving factors, IT industry offers many methodologies namely Prototyping, Spiral, RAD, Rational RUP, Agile (Scrum, XP, DSDM - Dynamic System Development Method, FDD - Features Driven Development, Lean Software Development) and the list goes on.

Considering all the available options as Development Methodologies in today's world, it is increasingly difficult to choose a single methodology for all your projects inside a single organization. But having multiple methodologies in a single organization generally creates chaos and obscures roadmap for future projects.

"A slightly different approach to tackle this challenge is to adapt best practices from short-listed methodologies, which suits best for your organization and formulate a hybrid-development methodology specific to your organization."

To illustrate, lets imagine a Development Methodology, which has following features:
  • Sprint approach of Scrum for handling features/requirements in quick turnaround
  • Daily Scrum (or Standup Meeting) to check progress of the project
  • Feedback, Continuous Integration approach of XP
  • Monitoring/Control of Waterfall SDLC (specially of larger projects)
  • Eliminate Waste of Lean software development
Though it needs a considerable amount of research and analysis for any organization to formulate such a hybrid development methodologies, it will pay-off in long run and established a clear roadmap for future development.

Thursday, January 7, 2010

Compare Persistence Mechanisms in Java using factors: ease of development, performance, scalibility, extensibility & security

 
 





Ease of development




Performance




Scalability




Extensibility




Security

Entity Beans - CMP

High – Bean developer concentrates on business
logic; persistence logic provided by EJB vendor

High - Application programmers delegate the details
of persistence to the container, which can optimize data access patterns for
optimal performance.

High – Container provides scalability
(configuration based)

High

High – Container provided

Entity Beans - BMP

Low – Bean developer is responsible for providing
persistence logic.

Uncertain – Depends upon the proficiency of bean
developer

High – Container provides scalability
(configuration based)

Low – Bean developer’s persistence logic needs to
understand by others.

High – Container provided

JDO

High – Bean developer concentrates on business
logic; persistence logic provided by JDO vendor

High - Application programmers delegate the details
of persistence to the JDO implementation, which can optimize data access
patterns for optimal performance.

High

High

High

JPA

High – Bean developer concentrates on business
logic; persistence logic provided by JPA vendor

High – Best ideas from ORM (Hibernate,TopLink)
and JDO

High – Container provides scalability

High - supports the use of pluggable persistence
providers

High – Supports Standardized Security Model (Java)

ORM Frameworks

Medium – Reduces development time

Depends - some O/R mapping tools do not perform
well during bulk deletions of data

High-to-Medium – Depends on ORM vendor

Low – Non-standardized

Medium-to-High – Depends on Vendor

DAO with direct JDBC

Low – Bean developer responsible for persistence
logic.

High-to-Medium -
But Depends upon the proficiency of bean developer

Medium-to-High – Depends on expertise of Developers

Medium-to-High – Depends on expertise of Developers

Medium-to-Low – Needs to be handled by bean
developer