Software development is a combination of software programming, documenting, testing and bug fixing involved in creating and maintaining applications resulting in a software product. Software development process includes writing and maintaining the source code. It also includes all that is involved between the conception of the desired software through to the final manifestation of the software, sometimes in a planned and structured process. Therefore, software development may include research, new development, prototyping, modification, maintenance, or any other activities that result in software products.
Software can be developed for a variety of purposes, the three aspects are (a) to meet specific needs of a specific client/business (the case with custom software), (b)to meet a perceived need of some set of potential users (the case with commercial and open source software), or (c)for personal use (e.g. a scientist may write software to automate a mundane task).
The need for better quality control of the software development process has given rise to the discipline of software engineering, which aims to apply the systematic approach exemplified in the engineering paradigm to the process of software development.