FUSE, an AlphaGenerationTM product, is the DIGITAL integrated software development environment for UNIX workstations. FUSE is designed to:
Shorten the learning curve for software developers who are new to UNIX while making experienced UNIX developers more productive
Simplify porting applications to Digital UNIX
Allow the integration of other commercial and in-house tools
Figure Figure 1-1 shows a few of the FUSE tools.
The FUSE tool set helps you edit, build, debug, and analyze programs written in C, Cobol, Fortran 77, Fortran 90, Pascal, or Ada (no static analysis support is available for Ada). An optional license is available to support DEC C++.
The FUSE integration framework allows tools to invoke one another and trigger operations. Programming tasks are automated and streamlined, reducing some operations to a single click of a mouse button.
FUSE opens the integration framework to all software development tools by offering EnCASE -- the Tool Integration Language compiler and Message Monitor tool. Using EnCASE, you can integrate any UNIX tool, including tools you may have developed, into the FUSE environment. The DEC FUSE EnCASE Manual (shipped on the documentation CD-ROM as a Web document) provides instructions for integrating a tool into FUSE.
FUSE is a flexible environment. You or your group can use FUSE to start a new project or upgrade an existing project. In the context of FUSE, a project is a collection of files that are managed by FUSE tools. These files hold the software the team is working on, the source and intermediate files needed to produce the software, and useful information for analyzing the software as it is being developed.
FUSE helps you set up a project based on traditional UNIX tools. The Code Manager, Debugger, emacs Editor, Compare, Search, Man Page Browser, and Profiler tools are all based on standard UNIX utilities. Members of the team who are new to UNIX can come up to speed more quickly using FUSE, while UNIX experts can continue to operate in their accustomed manner.
FUSE offers features that help you boost your productivity:
The consistent Motif user interface is easier to learn and use than standard UNIX command-line utilities.
FUSE is integrated with the Common Desktop Environment (CDE), a standard desktop user interface for the UNIX environment agreed upon by the Common Open Software Environment (COSE) group.
Data presented in graphical form is easier to interpret and manipulate.
Tightly integrated tools reduce the time required to find and fix problems.
Enhancements not available with standard UNIX utilities speed development.
Online information about FUSE and UNIX commands is readily accessible.
Figure Figure 1-2 shows how code development activities in CASE lifecycle are supported by FUSE tools.
FUSE appeals to new and experienced UNIX software developers.
Many FUSE tools are based on industry-standard programming utilities
such as
make
,
man
,
rcs
,
and
prof
that are included with your system.
If you know how to use the command-line interface to these utilities,
you will appreciate the benefits of the other features (for example,
integrated operation and online Help) that make programming with
FUSE tools more convenient and productive than using the standard
utilities alone.
Figure
Figure 1-3
shows how the Profiler,
which is based on
pixie
,
gprof
,
hiprof
, or
prof
, lets you
concentrate on analyzing the performance of your application rather
than learning the UNIX commands associated with these utilities.
Programmers who already know how to use the command-line interface
to the standard UNIX utilities can appreciate the other benefits
of using FUSE (tightly integrated tools, graphical display, and
convenient access to online information).
Graphs provide a convenient way to view and analyze characteristics and to operate on objects. Figure Figure 1-4 shows how the Profiler, Builder, and C++ Class Browser help you visualize your software by displaying data graphically. Other tools share this feature including the Heap Analyzer and Program Visualizer. Colors, shapes, and arrangement of data in these graphs make it easier for you to recognize objects and understand the structure of an application.
FUSE tools communicate behind the scene through a server (described in the DEC FUSE EnCASE Manual). Communication between tools enables the integration of source file display, editing, building, and debugging, making the following types of programming more efficient:
Locating compilation errors in the source files you just compiled
Viewing the reference page for a system call used in the source code you are editing
Finding references in your source code to functions or variables
Checking out the file you are viewing in the editor
Rebuilding with the changes you just made in the editor
Figure Figure 1-5 summarizes the ways in which the FUSE tools work together.
Table Table 1-1 shows FUSE enhancements to standard UNIX utilities that can help reduce the time required to develop applications:
Enhancement | Benefit |
Distributed builds in the Builder | Decrease build time |
Default project configurations | Reduce setup time |
Language templates bound to keys in the editor | Standardize coding conventions; reduce need to remember language syntax; decrease coding time |
Pre- and postprocessing scripts in the Code Manager | Support project lifecycle processes |
FUSE provides several ways to obtain online information:
A comprehensive online Help library provides information on FUSE tasks, tool windows, and error messages.
Interactive online Training modules help you gain proficiency in using FUSE tools.
The Man Page Browser displays UNIX reference pages in a scrollable Motif window.
As shown in Figure Figure 1-6, the HyperHelp Viewer lets you navigate the online Help and online Training for FUSE. Push buttons at the top of the window let you access the table of contents, search for topic titles or frames that contain a specified string, review a listing of previously viewed topics, and view the glossary.
Hotspots in the text let you pop up frames or jump to other topics. You can place, save, and return to bookmarks in the Help or Training and annotate frames with personal comments. Text from examples in the Help or Training can be cut and pasted into other windows. Topics can be printed in ASCII or PostScript format.
The Man Page Browser shown in Figure Figure 1-7 is integrated with the editors, and reduces the time to search for and view reference pages for UNIX system functions. In the FUSE Editor, you can position the cursor on the function you are interested in. Choose Utilities: Show Man Page to display the reference page for the function you selected.
You use the Control Panel to set up and customize your FUSE development environment. Chapter Chapter 9 describes the Control Panel in detail. This section highlights the following major functions performed through the Control Panel:
Working with projects
Modifying the Tools menu
Reestablishing work context
Customizing the FUSE user interface
You can also use the Style Manager provided by CDE to customize colors and fonts dynamically for all tools (see Section Section 2.9 for more information).
FUSE tools always run within the context of a FUSE project. Projects are a mechanism for setting and retaining a consistent working context. Tools interact only with other tools that are running in the same project. Multiple projects are useful for partitioning your development environment when you need to:
Work on unrelated programs at the same time or at different times
Work on different versions of the same program
Freeze the focus of one tool at a particular point in a program while you work on the program with other tools
For example, you can create a FUSE project corresponding to different applications that you work on, each with a different working directory, target executable, code library, and so on.
The Control Panel shown in Figure Figure 1-8 lists the current project, the projects that are open, and the tools that are running in these projects.
Most FUSE tools have a Tools menu from which you can invoke other FUSE tools. You can specify which tools you want to appear on the Tools menu by using the Control Panel.
In the case of editors, FUSE offers the following options:
FUSE Editor (default)
GNU emacs
XEmacs
Mule (an emacs variant known as the MultiLingualEditor)
vi
In the case of source control tools, FUSE offers the options:
Code Manager for RCS and SCCS source control libraries (default)
Version Controller for all other source control libraries
FUSE also supports basic integration of several other tools that may be part of your development environment. If you have these tools installed, making them active allows them to function within the context of the FUSE environment. If you want more information on the tools, activate and then invoke the tool for an informational dialog box. Currently available tools include:
ClearCase by PureAtria
Code Wizard
Builder Xcessory
To make an alternative editor or source control tool the default, you need to make sure that particular editor or source control tool is the only active one; that is, your choice is the only one listed on the Tools menu. Information on how to modify the Tools menu is available in Chapter Chapter 9.
Figure Figure 1-9 shows how you can use the Tools: Modify Tools Menu... menu item in the Control Panel to specify which tools appear in the Tools menu. For example, FUSE offers a choice of source control utilities and editors. If you specify that only one editor or source control tool appears on the Tools menu, that editor or source control tool is invoked by default for all relevant operations.
You can save the setup
information for all tools running in a FUSE session.
FUSE stores
this information in a named project file (project_name.proj
).
You can later recall that project information to quickly reestablish
your work context.
When you save the project settings during a FUSE session, you record all the information that you specified for the current project. For example, you could create two named projects set up with different targets. When you save the project settings, you save the separate target information. If you start the Builder once in each project, the Builder inherits the separate project settings, including the separate target. You can open several projects in the same FUSE session and make the most appropriate one the current project.
If a colleague has saved project settings that you find useful, you can copy your colleague's project file to your home directory and edit the file, tailoring the information to your environment. Then, start FUSE and choose the modified project information to get to work quickly.
See Chapter Chapter 9 for detailed information on saving and recalling project settings.
FUSE makes customizations simple. You do not have to learn X resource names or remember their valid values. Table Table 1-2 summarizes the customization options for FUSE tools.
To change... | Choose this menu option... |
Colors for a tool | Options: Colors... from the tool's main window |
Colors for all FUSE tools | Options: Global Colors... from the Control Panel (or use CDE) |
Fonts for a tools | Options: Fonts... from the tool's main window |
Fonts for all FUSE tools | Options: Global Fonts... from the Control Panel (or use CDE) |
Size and position of a tool's main window | Options: Size and Position... from the tool's main window |
Environment variables for a tool | Options: Environment... from the tool's main window |
Environment variables for all FUSE tools | Options: Global Environment... from the Control Panel |
Tool-specific values | Options: Application... from the tool's main window |
Chapter 9 provides details on customizing FUSE.
FUSE includes the tools summarized in Table Table 1-3. FUSE also includes programming facilities, called EnCASE, for integrating non-FUSE tools into FUSE. After a tool is integrated, it can be invoked from the FUSE Tools menu and interoperate with FUSE tools.
Tools | Can be based on... | Use to... |
Control Panel | Start tools; view a summary of projects and tools that are running; customize, configure, and organize your development environment. | |
Builder | make(1u); make(1p); gnumake | Create, process, and graphically display makefiles that control program builds. |
Call Graph Browser | Graphically display call relationships and structure hierarchy among the functions, files, and directories that make up a program. | |
Code Manager | sccs; rcs | Provide controlled access to source files for one or multiple versions of a program. |
Compare | diff; merge | Generate a display of the differences between the contents of two text files; merge the differences of two text files. |
Cross-Referencer | Determine where programming elements are declared, assigned, or referenced in programs. | |
Database Manager | Create and maintain static analysis databases used by the Cross-Referencer, Call Graph Browser, and optional C++ Class Browser; not accessible from the Control Panel. | |
Debugger | Ladebug | Isolate and analyze run-time problems in programs. |
Editors | FUSE Editor; Emacs; XEmancs, MULE, vi | Create and modify program source and other text files. |
EnCASE | Integrate additional tools into the environment. Provide access to existing and user-defined intertool messages through a callable or script interface. | |
Heap Analyzer | Third Degree | Analyze memory leaks and memory errors for a program. |
Host Shell | xterm | Start a shell window without exiting FUSE. Uses the shell specified with the SHELL environment variable. |
Man Page Browser | man | Display a reference page (man page), search for reference page titles, or display a file as a reference page. |
Message Monitor | Display intertool messages and changes in tool status; most useful for EnCASE users. | |
Profiler | prof; gprof; pixie; hiprof | Analyze run-time statistics for a program to improve run-time speed. |
Program Visualizer | Display source files in a highly condensed format; highlight a source file's events. | |
Search | grep; egrep; fgrep | Search one or more files for a regular expression or literal string; replace a string with a different string. |
Version Controller | Many source utilities, including sccs, rcs, ClearCase | Provide controlled access to source files for a program. |
An optional license, summarized in Table Table 1-4, is available to extend FUSE: DEC FUSE Support for C++. The DEC FUSE Support for C++ license provides support for analyzing C++ programs in FUSE. DEC C++, Digital's native C++ compiler, is supported. This license includes the C++ Class Browser, which allows you to view and analyze the class hierarchy in a C++ program. The DEC FUSE Support for C++ license also provides support of C++ programs in the Call Graph Browser, Cross-Referencer, Builder, and Profiler.
Package | Tool | Supported Language | Use to... |
DEC FUSE Support for C++ | C++ Class Browser | C++ | View and analyze the class hierarchy in a C++ program |