Software development is the development of a software product. It may be used to refer to the activity of computer programming. Computer programming is the process of writing and maintaining the source code. Software development includes research, new development, prototyping, modification or any other activities that results in software products.
The development of software can be used for a variety of purposes. The three most common purposes are to meet specific needs of a specific client/business, to meet a perceived need of some set of potential users, or for personal use. Embedded software development is the development of embedded software such as used for controlling consumer products. It requires the development process to be integrated with the development of the controlled physical product.
There are several different approaches to software development. Some take a structured, engineering-based approach to developing business solutions; whereas others may take a more incremental approach. All methodologies share a combination of stages of software development which include: analyzing the problem, market research, gathering requirements for the proposed business solution, devising a plan or design for the software-based solution, implementation of the software, testing the software, deployment, and maintenance and bug fixing. These stages are known as the software development lifecycle.