108
CHAPTER 6
Impediments to Software Design
agile methodology, would greatly enhance the probability of success of a software
development project.
6.3
Architecture-driven software development
The current state of software development is greatly impaired because there has not been
guidance on how to develop a software product architecture. Every attempt to generate a
software product based on programmatic design techniques or methodologies has failed.
Even those efforts that were deemed successful have resulted in software products that
suffer from a poorly conceived architectural structure. This results in a costly software
sustainment effort and reduces the longevity of the software product life cycle.
Software engineering provides the technical nucleus and governance that enable
software implementation to be well planned and executed. Programmers who have
not been educated in software engineering struggle with understanding stakeholder
requirements, maintaining a tactical plan of action, and balancing perceived cus-
tomer value with project resources. If a software development project is driven only
by delivery objectives, then there is little chance of ensuring that the software prod-
uct will ever be delivered. Therefore, why not simply accept the inevitable need to
incrementally deliver incomplete products that hopefully will placate customers and
management. It may be comforting to believe that customers are receiving value with
an unending stream of incremental deliveries. However, customers faced with a con-
tinual need to be retrained on an ever-changing product configuration will eventu-
ally abandon their hope of ever receiving a complete, stable product. While product
improvements are desirable, frequent and radical changes will only make the product
architecture unstable and more suspect to eventual collapse, disorder, and turmoil.
The need for a software product architecture is paramount for establishing an
initial software product release that can be evolved over time with future enhance-
ments and new features. Software engineering is compelled to resolve stakeholder
confusion, comprehend the problem space, and establish a structural design solu-
tion that provides a stable and enduring product foundation. Any software develop-
ment effort that attempts to develop a product without an architectural framework
has, as history demonstrates, a 30% chance of success.
The architecture-driven software development model described in this manu-
script is represented in
Figure 6.5
. In the center of the Venn diagram are the soft-
ware engineering practices that are paramount to successful software product
development. Aligned on top of this model is the project management framework,
which is generalized to address project objectives, budgets, plans, and schedules.
The remaining six interleaving circles represent the typical software development
stages, including requirements definition, architectural definition, software imple-
mentation, and acceptance testing. The preliminary and detailed design stages have
been redefined to establish a software product architecture based on software engi-
neering practices. The software technical data package provides the specifications
and supporting design information needed for the product to be
implemented
.
Do'stlaringiz bilan baham: |