What is a set of software development tools called that can be installed as one unit?

Software development refers to a set of computer science activities dedicated to the process of creating, designing, deploying and supporting software.

Software itself is the set of instructions or programs that tell a computer what to do. It is independent of hardware and makes computers programmable. There are three basic types:

System software to provide core functions such as operating systems, disk management, utilities, hardware management and other operational necessities.

Programming software to give programmers tools such as text editors, compilers, linkers, debuggers and other tools to create code.

Application software (applications or apps) to help users perform tasks. Office productivity suites, data management software, media players and security programs are examples. Applications also refers to web and mobile applications like those used to shop on Amazon.com, socialize with Facebook or post pictures to Instagram.1

A possible fourth type is embedded software. Embedded systems software is used to control machines and devices not typically considered computers — telecommunications networks, cars, industrial robots and more. These devices, and their software, can be connected as part of the Internet of Things (IoT).2

Software development is primarily conducted by programmers, software engineers and software developers. These roles interact and overlap, and the dynamics between them vary greatly across development departments and communities.  

Programmers, or coders, write source code to program computers for specific tasks like merging databases, processing online orders, routing communications, conducting searches or displaying text and graphics. Programmers typically interpret instructions from software developers and engineers and use programming languages like C++ or Java to carry them out.

Software engineers apply engineering principles to build software and systems to solve problems. They use modeling language and other tools to devise solutions that can often be applied to problems in a general way, as opposed to merely solving for a specific instance or client. Software engineering solutions adhere to the scientific method and must work in the real world, as with bridges or elevators. Their responsibility has grown as products have become increasingly more intelligent with the addition of microprocessors, sensors and software. Not only are more products relying on software for market differentiation, but their software development must be coordinated with the product’s mechanical and electrical development work.

Software developers have a less formal role than engineers and can be closely involved with specific project areas — including writing code. At the same time, they drive the overall software development lifecycle — including working across functional teams to transform requirements into features, managing development teams and processes, and conducting software testing and maintenance.3

The work of software development isn’t confined to coders or development teams. Professionals such as scientists, device fabricators and hardware makers also create software code even though they are not primarily software developers. Nor is it confined to traditional information technology industries such as software or semiconductor businesses. In fact, according to the Brookings Institute (link resides outside of ibm.com), those businesses “account for less than half of the companies performing software development.”

An important distinction is custom software development as opposed to commercial software development. Custom software development is the process of designing, creating, deploying and maintaining software for a specific set of users, functions or organizations. In contrast, commercial off-the-shelf software (COTS) is designed for a broad set of requirements, allowing it to be packaged and commercially marketed and distributed.

A programming tool or software development tool is a computer program 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 to accomplish a task, much as one might use multiple hands to fix a physical object. The most basic tools are a source code editor and a compiler or interpreter, which are used ubiquitously and continuously. Other tools are used more or less depending on the language, development methodology, and individual engineer, often used for a discrete task, like a debugger or profiler. Tools may be discrete programs, executed separately – often from the command line – or may be parts of a single large program, called an integrated development environment (IDE). In many cases, particularly for simpler use, simple ad hoc techniques are used instead of a tool, such as print debugging instead of using a debugger, manual timing (of overall program or section of code) instead of a profiler, or tracking bugs in a text file or spreadsheet instead of a bug tracking system.

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 or software in its own right. For 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.

Uses of programming tools[edit]

Translating from human to computer language[edit]

Modern computers are very complex and in order to productively program them, various abstractions are needed. For example, rather than writing down a program's binary representation a programmer will write a program in a programming language like C, Java or Python. Programming tools like assemblers, compilers and linkers translate a program from a human write-able and readable source language into the bits and bytes that can be executed by a computer. Interpreters interpret the program on the fly to produce the desired behavior.

These programs perform many well defined and repetitive tasks that would nonetheless be time-consuming and error-prone when performed by a human, like laying out parts of a program in memory and fixing up the references between parts of a program as a linker does. Optimizing compilers on the other hand can perform complex transformations on the source code in order to improve the execution speed or other characteristics of a program. This allows a programmer to focus more on higher level, conceptual aspects of a program without worrying about the details of the machine it is running on.

Making program information available for humans[edit]

Because of the high complexity of software, it is not possible to understand most programs at a single glance even for the most experienced software developer. The abstractions provided by high-level programming languages also make it harder to understand the connection between the source code written by a programmer and the actual program's behaviour. In order to find bugs in programs and to prevent creating new bugs when extending a program, a software developer uses some programming tools to visualize all kinds of information about programs.

For example, a debugger allows a programmer to extract information about a running program in terms of the source language used to program it. The debugger can compute the value of a variable in the source program from the state of the concrete machine by using information stored by the compiler. Memory debuggers can directly point out questionable or outright wrong memory accesses of running programs which may otherwise remain undetected and are a common source of program failures.

List of tools[edit]

Software tools come in many forms:

  • Binary compatibility analysis tools
  • Bug databases: Comparison of issue tracking systems – Including bug tracking systems
  • Build tools: Build automation, List of build automation software
  • Call graph
  • Code coverage: Code coverage#Software code coverage tools.
  • Code review: List of tools for code review
  • 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.
  • Disassemblers: Generally reverse-engineering tools.
  • Documentation generators: Comparison of documentation generators, help2man, Plain Old Documentation, asciidoc
  • Formal methods: Mathematical techniques for specification, development and verification
  • GUI interface generators
  • Library interface generators: SWIG
  • Integration Tools
  • Memory debuggers are frequently used in programming languages (such as C and C++) that allow manual memory management and thus the possibility of memory leaks and other problems. They are also useful to optimize efficiency of memory usage. Examples: dmalloc, Electric Fence, Insure++, Valgrind
  • Parser generators: Parsing#Parser development software
  • Performance analysis or profiling: List of performance analysis tools
  • 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 editor
    • Text editors: List of text editors, Comparison of text editors
  • Source code formatting: indent, pretty-printers, beautifiers, minifiers
  • Source code generation tools: Automatic programming#Implementations
  • Static code analysis: lint, List of tools for static code analysis
  • Unit testing: List of unit testing frameworks

IDEs[edit]

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.

See also[edit]

  • Computer aided software engineering tools
  • Computer science
  • Configuration System
  • Scripting language
  • Software development kit
  • Software engineering and list of software engineering topics
  • Software systems
  • Toolkits for User Innovation
  • Developer experience

References[edit]

  • 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

What is a set of software development tools called that can be installed as one unit?
Media related to Programming tools at Wikimedia Commons

What is a set of software development tools called that can be installed?

A software development kit (SDK) is a collection of software development tools in one installable package. They facilitate the creation of applications by having a compiler, debugger and sometimes a software framework. They are normally specific to a hardware platform and operating system combination.

What is IDE used for quizlet?

An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of a source code editor, build automation tools and a debugger.

Which of the following are the two main causes of software vulnerabilities?

There are two main things that can cause a software vulnerability. A flaw in the program's design, such as in the login function, could introduce a vulnerability. But, even if the design is perfect, there could still be a vulnerability if there's a mistake in the program source code.

Which DLP method works by replacing sensitive data with realistic fiction?

Pseudonymization: It is a security technique for replacing sensitive data with realistic fictional data which cannot be attributed to a specific individual without additional information which is to be kept separately and subject to technical and organization measures to ensure non-attribution to an identified or ...