Automatic flowchart tool [closed] - flowchart

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
Is there a flowchart tool that will automatically draw (align, reposition) a chart based on given information?
I'd like to add blocks to a chart, create relationships between them and then have the software reposition the blocks and lines so it can be easily readable. Then I can add more blocks/relationships and repeat the process.
Basically, I want to design a program in flowcharts without the hassle of planning where would I put what visually.
I know there are a lot of tools for drawing a flowchart (eg. Visio, Dia, LucidChart, etc), but I'm asking for one with this functionality (I don't know if they have it or not).
I'm not asking for the BEST one, I just want ANY that will do the job.
Ideas?
EDIT:
While DOT engine is a great tool, it's input system doesn't work for me. I'd like to be able to edit the chart as is (without having to input data via text language) and then have a button or something that would realign all the elements in a way the are easily readable (eg. as few relationship crossing as possible and similar).

code2flow is an online pseudo-code to flowchart generator which should do what you ask, just click on the image to play with it:

Very basic tool graphviz does all the layout for you.
Example:
graph g {
node[shape=rectangle]
a--b
}
Draws this:
But there are plenty of other options, shapes, etc, you can try here: http://sandbox.kidstrythisathome.com/erdos/
EDIT: for WISIWIG editor look here: Is there any good IDE or WYSIWYG editor for graphviz?
Looks like http://www.pixelglow.com/graphviz/ is the best option.

Graphviz dot is a graph layout engine that outputs graphs in a choice of formats (e.g. PDF, SVG) based on an input file that defines the nodes and arcs. It's flexible enough that you could use it to do what you want, but there'd probably be quite a bit of up-front effort involved.

Check this logical process flowcharts: http://flow.oodupinc.com/.
The usage example http://oodupinc.blogspot.com/.
It's collaborative, free and you can manage the node descriptions independently from flowcharts and use them in the modular system of flowcharts. Moreover, you get XML specification of the flowcharts to generate rich graphical application (HTML+SVG+CSS) or other manipulations. Currently, new users have to request a user account through email. The flowchart is drawn from specification using the flowcharting rules like links flow to down and right.

As far as I understand, the feature you are looking for in graph drawing is called "incremental layout" or "partial layout".
Incremental layout will help you make incremental changes to a graph or network (adding or removing nodes or edges) and then will recalculate the layout ("align the nodes"), adjust the edge paths and possibly rearrange the labels in order to get a nice new picture. The difference to a full layout from scratch is that the location of the existing elements is considered for the new layout and new elements are inserted into the drawing in order to not completely destroy the mental picture of the drawing in the mind of the user. This might result in the original elements being moved (e.g. in order to compact regions where elements have been removed), but the relative positions of the existing elements to each other is kept.
Partial layout will not change any of the existing elements but will apply the new layout to that part of the graph that is "new", only. This keeps the locations and paths of the existing elements, but might lead to less optimal results.
To my best knowledge these features are available only in very few graph drawing libraries. Only for the conceptionally very simple algorithms (those based on spring embedders and maybe tree layouts), this feature is easy to implement and thus might be available in more libraries.
The company I work for provides the yFiles Graph Drawing Libraries for Java, .net, and Javascript. These libraries support these types of layouts. The only other library that I am aware of that should be able to supports these kind of features is TomSawyer Layout.

Related

Feature query for using rmarkdown and r-exams as maths question database

I'm planning to become a maths teacher next year. Since work is pretty quiet for me at the moment, I want to build a database of maths questions so that I have resources to work with next year. Rmarkdown and R-Exams look promising, but there are a few things I'm not yet clear about.
The list below shows my requirements. Those items in italics are requirements that I want input on.
What I must be able to do
Database of questions that I can mix-and-match into quizzes.
Export to both PDF and HTML.
Not just multiple choice. Must have at minimum the ability to just display the question
or to display the question followed by space left afterwards.
To be able to display or hide solutions.
Question randomisation
What I would like to be able to do
Export quizzes to a variety of Learning Management Systems.
Grade questions with a Computer Algebra System.
I listed this one because I've seen people use moodle STACK with excellent results. However, it doesn't meet my portability requirements.
The randomization and mix-and-match strategy is at the very core of R/exams so clearly this is supported. The export to different output formats (PDF, HTML, Docx, different learning management systems) is also fundamental feature of R/exams, see: http://www.R-exams.org/intro/oneforall/.
How to do the fine control of the layout in PDF exports (title page, hiding solutions, spacing between questions, etc.) is summarized in the vignette("exams", package = "exams") [PDF]. There are also various questions related to the exams2pdf() interface here on StackOverflow.
As for grading I'm not sure what this should look like. It seems to me to be orthogonal to what R/exams does. But maybe I'm missing the point here. If you correct quizzes in PDF format you will typically assign points "by hand" - and if you are using a learning management system, that will assign the points. And then based on the points you can assign grades in any tool you like.

Free C++ library for drawing flow diagrams or Directed graph? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
I want to embed a flow diagram drawing canvas in my program.
Users would possible to:
draw "nodes" (rectangle nodes is enough) and "edges" (preferable to be orthogonal) to connect
"nodes";
use mouse to drag nodes for layout and resize rectangle;
select one or multiple nodes by mouse to delete, copy, paste etc.;
select one or multiple nodes by mouse to edit predefined properties (volume, temperature, pressure etc.) for them.;
change color (optional)
save/read data to/from files.
After drawing, the program only needs to get the connection logic (in data structure like Directed graph) and properties for further calculation.
Is there any free or open source C++ library to do this?
(Not necessary for cross-platform, available in windows is enough.)
I recently was looking in to this and came across a few other options, along with Graphviz:
http://igraph.sourceforge.net/screenshots.html
http://networkx.lanl.gov/gallery.html
http://gephi.org/screenshots/
I ended up using networkx. I'm going to be playing with Gephi shortly to see what kind of data I can load in to it.
Dynagraph seems to have GUI Drawing included
http://www.dynagraph.org/
Dynagraph for Windows is a complete OLE graph-drawing application, allowing you to paste graphs into other documents, and paste documents into a graph as nodes.
If you're willing to commit to using Qt code for the graphical side of things, Qanava does a decent job of it. For dealing with graphs themselves (non-graphically) Boost Graph is quite nice.
It looks like you will have to do it. Qt will make you able to do whatever you need.
Have a look at the graphics view framework that offers a lot of already implemented features to manipulate your graph.
It may not be what you're after, but if you want a quick and dirty way to do graphical output from your code, you can pipe to gnuplot and send it commands. If the graphs are complicated, you want something like Graphviz, but if they are just little graphs, then the most difficult piece is linking the two, and gnuplot makes that really easy.

What is the ultimate program to make a drawing of a database model? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
One of the first things I do when I'm on a new project is design a database model. To visualize the model I use a 7 year old version of Smartdraw. Maybe it's time for something new. What is the ultimate program to make a drawing of a database model. Smartdraw is for Windows only. Is there something that can be used on unix as well?
The best tool is pencil and paper.
Perhaps not the answer you are looking for, but sometimes the most simple solution is the best. :-)
A whiteboard (and camera to take a picture afterwards)
Your brain is the best drawing tool.
I prefer to develop a database schema in a simple text file.
At first it contains just the table names, attributes and foreign keys:
company:
company_name
...
employee:
name
age
company_name -> company
...
...:
The syntax is not important.
It just needs to be clearly arranged and easy to change.
Later I add types and CHECK() constraints,
so the text file gradually transforms into valid SQL code.
Using a drawing tool in that early stage is just distracting,
because it encourages to waste your time with moving reactangles.
Instead, let your brain build a picture of the schema
in the same way it creates fantasy pictures while reading a book.
As the schema grows,
it becomes necessary to support the brain by creating an overview.
Here, however, pencil and paper are faster than any drawing software.
Also note that there is no need to clutter an overview with unimportant details.
Just sketch the table names and the most important relationships (foreign keys).
Any further details will decrease the value of this overview.
However, if you really feel more comfortable with extremely detailed graphics than with text files and overview graphics, you might want to try
DBDesigner4
or
WWW SQL Designer.
I'm happy using Sybase PowerDesigner for years now.
Did you take a look at Visio 2007 SQL Server Add-In?
You can find it here: http://dbalink.wordpress.com/2008/04/24/microsoft-office-visio-2007-professional-sql-server-add-in/
WWW SQL Designer is one of the best that I've seen, which is pretty amazing since it is all javascript. It can also import and export xml and sql code of everything you draw. And they've added nifty bezier curves since I last used it.
I don't know if it's the "ultimate" program for drawing database models, but I use Visio. Unfortunately, it only runs in Windows.
On the upside, I can create my own shapes, or modify existing ones, and save them in collections called stencils. I can also make my shapes "smart" by programming them to do various things when I double click on them.
I use a whiteboard and a camera as well. I second the pencil and paper. I keep a pen(cil) and pad of paper with me almost always because I am forever designing something in my head and need to jot it down. I like Visio as well but my favorite software program to use has always been ERWin. The price of that thing is just way out line, but it is great.
I like ERWin. Not Cheap, but it can reverse engineer or do initial design + generate CRUD and manipulate db structure. Viso is pretty good for this too, but its not as complete and of course as strong MS SQL leanings is capabilities.
I used to use Visio, but if your database server is MySQL, try MySQL Workbench. It has a linux version as well as a win32 version. Like their other GUI products it has its fair share of quirks, but it works quite well and has the ability to create a diagram of a schema and a schema from a diagram.
I also agree that a pencil and paper, or whiteboard and camera is a great way to sketch things out, but I do like the GUI tools for putting down an idea which is a bit more well formed or complicated.
I like to use the open-source mind-mapping program Freemind. It's similar to designing with pencil and paper in that there's not a lot of surface complexity to interrupt the design process.
But it has two huge advantages over paper/pencil:
node folding
easy drag-and-drop re-arranging
It is very easy to navigate the interface without using the mouse within about five minutes. You can add as many or as few details as you like and can always fold up the details to de-clutter your view. Here's a sample screenshot:
The circles at the ends of the Departments, Employees, and Hours tables indicate that there are more nodes that are folded up. You can go crazy with different fonts, background colors, and even HTML formatting. I just did a [Ctrl]-[B] to make my table names Bold.
FreeMind--and mind-mapping software in general--provides its biggest benefit by staying out of the way of the creative process. It's the first tool I turn to when starting a new project from scratch.
NOTE: I've only ever used the program on Windows, but it is available on Linux.
DIA is not bad, and there are tools to actually generate some code from some types of models. If you are using PostgreSQL, there is even a tool for going the other way, pg-autodoc.
DIA is available for Unix, and I believe Windows as well.
I used to use Viso but now, as I'm more Mac based I use Omnigraffle.
I do have to admit though, as andyUK does, I do a rough sketch on paper.
It also depends on what Database you're using. If it's MySQL then there are quite a few visual development tools available, just have a google
There may be more technical programs, but I use SmartDraw. I would also like to note that 'ultimate' is up to your circumstances. Find what works best for you or you and your company. What works for you is the 'ultimate'.
Brainstorm/sketch the database on paper/whiteboard first, and then go with a diagram tool.
Which tool depends on your target database. We use SQL Server and thus the designer in SQL Server Management Studio works great for us, since we create the database itself at the same time.
For linux I use umbrello
If you're looking for a cheap solution/tool without any reverse/forward engineering capabilities, MS Visio might be your best bet. However, if you're planning to invest some money toward ERD tool, spend it on ER/Studio.
I used to use and be champion of ERWIN. As soon as I started to use ER/Studio, I became fan of it. I'm an enterprise data architect at one of the Fortune 100 company and I don't know how to get my work done without it.
PS: I don't have no affiliations with any of those products and companies.
OpenOffice has a vector drawing tool, and Inkscape is a another good one.
Otherwise, you can use Graphviz (dot language) to generate such diagram out of a textual description.
There are also some tools to generate such diagram out of an existing database (I first thought it was what you were asking).
If you don't need much take Dia.
I used Power Designer. It's powerful but rather complex.

GUI system development resources? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
Could someone recommend any good resources for creating Graphics User Interfaces, preferably in C/C++?
Currently my biggest influence is 3DBuzz.com's C++/OpenGL VTMs (Video Training Modules). While they are very good, they cover a large area of graphics programming, so only skim the surface of GUI programming.
This question does relate to "How do I make a GUI?", where there is also a rough outline of my current structure.
Any response would be appreciated.
Edit:
I've just read some of the answers and spotted that I've missed some points. I had to type the question twice as I caught the wrong button and lost it.
I missed two important points, first: This will be used cross platform including homebrew on a Sony PSP. Second: I want to create a GUI system not use an existing one.
Edit 2: I think some of you are missing the point, I don't what to use an existing GUI system I want to build one.
Qt in it's current form is not portable to the PSP, never mind the overkill of such a task.
That said I've decided to create an IM-GUI, and have started to prototype the code.
I wouldn't use OpenGL for the GUI unless you are planning for hardware accelerated and/or 3D effects that you don't think you would get with a more traditional GUI toolkit (e.g Qt, wxWidgets, GTK, etc). If you just need a quick simple GUI for hosting your OpenGL graphics then FLTK is a nice choice. Otherwise, for rendering the GUI directly in OpenGL their are libraries like Crazy Eddie's GUI that do just that and provide lots of skinnable widgets that you won't have to reinvent. The window and OpenGL context could then be provide with a portable library like SDL.
EDIT: Now that I've gone back and taken at look your other post I think I have a better understanding of what you are asking. For a GUI on an embedded system like the Nintendo DS, I would consider using an "immediate mode" GUI. Jari Komppa has a good tutorial about them, but you could use a more object-oriented approach with C++ than the C code he presents.
http://www.fox-toolkit.org has an API reference, if you're looking how to work with a specific framework. Or were you more interested in general theory or something more along the lines of how to do the low-level stuff yourself?
For more information about "immediate mode" GUI, I can recommend the Molly Rocket forums. There's a good video presentation of the thinking behind IM-GUI, along with lots of discussion.
I recently hacked together a very quick IM-GUI system based on presentation on Jari's page, and in my case, where I really just wanted to be able to get a couple of buttons and boxes on the screen, and more or less just hard code the response to the inputs, it really felt like the right thing to do, instead of going for a more full blown GUI-architecture. (This was in a DirectX-application, so the number of choices I had was pretty limited).
One of the fastest ways is to use python with a gui binding like pyQt, PyFLTK, tkinter, wxPython or even via pygame which uses SDL.
Its easy fast and platform independent.
Also the management of the packages is unbeatable.
See:
http://wiki.python.org/moin/PyQt
http://www.fltk.org/
(tkinter is default and already packaged with python)
http://wxpython.org/
http://www.pygame.org/news.html
For a platform like the PSP, I'd worry slightly about the performance of an IM GUI solution. With a traditional retained mode type of solution, when you create a control, you can also create the vertex buffer/display list or what-have-you required to render it. With an immediate mode solution, it seems to me that you'd need to recreate this dynamically each frame.
You might not care about this, if you're only doing a few buttons, or it's not going to be used in-game (assuming you're making a game) but, especially if you have a fair bit of text, the cost of rendering might start to hurt if you can't find a way to cache the display lists somehow.
Have a look at Qt. It is an open source library for making GUI's. Unlike Swing in Java, it assumes a lot of stuff, so it is really easy to make functional GUI's. For example, a textarea assumes that you want a context menu when you right click it with copy, paste, select all, etc. The documentation is also very good.
I'll second Qt. It's cross platform, and I found it much easier to work with than the built in Visual Studio GUI stuff. It's dual-licensed, so if you don't want your code to be GPL you could purchase a license instead.
I've had a look at the Video from Molley Rocket and Looked through Jari Komppa's cached tutorials.
An IM-GUI seems the best way to go, I think it will be a lot more streamlined, and lot quicker to build than the system I originally had in mind.
Now a new issue, I can only except one Answer. :(
Thanks again to Monjardin and dooz, cheers.
thing2k
I'd have a look at GLAM and GLGooey

C/C++ source code visualization? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
Basically I want tools which generate source code visualization like:
function call graph
dependency graph
...
Doxygen is really excellent for this, although you will need to install GraphViz to get the the graphs to draw.
Once you've got everything installed, it's really rather simple to draw the graphs. Make sure you set EXTRACT_ALL and CALL_GRAPH to true and you should be good to go.
The full documentation on this function for doxygen is here.
I strongly recommend BOUML. It's a free UML modelling application, which:
is extremely fast (fastest UML tool ever created, check out benchmarks),
has rock solid C++ import support,
has great SVG export support, which is important, because viewing large graphs in vector format, which scales fast in e.g. Firefox, is very convenient (you can quickly switch between "birds eye" view and class detail view),
is full featured, impressively intensively developed (look at development history, it's hard to believe that so fast progress is possible).
So: import your code into BOUML and view it there, or export to SVG and view it in Firefox.
For the free version:
source is on Github as DoUML
Installers can be downloaded from http://www.bouml.fr/download.html
You can look at different tools for software design and modelling (Rational Rose, Sparx Enterprise Architect, Umbrello, etc). Majority of them have some functionality to reverse modeling by source code, and getting UML class diagrams, and sometimes even sequence diagrams (and this is very close to functions call graph).
But after you get some pictures on really big project code base you could realise that such graphs are rather hard to read and understand. Unfortunally visualization capabilities of complexity are very limited.
As for me, using a "divide and rule" idiom is more convinient approach. You can extract different functionality blocks or layers from your some code base (just sorting cpp-files by different folders sometimes enough). Another way is to use some scripts (bash, python) to create simple csv tables with interested parameters of files, classes or functions like "number of dependencies" etc).
If you use Visual Studio, the 2010 Ultimate release lets you generate sequence diagrams and dependency graphs. However, the release currently supports only .NET application projects.
The team has gotten lots of interest in supporting C++ in a future release, so you might want stay tuned. In the meantime, you can post in the VS 2010 Architectural Discovery & Modeling Tools forum at http://social.msdn.microsoft.com/Forums/en-US/vsarch/threads to request an update. I know the product team loves hearing customer feedback about the tools.
In the meantime, you can learn more about creating sequence diagrams and dependency diagrams from .NET code in the following topics:
How to: Find Code Using Architecture Explorer: http://msdn.microsoft.com/en-us/library/dd409431%28VS.100%29.aspx
How to: Generate Graph Documents from Code: http://msdn.microsoft.com/en-us/library/dd409453%28VS.100%29.aspx#SeeSpecificSource
How to: Explore Code with Sequence Diagrams: http://msdn.microsoft.com/en-us/library/ee317485%28VS.100%29.aspx
To try the RC release and provide feedback, download it at http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=457bab91-5eb2-4b36-b0f4-d6f34683c62a
Try doxygen
Example output from Xerces
In addition to written tools above, you may try understand. But, it is not free.
Might be a duplication, but check out ollydbg, IDA Pro and this website has a whole bunch of resources with some very sexy images.