 |
|
|
By
Dr.Thomas J Mowbray
Chairman - iCMG
|
Thomas J. Mowbray,
PhD, Chairman Component Management Group. Dr.
Mowbray is the Software Architecture Columnist
for Component Strategies Magazine, and co-author
of the books: The Essential CORBA, CORBA Design
Patterns, Inside CORBA, and ANTIPATTERNS: Refactoring
Software, Architectures, and Projects in Crisis.
[1]
Many of us
have serious misconceptions about the capabilities
of current software approaches. Based upon surveys
of corporate software projects in the United States,
the realities of software development are as follows.
[1] About one third of all software projects are
cancelled. Average projects expend twice as much
budget and schedule as initially planned. After
delivery, the majority of systems are considered
unsuccessful because they have far fewer capabilities
than expected. Modifying and extending systems
are the most expensive cost drivers and very likely
to create new defects. Overall, the outcomes of
virtually all application software projects are
stovepipe systems, brittle software architectures
that under-perform on requirements.
The Software
Crisis
The software
crisis in corporate development became apparent
decades ago, when procedural software technologies
were popular. Subsequent, object-oriented approaches
(such as the Object Modeling Technique) have been
equally unsuccessful for corporate developers.
These outcomes have been repeatedly confirmed
by research. [1] Three key factors are exacerbating
the software crisis:
requirements
change,
commercial innovation and
distributed computing
A significant part of the problem is rising user
expectations. User requirements for systems have
increased much faster than corporate developers'
capability to deliver. Requirements changes are
more frequent as businesses maneuver for competitive
advantage with strategic corporate software.
Another confounding
factor is the destabilizing force of accelerating
technology innovation, both in commercial software
and hardware platforms. Corporate developers have
difficulty finding compatible configurations of
software products, and are forced to upgrade configurations
frequently as new products are released. Software
maintenance due to technology upgrades is a significant
corporate cost driver.
Distributed
computing is an essential feature of many new
applications due to predominance of the Internet
and geographically diverse enterprises. Traditionally,
software designers assumed homogeneous configurations,
centralized systems, local communications, and
infrequent failures. Today's highly distributed
enterprises require heterogeneous hardware/software,
decentralized legacy configurations, and complex
communications infrastructure. The result is an
environment with frequent partial system failures.
Distributed computing reverses many key assumptions
that are the basis for procedural and object-oriented
software development.
The software
industry has established object-orientation (OO)
as the mainstream technology. OO is the technology
adopted by new corporate development projects
because OO is universally supported by software
tool vendors. Masses of legacy programmers are
training for object-oriented development (e.g.
C++ and Java) as corporations create new strategic
systems. Unfortunately, these developers and corporations
are likely to become the next generation of disillusioned
participants in the software crisis. However,
the organizations that survive and thrive with
this technology, must use it in sophisticated
new ways, represented by componentware.
|