What do you use to make programming flowcharts, diagrams, etc? [closed] - drawing

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I've always just used OpenOffice Draw and it just occurred to me that there has to be something better out there.
So what do you use? Do you like it?
Bonus points for free things and for web apps.

I use Dia, the Diagram Editor.
Dia - Best Freeware Flowcharting (Visio) Tool
Dia is a free flowcharting tool,
similar to Microsofts Visio. It is
useful for building informal diagrams,
database diagrams and database models,
as well as drawing more complex charts
such as UML diagrams.
Objects in the charts can be connected with lines and arrows in a variety of styles.
Object types in Dia include AADL,
Assorted, BPMN, ChemEng, Chonogram,
Cisco, Civil, Cybernetics, Electric,
ER, Flowchart, FS, Gane and Sarson,
GRAFCET, Jigsaw, Ladder, Logic, Map,
isometric, MSE, Network, Pneumatic /
Hydrualic, RE-i*, RE-Jackson, RE_kaos,
SADT/IDEFO, SDL, Sybase and UML.
Dia saves diagrams in several
formats, including XML, EPS, SVG, XFIG
and PNG.
Diagrams in Dia can span multiple
pages. For a few examples of diagrams
created in Dia, see
http://live.gnome.org/Dia/Examples.
Dia is freeware and open source.

Microsoft Visio is pretty much designed for this task - whilst expensive, it's very good.

I am using OmniGraffle which is not free but I don't regret buying a license at all

For sequence diagrams I like http://www.websequencediagrams.com

I used mxGraph and it is very good.

SmartDraw is great. Visio is good too, but not as feature-rich.
Google Docs has also recently added flowchart support too.

I use the combo Gliffy and MindMeister.

There's an open-source program with features similar to Visio called Dia.
For UML, there's ArgoUML.

There is also Visual Paradigm for UML. The community edition is free for non-commercial use.

I've used yEd with some success. Never did anything real fancy with it though.

I prefer to make diagrams on paper, it's cheap and much, much faster than using a computerized tool. Not so pretty for showing to others though.

you'll find lots of similar questions with a lot of the same answers under the flowchart tag.

Graphviz is good for some type of diagrams.

I'll throw Freemind on to the heap. Not so much for flow charting, but mindmapping. Good for high level brainstorming sessions.

I use both Mindmeister (easy to use and free) and Visio 2007 (powerful).

OmniGraffle
http://www.omnigroup.com/applications/OmniGraffle/
This is only for the mac, and only the demo part is free, but it worth the money.

I Like Visio, because of its extensive shapesheets and templates that come with it. If you are also interested in making Wireframes, I can recommend the free wireframing shapesheet from GUUUI.
Also, I use FreeMind for visualising tree-style relations.

Rational Software Modeler (used to be Rational Rose).
It also comes with a Microsoft .NET Extension that allows you to do .NET code generation from certain models.

Related

Qt for non-UI application? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I'm looking to use Qt for a non-UI application. It has the potential to run on an appliance, but will start out on the desktop. The UI part (I know, I said non-UI) would be a web server with HTML(5)/AJAX.
I would really only use Qt for basic cross platform stuff like threads, synchronization, serialization, resources (strings, maybe images), internationalization, etc.
Which would be better for something like this, Qt or Boost and creating the cross platform layer myself?
Qt feels a little heavy for what I need, but I want to hear what experiences others have.
Yes, in my opinion it is perfectly OK. I wouldn't say Qt is heavy compared to Java, for example, which is extremely widely used for such tasks. Qt is very powerful, clean, easy and fast. I use it a lot, and I don't know any major drawbacks with it.
Yes, using QtCore (and other non-GUI modules) should do just what you need. As choosing between Boost and QtCore: both do good jobs and sometimes they interleave. But not always.
Qt(Core) offers mainly functionality. Boost offer mainly tools to achieve functionality. For example, you have templates and functors in Boost, not in Qt. OTOH, if you need message pumps and the like, you will only find those in Qt.
It really depends on what you are trying to achieve.
What you're proposing is perfectly reasonable.
You want to use a number of features (threading, etc. that you mention) across platforms.
Essentially you have a number of options, as follows:
Option 1 (Bad): Write your own cross-platform wrappers. You'd be reinventing the wheel, and you probably won't be able to tackle as many cross-platform cases and features as Qt already does. This option also means that whoever inherits your code will have to deal with your custom library instead of a well-supported and well-documented easily accessible library.
Option 2 (Not recommended): Use individual cross-platform solutions for every feature you want, like threading, networking, etc. This means that you (and your successor) will have to maintain compatibility with a large number of libraries in the future.
Option 3 (Recommended): Use a single, well documented, easily accessible library to meet all your needs. Qt fits the bill.

Create C++ Code from Visio UML diagram [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
Visio 2010 Beta can generate static UML diagram from Native C++ project, and it's great. How is it possible to solve reverse problem: given a static UML diagram from Visio, generate header files?
Or, maybe, there are free tools for architecture development and reverse engineering?
EDIT
Generally speaking, I don't need diagrams to be strictly UML. They just should be clear enough to look at them and understand classes during designing application, implementing and supporting. But it must have a feature of reverse-engineering and generating code.
I'll try to use offered alternatives in several days and then write a little comparison.
ArgoUML
I tried to import my existing code and failed. The reason is that C++ support is pre-alpha. Many constructions of the language are not supported yet. From MessageBox shown while importing:
The C++ reverse engineering module is
pre-alpha stage. Its known limits are:
* very few C++ constructs are supported, e.g., enums, unions, templates, etc, aren't;
* no support for non-member variables and functions;
* no integration with the C++ generator => RTE won't work!;
* no operator overload support;
* very immature, certainly this list needs to grow!
Bring up diagram in Visio
Bring up Visual Studio, open c++ project.
Start typing in code :)
Seriously, Viso is a visual tool and represents it's data in a form best suited to rendering. This lacks information needed to construct a code model from it, unless it were to use some complex vision and edge detection algorithms.
So, I don't think there will be any such tool out there.
StarUML is a free (and better) alternative with code generation possibility.
Most paid UML tools generate code too.
ArgoUML is a nice, free tool that can generate UML class diagrams then generate source code from the diagram. ArgoUML can output code in several languages, including C++.
You can find it at:
http://argouml.tigris.org
Enterprise Architect from Sparx Systems has worked well for me.

Suggestions of excellent examples of real C/C++ code [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
Locked. This question and its answers are locked because the question is off-topic but has historical significance. It is not currently accepting new answers or interactions.
I'd like to study some good C/C++ code. The code should:
be good in style and structure, presenting best practices
be a real life program (not an example or toy)
not too big so it doesn't takes ages to analyse it
Windows and/or Unix
I know there are 1000s of open source projects out there. But I'd like to hear your suggestions.
I am Java programmer and I am curious how good project in c/c++ is structured (files), granularity of classes/functions/files, documentation/comments, build tools etc.
Multiple suggestions are welcomed e.g. this is good windows example, that is good pure C etc.
I would specifically mention memcached. It's a great example of fairly short, readable code with a clear purpose.
Second, I would recommend the Apache web server. It's a fantastically well-run open source project that you'll learn a lot from, both about the language, as well as general design practices and networking/threading.
I'd vote for nginx: http://sysoev.ru/en/ as an example of a very good C programming style
Samba: a large, cross-platform (POSIX-based), pure C, very popular network server.
Samba has good developer documentation, and the code base itself is very well organized; I've had no problems diving into just about any location within the code to answer a question I had about its inner workings or to track down a bug.
I find the implementation of Lua is quite nice C source. But languages are a bit odd as an example project.
Diomidis Spinellis has some suggestions in his book, "Code Reading: The Open Source Perspective", Addison Wesley, 2003. ISBN 0-201-79940-5.
Perhaps the book could be useful to you.
URL http://www.spinellis.gr/codereading/
Google's Chromium is pretty huge, but you don't have to analyze it all to appreciate its clean, peer-reviewed structure.
Also, it's a good example of nicely done developer environment deployment.
Here's the main file for relayd, which is a daemon that handles load balancing and failover. It's nicely written, full featured, clean C code. It's big enough that you get a feel for a "real world" program, but not so big that you can't get your head around it with some work. Great for secure, well written networking code, daemons, etc.
Modesty aside, there's also a little tiling window manager for X that I've helped with. It's quite small but it's a real wm, and the other coders on it have high standards (and hold me to them!)... Nice for learning basic X stuff.
K&R has many good examples of real programs. For instance, on page 115 of the Second Edition there are two simple implementations of the echo command. From there, it might be interesting to see how the command was implemented over time. For instance, there is a version in the GNU coreutils source. A version derived from BSD can be found in BusyBox source.
It might be interesting to see how the newer versions compare to the textbook examples. Why are the programs that are used in real life longer? How much of the code is related to new features and how much is related to dealing with edge cases? How would you write the same code in Java?
As for C++ I would recommend you the Qt library sources and KDE's source code and its programs.
It's beautifully written code and the way that you should program in C++.
More C++ suggestions in: Examples of “modern c++” in action?

How to get up to speed on SOA? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I've been given the task of laying the groundwork of a SOA for my client. The goal is to open up various processes in an end-client independent way and also to make data available offline e.g. for reps visiting customers.
I do have extensive experience with J2EE (Websphere) and web services but I would appreciate advice on how to build up such an SOA.
Where are the pitfalls? What about security? How finely granulated should services be? etc.
Links to tutorials and book recommendations would also be useful.
Thanks!
Pitfalls
Versioning/backwards compatibility: it gets really hard to change a contract once you have loads of clients. I have seen many sites version the APIs by introducing the version in the URL
Granularity
Each service should be reasonly self-contained (don't expect people to do 3 calls before they get what they need)
Platform Independence
Try to give more than one way of accessing your APIs (WS, JSON, REST...)
People can't agree on what SOA actually means.
http://martinfowler.com/bliki/ServiceOrientedAmbiguity.html
(although consensus may have grown since that was written)
I suggest quizzing your client to find out exactly what they mean - if anything. Then give them something that actually provides business value, while ticking any SOA boxes that might coincide with that effort.
Call me a SOA-skeptic. Fowler's lament still seems right on.
I would focus on the more general problem: your client has 2 or more applications that have to collaborate together. Look at old school integration patterns.
(source: amazon.com)
Found this IBM Redbook (#sg246303) which is quite a good introduction to the basics of SOA.
As Alan said, I'd start reading the Enterprise Integration Patterns book. There are a number of ways to implement them either using a messaging system directly such as JMS or using open source projects like Apache Camel, for example see the pattern catalogue.
I'd also look at understanding how to build good RESTful services using JAX-RS with Jersey as a simple way to expose resources for your systems to anyone on the web from any language/platform easily without falling into the SOAP/WS-* deathstar :)
Get an ESB (enterprise service bus): Mulesource is a good choice (Opensource, Mature, yet bleeding edge) . Once you understand it, you will understand SOA.
The goal is to open up various
processes in an end-client independent
way and also to make data available
offline e.g. for reps visiting
customers.
The second half of that isn't really an SOA topic, it's more of a replication to mobile devices problem. I would stay far, far away from trying implement a buzzword and focus on the problems that you are stating. Web services are good way to open up process to client independent ways.
So far the best book I found is SOA Compass also available on Amazon

What is the best encryption library in C/C++? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
What is the best encryption library in C/C++ In terms of:
entropy
quality
ease of use
readability
portability
performance
What's your favorite and why do you like it?
We've used OpenSSL with good success. Portable, standards compliant and easy to use.
I've used CryptoPP in the past (http://www.cryptopp.com/) and although its API style and programming paradigms take a little getting used to, I liked it in the end. It provides a wide range of symmetric and asymmetric algorithms with much flexibility. Documentation is so-so, the API docs are there but there's little 'high-level' overview and simple sample code. I ended up puzzling together pieces of code from around the net. It was easy to integrate into my project (linked statically). I'm using MSVC - 2003 when I started using it, now switched to 2008. It's portable across several platforms (check out the website). I've always used the default RNG, don't know which one that is.
I'm gonna have to go with LibTomCrypt. It's often overlooked for OpenSSL, but TomCrypt is just so lightweight and simple. As for quality, TomCrypt is widely accepted as top-quality encryption. Also, it's license is public domain which avoids the attribution hassle for your documentation that BSD licenses give you when writing commercial software.
Crypto++ seems to have a very good reputation
Wikipedia - https://en.wikipedia.org/wiki/Crypto%2B%2B
GitHub - https://github.com/weidai11/cryptopp
My favorite is GNU's library:
libgcrypt
Its performance is good, and it's used EVERYWHERE so it's very well tested.
The C++ version isn't out yet but goolge KeyCzar http://code.google.com/p/keyczar/ might be worth looking at. Whatever you feel about their business they do have a lot of smart programmers working for them.
GPGme. Simple to use and compatible with the OpenPGP format