Software Development is many times used almost synonymous with Application Development. The key to the difference is to look at the various types of software and understand them. Broadly speaking Software Development is the process of creating software including understanding software requirements, software design, coding, testing as well as deploying. Software Engineering practices have been created to ensure that this process is done in a systematic and continuous improvement manner by the development team.   

Types of software

Here is below a listing a standard classification based on what the functionality

System Software

Typical examples are operating systems like Windows, Unix, Android etc which interface with the hardware or the device. system software typically acts as a bridge between applications and hardware. These thus form a platform of sorts with which other software can run interact and provide for higher abstractions of functionalities.

Application Software

Application level software are typically ones which are specific in terms of the applicability they provide eg CRM, Accounting Software etc even for that matter even a software, website build based on specific requirements classify here. 

Embedded Software

This type of software operates at the electronic board level. These are used to control machines and devices like PLMs, robots, within automobiles and vehicles etc.

Programming Software

These form the development platforms or development environment on which the software gets developed. These platforms are typically for specific programming languages. 


There are different types of the software listed below based on the usage platforms:

Client Applications

These are the types of applications that run either entirely on the native platform of the machine/device they are executing on or connect to another machine (Server) to run in tandem with it.

Web-based Applications

These applications run completely on a web browser as well as have server-side components which perform complex and business-centric processing and connect with the databases. 

Mobile Applications

These applications are a special case of application development. The mobile apps typically are created for specific purposes e.g. games, tracking spends etc. Mobile App development is again made for specific mobile platforms like Android, iOS or Windows. There are some Hybrid mobile platforms that allow code to be generated for the specific target mobile platforms.

 

There are two types of software based on the target users the software get created

COTS ( Commercial Off The Shelf )

This kind of software is one which one typical calls as a Product and is built based on generic and broad requirements so that it can be packaged for multiple customers and can be marketed and distributed

Custom Software

Here the software application is designed based on a specific set of requirements provided for a specific set of users, functionality and business process. These applications may have their own user experience requirements which may not be very typical. Such a development is also known as bespoke application development.

Software Development Phases & Methodologies

The process of development is a complex and challenging one. The software development process has what is typically called Software Development Life Cycle (SDLC).

The phases or stages involved here are:
1) Analysis
2) Design
3) Construction
4) Testing
5) Implementation
6) Support.

With time, the process or methodology adopted to develop software has changed and evolved. The oldest of them is the Waterfall model, which moves one phase to another phase in a very water tight compartmentalized manner. This was followed by a more radical methodology Rapid Application Development (RAD) which is based on prototype development. This prototype got iteratively matured into the final product. This was followed by a more iterative approach to developing the software in a feature by feature manner. There are many international standards that help organizations to understand their current baseline vis-a-vis the standard so that they can work to correct and fill the gaps as well as raise the levels. CMMi is one such standard adopted by many software organizations to ensure that their process tie-up to international standards.