You are on page 1of 28

Software Engineering Tools

and Environments

Ch. 9 1
How did the field evolve?
How can tools and environments be
classified and compared?
What are the main categories?
How can tools be integrated?
What motivates new

Ch. 9 2
Historical evolution
Dominant factors affecting
technological developments
made certain tools necessary or possible
better understanding of software
engineering processes

Ch. 9 3
Technological developments
Advances in graphical displays and
user interfaces
graphical editors
graphical user interfaces (GUIs)
visual languages
Advances in distributed systems
tools supporting distributed
configuration management and teams
Ch. 9 4
Individual tools developed to support single
activities (e.g.,compilation, debugging)
Integrated environments, i.e., tools that
work together
e.g., environment supporting one programming
Open environments
tools have public interfaces which allow them to
communicate and cooperate with other tools
which respect those interfaces

Ch. 9 5
Dimensions for comparison (1)
Interaction mode
batch-oriented tools
interactive tools
Level of formality
syntax/semantics of documents
Dependency on phase of life cycle
Degree of standardization
Ch. 9 6
Dimensions for comparison (2)
Static vs. dynamic
Development tools vs. end-product
Single-user vs. multi-user
Single-machine vs. network-aware

Ch. 9 7
Representative tools:
Textual or graphical
Can follow a formal syntax, or can
be used for informal text or free-
form pictures
Monolingual (e.g., Java editor) or

Ch. 9 8
Representative tools:
Combine object-code fragments
into a larger program
can be monolingual or polylingual
In a broader sense, tools for linking
specification modules, able to
perform checking and binding
across various specification
Ch. 9 9
Representative tools:
Traditionally at the programming
language level
Also at the requirements
specification level
requirements animation
Can be numeric or symbolic

Ch. 9 10
Representative tools:
Code generators
In a general sense, transform a
high level description into a lower-
level description
a specification into an
Practical example
4th Generation Languages

Ch. 9 11
Representative tools:
May be viewed as special kinds of
interpreters where
execution state inspectable
execution mode definable
animation to support program

Ch. 9 12
Representative tools:
Software testing (1)
Test documentation tools
support bookkeeping of test cases
forms for test case definition, storage,
Project Name: Date of test:

Tested function:

Tested module:

Test case description:

Description of results:


Ch. 9 13
Representative tools:
Software testing (2)
Tools for test data derivation
e.g., synthesizing data from path
Tools for test evaluation
e.g., various coverage metrics
Tools for testing other software

Ch. 9 14
Representative tools:
Static analyzers
Data and flow control analyzers
can point out possible flaws or
suspicious-looking statements
e.g., detecting uninitialized variables

Ch. 9 15
Representative tools:
GUI tools
Graphical User Interfaces are now
Common abstractions include
windows and the desktop metaphor
Pole disks
1 3
2 0
3 0

Ch. 9 16
User-Interface Management
Provide a set of basic abstractions
(windows, menus, scroll bars, etc.) that
may be used to customize a variety of
Provide a library of run-time routines to be
linked to the developed application in
order to support input and output
UIMS fall both under the category of
development tools and under the category of
end-product components

Ch. 9 17
UIMS as development tool and
end-product component

language Runtimedialog
runtime End
support component user

Progr. development Developer tools

Ch. 9 18
Run-time structure of a UIMS

Firstname Lastname Firstname Lastname Birthdate

Day Month Year


Birthdate month

year dialog

Ch. 9 19
Representative tools:
Configuration Management
shared database of artifacts
Version management
versions stored, change history maintained
Work-space control
check-out into private work-space
check-in into shared work-space
Product modeling and building
facilities to (re)build products

Ch. 9 20
1.1 1.2 1.3 1.4 2.1 2.2

sequence of revisions

1.1 1.2 1.3 2.1

a branch and a
later join

Ch. 9 21
aids in building and rebuilding a product
helps keep a system in a consistent state after modifica

1. sys : mod1.o mod2.o

2. ld mod1.o mod2.o -o sys
3. mod1.o : mod1.c incl.h
4. cc -c mod1.c
5. mod2.o : mod2.c incl.h
6. cc -c mod2.c

Ch. 9 22
Representative tools:
Tracking tools
Used during entire process to
maintain information about the
process and track that information
The most important of these are
defect-tracking tools
used to store information about
reported defects in the software
product and track that information

Ch. 9 23
Representative tools:
Reverse and reengineering
Program understanding systems
synthesize suitable abstractions from code
e.g., control and data flow graphs or use graphs
extract cross-references and other kinds of
documentation material on the product
Reverse engineering tools also support
the process of making the code and
other artifacts consistent with each

Ch. 9 24
Representative tools:
Process support
Maintain "to do" lists, reminding
next activities in the process
Automate sequences of recurring
Full process support via PSEEs
(Process-centered Software
Engineering Environments)
driven by a process-modeling language

Ch. 9 25
Representative tools:
Tools for Gantt and PERT charts
graphical interface
support to analysis
Cost estimation tools
based on models, such as COCOMO

Ch. 9 26
Tool integration
Data integration approach
store all process artifacts in a repository
common data representation for
artifacts that different tools can use to
communicate with each other
Control integration approach
different tools can communicate with
each other through control messages

Ch. 9 27
Forces influencing tool
To support new technology
To support new software processes
To support a particular method or

Ch. 9 28