Application development, also referred to as software process, software lifecycle and software development, is the development of a software product in a planned and structured process. Application development involves creating a computer program, or set of programs to perform tasks, from keeping track of inventory and billing customers to maintaining accounts, speeding up business process and, in fact, even improving application effectiveness. Unlike vanilla programming, application development involves higher levels of responsibility (particularly for requirement capturing and testing). 
The term application development is often used to refer to the activity of computer programming, which is the process of writing and maintaining the source code, whereas the broader sense of the term includes all that is involved between the conception of the desired application through to the final manifestation of that application. Therefore, application development may include research, new development, modification, reuse, re-engineering, maintenance, or any other activities that result in the finished application.
In outsourcing, “application development and maintenance” means the process of managing the design, coding, testing and ongoing improvements and debugging of software. Business organizations that use proprietary software may use internal resources – subject matter experts (“SME’s”) and process managers – to prepare and update the overall business requirements definitions (“BRD’s”) for new software. Then they can outsource the coding, testing and implementation of new BRD’s on a work-for-hire basis.
There are two approaches to application development:
- The waterfall approach entails a customer coming up with a spec to which the vendor has to deliver. Once the vendor delivers that spec, the first milestone is completed, and the partnership moves on to the next step, which is additional functionality within the application. The waterfall approach is a milestone driven, sequential process.
- The rapid development (or Scrum) approach to the development of software involves different people designing different modules at the same time, having it come together almost like a jigsaw puzzle.