Wednesday, January 16, 2008

Beagle (or other indexing tools) Plugin GUI creator, File data representation for Coding IDE's


When Tiger was released, Apple released a library known as core data to developers, that allowed users to represent data as entity and other various UML diagrams for data management. It would be awesome for programmers if they could represent their files as a UML diagram, and the framework of their code is automatically created for them. Apple built this into their Xcode utilities.


Even better however, would be an extension of it. All software engineers have drawn dozens of diagrams of a file structure before. There are a few examples of data storage on Hans Reiser's Reiser4 webpage http://www.namesys.com/v4/v4.html. What we could do is design a gui to represent data into the standard development tools (or even a plugin for Eclipse).


The ability to easily represent data in coding utilities would act as a type of self documentation, and lazy programmers could even use it to develop parsing code for their programs (ie, create structs for headers and create functions which read the header in one block, etc).

However, the real advantage comes when you look at indexing programs such as Beagle. Beagles sole purpose is to parse files. So this could allow anyone, programmer or not to grab the specs for a file type, and draw them as a diagram. I have a very simple example above. In that case, you would tell the program to concatanate all letters. Since the tool knows how the data flows, it should be easy to represent


If we keep the raw diagram files, it means it will be immediately obvious to other developers if there are any bugs in the code too. It is a lot easier to spot bugs in a diagram, then bugs in 1000 lines of parsing code. We could also possibly use the diagram for validating files too then, to check if other programs meet the standards exactly. Finally, we could also use a file representation tool as a security tool, and generate files which step out of bounds in different locations automatically, to test our programs.

I have never seen anyone do this yet. It would be a first, and it would be no harder to code then something like Glade or GUI creation tools.

No comments: