Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
Almost every one of my programming classes has made use of UML, but none have really explained when or where it might be used in a professional setting. Is it done for every single file in a project, or is there some rule of thumb of when you might want to use it? Also, is it more commonly done by hand (which I've always dreaded) or using some sort of generator?
This question is very good example of opinion-based and very broad question with no real problem to solve behind it and no one correct possible answer
Certainly in the amount of millions of software developers there are some who learned to use UML and do use it. And there are some who either did not learn to use UML or just don't use it for whatever reason
I recall that in the pre-agile era it was believed that no "big" software can be realized without thorough analysis and modeling phase and no "big" software contract can be signed if the business documents don't include some UML-style pictures
And in some countries it is still true and government-owned agencies declare what kind of documentation software contractor must provide, and for some of the requirements an UML picture is the good form
See also:
Wikipedia: Rational Unified Process (RUP)
Wikipedia: Software requirements specification
Programmers: Writing a Software Requirement Specification
So there are UML believers, UML skeptics and even UML haters, it depends on ... things.
I'm UML believer
and so is for example Mr. Kenji Hiranabe from Change Vision, Inc the company behind Astah UML modeling tool and he says
...Is modeling obsolete? Is UML dead? I don't think so. In this article...
as foreword to article Modeling in the Agile Age: What to keep next to Code to Scale Agile Teams
my favorite guideline is what The Guru said in an interview with Mark Collins-Cope for the Objective View magazine on Sep 12, 2014
Grady Booch, creator of the Unified Modelling Language (UML):
"The UML should be used to reason about alternatives. Put up some diagrams. Throw some use cases against it. Throw away those diagrams then write some code against you best decision. Repeat (and refactor)"
How you finally evaluate "..UML...commonly...real world.." depends on what you want to see and which software development best practices you adopt in your own work
It depends on your role, in most developer roles you will rarely, if ever, have to use it. I can see it being useful if you are designing something though, like a new database structure, or architecting a new system or application.
It can be useful for lead developers, architects, or IT managers in the design stages of the application for communicating ideas to the business folks as well as passing on a plan for the development team that will be building it out.
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 4 years ago.
Improve this question
I'm looking for a diagramming program that can help in designing software, right from the high-level requirements down to the low-level classes and functions.
I've seen a lot of UML programs, but they don't let you design at multiple levels of detail in the same map, like if you could "zoom in" and design the details of a part.
Do programs exist that help in such designing? Programs that let you design at the high-level and low-level on the same map?
Most of the UML products from large vendors will let you do what you want. "Rational Rose" and "Enterprise Architect" are just two examples that I have used. They both let you mix component, package and class level information in the same view. Both of them provide a way to specify requirements as part of the meta-data to a class and I believe, functions too.
Edit 8/23/09
I just found Topcased. It's free and does many of the same things as Rose & EA. I'm not sure about mixing different diagram types in one view, but you might want to give it a shot. I'm definitely going to investigate using it for my personal projects.
I recommend BOUML. It's a free UML modelling application, which:
has a 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),
this can work as the "zoom" feature you're asking (I use such SVG exports my self, to be able to quickly overview relation of group of classes, and then zoom in into details of selected one),
is extremely fast (fastest UML tool ever created, check out benchmarks),
has rock solid C++, Java, PHP and others import support,
is multiplatform (Linux, Windows, other OSes),
is full featured, impressively intensively developed (look at development history, it's hard to believe that such fast progress is possible).
supports plugins, has modular architecture (this allows user contributions, looks like BOUML community is forming up)
The "zoom" feature you're asking can be obtained through SVG export. I use such exports my self in the way you're asking.
I've used Rational Rose and looks like it fits your needs.
You could try BOUML which, although it doesn't allow you to "zoom in", does cover all the aspects of UML, and allows you to view different parts of the design at once (in multiple windows). It is also free, which may or may not make it more desirable for you, and is quite cross platform.
First of all there are different diagrams for different things you want to express. During software design you dont only use UML, but also HTML sketches and things like that. So choose the right tool for the right task is my advice. Create a folder structure depending on your granularity, one for Frontend sketches (you can place it hiracially), one for class diagrams and so on. So try to establish a process that fullfils all your needs. Often the holy grail programm doenst exist or is not good, just because of the fact that it tries to satisfy to many customers.
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 8 years ago.
Improve this question
I'm currently looking for diagramming software that allows me to quickly map stuff and jot down concepts such as a filesystem directories represented by nested boxes containing icons (representing files.)
Off course the simplest solution of all would be to just use paper and pencil, but unfortunately i have such poor motor skills that after minutes i cannot even distinguish the shapes I've drawn myself, never mind have these notes be of any use to someone else in order to have him/her work with them.
So far I've tried a ton of software packages but none of it seem to be simple/flexible/powerful enough to help fulfill the modeling /sketching tasks I'm trying to achieve
Visio,
smartdraw
Edraw
conceptdraw
Vue
yEd
Dia
Kivio
paint.net
photoshop
Illustrator
GIMP
in addition I've played around with modeling tools including staruml,argouml and Visual Paradigm as well as Eclipse modeling, but most of them were too complicated, too constricting and in some ways completely alien. On a side note, I absolutely HATE eclipse, I'm used to writing shellscripts with nano on a shell, The sheer amount of features (That i will never ever have any use for) make it hard for me to find that which I'm really looking for. YAGNI GDDMM*T!
Allthough UML modeling is at times important, such models are more for the next follow up phase and would be overkill (as well as a creativity killing burden) when I'm trying to come up with something from scratch.
Right now I'm looking for something new, I would be more than happy if someone could perhaps suggest something,
Most importantly i would like to find a program where the software allows me to do add new shapes and with the parent shape automatically growing so that that added shapes all fit inside of it rather than that i have to manually resize the parent shape
Your problem is a common one, and in recent years the big UML tool vendors have started adding functionality for sketching, as opposed to traditional modelling. My favourite, Enterprise Architect from Sparx Systems, has got "whiteboard" sketching and is also able to import from Visio.
It boils down to whether you know you'll just want to sketch, in which case you should get a tool which does that really really well (that last feature you mentioned is something I haven't seen in any UML tool). If on the other hand you know that you'll eventually want to turn the sketches into UML models, you need to consider whether you'll want to start over (which might be the easiest option, honestly) or have some sort of in-tool support to do that.
For "UML as a Sketch" I use the Hruby UML Stencil for Visio. These do not enforce eny semantics, so you can be as sketchy as you need to quickly record ideas and communicate.
See http://www.softwarestencils.com/uml/index.html
I use Dia. It is cross platform. Very simple tool.
However, My favorite has always been to sketch it on paper and scan (fotopragh it on my mobile) and keep it for records. Nothing beats pen and paper yet !
I tried yEd recently, because I happened to see it mentioned in another thread here. I'm quite impressed with it. Its pretty easy to use. I think the feature I liked the most is that I can draw my diagram regardless of the spacing and orientation. Then 1 button and poof, the whole things rearranges into the ordering I want.
As a linux diagramming tool, im pretty impressed with it.
this one is good for remote team members.
Nothing to install
http://www.dabbleboard.com/
I've used Visio for so long IMHO nothing beats it.
That said, I rarely use Visio in meetings to take initial notes. We'll diagram on whiteboards (get someone else to do the diagramming while you "facilitate") and then I take pictures of the result. Transcribing the photos to a Visio diagram helps me think it through.
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 4 years ago.
Improve this question
I would like to write an interactive song. It would contain state and logic. A listener/user should be able to modify some state vars using a GUI or a MIDI interface. Listener accessible vars don't have to directly represent tempo, pitch or any other music property. They would rather represent values that logic would process in order to make changes to the song.
Do I have to write such platform myself or something fitting my imagination already exists?
Look at cSounds and PureData.
If you are happy to use Java, check out JFugue.
I have tried PureData, CSound and SuperCollider.
CSound is very cumbersome to program in, and has had severe stability issues for my requirements (24bit/96kHz realtime low latency linux) in version 4.
PureData is graphical, which makes it even harder to keep code neat and tidy then with text files. Composing is a pain because you have to build your own composition GUI, which can be powerful, but as long as I'm my only user I find it's just faster to use text.
The winner hands down is SuperCollider, because it is a smalltalk inspired object oriented language which is quite pleasant to work with. It is split into an OSC controlled sound server, and the client language. I can recommend the sound synthesis server and using the language to create instruments without reservation for its excellent stability, great flexibility and incredible power. I've used it live on stage and the performance is incredibly good.
The score creation language suffers from many-hands syndrome; in lack of recent clear leadership there are too many ways to do too many things with too many limitations, but it is still better than CSound because at least you can use reasonable high level structures.
Still looking for a composition language that just gets it right.
Have a look at Strasheela:
It's a composition system based on the programming language Oz. Learning Oz isn't easy, as it it combines the functional and the logic programming paradigm. However if you liked the SICP book, then you will probably like it too.
Strasheela treats music composition as a Constraint Statisfaction Problem (CSP), and seeks "solutions" for it. It means that the music style is defined as mathematical constraints on integer numbers (finite domain), that must be statisfied, and the built-in constraint solving system computes the solutions "automatically".
P.S.: I cannot program in Oz, but I'm on my way of learning it.
See High level languages for Computer Music and Programming Languages used for music for help.
I am not sure if it covers what you are after for, but have a look at Java Sound API. For a FAQ about what it can do see here. The benefits are that is already bundled in the SDK and JRE and that is cross platform. Also, you could build the GUI using any Java toolkit.
If it weren't for the interactive bits, I'd suggest looking at Haskore or Nyquist, both effectively being DSLs for music generation.
Definitely take a look at Alex McLean's livecoding demos, though. It's more flexible and interactive as you can possibly imagine, using SuperCollider through OpenSoundControl.
Answer is for .NET:
I found something, checkout NAudio by Mark Heath, a great .NET music library I would say it should be contained in the BCL.
midi-dot-net is another great C# project by Tom Lokovic.
For music interaction, PureData, Max/MSP and OpenMusic (these two last are from IRCAM) are the best. PureData is freeware. Google them!
I don't really get what you want to do, but here is a list of some CL music software, both for composition and cognition: http://www.cliki.net/Music
You're looking for an Audio Programming Language. Another option you should consider is Processing - used by many artists and musicians for this type of work.
-Adam
Its a shame that none said about Chuck................
Chuck is a programming language that is specifically built for music/audio generation and composition.
You can download Chuck at http://chuck.stanford.edu
its a lot easier to use,and is a lot familiar to c,c++,java etc,however its easier to learn too.You can find at Coursera about chuck for free from California arts university,link here.
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'm trying to choose a tool for creating UML diagrams of all flavours. Usability is a major criteria for me, but I'd still take more power with a steeper learning curve and be happy. Free (as in beer) would be nice, but I'd be willing to pay if the tool's worth it. What should I be using?
Some context: Recently for graduate school I researched UML tools for usability and UML comprehension in general for an independent project. I also model/architect for a living.
The previous posts have too many answers and not enough questions. A common misunderstanding is that UML is about creating diagrams. Sure, diagrams are important, but really you are creating a model. Here are the questions that should be answered as each vendor product/solution does some things better than others. Note: The listed answers are my view as the best even if other products support a given feature or need.
Are you modeling or drawing? (Drawing - ArgoUML, free implementations, and Visio)
Will you be modeling in the future? (For basic modeling - Community editions of pay products)
Do you want to formalize your modeling through profiles or meta-models? OCL? (Sparx, RSM, Visual Paradigm)
Are you concerned about model portability, XMI support? (GenMyModel, Sparx, Visual Paradigm, Altova)
Do you have an existing set of documents that you need to work with? (Depends on the documents)
Would you want to generate code stubs or full functioning code?(GenMyModel, Visual Paradigm, Sparx, Altova)
Do you need more mature processes such as use case management, pattern creation, asset creation, RUP integration, etc? (RSA/RSM/IBM Rational Products)
Detailed Examples: IBM Rational Software Architect did not implement UML 2.0 all the way when it comes to realizes type relationships when creating a UML profile, but Visual Paradigm and Sparx got it right.
Ok, that was way too detailed, so a simpler example would be ArgoUML, which has no code generation features and focuses on drawing more than the modeling aspect of UML. Sparx and Visual Paradigm do UML really well and generate code well, however, hooking into project lifecycles and other process is where RSM/RSA is strong.
Watch out for closed or product specific code generation processes or frameworks as you could end up stuck with that product.
This is a straight brain dump so a couple details may not be perfect, however, this should provide a general map to the questions and solutions to looking into.
NEW - Found a good list of many UML tools with descriptions. Wiki UML Tool List
For sequence diagrams, only, try websequencediagrams.com. It's a freemium (free for the basic tasks, paid for advanced features) product, and lets you quickly bang out a diagram without any fussing around with lines and stencils.
Alice->Bob: Authentication Request
note left of Bob: Bob thinks about it
Bob->Alice: Authentication Response
For me it's Enterprise Architect from Sparx Systems. A very rounded UML tool for a very reasonable price.
Very strong feature list including: integrated project management, baselining, export/import (including export to html), documentation generation from the model, various templates (Zachman, TOGAF, etc.), IDE plugins, code generation (with IDE plugins available for Visual Studio, Eclipse & others), automation API - the list goes on.
Oh yeah, don't forget support for source control directly from inside the tool (SVN, CVS, TFS & SCC).
I would also stay away from Visio - you only get diagrams, not a model. Rename a class in one place in a UML modelling tool and you rename in all places. This is not the case in Visio!
For my simple & short UML working,
I've used this tool:
StarUML - http://staruml.sourceforge.net/en/
Great free software for UML drawing.
Although the original Star UML is no longer maintained, there's now a fork called White Star UML, which is actively developed.
As I usually use UML more as a communication tool rather than a modeling tool I sometimes have the need to flex the language a bit, which makes the strict modeling tools quite unwieldy. Also, they tend to have a large overhead for the occasional drawing. This also means I don't give tools that handle round-trip modeling well any bonus points. With this in mind...
When using Visio, I tend to use these stencils for my UMLing needs (the built in kind of suck). It could be that I have grown used to it as it is the primary diagramming tool at my current assignment.
OmniGraffle also has some UML stencils built in and more are available at Graffletopia, but I wouldn't recommend that as a diagramming tool as it has too many quirks (quirks that are good for many things, but not UML). Free trial though, so by all means... :)
I've been trying out MagicDraw a bit, but while functional, I found the user interface distracting.
Otherwise i find the Topcased an interesting project (or group of projects). Last I used it it still had some bugs, but it worked, and seems to have evolved nicely since. Works great on any Eclipse-enabled platform. Free as in speech and beer :)
As for the diagramming tool Dia, it's quite ugly (interface and resulting drawings), but it does get the job done. An interesting modeling tool free alternative is Umbrello, but I haven't really used it much.
I definitely agree with mashi that whiteboards are great (together with a digital camera or cellphone).
Probably some of the nicest tools I've used belong to the Rational family of tools.
You may be looking for an automated tool that will automatically generate a lot of stuff for you. But here's a free, generally powerful diagramming tool useful not only for UML but for all kinds of diagramming tasks. It accepts as input and outputs to a wide variety of commonly used file formats. It's called yEd, and it's worth a look
Visual Paradigm for UML http://content.usa.visual-paradigm.com/websiteimages/images/products/vpuml60/vpumltitle.gif
I'm very fond of Visual Paradigm for UML It's very powerful and has a free Community Edition and cheap Personal Edition as well.
Agilian http://content.usa.visual-paradigm.com/websiteimages/images/products/ag10/agtitle.gif
For Agile modeling there's also Agilian which is a bit more flexible, adds extra features to support smartboards and knows mind-mapping as well.
The thing I like most about their products is the flexibility. I'm using Enterprise Architect at work nowadays but I think it's not smart enough. I want to be able to quick-brainstorm some sequence diagrams and have the application keep my model up-to-date in the background, something VPUML does a very good job at.
In my opinion it's way better than Enterprise Architect, though that is a great tool as well :)
Take a look at BOUML: multiplatform (QT), works pretty well and supports colaborative work.
BOUML is a free UML 2 tool box (under development) allowing you to specify and generate code in C++, Java, Idl, Php and Python.
BOUML runs under Unix/Linux/Solaris, MacOS X(Power PC and Intel) and Windows.
From Wikipedia:
The releases prior to version 4.23 are free software licensed under GPL. BOUML 5 and later is proprietary software.
If you're looking to get out the door and working on UML without having to learn a complex new tool I would check out Violet UML. I've used it to some pretty great success in the past.
PlantUML is an open-source markup-language-to-UML-diagram tool in Java that deserves to be mentioned here. It ranks high on the usability scale because of its intuitive syntax for the various diagrams and diagram components.
Dia is a possible choice. It's definitely not the best tool, but it is functional.
Enterprise Architect from Sparx systems is the best tool I've used. A bit expensive at $199 (professional edition), but IMO it's worth it.
I will add UMLet which I haven't tried yet, but have been selected at my office to start doing diagrams.
Looks simple, diagrams aren't sexy, but it seems quite complete with regard to the kind of diagrams you can do. Seems to have good export capabilities too (important!), is flexible can support custom components) and can be used as Eclipse plugin.
Astah UML (ex-JUDE) is pretty good.
I haven't been able to find a top-notch free UML diagramming tool, but if you're interested in pure diagramming, as opposed to round-trip-engineering, I'd go with Microsoft Visio. If you want full round-trip engineering, Rational Rose.
This list of UML tools on Wikipedia might also come in handy.
Pen and paper. If you can get the scan into a vector format, that may be useful when making minor amendments.
You should try Creately. Runs in your browser and can do team collaboration.
supports sequence diagrams, class, ER, usecase etc. works great and has a free version available.
Creately.com
You can also check out Lucid Chart for uml and other types of diagramming.
Don't forget yuml.me, I love it.
http://plantuml.sourceforge.net/index.html
In my practice i use Sequence Diagram Editor. it is really fast and helpful tool. the one thing i don't like about it is that it is commercial product, not free.
I like VisualParadigm mentioned before in this thread. It's powerful and easy to use I think it gives most power comparing to other tools.
If you need something simple, quick and easy (and free) there is a great tool called UMLet - I highly recommend this. I've tried many of UML diagramming tools and this the simplest one (and it still allows to do great diagrams). This is my choice:)
Obviously if you are serious about UML in the long run you need to use a software UML tool like the ones suggested in the other answers, but I've found that a whiteboard is one of the best tools for UML diagramming, especially during the design phase, or when you are exploring different alternatives. Nothing beats a whiteboard for speed/flexibility in my mind. They are also great for collaboration assuming you are collocated physically.
In my opinion StarUML is the best.
I can't believe no one has mentioned NetBeans UML Editor, it's great and satisfied all of my Java based UML requirments.
This after I tested JDeveloper UML, ArgoUML and StarUML.
I recently conducted a poll "What UML Tools do you use?" in my blog. NetBeans UML was was the top opensource choice and Enterprise Architect was the top commercial choice.
You can create UML class, sequence, component, use case, and activity diagrams in Visual Studio 2010 Ultimate. You can link these diagrams to Team Foundation work items so you can plan and track development and test work. You can also create sequence, dependency graphs, and layer diagrams from code and use Architecture Explorer to browse and explore your solution.
I've posted more links on my profile for more info.
You might want to take a look at MagicDraw or Visual Paradigm for UML. Both offer community editions that, of course, don't span the full feature range, but may well be sufficient if you want to create diagrams only and not generate code or do full round-trip engineering.
Rational and Together/J are best-of-breed products, but expensive.
In my experience, I've enjoyed Eclipse Omondo and Sparx Enterprise Architect. Omondo integrates nicely with Eclipse for code generation, and has a very intuitive feel. However, it is strongly tied to Java. Sparx is a good tool for the price point, but lacks the full range of UML 2.0 diagrams.
Do NOT bother with Poseidon. It is buggy, bloated, and unusuable for all intents and purposes.
For sequence diagrams you can also try Trace Modeler. It's not free but it has a great interface, very friendly and productive. You can use it on any platform.