Programming tool

Computer program used to develop another program

Not to be confused with Programmable tooling.

Part of a series on

Software development

Core activities

* Data modeling
* Processes
* Requirements
* Design
* Construction
* Engineering
* Testing
* Debugging
* Deployment
* Maintenance

Paradigms and models

* Agile
* Cleanroom
* Incremental
* Prototyping
* Spiral
* V model
* Waterfall

Methodologies and frameworks

* ASD
* DAD
* DevOps
* DSDM
* FDD
* IID
* Kanban
* Lean SD
* LeSS
* MDD
* MSF
* PSP
* RAD
* RUP
* SAFe
* Scrum
* SEMAT
* TDD
* TSP
* UP
* XP

Supporting disciplines

* Configuration management
* Deployment management
* Documentation
* Project management
* Quality assurance
* User experience

Practices

* ATDD
* BDD
* CCO
* CD
* CI
* DDD
* PP
* SBE
* Stand-up
* TDD

Tools

* Build automation
* Compiler
* Debugger
* GUI builder
* IDE
* Infrastructure as code
* Profiler
* Release automation
* UML Modeling

Standards and bodies of knowledge

* CMMI
* IEEE standards
* IREB
* ISO 9001
* ISO/IEC standards
* ITIL
* OMG
* PMBOK
* SWEBOK

Glossaries

* Artificial intelligence
* Computer science
* Electrical and electronics engineering

Outlines

* Outline of software development

* v
* t
* e

A programming tool or software development tool is a computer program that is used to develop another computer program, usually by helping the developer manage computer files. For example, a programmer may use a tool called a source code editor to edit source code files, and then a compiler to convert the source code into machine code files. They may also use build tools that automatically package executable program and data files into shareable packages or install kits.

A set of tools that are run one after another, with each tool feeding its output to the next one, is called a toolchain. An integrated development environment (IDE) integrates the function of several tools into a single program. Usually, an IDE provides a source code editor as well as other built-in or plug-in tools that help with compiling, debugging, and testing.

Whether a program is considered a development tool can be subjective. Some programs, such as the GNU compiler collection, are used exclusively for software development while others, such as Notepad, are not meant specifically for development but are nevertheless often used for programming.

## Categories

[edit]

Notable categories of development tools:

* Assembler – Converts assembly language into machine code
* Bug tracking system – Software application that records software bugs
* Build automation – Building software via an unattended fashion
* Code review software – Activity where one or more people check a program's code
* Compiler – Computer program which translates code from one programming language to another
* Compiler-compiler – Program that generates parsers or compilers, a.k.a. parser generator
* Debugger – Computer program used to test and debug other programs
* Decompiler – Program translating executable to source code
* Disassembler – Computer program to translate machine language into assembly language
* Documentation generator – Automation technology for creating software documentation
* Graphical user interface builder – Software development tool
* Linker – Program that combines intermediate build files into an executable file
* Memory debugger – Software memory problem finder
* Minifier – Removal of unnecessary characters in code without changing its functionality
* Pretty-printer – Formatting to make code or markup easier to readPages displaying short descriptions of redirect targets
* Performance profiler – Measuring the time or resources used by a section of a computer program
* Static code analyzer – Analysis of computer programs without executing themPages displaying short descriptions of redirect targets
* Source code editor – Text editor specializing in software codePages displaying short descriptions of redirect targets
* Source code generation – Type of computer programmingPages displaying short descriptions of redirect targets
* Version control system – Stores and tracks versions of files

## See also

[edit]

* Call graph – Structure in computing
* Comparison of integrated development environments – Notable software packages that are nominal IDE
* Computer aided software engineering – Domain of software toolsPages displaying short descriptions of redirect targets
* Git – Distributed version control software system
* GitHub – Software development collaboration platform
* Lint – Tool to flag poor computer code
* List of software engineering topics – Overview of and topical guide to software engineeringPages displaying short descriptions of redirect targets
* List of unit testing frameworks
* Manual memory management – Computer memory management methodology
* Memory leak – When a computer program fails to release unnecessary memory
* Reverse-engineering – Process of extracting design information from anything artificialPages displaying short descriptions of redirect targets
* Revision Control System – Version-control system
* Software development kit – Set of software development tools
* Software engineering – Engineering approach to software development
* SourceForge – Software discovery and hosting platform for B2B and open source software
* SWIG – Open-source programming tool
* Toolkits for User Innovation – Design methodPages displaying short descriptions of redirect targets
* Valgrind – Programming tool for profiling, memory debugging and memory leak detection

## References

[edit]

This article includes a list of general references, but it lacks sufficient corresponding inline citations. Please help to improve this article by introducing more precise citations. (August 2010) (Learn how and when to remove this message)

|

* Software Development Tools for Petascale Computing Workshop 2007
* Kernighan, Brian W.; Plauger, P. J. (1976), Software Tools, Addison-Wesley, pp. 352, ISBN 0-201-03669-X

## External links

[edit]

Media related to Programming tools at Wikimedia Commons

Authority control databases: National |

* Germany

|

* v
* t
* e

Software engineering

Fields|

* Computer programming
* DevOps
* Empirical software engineering
* Experimental software engineering
* Formal methods
* Requirements engineering
* Search-based software engineering
* Site reliability engineering
* Social software engineering
* Software deployment
* Software design
* Software maintenance
* Software testing
* Systems analysis

Concepts|

* Abstraction
* CI/CD
* Compatibility
* Backward compatibility
* Compatibility layer
* Compatibility mode
* Forward compatibility
* Software incompatibility
* Component-based software engineering
* Data modeling
* Enterprise architecture
* Functional specification
* Modeling language
* Programming paradigm
* Software
* Software archaeology
* Software architecture
* Software configuration management
* Software development process/methodology
* Software quality
* Software quality assurance
* Software system
* Software verification and validation
* Structured analysis
* Essential analysis

Orientations|

* Agile
* Aspect-oriented
* Object orientation
* Ontology
* SDLC
* Service orientation

Models|

| Developmental|

* Agile
* EUP
* Executable UML
* Incremental model
* Iterative model
* Prototype model
* RAD
* Scrum
* Spiral model
* UP
* V-model
* Waterfall model
* XP
* Model-driven engineering
* Round-trip engineering

|

Other|

* CMMI
* Data model
* ER model
* Function model
* Information model
* Metamodeling
* Object model
* SPICE
* Systems model
* View model

Languages|

* IDEF
* SysML
* UML
* USL

Systems
design|

| Requirements|

* Functional requirement
* Non-functional requirement

|

Capacity|

* Users
* Compute
* Memory
* Storage
* Network
* Web traffic

Interface|

* API
* SOAP
* REST
* GraphQL
* gRPC
* Webhook

High-level design|

* Client
* Load balancing
* Application server
* Message queue

Integration|

* Vertical
* Peer-to-peer
* API gateway
* pub-sub
* Event source
* ETL
* Batch
* Stream
* Orchestration

Architectures|

* Monolithic
* Microservices
* Event-driven
* Client–server
* Serverless
* Circuit breaker
* Rate limiting

Database|

* Relational
* NoSQL
* Graph
* Key–value
* LSM tree
* Time series
* Column oriented

Principles|

* Consistency
* Reliability
* CAP theorem
* Maintainability
* Configurability
* Modularity
* Durability

Scalability|

* Stateless
* Asynchronous I/O
* Loose coupling

Availability|

* Fault tolerance
* Failover
* Single point of failure
* Replication
* Consistent hashing
* Circuit breaker

Latency|

* Cache
* CDN
* Shard
* Database index
* Pre-caching

Storage|

* Object storage
* Block storage

Observability|

* Logging
* Metrics
* Tracing
* Error rate
* Queries per second
* Notification system
* Anomaly detection

Related fields|

* Computer engineering
* Computer science
* Information science
* Project management
* Risk management
* Systems engineering

* Commons
* Category

*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template