How Do The Professionals Do It?
April 4, 2005 4:32 PM Subscribe
Programmers help please.
I program DVDs using a very simple language which is proprietary to DVD. Typically instructions will be used to link to specific menus or video, or to set audio or subtitle streams etc, and most of these instructions exist as pre or post commands (i.e. at the start/ end of a specific menu or video section), or as button actions.
And because all the code exists at numerous different locations (i.e. different menus, different video sections across the disc), in extremely complex projects it is quite difficult to keep track of what's going on where, and more so, almost impossible to remember what on earth is going on when you return to a project months later.
In order to get round this problem, I recently started using basic flowchart software, cutting and pasting all the code into an infrastructure so that I could see the project code (and flow) as a whole.
I found this incredibly useful, and was just wondering if this is a common way to keep track of those projects that involve a lot of mental juggling, or if there are other ways to keep track of what the hell's going on?
if i understand you right then you're describing the same problem that every pogrammer faces - how to describe something that is complicated in a simple way.
some solutions are graphical - flow charts like you're doing, or more fancy stuff with uml, for example. other solutions use text in different ways - this is one reason why different programming languages are used. compromises that use a gui to improve text are also common - called "interactive development environments" (IDEs) - they can do things like show graphs of how one part of the code depends on another.
it's nice if the documentation and the code are "the same thing" or, at least, if you can automatically go between them. so something you might want to do is look at ways to automate going between the flow chart and the dvd, if that's not already part of what you do - although i can't imagine how, unless there's some way to save the project to xml. if so, you may be able to transform the xml using xsl (if you're not an xsl programmer that's probably too much work, but in theory you could go between, say, a flowchart in svg and "code" in the proprietary xml format). for example, we can develop our design in uml and then generate java code from that (or generate uml from java code - we use enterprise architect, which has a free demo if you're curious).
you could also look at tools used during program design. we use something called "caliber" that lets us track how different requirements are related to each other. you could use something like that to relate different ideas together.
posted by andrew cooke at 5:25 PM on April 4, 2005
some solutions are graphical - flow charts like you're doing, or more fancy stuff with uml, for example. other solutions use text in different ways - this is one reason why different programming languages are used. compromises that use a gui to improve text are also common - called "interactive development environments" (IDEs) - they can do things like show graphs of how one part of the code depends on another.
it's nice if the documentation and the code are "the same thing" or, at least, if you can automatically go between them. so something you might want to do is look at ways to automate going between the flow chart and the dvd, if that's not already part of what you do - although i can't imagine how, unless there's some way to save the project to xml. if so, you may be able to transform the xml using xsl (if you're not an xsl programmer that's probably too much work, but in theory you could go between, say, a flowchart in svg and "code" in the proprietary xml format). for example, we can develop our design in uml and then generate java code from that (or generate uml from java code - we use enterprise architect, which has a free demo if you're curious).
you could also look at tools used during program design. we use something called "caliber" that lets us track how different requirements are related to each other. you could use something like that to relate different ideas together.
posted by andrew cooke at 5:25 PM on April 4, 2005
here's an example analysis diagram from the enterprise architect site.
even if you look at all the different diagrams it might not be clear what the advantage of a tool like ea is - it stores "in the background" the information in each diagram and makes sure they are consistent, letting you carry information automatically from one diagram to another. so you end up with lots of different kinds of "views" onto the design, which together constrain the code very tightly.
however, this approach (uml) is specific to a particular kind of programming language. while you could use, say, the analysis diagram instead of your own flowchart system, you wouldn't get the advantages that come from using it with a supported language (java, c++, etc).
posted by andrew cooke at 5:30 PM on April 4, 2005
even if you look at all the different diagrams it might not be clear what the advantage of a tool like ea is - it stores "in the background" the information in each diagram and makes sure they are consistent, letting you carry information automatically from one diagram to another. so you end up with lots of different kinds of "views" onto the design, which together constrain the code very tightly.
however, this approach (uml) is specific to a particular kind of programming language. while you could use, say, the analysis diagram instead of your own flowchart system, you wouldn't get the advantages that come from using it with a supported language (java, c++, etc).
posted by andrew cooke at 5:30 PM on April 4, 2005
petri nets are another way of diagramming processes. they're used particularly for when you have several things happening at the same time (parallel asynchronous events).
posted by andrew cooke at 5:57 PM on April 4, 2005
posted by andrew cooke at 5:57 PM on April 4, 2005
automate going between the flow chart and the dvdGreat post! If you can get a programmer on this they might be able to automate the process.
posted by holloway at 7:59 PM on April 4, 2005
Response by poster: wow andrew - you really went to town on your answers: thanks!
posted by forallmankind at 9:58 PM on April 4, 2005
posted by forallmankind at 9:58 PM on April 4, 2005
Not sure how relevant this is, but the company I used to work for here in the UK have released a development tool called DVD Extra Studio. I don't know a great deal about it (I was in a different department) but it seems to be development environment for simplifying the production of DVD menus and DVD games and so on. It'll probably be quite expensive though.
Anyway, here's the link.
posted by uk_giffo at 12:03 AM on April 5, 2005
Anyway, here's the link.
posted by uk_giffo at 12:03 AM on April 5, 2005
You might like Compendium for doing your mapping. A little more stripped down and flow oriented than Visio and the like, plenty of ability to add text and comments.
posted by phearlez at 11:26 AM on April 5, 2005
posted by phearlez at 11:26 AM on April 5, 2005
This thread is closed to new comments.
So, nothing groundbreaking to suggest, just a note that I ended up using the same method.
posted by -harlequin- at 5:18 PM on April 4, 2005