programming tool or software tool is a program or application
that software developers use to create, debug, maintain,
or otherwise support other programs and applications. The
term usually refers to relatively simple programs that can
be combined together to accomplish a task, much as one might
use multiple hand tools to fix a physical object.
history of software tools began with the first computers
in the early 1950s that used linkers, loaders, and control
programs. Tools became famous with Unix in the early 1970s
with tools like grep, awk and make that were meant to be
combined flexibly with pipes. The term "software tools"
came from the book of the same name by Brian Kernighan and
P. J. Plauger.
were originally simple and light weight. As some tools have
been maintained, they have been integrated into more powerful
integrated development environments (IDEs). These environments
consolidate functionality into one place, sometimes increasing
simplicity and productivity, other times sacrificing flexibility
and extensibility. The workflow of IDEs is routinely contrasted
with alternative approaches, such as the use of Unix shell
tools with text editors like Vim and Emacs.
distinction between tools and applications is murky. For
example, developers use simple databases (such as a file
containing a list of important values) all the time as tools.
However a full-blown database is usually thought of as an
application in its own right.
many years, computer-assisted software engineering (CASE)
tools were sought after. Successful tools have proven elusive.
In one sense, CASE tools emphasized design and architecture
support, such as for UML. But the most successful of these
tools are IDEs.
ability to use a variety of tools productively is one hallmark
of a skilled software engineer.
of tools :
tools come in many forms:
Databases: gnats, Bugzilla, Trac, Atlassian Jira, LibreSource,
Build Tools: Make, automake, Apache Ant, SCons, Rake, Flowtracer,
Code coverage: GCT, CCover
Code Sharing Sites: Freshmeat, Krugle, Sourceforge, ByteMyCode.
See also Code search engines.
Compilation and linking tools: GNU toolchain, gcc, Microsoft
Visual Studio, CodeWarrior, Xcode, ICC
Debuggers: gdb, GNU Binutils, valgrind. Debugging tools
also are used in the process of debugging code, and can
also be used to create code that is more compliant to standards
and portable than if they were not used.
Disassemblers: Generally reverse-engineering tools.
Documentation generators: Doxygen, help2man, POD, Javadoc,
Formal methods: Mathematically-based techniques for specification,
development and verification
GUI interface generators: Qt Designer, Cocoa InterfaceBuilder,
Windows Forms Visual Studio
Library interface generators: Swig
Integration Tools: OESIS
Memory Use/Leaks/Corruptions Detection: Aard, dmalloc, Electric
Fence, duma, Insure++. Memory leak detection: In the C programming
language for instance, memory leaks are not as easily detected
- software tools called memory debuggers are often used
to find memory leaks enabling the programmer to find these
problems much more efficiently than inspection alone.
Parser generators: Lex, Yacc, Parsec
Performance analysis or profiling
Revision control: Bazaar, Bitkeeper, Bonsai, ClearCase,
CVS, Git, GNU arch, Mercurial, Monotone, PVCS, RCS, SCM,
SCCS, SourceSafe, SVN, LibreSource Synchronizer
Scripting languages: Awk, Perl, Python, REXX, Ruby, Shell,
Search: grep, find
Source-Code Clones/Duplications Finding: CCFinderX
Source code generation tools
Static code analysis: lint, Splint, PMD, Findbugs
Text editors: emacs, vi, vim
development environments (IDEs) combine the features of
many tools into one complete package. They are usually simpler
and make it easier to do simple tasks, such as searching
for content only in files in a particular project.
are often used for development of enterprise-level applications.
examples of IDEs are:
* C++ Builder
* Microsoft Visual Studio
* IBM Rational Application Developer
* IntelliJ IDEA