OOVCDE

OOVCDE Release Details


Releases

The following lists releases in reverse chronological order.

2015-5-2

This version contains:

2015-5

This version contains:

2015-4-2

This version contains:

2015-4

This version contains:

2015-3-2

This version contains:

2015-3

This version contains:

2015-2-1

This version contains:

2015-2

This version contains:

2015-1

This version contains:

2014-12

This version contains:

2014-11

This version contains:

2014-10

This version contains:

2014-09-2

This version contains:

2014-09

This version contains:

2014-08-2

This version contains:

2014-08

This version contains:

2014-07-2

This version contains:

2014-07

This version contains:

2014-06-2

This version contains:

2014-06

This version contains:

2014-05

This version contains:

2014-02-2

This version contains:

2014-02

This version contains:

2014-01-04

This version contains:

2014-01-3

This version contains:

2014-01-2

This version contains:

2014-01

This version contains:

2013-12

This version contains:

2013-10-2

This version contains:

2013-10

This version contains:

2013-09-2

This version contains:

2013-09

This version contains:

2013-08-2

This version contains:

2013-08

This version contains many new small features:

2013-07-2

Sequence diagrams are now created and can be saved as .SVG files. Class diagrams now have many more features.

2013-07

The biggest new feature is that the graphs can now be saved into .SVG files, which can be edited in Inkscape.

The C++ parser has been changed from a parser used in the Umbrello project to the LLVM/Clang parser. The Clang parser will correctly parse modern C++ variants, and is a complete C++ parser, which allows for collecting any information that is desired for graphs.

The GUI has been changed from QT to GTK partly because of licensing and because the number of dependencies seems to be smaller.

The graph layout has been changed from Boost to a custom genetic algorithm. The Boost graph did not handle different sized nodes/classes easily. The genetic algorithm is not perfect, but gives a surprisingly quick initial layout in most cases.

2010-01

This version used Qt, a C++ parser from the Umbrello project, and Boost graph.

The program goal has evolved a bit from the original to focus initially on the graphs. The main goal currently is to be able to quickly view class relations and navigate between classes in systems with hundreds of classes. There are also new symbols for aiding understanding of which classes can modify other classes so that review of certain relations can be performed quickly.

The boost graph and D-Bus usage cost a lot of time to develop due to various problems. Originally the boost graph was going to be based on lists, but was changed to vectors because the implementation was easier. The D-Bus was difficult to use to handle arrays of structures, but eventually that too was figured out. Since the D-Bus support in MS Windows does not seem to be supported well, the code was converted to shared memory. The D-Bus code still exists in case there is better support in the future.

Original Goals

The original purpose of this program was as an integrated software development environment. Since many CPU cores will be available, why not have many tasks happening in the background while the programmer is working? This means that the program can be compiled, and documentation produced while the programmer is developing code. This includes code diagrams that are created in the background.

The implementation details of the separation of header files and source files for C++ should be hidden from the developer. This would require an intelligent layout of source methods so that the user doesn't have to organize windows.

One idea was to use a genetic algorithm to create the graphs on a background thread. The boost graph library would be used to create the original graph quickly, then an icon would indicate when the improved graph was ready. The programmer could click on the icon to view the improved graph. This has yet to be implemented.

There could also be a simple language for creating classes for either beginning users, or as a convenience for advanced users. The relations could be specified by a language such as "Mary has-a little Lamb". This could give a tigher understanding for beginners between language and graphs.

More History

Originally the program was called Program Object Relationship Navigator, but the web site was not getting any hits. So a few programs were written to generate random strings to make a name, and the programs all generated OOVCDE. I may post the source code later. The pronunciaton is something like Oov-Kitty, and that is the reason that the cat-eye is used for the scope and const relations symbol, and that the Oov logo is an ice cream cone.