Software development is conversion of user requirements into a computer based program. It is used to automate tireless, lengthy and complicated processes as it saves effort, time and resources. It may comprise of new development, alteration of existing code or just maintenance of an existing system.

A programming tool is an application that is used to create, debug or maintain other programs.

A few software development techniques are:

Object oriented programming: Object oriented programs are developed around an object which consists of definition of data types and structures. Small reusable codes are written which are linked with one another and other objects to form a complete program. The main advantage of this technique is that is easy to interpret and update as the objects are defined separately.

Computer-aided software engineering: CASE tools automates many activities involved in various software life cycle phases. It lets the developer visualize the final application by using tools to convert functional needs into a design. Adjustments can then be made to the design and automated tools can be used to write the final code. The main advantages of CASE tools are enhanced productivity, reduced costs and increased quality of the software.

Rapid application development: Since the main aim of this technique is reduced development time the process involves only three phases – initiation, development and implementation. It mainly uses reusable codes and tests the software in parallel with the development. It is not suitable for creating complex applications as they require thorough understanding of requirements and a number of iterations to perfect the program.

Software development tools can be classified into various categories:

License: These are classified based on type of license that is given to the user. Example: Freeware – Software which are freely available on the internet and can be downloaded by anyone; open source software – It has an open source code and anyone can add to the code (linux)

Language: These are programming languages used to write the source code of a software. Example: Java, C++, Cobol (AgileJ, .NET Licenser)

Testing: These are tools used to test software to check whether it is running without errors and is performing the functions it is designed to. Example: Unit testing tools, functional testing tools, bug tracking, test case management (Automated test designer, CodeCenter)

Project Management: Tools used for managing a software project during its life cycle. Example: Planning tools, Tracking tools (tinyPM, processMAX, Agilefant)

Platform: A platform consists of hardware architecture and software framework that enables software to run and comprises of computer’s architecture, operating system, programming languages, related libraries and graphical user interface. Example: Windows, Linux

Data Management: These tools are used for storing huge amounts of data in a way that it can be retrieved easily and in the format required. Database management tools make searching, filtering, reporting and saving data very fast and easy. Example: Oracle, MySQL (ETL Processor, AnySQL Maestro)

Tool Function: This categorization is done based on the functionality of the tool. Example: Editor, compiler, code generator (Active table editor, Apache velocity)