There are more methodologies in software development than possible solutions.
So the question arises, why one more methodology? Good question. Adaptive
Systems do not present a methodology per se, but a way of life that helps
organizations attain their goals by dealing with problems from a
project's inception.
All methodologies have five to six discrete tasks viz. Strategy, Requirements,
Design, Implementation, Testing and Deployment of software. Despite the best
intentions and a lot of effort, most software projects do not deliver the
initially specified system on time. The problem that clients often face, is
that even when a particular methodology is selected because its promise of
on-time delivery, seldom does it result in a complete system, even after
incurring large cost overruns.
Software systems today are typically divided into two phases: Development,
and Operation. Traditionally, the development and operation of a system are
considered disjoint activities completed in a linear, sequential manner.
This approach is based on the classical process model. In process model, the
belief is that system needs are known a priori and will remain static for the
foreseeable future. Such a classification would enable an organization to
operate the system in a deterministic manner.
It is our belief that this line of reasoning is inherently flawed.
A direct consequence of this philosophy is that by the time a system becomes
operational it is characterized as legacy system. All the ROI (Return on Investment)
promises are out the window in the first six months of a new system.
A software system is a living thing that is born (deployed), grows with the
time (enhanced), and eventually dies (replaced). The death of a system can
be a complete loss or a rich inheritance of ideas, metaphors and lessons for
future systems.
A main characteristic of living beings is their ability to
communicate with other living beings. A less appreciated fact about living
beings is their ability to adapt in foreign and even hostile environment.
Based on this definition, very few software systems used today would qualify
as living, adaptive systems.
Today, business events happen at an extremely fast rate. The ability of
systems to react and respond to changing scenarios is of critical importance.
In the very near future, the survival of a business will depend on its ability
to process data and produce competitive information in response to external
events.
The time to react to external events will shrink as communications bandwidth continues to expand and increase.
Real-time and near-time decision making ability will be paramount in discerning the winners from the losers.
So how do we create living, adaptive systems that address ever-changing business
needs and which assimilate future needs, without having to re-author the system
at every turn?
The solution is in the mind - the way we manage and define systems. xFact
has developed a process for developing solutions that addresses the issue of
ever-changing requirements. Our approach to developing adaptive systems is
based on meeting the unique needs and requirements of each project with an
emphasis on designing flexibility into the system.
Building on a diverse set
of skills and expertise in technology, user-centric design, business process
re-engineering, and systems integration, xFact delivers solutions that meet
mission-critical business challenges to help deliver today's needs and render
tomorrow's vision.