Software development |
![]() | It has been suggested that |
Software development |
---|
Core activities |
Paradigms and models |
Supporting disciplines |
Practices |
Standards and Bodies of Knowledge |
Glossaries |
Software development is the process of conceiving, specifying, designing,
Software can be developed for a variety of purposes, the three most common being to meet specific needs of a specific client/business (the case with
The need for better
There are many approaches to software project management, known as software development life cycle models, methodologies, processes, or models. The
This section does not |
A
Most methodologies share some combination of the following stages of software development:
These stages are often referred to collectively as the software development life-cycle, or SDLC. Different approaches to software development may carry out these stages in different orders, or devote more or less time to different stages. The level of detail of the documentation produced at each stage of software development may also vary. These stages may also be carried out in turn (a “waterfall” based approach), or they may be repeated over various cycles or iterations (a more "extreme" approach). The more extreme approach usually involves less time spent on planning and documentation, and more time spent on coding and development of automated tests. More “extreme” approaches also promote continuous testing throughout the development life-cycle, as well as having a working (or bug-free) product at all times. More structured or “
There are significant advantages and disadvantages to the various methodologies, and the best approach to solving a problem using software will often depend on the type of problem. If the problem is well understood and a solution can be effectively planned out ahead of time, the more "waterfall" based approach may work the best. If, on the other hand, the problem is unique (at least to the development team) and the structure of the software solution cannot be easily envisioned, then a more "extreme" incremental approach may work best.