A Framework, a Method and an Environment for the Object Oriented Development of Computer Integrated Manufacturing Systems
G++ is an environment for OO modelling, design, prototyping,
and implementation, with the C++ and Java languages, of concurrent distributed
software applications. It has been specifically conceived for the Computer
Integrated Manufacturing domain.
The environment encompasses:
|Several frameworks of reusable classes are available within
All objects of the framework enjoy optional run-time pointer checking, exceptions and errors handling, function tracing, persistency and the "callback" mechanism for event based programming.
Objects and ConcurrencyDifferent grains of concurrency are integrated by the framework components:
An important feature of the Rodin framework, which support concurrency,
is the set of classes that implements multitasking. At the basis there
The library for distributing objects enables to build distributed applications
in the style of CORBA. The library offers basic classes and the functionalities
for constructing from the interface of an object, its remote Stub, and
the Skeleton of its implementation.
The RDBPersistency framework enables the object-oriented access to relational
databases, which support the ODBC interface.
Pattern Language and Development Method
The software development process is evolutionary, achieved
by transformations from analysis to logical architecture/class design,
resulting in an early prototype, and from the prototype to physical architecture
design, resulting in the final implementation.
The CASE Tools
All phases of the process, and more specifically the transformation
processes between spaces are supported by integrated CASE tools, composed
of graphical editors, code/document generators and a common repository.
Analysis - MSC - high level design
Analysis, high level logical and physical design are carried out by using an object model which adopts the UML notation. Different views of the same problem, are offered for each phase of the development which allow to maintain the user description, completed by use case representations and Message Sequencing Charts (MSC), the software designer description, and the implmenetation description.
Class design and Interface specification
A detailed class design is obtained by transferring the ESA-HOOD modelling technique and notation to the C++ language. Class templates are started by capturing information directly from the high level logical design and are completed by adding sequential and concurrent behaviours to the class. From the class design the class interface specification is derived when needed for distribution, and conversely from an interface the prototype of the class can be started. Functionalities are offered to the class design to either generate C++ or Java code or reverse engineer legacy software, and to the interface specification to import/export CORBA-IDL files, offering complete interaction with external environments.
The behaviour editorAn OO extension of SDL (the Specification and Description Language of the CCITT) is used to specify the dynamic behavior of concurrency within the active objects of the environment.
|The classes, the G++ tools are based on, are also offered
as a graphical framework to create:
The basic G++ graphical editor encapsulates a Semantics object, which redefinition allows the user to customize editor behaviour, document and code generation functions.
The editor to build graphical user interfaces, along with standard drawing functions, offers a common interface to handle animate icons used for monitoring and control. A library of those icons is already available, however new icons can be created from the common interface offered by the framework. A run-time kernel allows the graphical interfaces to be integrated into the application.
Each editor allows to generate a single document in HTML or RTF format
of its contents. For the whole project the complete design and reference
manual is derived in a form of a document where each chapter contains
a fragment of the design or the detailed reference of each class.
|G++ has been extended to Java in a very original way, in order to maintain between the to environments (C++ and Java) an high level of compatibility. This has been achieved by maintaining a common object model, from which to derive the desired implementation, offering similar frameworks of classes and computational models for both, an by adding to the editors automatic translators for reengineering code from one to the other platform. This allows to prototype an application using Java and then deliver it in C++, to have the same GUI representation in the two languages, or operate reverse engineering from legacy C++ software to Java.|
|The environment, presently at the release 6.2, is integrated both with Windows and OSF-Motif operating on several UNIX environments (IBM RS/6000, HP, SUN Sparc, Linux, Lynx.os).|
The approach supported by G++ aims at raising reusability
in software development from the component level to the architectural
level, and at easing the designerís task, when making choices in the conceptually
sophisticated environment of OOP. This has been made possible thanks to
an innovative architectural model, unambiguous design rules, a framework
of reusable classes and CASE tools which offer seamless evolution from
the problem analysis stage to that of the software implementation.