Software Tools and Environments
Software Tools and Environments
net/publication/220566295
CITATIONS READS
24 3,485
1 author:
Steven Reiss
Brown University
223 PUBLICATIONS 6,990 CITATIONS
SEE PROFILE
Some of the authors of this publication are also working on these related projects:
All content following this page was uploaded by Steven Reiss on 20 May 2014.
Any system that assists the program- typically considered to be those used
mer with some aspect of programming explicitly during the actual coding pro-
can be considered a programming tool. cess. This involves both the creation of
Similarly, a system that assists in some new code and the edit-compile-debug cy-
phase of the software development pro- cle that is typically used in debugging
cess can be considered a software tool. A code. These include:
programming environment is a suite of
programming tools designed to simplify Program Editors. These range from sim-
programming and thereby enhance pro- ple text editors to syntax-directed or
grammer productivity. A software engi- language-sensitive editors that know
neering environment extends this to the syntax of the programming lan-
software tools and the whole software guage being used and attempt to min-
development process. imize the amount of typing necessary
Software tools are categorized by the and to format the resultant text. Per-
phase of software development and the haps the most common type of pro-
particular problems that they address. gram editor is a compromise between
Software environments are character- these two, a language-knowledgeable
ized by the type and kinds of tools they editor. Here a text editor is aug-
contain and thus the aspects of software mented with language knowledge to
development they address. Additionally, provide such capabilities as automatic
software environments are distin- indentation, parenthesis checking,
guished by how the tools they include and even simple cross-referencing.
are related, that is, the type and degree The primary example of such an edi-
of integration among the tools, and by tor is emacs [Gosling 1982].
the size and nature of the systems they Compilers. These convert source code
are designed to address. into a machine-executable form, ei-
Software tools and environments are ther actual machine code or an inter-
designed to enhance productivity. Many nal form that can be interpreted.
tools do this directly by automating or Compilers differ in how much optimi-
simplifying some task. Others do it indi- zation they perform, and whether
rectly, either by facilitating more pow- they are incremental (i.e., compile
erful programming languages, architec- only what has changed) or batch.
tures, or systems, or by making the Linkers and Loaders. These combine
software development task more enjoy- compiled files with libraries to pro-
able. Still others attempt to enhance duce an executable file. Because the
productivity by providing the user with size of binaries has been increasing,
information that might be needed for link time now comprises a significant
the task at hand. fraction of the edit-compile-debug cy-
SOFTWARE TOOLS cle. Incremental linkers, which mod-
ify only those parts of the executable
A wide variety of software tools have that have changed, attempt to allevi-
been developed. Programming tools are ate this.
Preprocessors. These provide capabili- System Builders. These allow the user to
ties beyond the basic source language. define a model of the system that shows
Some, such as the C preprocessor, are how the system should be built. The
built into the source language, while model includes information on depen-
others such as lex [Lesk 1975] or yacc dencies, compilation options, and what
[Johnson 1974] provide languages of commands should be executed to build
their own. each binary. The tools are then able to
Cross Referencers. These tools provide a build the original system or to update a
means for relating the use of a name system incrementally based on a set of
source file changes.
to its definition. Cross-reference infor-
mation is most efficiently produced by Version Managers. These tools allow
the compiler, although some systems multiple versions of a source file to
do fast approximate scanning to gen- exist simultaneously. This permits par-
erate the necessary information. allel system development to allow mul-
tiple programmers to cooperate, to al-
Cross-reference information can be
low older released versions of a system
used in an editor (tag information in
to be maintained while a new version is
emacs) or in an independent system
developed, or to allow customized ver-
with either a textual or a graphical sions of a single system to coexist.
display. Common graphical cross-ref-
Design Editors. These let a user design a
erence tools provide displays of the
system using a variety of graphical
call graph and the class hierarchy
design notations. Commonly known
graph for object-oriented programs.
as CASE (Computer-Aided Software
Source-Level Debuggers. These allow the Engineering) tools, these have been
user to control the execution of the developed for such representations as
program, setting breakpoints and ex- Petri nets, SADT [Ross 1985], state-
ploring values as needed. More so- charts [Harel 1984], and object-ori-
phisticated debugging tools can han- ented design using OMT [Rumbaugh
dle optimized code and libraries as et al. 1991]. Many of these tools gen-
well as multiple languages in the erate at least a code framework based
same system. These have been aug- on the design. If enough information
mented with visual displays of pro- is provided with the design, some of
gram values, allowing the program- these tools can simulate aspects of the
mer to see the application’s data system, allowing the developer to test
structures in their conceptual form. the design at a high level.
Debugging Aids. These are tools that Code Generators. These, also known as
provide either compile- or run-time fourth-generation languages (4GLs),
checking beyond that offered by the are actually special-purpose high-
programming language. These in- level languages that let the program-
clude systems and libraries for detect- mer interactively specify a large por-
ing problems in the use of heap mem- tion of a system without having to
ory, such as Purify [Hastings and Joyce code it. They are most commonly used
1992], and systems as lint [Ritchie et for defining user interfaces and the
al. 1978] that go beyond compiler interaction of a program with a data-
checks to find legal constructs that base system.
might be potential problems. Testing Aids. These are tools that at-
tempt to automate the process of test-
A second set of tools addresses soft- ing software systems. They range
ware engineering issues. These tools are from test case generators that analyze
concerned with maintaining the overall source code or specifications to gener-
system rather than coding itself. Exist- ate a suite of test cases, to regression
ing tools in this area include: testing systems where the program-
mer generates the test cases but the parse the source. The disadvantage of
system does the bookkeeping involved this approach is that the database re-
with running each test case, deter- quired is quite large and a sophisticated
mining if it succeeded or failed, and database system is necessary to make the
reporting the result. environment work. Also, such environ-
ments tend to be closed rather than open,
INTEGRATING TOOLS INTO AN both because of the need to integrate any
ENVIRONMENT new tool with the database system and
because the database itself tends to be
Software tools can be combined in a designed for a particular language.
variety of ways using various integra- A second approach to integration in-
tion techniques. Early environments volves the use of a common front end.
were either loose confederations of tools The most prevalent tool in software de-
such as UNIX or single systems that velopment is the text editor, used for
combined all the relevant tools. Single- creating programs, documentation, sys-
system environments have the advan- tem models, and so on. It is relatively
tage of allowing the tools to be tightly easy to embed in an editor commands
coupled so that the programmer is aware that invoke other tools and use the out-
of the environment and not the separate put of those tools. Thus emacs allows
tools. They have the disadvantage that the user to invoke the system-build
they are typically closed systems in which package make [Feldman 1979], puts the
it is hard to incorporate new tools or to output of the resultant compilation in a
use multiple languages or existing code, buffer, and allows the user to use that
and are relatively large systems. Feder- buffer to go to the source lines where
ated environments solve many of these errors occurred. It also lets the user
problems—they are typically open sys- invoke the debugger and other tools.
tems in which it is easy to develop and This approach gives some sense of inte-
utilize new tools and in which systems gration by providing a common inter-
can be built using multiple languages and face for a variety of tools. Moreover, it
libraries. However, they put the onus of allows new tools to be integrated quite
using the tools in the right order and the simply, provided that they have a tex-
right way on the programmer and do not tual interface. The approach does not
provide a common framework. provide all the benefits of integration,
Three approaches have been used to however, in that tools really do not
integrate single-system environments share information and the programmer
with the openness and flexibility of fed- is still aware of the different tools and
erated environments. These involve their uses.
ways for the tools to share information The third approach to integration,
and interfaces. control integration, involves message
Data integration assumes that the passing between the tools. Here tools
federated tools share information. This send messages to other tools whenever
typically involves the development of a they need to share information or when-
database or repository to hold the infor- ever a command from one tool is in-
mation that needs to be shared among voked from another. Rather than point-
the tools. This has the potential to allow to-point messaging, this is generally
a high degree of integration and to sim- organized using a central message
plify the various tools by having them server as an intermediary. Each of the
share the work. Typically, the compiler tools tells the message server what mes-
in such an environment generates an in- sages it is interested in. Tools then send
termediate representation (generally ab- messages to the server, which then
stract syntax trees) that is stored in the sends them selectively to all recipients
database and can be used directly by that had expressed interest. This ap-
other tools that would otherwise have to proach provides a high degree of imme-
diate integration. It allows multiple tools tools will facilitate enhanced levels of
to operate as if they were one, for exam- cooperation and interaction among
ple facilitating the use of an editor to developers at distributed sites.
invoke other tools or allowing all current Visualization Tools. The current visual-
tools to display a common focus in re- ization efforts, notably class hierar-
sponse to a user action. What it lacks is chy displays, call graph or module
the ability of tools to share information displays, and limited data-structure
over time and the ability of tools to share visualization, are being enhanced to
large amounts of information such as the provide high-quality displays of large
syntax trees for a system. amounts of program data in a mean-
Actual environments combine these ingful way. These will become a stan-
different integration approaches in var- dard part of software environments.
ious ways. The PCTE standard [Boudier Program Analysis Tools. These are tools
et al. 1989], for example, uses control that undertake a detailed semantic
integration and a common set of front- analysis of a system and provide user
end utilities on top of a data integration feedback. The feedback can relate to
basis. FIELD [Reiss 1994] and related potential problems, mismatches be-
environments primarily use control in- tween code and specifications, assis-
tegration but provide specialized reposi- tance in merging different versions, or
tories to hold long-term data such as assistance in reengineering code.
cross-reference or configuration-man-
agement information. REFERENCES
BOUDIER, G., GALLO, F., MINOT, R., AND THOMAS,
FUTURE TOOLS AND ENVIRONMENTS J. 1989. An overview of PCTE and PCTE1.
SIGPLAN Not. 24, 2, (Feb.), 248 –257.
Because software development is a diffi-
FELDMAN, S. I. 1979. MAKE: A program for
cult and time-consuming process, people maintaining computer programs. Softw.
continue to develop and extend software Pract. Exper. 9, 4, 255–265.
tools and environments. What we can GOSLING, J. 1982. Unix Emacs. Carnegie Mel-
expect in the future is better versions of lon Computer Science Dept. Pittsburgh, PA
the existing tools: faster compilers, in- (Aug.).
cremental loaders, better and more di- HAREL, D. 1984. Statecharts: A visual approach
to complex systems. Dept. of Applied Mathe-
verse debugging aids, improved editors, matics, Weizmann Institute of Science.
and so on. We also expect to see better HASTINGS, R. AND JOYCE, B. 1992. Purify: Fast
environments that combine a high de- detection of memory leaks and access errors.
gree of tool integration with openness to In Proceedings of Winter Usenix Conference
new tools and languages. In addition, (Jan.).
current research is aimed at extending JOHNSON, S. C. 1974. YACC—yet another com-
software tool support to new domains piler compiler. CSTR 32, Bell Labs., Murray
Hill, NJ.
that include:
LESK, M. E. 1975. LEX—a lexical analyzer gen-
Process Tools. These are tools that as- erator. CSTR 39, Bell Labs., Murray Hill, NJ.
sist in managing the software devel- REISS, S. P. 1994. FIELD: A Friendly Inte-
grated Environment for Learning and Devel-
opment process. They allow the pro- opment. Kluwer, Norwell, MA.
cess to be defined using a combination RITCHIE, D. M., JOHNSON, S. C., LESK, M. E., AND
of rules and procedures and then pro- KERNIGHAN, B. W. 1978. The C program-
vide assistance in bookkeeping and ming language. Bell Syst. Tech. J. 57, 6, 1991–
managing the process. 2020.
Groupware Tools. These are tools that ROSS, D. T. 1985. Applications and extensions
of SADT. IEEE Computer 18, 4 (April), 25–35.
allow multiple programmers to work
RUMBAUGH, J., BLAHA, M., PREMERLANI, W., EDDY,
together in a controlled way. While F., AND LORENSEN, W. 1991. Object-Orient-
version management provides a basis ed Modeling and Design. Prentice-Hall,
for multiple programmers, the new Englewood Cliffs, NJ.