Software Development Methodologies
Different kinds of methods:
-
Adaptive methods focus on adapting quickly to changing realities. When the needs of a project change, an adaptive team changes as well.
-
Predictive methods. Predictive teams have difficulty changing direction
-
Formal method are heavily dependent on a tool driven approach, and may be combined with other development approaches. Some provers do not easily scale
Waterfall Model
This is a group of software development well-defined phases starting with:
-
the Analysis of Requirement following with
-
the Design of the Solution
-
Implementation
-
Testing (or Quality Assurance)
-
Installation and
-
future Maintenance
In this model late changes can be quite costly to implement. An important point is that you cannot expect users to be fully aware of what they require and this classic methodologies do not take this into consideration, and might thus incur important cost, because newly discovered or determined requirements can invalidate a previous design.
Finally, it’s difficult to predict where difficulties will occur;
Agile Model
Agile software development is a group of software development methodologies based on iterativeand incrementaldevelopment, where requirements and solutions evolve through collaboration between self-organizing, cross-functionalteams.
Most agile methods share other iterative and incremental development methods' emphasis on building releasable software in short time periods.
Agile development differs from other development models: in this model, time periods are measured in weeksrather than months and work is performed in a highly collaborative manner. Most agile methods also differ by treating their time period as a timebox.
There are many specific agile development methods. Most promote development, teamwork, collaboration,and process adaptabilitythroughout the life-cycle of the project.
-
Specific tools and techniques such as continuous integration, automated or xUnit test, pair programming, test driven development, design patterns, domain-driven design, code refactoring and other techniques are often used to improve quality and enhance project agility.
Agile method is not cowboy coding. In fact, Agile teams follow clearly defined, even rigid processes and controls(e.g., deadlines for completion of coding/testing);