One of the most common mistakes in Software Development (Programming), is that developing an application, it is restricted only to the usage of a text editor, a programming language, and an existing compiler for the given programming language.
Although, these are the basic tools required for software development, the complexity of this discipline, has increase exponencially, requiring more additional tools, in order to "get the job done".
The most common tool, is the usage of libraries or modules, for avoiding recoding programming tasks, yet restricted to a domain. Some of these libraries, are included, de facto, with the compiler, other may be supplied by third party.
Another important tool, to be consider as part of a framework, is an application or set of applications that allow to integrate the other tools, commonly known as Integrated Development Enviroment or Integrated Programming Enviroment. Started from a simple text / code editor, now includes several other options to access other tools, that in general, share the same purpouse, develop an application.
Some of these tools include applications or application modules that perform tasks visually, instead of the text approach, that eventually generate textual code. Other tools simply allow to interact to other programs, and exchange data for a particular purpuse. Database conectivity, storing backup in a Control Version System, modules for images and resources in an application, are example of additional tools.