Menus

Sep 27, 2015

Software engineering tools

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:
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.
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.
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.
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

Contact Form

Name

Email *

Message *