|
Introduction of new technology
often increases the possibility of making costly
mistakes resulting in software failures, warns
Dr R Srinivasan
I had mentioned in my earlier article that the
definition of "success" in software development
depends upon how the respective organization achieves
the targets compared to what was planned. Many
a times the definition itself is elusive which
is illustrated by Sanjiv Purbha and Bharat Shah
in their book on, 'How to Manage A Successful
Project'. They say that sometimes the Project
Manager must be flexible in understanding and
communicating what an organization may actually
need to be successful in software development,
while accepting a lack of success in some other
measures (like cost, budget, etc.).
This is because
the branch of software engineering demands intellectual
activities focussed on solving problems of high
complexity comprising many unknowns in competing
perspectives. However, in this present era of
software driven applications where we are now,
software development is destined to be production
intensive where success is the buzzword, if the
product needs to be competitive in the market.
As mentioned
in my last article, in addition to the parameters
internal to an organization, there are two distinct
external ones that hamper the success of a software
development project- they are the customer coming
up with requirement changes and the commercial
innovation/new technology. According to Purbha
and Shah, "because technology is often the enabler
of change, IT becomes the work horse for meeting
the new requirements". Software Expert Alan Davis,
in his paper on "Fifteen Principles of Software
Engineering" (IEEE Software, Vol.11, No. 6, Nov.
1994, pp.94-96) mentions that one of the principles
is "design for change". Even though it is theoretically
accepted, not easy in the real life situation,
unless the software architecture planned in the
beginning will be able to support this change.
Moreover continuous change will result not only
in the system becoming more complex, disorganized
and may be introducing bugs. On the lighter side
to quote Mark Twain, "the only person who likes
to have a change is a baby with a wet diaper"!!
Resuming our
discussion on the influence of commercial innovation
and new technology on the success of software
development, we have been witnessing the most
striking and rapid changes taking place in computer
technology. The change cycle is so frequent that
the technology of yesterday becomes obsolete today,
thereby introducing challenges in bringing out
competitive software products employing state-of-the-art
technology. It is indicated by Dr. Thomas Mowbray,
et. Al, in the book on CORBA Design Patterns,
that as computing technology continues to grow
in diversity, complexity and rate of change, it
becomes increasingly important to know how technologies
relate to one another, and the rationale needed
to make good decisions on how fast the developers
will pick up for implementation. So, with new
technologies comes the potential for costly mistakes
leading to software failure.
We are now in
the "Internet Age" and in this one of the successful
applications is the Internet-based transactions
like e-Commerce, Healthcare, Finance, etc., Internet
enables the integration and interoperability among
the constituent modules within each of these vertical
segments; but the question is how successful are
we?
Dr. Thomas Mowbray
points out that in many organizations the Internet
is yet another vertically integrated technology
that co-exists with other technologies, but does
not effectively interoperate. The Internet-based
operations has brought us to a new paradigm shift-namely
moving away from the erst while 2-tire architecture
to the new 3-tier "middleware architecture" which
would enable interaction among the applications
that are designed to interface with the middleware.
The problem is that there are many commercially
available middleware products in the market which
are proprietary in nature and so applications
developed on one middleware may not be able to
interoperate with those on another middleware
in the Internet environment unless there exists
bridging facility. Moreover the organizations
deciding on applications development to suit particular
middleware may get stuck under it forever. It
may also be possible that such an organization
may be needing only 30% to 40% of the capability
and services of the middleware and so it will
end up paying for the unused portion also.
The solution
to circumvent this problem is to resort to developing
applications towards a standard architecture like
CORBA. To summarize, before going on to describe
Patterns and AntiPatterns in Software Development,
the truth is that there happen to be many instances
of software failures due to influences external
to an organization; in addition there are some
internal factors that contribute to the success
or failure. Brown, et. Al in the book on, 'AntiPatterns,
Refactoring Software, Architectures, and Projects
in Crisis' put a question to people like us in
software Development, "Can you handle the truth?
The truth is surprisingly hard to communicate,
and often regarded as politically incorrect and
undiplomatic. The truth does not make everybody
happy".
While we describe
the Patterns and AntiPatterns, we will be seeing
the problems encountered in communication and
documentation, particularly when we suppress the
problems because it will be a bad news. Thomas
rule says, "Bad news does not get better with
time".
(to be continued)
(The
author is Chief Technology Officer, Internet Component
Management Group, Bangalore and can be contacted
at: r.srinivasan@iCMGworld.com)
|