3.1 Software Tools
Editor
The editor is used for creating and editing source code files and text files.
A good editor should have the following features:
- Menus, toolbars and accelerator keys.
- Find in files text search.
- Bookmarks.
- Easy indentation.
- Macro recorder.
- Reload last workspace on startup.
- File compare tool.
- Syntax highlighting.
Some editors:
File comparison tool
The file comparison tool is used for finding the differences between 2 selected files or folders. The advanced tools can perform three-way comparison.
Using this tool you can perform:
- Versions comparison:
This can be very useful when you have 2 versions, an old version and a new version, and you want to find out what were the changes that were done to the new version.
- Versions merge:
When 2 developers finished developing 2 branches that were created from the same base version, one should compare his branch to the base version and insert his changes to the other branch.
Some file compare tools:
- FC/COMP - windows command line comparison.
- diff - UNIX/Linux command line comparison.
- WinDiff - free graphical comparison tool from Microsoft.
- Araxis Merge - powerful three-way comparison tool.
File/text search tool
This tool is used to find files and text during development.
The tool is usually integrated in the operating system and in the editor.
Some common file/text search tools:
- DIR - windows command line file search.
- FIND/FINDSTR - windows command line text string search.
- ls - UNIX/Linux command line file search.
- grep - UNIX/Linux command line text string search.
- Windows explorer.
- Google Desktop
Documentation generator
This tool automatically generates documentation from the source files. The documentation is generated from the source code and from the remarks.
Some documentation generators:
Version control tool
The version control tool is used for managing source code versions. The version are kept in a common database, that is shared by all the clients.
Some source code control tools:
Modeling tool
Modeling tool is a computer aided software engineering (CASE) tool that is used for graphical software design.
The graphical design is usually a unified modeling language (UML) diagram.
The tool can generate class definition source code from the model.
Common modeling tools:
Bug tracking system
The bug tracking tool is used to register software bugs and tasks. The data is kept in a shared database, that all team members have access. The programmer enters the tracking tool the description and status of the issue. The status specifies the stage of the issue: pending / implementation / test / done.
Common bug tracking tools:
Make tool
The make tool is used for building projects according to the make file definitions.
The make file includes the project building dependencies.
makefile |
# Makefile example: # Link when test1.o or test2.o change test: main.o test.o gcc -o test main.o test.o # Compile main.o when main.c or main.h change main.o: main.c main.h gcc -c main.c # Compile test.o when test.c or test.h change test.o: test.c test.h gcc -c test.c |
Some make tools:
Compiler
The compiler is used for translating high level source code files to machine language object files.
When compiling C file, the result will be an object (OBJ) file.
Linker
The linker is used after the compilation, for combining all the object (.OBJ) files to one executable (.EXE) or a library (.LIB / .DLL) file.
Debugger
The debugger is used for finding runtime bugs.
The debugger has the following features:
- Breakpoints
- Step by step execution
- Variables values watch
- Functions call stack
- Memory browsing
- Registers values watch
- Trace buffer
Common debuggers:
Profiler
The profiler is used for program performance analysis. You can use it to find runtime bottlenecks. The profiler generates a report that show the execution time of each program function.
There are 4 steps to profile a program:
- Compile the program with profiling flag enabled.
- Run the program to generate the profiling data.
- Generate the profiling report.
- Detect bottlenecks and take action to resolve them.
Common profilers:
Memory leak detection tool
This tool lets you find memory leaks. A memory leak is created when a memory is allocated but not freed by the software. This often happens when we allocate memory using new or malloc(), but neglect to release the allocated memory with delete or free(). During program execution, when memory is not freed, the free memory gradually shrinks and the application is uses swapped memory from the hard disk. This significantly slows down the execution. This problem is common when programming with C/C++, but not when programming with Java/C#, which have built in automatic garbage collection.
Common memory leak detection tools:
Integrated development environment (IDE)
The Integrated Development Environment is a program that includes all the development tools:
- Editor
- Make tool
- Compiler
- Linker
- Debugger
- Profiler
Common IDE's:
Simulation tool
Simulation tool is used before application development, for algorithm development.
The simulation tool is usually a scripting language, that can be used for fast algorithm development. Using the simulation tool may save a lot of development time, since the simulation is done on a higher level of abstraction then the simulation.
Common simulation tools:
File compression tool
File compression tool, reduces the file/directory size.
We can use this utility:
- Backup source code and binary files versions.
- Create smaller product release and installation file.
- Compress files to save disk space.
- Compress files before sending via internet.
Common file compression tools:
Installation tool
Installation tool is used to manage the software installation process.
The installation tool has the following features:
- Ease of use:
The installer has a wizard like user interface (GUI).
It also has a progress bar, to notify the user that the installation process is still going on.
- Fast installation:
The installation process should take minimal time.
- Small installation file size:
Small installation file size is achieved by file compression.
- Reliable installation:
The installation should check for errors in the installation file and the installed software.
Common installation tools:
FTP tool
FTP (File Transfer Protocol) software tool is used to transfer files from/to remote computers via the internet. This tool can transfer very large files, that can't be transferred by email.
Common FTP tools:
Remote Control Tool
The remote access and control tool allows you to connect to other computer over the network or over phone line, and control it like you were sitting in front of the computer.
This tool can be used for accessing the customer’s computer for:
- Debugging
- Maintenance
- Version update
- Version configuration
This can be a big advantage, it allows quick response time and can save long distance traveling.
Packet Sniffer (protocol analyzer)