2.
Tools and Environments
2.1
Historical evolution of tools and environments,
2.2
Classification of tools and environments,
2.3
Representative tools,
2.4
The role of programming language
Software
engineering tools
The
main principle of software engineering is to build high-quality software by
means of effective development process. The software engineering activity
involves a large number of people and number of tools to produce large number
of software products. The purpose of tools and environments is to support the
development, verification, maintenance and evolution of processes and objects.
A tool supports a particular activity and an environment is a collection of
related tools. Tools and environments are required to make task easier and
efficient. For example, programming languages and their compilers or
interpreters are necessary for executing programs, without them, software would
not even exist.
Historical
evolution of tools and environments
The
history of tools and environment is influenced by two factors-
- The technological
development and
-
Understanding of software engineering process
In
early days, when software engineering activity was limited to programming, the
main tools available to the software engineer ware programming related tools
such as editors and compilers. The development of file systems enabled
programmers to store their programs online and share them with other
programmers. For this purpose, management and configuration tools are
developed. The advances in graphical displays and user interfaces led to the
development of graphical tools such as graphical editors , graphical user
interface and visual language and the development of the distributed
environment led to the development of groupware, that are used to share files
in the distributed environment.
Classification
of tools and environments
Software
tools and environment can be classified as
- Static vs. dynamic tools
- Development tools vs.
end-product components tools
- Single-user vs.
multi-user tools
-
Single-machine vs. network-aware tools
- Static
vs. Dynamic tools
Tools
that neither perform nor require execution of the object they operate on and
are applied to such an object to create it, modify it, verify its consistency
with respect to some rule or even measure some static properties such as length
or detect the presence of certain constructs are known as static tools. Static
tools support the analysis of models and artifacts. For example, the parser of
the programming language, which checks the syntactic correctness of the
program, is a static tool.
A
tool that require execution of thee object it operates on is called dynamic.
Dynamic tools support the simulation of models and artifacts. For example, Perl
interpreter is a dynamic tool.
- Development
tools vs. end-product components tools
Those
tools that support the development of end products, but do not become part of
them (i.e. once the product is complete, nothing of the tool remains in the
application that is released) are known as development tools. For example,
project management tools, software specification simulators, test case
generator and debuggers.
Those
tools that are the part of the end product or developed application are known
as end-product tools. These tools or components are usually provided as a
runtime support libraries.
- Single-user
vs. multi-user tools
Tools
that support one user at a time and used for personal activities are known as
single user tools.
Tools
that support multiple users at once and used for groups are known as multi user
tools.
- Single
machine vs. network-aware tools
Tools
that are used to distribute files and programs across the network are known as
network tools whereas tools which are no used for networking or may not support
the user to access files on the network are known as single machine tools. For
example program editor are the single machine tools.
Representative
tools
- Editors
Editors
are the fundamental software development tools. Editor support the creation and
modification of documents. The classification of the editor is
o They are either
textual or graphical.
o They can follow a
formal syntax, or can be used for writing informal text or drawing free-form
pictures
o They
can be either Monolingual (e.g., Java editor) or multilingual
- Linkers
Linkers
are the programs that are used to combine manually referencing objects into
larger objects. Traditional linkers combine object-code fragments into a larger
program, but there are also tools for linking modules of a specification
document or linking code modules on the basis of their interface. Linkers may
be monolingual (i.e. language specific) or poly-lingual (accept module written
in different language).
- Interpreters
The
language processor that translates (converts) each statement of source program
into machine code and executes it immediately before to translate the next
statement is called Interpreter. If there is an error in the statement the
interpreter terminates its translating process at that statement and displays
an error message.
- Code
generators
The
software construction process is the sequence of steps that transform a given
problem description called a specification into another description called
implementation.
implement a software project there is a fourth-generation
tools, which automatically generate code from a higher level language such as
language centered to database system. Screen panels for human-computer
interaction may automatically be generated for inserting or manipulating data
in the database and for querying the database and report may be automatically
generated from the database.
- Debuggers
Debugger
is a kind of interpreter which is used to localize and fix errors. A debugger
can also be used in understanding programs written by another programmer for
further modification and reengineering. It can also be used to observe the
dynamic behavior of a program.
- Tools
used for software testing
There
are many software tools that are used to test software in different ways. Those
are:
o Tools
for document testing
These
tools are used for bookkeeping of test cases, by providing forms for test case
definition, storage and retrieval. Documentation tools support testing not only
during initial development, but also during maintenance.
o Tools
for deriving test cases
There
are several techniques for building test cases. Such techniques can be made more
effective by supporting tools. The main prerequisite for tools that generate
test cases is the availability of a formal description.
o Tools
for evaluating testing
These
tools provide various kinds of metrics, such as the number of statements
executed, the percentage of paths covered in the control flow graph, and
reliability and software science measures.
o Tools
for testing other software qualities.
Software
testing means to evaluate qualities and performance. Performance monitors help
to keep track of and verify execution time, the usage of main memory and other
performance related parameters.
- Static
analyzer
Data
and control flow analyzer that are used in discovery of errors are the static
analyzer.
They
also used for
o Detecting
uninitialized variables and current state of each variable.
o Set the status of
every variable to undefined.
o Scan
the program instructions from the beginning of the program.
- GUI
tools
The
GUI tools are used to design friendly user interface. The design of friendly
user interface is important because the interface has a significant influence
on user satisfaction. Most graphical user interfaces are built form a set of
common concepts such as buttons, dialog boxes and windows are developed by GUI
tools.
- Configuration
Management tools
Configuration
management system helps in managing changes and evolution of software model. A
configuration management system provides the following basic support.
1.
Repository
Shared
database of artifacts
2.
Version management
Versions
stored, change history maintained
3.
Work-space control
Check-out
into private work-space
Check-in
into shared work-space
4.
Product modeling and building
Facilities
to (re)build products
- Tracking
tools
Another
class of tool that is used during entire process to maintain information about
the process and track of that information. The most important of these are defect-tracking
tools which is used to store information about reported defects in the
software product and track that information
- Reverse
and reengineering tools
Reengineering
tools are used to modify or change the software to increase its efficiency and
reverse engineering tools are used for copying or duplicating the program.
Someone doing reverse engineering on software may use several tools to
disassemble a program. One tool is a hexadecimal dumper, which prints or
displays the binary numbers of a program in hexadecimal format. By knowing the
bit patterns that represent the processor instructions as well as the
instruction lengths, the reverse engineer can identify certain portions of a
program to see how they work. Another common tool is the disassembler. The
disassembler reads the binary code and then displays each executable
instruction in text form.
Management
tools
Tools
such as that are used to draw Gantt chart, cost estimation and any other that
are used in GUI and analysis of data fall under this category. They are mainly
used for graphical interface and analysis of data.
No comments:
Post a Comment