ROCASE 0.91 Beta - an object-oriented CASE tool
===============================================

Installation requirements: None.

Special requirements:  a C++ compiler that conforms to ISO/ANSI C++.

The product is a CASE (Computer Added Software Engineering) tool for
the analysis, design and implementation of software systems belonging 
to some of the most varied fields (including in activities of business 
re-engineering) using Object-Oriented Technology (OOT). It represents 
a tool indispensable to the new technology of building computing systems, 
a technology referred to more and more often as visual programming. 
From the structural point of view, the tool is composed of: a repository, 
diagram editors, a browser, a semantic-checker, a code generator, a 
reverse-engineering tool, a component for the automatic formatting of 
class diagrams.

The graphic editors represent the first component (otherwise compulsory) 
with which the user comes into contact. The sequence of performing the 
operations compels the user to structure his application. A project is 
made up of one or several modules among which there are use 
relationships. The architecture of the module is detailed by means of 
class diagrams. The behaviour of the classes may be described by means 
of state-transition diagrams. Object diagrams may be built to present 
the dynamic behaviour of the whole application or of one or several 
modules. Textual information must be related to graphically represented 
entities or to their components and is introduced by means of dialogue 
boxes. All entities can also be accessed by means of the browser, where 
they are structurally presented. The browser permits the search of any 
entity of the project and allows drag & drop operations between 
definite classes in different modules. ROCASE Graphical User Interface 
offers the whole range of graphical facilities typical of these types 
of applications: menu bars, toolbars, shortkeys, pop-up menus and so on.

ROCASE supports Unified Modelling Language (UML), giving special 
consideration to the logical view. Thus, one can build module diagrams, 
class diagrams, state transition diagrams, object diagrams (collaboration 
diagrams and message-chaining diagrams). These diagrams offer 
different (orthogonal) views of applications, thus allowing an easier 
understanding of the problem and a more in-depth description of the 
suggested solution. The tool also allows diferent levels of presentation 
for the same view. (At the macro level, the architecture is viewed by 
means of module diagrams, more detail being achieved at the level of 
class diagrams. The dynamic behaviour is described by means of object 
diagrams - at the level of the system or of the module or by means of 
state transition diagrams at the class level).

Faithful to the principles according to which application are not born 
in an empty world, that modularity is one of the most important ways to 
manage applications of large and average sizes, ROCASE gives material 
help so that users may put into practice these principles for the 
construction of applications (systems). The tool offers users two 
categories of reusable components. The first one comprises the system 
of basic (pre-defined) types and the Collection of generic classes used 
by Object Constraint Language (OCL) for the implementation of multiple 
associations. The second one comprises the classes of a library (for 
instance, Microsoft Foundation Classes), design patterns, previous 
designs.

Since the same information may be presented in different diagrams - one 
of the basic functions of ROCASE is the preservation of information 
consistency. This is done by means of a checking component, active 
throughout the construction of the application.

The purpose of ROCASE is:

1. To offer a powerful, easy-to-use, safe and flexible tool meant to 
support applications developers in the use of UML for the analysis, 
design and implementation of new computing applications, for the 
analysis and restructuring of old systems made by means of OO 
Technology (using the reverse-engineering tool). The use of the tool 
spares the user the activities which can be automated, allowing him 
to concentrate on the core of the problem.

2. To be an active tool necessary for the take-in of the new technology. 
This task is not imposed solely by the novelty feature. Reuse at all 
levels, one of the main features of object-oriented programming cannot 
be achieved without studying previous experiences, (which have proved 
to be) positive. For this purpose, the task of ROCASE is to permit the 
suggestive presentation of important problems and solutions, to help 
the developer to use the old solutions in solving new problems.

3. To permit the experimentation of solutions or variants to the 
yet-unsolved problems in the UML proposal, selected on 17 November 1997 
as a future standard for Object-Oriented Analysis and Design Methods by 
the Object Management Group. Taking into account the complexity of the 
problem, (UML has been working on it since October 1994) looking for 
a new solution is compulsory.

The connection of our product with the Information Technology is 
exhaustive. It is aimed at the implementation of a new technology 
of building computing systems, a more intuitive, more rigorous, 
more efficient technology. To build it, we used tools, products 
and techniques having to do solely with the Information Technology. 
The techniques, tools and products used to make ROCASE belong 
exclusively to the Information Technology. In addition, the design 
and implementation of the OCL component (including the generation of 
the code) were accomplished with the help of the ROCASE version in 
operation at that time.

The following are features of ROCASE which have not been implemented 
in other similar tools:

1. The implementation of Collection generic classes described in OCL 
language and the inclusion of information expressed in OCL in the 
generated code.

2. The semantic checking, done by the tool all through the construction 
of the application, in the case of: instantiating generic classes, 
redefining the methods, the presence of links between two objects, 
choosing the valid messages, building state diagrams.

3. The possibility of use within the framework of a new project of 
Collection generic classes implemented for OCL, of the classes of a 
library which has previously been analyzed with the reverse-engineering 
tool, of design patterns or previous projects.

In 1995, at the laboratory, we designed and implemented a compiler which 
translates into a C++ or Eiffel source code the algebraic specifications 
written in mFOOPS, (a subset of the FOOPS language). For the non-reactive 
objects, whose behaviour cannot be specified by means of state-transition 
diagrams, the use of algebraic specifications represents an attractive 
alternative, especially if we consider the fact that part of these 
specifications can be automatically generated based on the information 
contained within class diagrams.

Without a doubt, the product is a tool which supports the use of a new 
technology which, although it has succeeded in proving its advantages, 
still has a long way to go before reaching full maturity. We are 
specifically referring to the possibility of complete generation 
of the code for the designed applications, to the integration within 
this new technology of an effective trial technique, to the large-scale 
promotion of reusability, starting exactly with the specification of 
the system. 

ROCASE represents the first generation of a new product. As it follows 
from the history of the product, it was preceded by three prototypes. 
The first one was built in 1995 for OMT, the second in 1996 for Syntropy, 
the third one in 1997 for UML. The conclusions resulting from the trial 
of the prototypes in the laboratory were used as specifications for the 
presented product.

We consider that ROCASE deserves an award for its intrinsic qualities: 
easy-to-use, safe, fast even for average-size applications, (200 to 
300 classes) for which it was tested. The quality of the diagram editors 
is by far higher than that of all the editors implemented for similar 
products. The proportion of the code generated with ROCASE is higher 
compared to the code generated by similar instruments and is more 
legible. The reverse-engineering tool analyzes any C++ code and also 
Visual C++ and Borland C++ extensions, interpreting correctly and 
completely the information available within the macros and template 
classes. The component of automatic diagram-formatting is fast and 
extremely competitive.

We consider that ROCASE is part of a restricted number of products 
which lead the way towards the introduction of a new technology. 
The way in which it was conceived permits its upgrading with numerous 
facilities. The CASE Tools domain importance, the functionalities 
implemented for the first time (mentioned under the innovative aspect), 
the circumstances under which the product was made (human, financial 
and time resources) and the prospects offered by such an award may be 
taken into consideration in the case of other products of the same 
quality.

Author: Research Computing Laboratory of Babes-Bolyai University
E-Mail Adress: lci@cs.ubbcluj.ro
