Programming tool: Difference between revisions
Line 28: | Line 28: | ||
*[[Bug database|Bug Databases]]: [[Bugzilla]], [[Trac]], [[JIRA]], [[LibreSource]], [[SharpForge]] |
*[[Bug database|Bug Databases]]: [[Bugzilla]], [[Trac]], [[JIRA]], [[LibreSource]], [[SharpForge]] |
||
*[[Build automation|Build Tools]]: [[make (software)|Make]], [[automake]], [[Apache Ant]], [[SCons]], [[Rake (software)|Rake]], [[Flowtracer]], [[cmake]], [[qmake]] |
*[[Build automation|Build Tools]]: [[make (software)|Make]], [[automake]], [[Apache Ant]], [[SCons]], [[Rake (software)|Rake]], [[Flowtracer]], [[cmake]], [[qmake]] |
||
*[[Code coverage]]: [[Parasoft|C++test]],GCT, [[Insure++]], [[Jtest]], CCover |
*[[Code coverage]]: [[Parasoft|C++test]],GCT, [[Insure++]], [[Jtest]], CCover |
||
*Code Sharing Sites: [[Freshmeat]], [[Krugle]], [[Sourceforge]], [[GitHub]]. See also [[:Category:Code search engines|Code search engines]]. <!-- [http://www.ucodit.com/ UCodit] article deleted 23-Mar-2007; see [[Wikipedia:Articles for deletion/UCodit]] --> |
*Code Sharing Sites: [[Freshmeat]], [[Krugle]], [[Sourceforge]], [[GitHub]]. See also [[:Category:Code search engines|Code search engines]]. <!-- [http://www.ucodit.com/ UCodit] article deleted 23-Mar-2007; see [[Wikipedia:Articles for deletion/UCodit]] --> |
||
*[[Compiler|Compilation]] and [[Linker (computing)|linking]] tools: [[GNU toolchain]], [[GNU Compiler Collection|gcc]], [[Microsoft Visual Studio]], [[CodeWarrior]], [[Xcode]], [[Intel C Compiler|ICC]] |
*[[Compiler|Compilation]] and [[Linker (computing)|linking]] tools: [[GNU toolchain]], [[GNU Compiler Collection|gcc]], [[Microsoft Visual Studio]], [[CodeWarrior]], [[Xcode]], [[Intel C Compiler|ICC]] |
||
*[[Debugger]]s: |
*[[Debugger]]s: [[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. |
||
*[[Disassembler]]s: Generally [[reverse-engineering]] tools. |
*[[Disassembler]]s: Generally [[reverse-engineering]] tools. |
||
*[[Documentation generator]]s: [[Doxygen]], help2man, [[POD]], [[Javadoc]], [[Docstring|Pydoc/Epydoc]], [[asciidoc]] |
*[[Documentation generator]]s: [[Doxygen]], help2man, [[POD]], [[Javadoc]], [[Docstring|Pydoc/Epydoc]], [[asciidoc]] |
||
Line 38: | Line 38: | ||
*Library interface generators: [[Swig]] |
*Library interface generators: [[Swig]] |
||
*Integration Tools |
*Integration Tools |
||
*[[Memory leak|Memory Use/Leaks/Corruptions Detection]]: [[dmalloc]], [[Electric Fence]], duma, [[Insure++] |
*[[Memory leak|Memory Use/Leaks/Corruptions Detection]]: [[dmalloc]], [[Electric Fence]], duma, [[Insure++]]. [[Memory leak]] detection: In the [[C (programming language)|C programming language]] for instance, [[memory leak]]s are not as easily detected - software tools called [[memory debugger]]s are often used to find memory leaks enabling the programmer to find these problems much more efficiently than inspection alone. |
||
*[[Parsing|Parser generators]]: [[Lex programming tool|Lex]], [[Yacc]] |
*[[Parsing|Parser generators]]: [[Lex programming tool|Lex]], [[Yacc]] |
||
*[[Performance analysis]] or profiling |
*[[Performance analysis]] or profiling |
||
*[[Refactoring Browser]] |
*[[Refactoring Browser]] |
||
*[[Revision control]]: [[Bazaar (software)|Bazaar]], [[Bitkeeper]], [[Bonsai CVS code management system|Bonsai]], [[ClearCase]], [[Concurrent Versions System|CVS]], [[Git (software)|Git]], [[GNU arch]], [[Mercurial (software)|Mercurial]], [[Monotone (software)|Monotone]], [[Perforce]], [[PVCS]], [[Revision Control System|RCS]], [[SCM]], [[Source Code Control System|SCCS]], [[SourceSafe]], [[Subversion (software)|SVN]], [[LibreSource|LibreSource Synchronizer]] |
*[[Revision control]]: [[Bazaar (software)|Bazaar]], [[Bitkeeper]], [[Bonsai CVS code management system|Bonsai]], [[ClearCase]], [[Concurrent Versions System|CVS]], [[Git (software)|Git]], [[GNU arch]], [[Mercurial (software)|Mercurial]], [[Monotone (software)|Monotone]], [[Perforce]], [[PVCS]], [[Revision Control System|RCS]], [[SCM]], [[Source Code Control System|SCCS]], [[SourceSafe]], [[Subversion (software)|SVN]], [[LibreSource|LibreSource Synchronizer]] |
||
Line 48: | Line 48: | ||
*[[Code style|Source code formatting]]: [[indent (Unix)|indent]] |
*[[Code style|Source code formatting]]: [[indent (Unix)|indent]] |
||
*[[Source code generation]] tools |
*[[Source code generation]] tools |
||
*[[Static code analysis]]: [[Parasoft|C++test]], [[Jtest]], [[Lint programming tool|lint]], [[Splint (programming tool)|Splint]], PMD, Findbugs, [[Parasoft|.TEST]], [[Cppcheck] |
*[[Static code analysis]]: [[Parasoft|C++test]], [[Jtest]], [[Lint programming tool|lint]], [[Splint (programming tool)|Splint]], PMD, Findbugs, [[Parasoft|.TEST]], [[Cppcheck]] |
||
*[[Text editor]]s: [[emacs]], [[vi]], [[vim]] |
*[[Text editor]]s: [[emacs]], [[vi]], [[vim]] |
||
*[[List of unit testing frameworks|Unit Testing]]: [[Parasoft|C++test]], [[API Sanity Autotest]] |
*[[List of unit testing frameworks|Unit Testing]]: [[Parasoft|C++test]], [[API Sanity Autotest]] |
Revision as of 08:56, 14 August 2010
A programming tool or software development 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
The history of software tools began with the first computers in the early 1950s that used linkers, loaders, and control programs.[citation needed] 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.
Tools 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.
The 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.[dubious – discuss] However a full-blown database is usually thought of as an application in its own right.
For many years, computer-assisted software engineering (CASE) tools were sought after. Successful tools have proven elusive.[citation needed] In one sense, CASE tools emphasized design and architecture support, such as for UML. But the most successful of these tools are IDEs.
The ability to use a variety of tools productively is one hallmark of a skilled software engineer.
Categories
Software development tools can be roughly divided into the following categories:
- performance analysis tools
- debugging tools
- static analysis and formal verification tools
- correctness checking tools
- memory usage tools
- application build tools
- integrated development environment
List of tools
Software tools come in many forms:
- Binary compatibility analysis: icheck, ABI Compliance Checker
- Bug Databases: Bugzilla, Trac, JIRA, LibreSource, SharpForge
- Build Tools: Make, automake, Apache Ant, SCons, Rake, Flowtracer, cmake, qmake
- Code coverage: C++test,GCT, Insure++, Jtest, CCover
- Code Sharing Sites: Freshmeat, Krugle, Sourceforge, GitHub. 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, Pydoc/Epydoc, asciidoc
- Formal methods: Mathematically-based techniques for specification, development and verification
- GUI interface generators
- Library interface generators: Swig
- Integration Tools
- Memory Use/Leaks/Corruptions Detection: 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
- Performance analysis or profiling
- Refactoring Browser
- Revision control: Bazaar, Bitkeeper, Bonsai, ClearCase, CVS, Git, GNU arch, Mercurial, Monotone, Perforce, PVCS, RCS, SCM, SCCS, SourceSafe, SVN, LibreSource Synchronizer
- Scripting languages: PHP, Awk, Perl, Python, REXX, Ruby, Shell, Tcl
- Search: grep, find
- Source-Code Clones/Duplications Finding
- Source code formatting: indent
- Source code generation tools
- Static code analysis: C++test, Jtest, lint, Splint, PMD, Findbugs, .TEST, Cppcheck
- Text editors: emacs, vi, vim
- Unit Testing: C++test, API Sanity Autotest
IDEs
Integrated 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.
IDEs are often used for development of enterprise-level applications.
Some examples of IDEs are:
- Delphi
- C++ Builder (CodeGear)
- Microsoft Visual Studio
- EiffelStudio
- GNAT Programming Studio
- Xcode
- IBM Rational Application Developer
- Eclipse
- NetBeans
- IntelliJ IDEA
- WinDev
- Code::Blocks
- Lazarus
See also
- List of performance analysis tool
- Computer-aided software engineering tools
- Software development kit
- Configuration System
- Toolkits for User Innovation
- Software engineering and list of software engineering topics
- Software systems
- Computer science
- Scripting language
References
- Software Development Tools for Petascale Computing Workshop 2007
- Kernighan, Brian W.; Plauger, P. J. (1976), Software Tools, Addison-Wesley, p. 352, ISBN 020103669X