Programming tool
Software development process |
---|
Activities and steps |
Methodologies |
Supporting disciplines |
Tools |
This article includes a list of references, but its sources remain unclear because it has insufficient inline citations. (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. Programming tool or programming software is a sub-category of system software but sometimes it is stated as a separate category of software along with application and system software.[1]
Contents |
[edit] 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 ] 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.
[edit] List of tools
Software tools come in many forms:
- Binary compatibility analysis: icheck, ABI Compliance Checker
- Bug Databases: Comparison of issue tracking systems - Including bug tracking systems
- Build Tools: Build automation, List of build automation software
- Code coverage: Code coverage#Software code coverage tools. Software Diagnostics
- 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: Debugger#List of debuggers. See also Debugging.
- Development Productivity Tools: JRebel eliminates the build and redeploy phases of Java EE Development by mapping the project workspace directly to any type application server in real-time
- Disassemblers: Generally reverse-engineering tools.
- Documentation generators: Comparison of documentation generators, help2man, Plain Old Documentation, 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++, Developer Edition. 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: Parsing#Parser development software
- Performance analysis or profiling: List of performance analysis tool
- Refactoring Browser
- Revision control: List of revision control software, Comparison of revision control software
- Scripting languages: PHP, Awk, Perl, Python, REXX, Ruby, Shell, Tcl
- Search: grep, find
- Source code Clones/Duplications Finding: Duplicate code#Tools
- Source code formatting: indent
- Source code generation tools: Automatic programming#Implementations
- Static code analysis: List of tools for static code analysis
- Text editors: List of text editors, Comparison of text editors
- Unit testing: List of unit testing frameworks
[edit] IDEs
Integrated Development Environments combine the features of many tools into one package. They for example make it easier to do specific tasks, such as searching for content only in files in a particular project. IDEs may for example be used for development of enterprise-level applications.
Different aspects of IDEs for specific programming languages can be found in this comparison of integrated development environments.
[edit] See also
- 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
[edit] References
- ^ "Programming Software". Conjurers Software. http://www.defit.org/2012/02/programming-software.html. Retrieved February 11, 2012.
- 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