C++ Development Environment

The Current State of C++ Development

C++ is the language of choice for object-oriented developers. The promise of well defined interfaces, encapsulation of data and function, object reuse, class hierarchies, and modularity have lured developers interested in trying to deal with the increasing complexity of new software systems to adopt this new technology.

There are several problems facing developers using C++

Turnaround for changes to object interface definitions is slowed down by time consuming recompilations. Understanding and analyzing the object system from existing C++ code can be confusing. Developers providing shared libraries cannot make changes to object interfaces without invalidating applications that link with those libraries. Developers often have to start from scratch when building applications containing common objects and services (a major concern for C++ developers building GUIs based on X and MOTIF).

Click to view a jpeg image (1.2 MB).

The New Era of C++ Development

Silicon Graphics recognizes the importance of C++, and has developed a suite of new tools to solve these complex problems. The WorkShop Pro C++ Development Environment is comprised of the WorkShop core programming environment, the WorkShop Pro C++ development module, and the Delta/C++ compiler. Combined, these products provide programming solutions that help developers to be more productive, and ensure the quality of C++ - based software systems.

Tools to Support Rapid Turnaround

Better Understanding of C++ Code

Compatibility of Changed Versions of C++ Shared Libraries

Motif GUI Application Development

WorkShop Pro C++

Designed to Support C++ Developers, WorkShop Pro C++ is a software module layered on the core WorkShop toolset.

It provides more advanced tools specifically for the development of C++ applications, featuring:

Delta/C++ Compiler

The Pro C++ tools are designed to work with the Delta/C++ compiler.

Delta/C++ is a native C++ compiler, not a preprocessor. It is language compatible with AT&T/USL cfront 3.0 but provides advantages beyond cfront which include increased compile speed and better debugging support:

Existing C++ systems resolve all object references at compile time. Delta/C++ resolves all object references at link time, providing a clean way to separate class interface specifications from implementation. That is especially useful when developing evolving class hierarchies. This is the key technical difference. With Delta/C++, applications linked against a shared library will continue to run, without recompilation, even when a new "compatible" version of the shared library is released.

Expanding the Definition of "Compatible"

Compatible class changes include the following:

Reducing Build Times with Smart Build

Smart Build is an extension to the Delta/C++ compiler that dramatically reduces build times for C++ sources by supporting precompiled header files and leveraging the Delta feature of the compiler. Smart Build is a part of the WorkShop Pro C++ environment. Delta/ C++ cannot make use of this functionality outside of the Pro C++ environment.

Use of precompiled header files

Understands Delta compatible class changes

Header file is marked as unchanged if the changes are Delta compatible changes to a class definition

Understands other changes in header files

Understands use of program elements in source file

Compatible with any build environment

Because Smart Build is part of the compiler itself, it works seamlessly with any existing build environment by invoking the -smart flag

C++ Class Browser

You can navigate through and analyze interdependencies among the class definitions and their implementations with the Class Browser.

Provides Multiple Views

The browser supports multiple views to provide the maximum amount of information in a concise, visual display. The views are organized with respect to the notion of classes in C++ and include:

Supports Extensive Class Queries

The browser provides a set of static analysis queries tailored for C++ programs. These queries help users analyze interdependencies of a class with its related classes such as base classes, derived classes, component/container classes, classes that are used, and friend classes. A few examples of queries on class members and related classes:

Scalable

The Class Browser handles extremely large programs, and provides easy navigation even when analyzing complex problems. Users can control the amount of information to be viewed when analyzing class relationship graphs or viewing class definitions. For example, the user can choose to display all class relationships or just immediate class relationships with respect to a class. Similarly, when viewing a class definition, users can choose to view just its public members.

Integration

The various views are integrated, providing the ability to select a class or method in one view and display additional information about it in another view. The Class Information Window can be invoked by clicking on a class in the Class Graph, and the Call Graph can be pruned or populated from the Class Information Window. Also, Source View, the annotated textual viewer used by all WorkShop tools, can be invoked by clicking on a class in any of the views.

ViewKit

ViewKit is an application framework for Motif development. The ViewKit class library is a C++ application framework designed to simplify the task of developing applications based on the OSF/Motif user interface toolkit. The ViewKit promotes consistency by providing a common architecture for applications. It also improves programmer productivity by providing high-level, and in many cases automatic, support for commonly-needed operations.

In addition to providing facilities normally associated with a graphical user interface, the framework serves as a central integration platform for other facilities that applications typically need. These include support for:

Expression Evaluator

The Expression Evaluator handles native C++ syntax and provides support for various queries: Accessing of static and non-static data members and methods

Trap Management

Can specify a particular overloaded function or operator and stop only in that function.

Delta/C++ Support

The debugger supports programs compiled with or without the "Delta" option in the new C++ compiler.

Performance Analyzer

The WorkShop Performance Analyzer allows the developer to accurately determine expensive functions and performance bottlenecks in a C++ program. The Performance Analyzer also supports the detection of memory errors. The Heap View in the Performance Analyzer provides a visual display of dynamic memory that highlights memory leaks and erroneous frees.

Additionally, the Performance Analyzer has support for determining the actual function used when a virtual function is called in the class hierarchy.

Tester

Tester is a dynamic test coverage tool that also has additional C++ support:


[Silicon Surf]