What are some traditional software development methodologies?
Here are some of the traditional "process models":
-
The "code-fix" or "opportunistic" model was an
attitudinal approach: Just make it work, fix
it if it stops working, and keep looking for
ways to improve it.
-
The "waterfall model (US Navy, 1960s)
consisted of linear steps, with a review
and/or sign-off at end of each of the
following stages:
-
concept
-
requirements
-
design
-
coding
-
testing
-
delivery
-
maintenance
-
The "phased release" model
-
The "spiral" model
-
The "evolutionary prototyping" or "RAD
(Rapid Application Development)"
model dealt with system concepts
that developed as the project moved along:
-
concept
-
design and implement prototype
-
refine prototype until acceptable
-
complete and release prototype
-
repeat last two stages
-
As object-oriented programming began
to take over from procedural programming
in the 1980s, a whole "object-oriented" approach
to things developed. This eventually combined with
a number of other developing technologies and
approaches into what became known as the "Rational
Unified Process" (RUP, from Rational Software)
Its increasingly widespread acceptance seems to
suggest that it will eventually be called just
the "Unified Process", as the name begins
to be disassociated from the company where it
originated. This process provides a very formal and
disciplined approach to development using a standard
set of tools, templates and "deliverables", and uses
UML (the Unified Modeling Language) to communicate
requirements, architectures and designs.
-
Even more recently, a number of so-called "agile"
(or "lightweight") development methodologies
have appeared. They are light in documentation
requirements, adaptable to change, and customer
focused. Currently the most popular of these
seems to be eXtreme Programming
("common sense, taken to extremes").
What are some problems with these methodologies?
Among the problems that cropped up as these
models were used by more and more organizations were:
-
Too much rigidity, i.e., not enough flexibility in general
-
Too much "linearity", i.e., too much of having to
do things in a certain order
-
Too restrictive in what individuals were allowed to do
-
Not enough good communication lines between stakeholders
List of All Topics