Software Development

There are more than a few different approaches to software development, much like a variety of views of political parties toward governing a country. Some take a more structured, engineering-based approach to developing business solutions, whereas others may take a more incremental approach, where software evolves as it is developed piece-by-piece. Most methodologies share some blend of the following stages of software development:

Market research

Gathering requirements for the proposed business solution

Analyzing the problem

Devising a plan or design for the software-based solution

Implementation (coding) of the software

Testing the software

Deployment

Maintenance and bug fixing

These stages are often referred to jointly as the software development lifecycle. 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 or they may be repeated over various cycles or iterations. 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 lifecycle, as well as having a working or bug-free product at all times. More structured or based approaches attempt to assess the majority of risks and develop a detailed plan for the software before implementation or coding begins, and keep away from significant design changes and re-coding in later stages of the software development lifecycle.