Hot answers tagged

59

Yes, UML CASE tools were one of the hot items of the 90s... and then failed to deliver. The fundamental reason for this is that UML (or most any other kinds of) diagrams help to understand the problem and/or the program solving it only insofar the diagram is abstracting away the implementation details of the actual code. Thus (for any nontrivial piece of ...


43

Never. Heck, it's been years since I last created any UML. Line diagrams on whiteboards and scraps of paper don't count. In fact, we just removed the sole UML question from the guide we use during interviews, because none of us really cared about the answers.


34

So when I was at uni (a while ago now), I was told that UML was the future, UML will replace programming and we'll just generate code from diagrams etc. They were wrong. That will happen about the time people abandon speech and go back to cave painting. Real-world problems, and the programs that solve them, have an essential complexity that cannot be ...


31

Well, I'm the academic who posted the original tweet. Tweets are not meant to be scholarly articles. They are advertisements, and I think they can also be controversial. Here are my follow-up tweets: 1) UML was created to model OO designs. It effect you are modeling the code of a system, not the system's behavior. UML is at wrong level. 2) the idea that 7 ...


25

There are different ways to use UML. Martin Fowler calls these UML modes and identifies four: UML as Notes, UML as Sketch, UML as Blueprint, and UML as a Programming Language. UML as a Programming Language never really took off. There has been some work in this area under different names, like Model Driven Architecture or Model Based Software Engineering. ...


18

Your problem is a lack of communication between you and your managers/stakeholders. They don't understand the problems that making frequent changes can cause - even if you have an agile process in place. But equally the developers don't understand the need that the program is designed to solve or the business process as well as you should. Why do I say ...


17

The three links Association, Aggregation and Composition form a kind of scale on how closely two classes are related to each other. On the one end of the scale, there is Association, where objects of the two classes can know about each other, but they do not affect each others lifetime. The objects can exist independently and which class A object knows ...


15

It can be very useful if the project is large enough that you have trouble keeping everything straight in your head. Getting something out onto paper/diagrams can also help the design and problem-solving process, at least for me. ...I also admit that for personal projects my diagrams aren't as formal as they would be for at-work projects, they're just good ...


14

You should be first defining how the tool you are creating is going to look, feel, and be used by your users/customers. That is what dictates how your software will be architected. People use your software, not computers, so design how people will interact with it first. If you design around how software components should fit together, your user interface ...


14

To properly explain this, we need a short history lesson. In the early days of software engineering, an often used analogy was building a house. An architect and structural engineer discuss plans with a customer and come up with a design. Builders then follow that design to build the actual house. Writing code was seen as the equivalent to building the ...


13

As in many types of UML diagrams, you can use guards to denote a condition. A guard is a boolean expression that you can write over a transition. Here's a picture with an example: Notice the "[pastDueBalance = 0]" condition. You can also use combined fragments for more complicated conditional logic. See this nice msdn article for further information.


13

I have a start up background. What you are experiencing is highly typical, and despite what many say - if you are making enough money to survive, you are doing it right....for now. Your question is very valid, very relevant, and (assuming the start-up is about 2-3 years old, based on how long you have been there) very timely. The most common failure time ...


12

I use just enough UML (in terms of both the types of diagrams and the content of the information in the diagram) to get my point across to allow myself or someone else to implement the system or subsystem. And the only reason I use UML is because its a widely known set of symbols that each mean something very specific, so there's no ambiguity - any software ...


12

The more appropriate UML diagram to depict a platform's architecture is a component diagram. If you want to go a level lower, then you'd also need to draw one or more package diagrams, and perhaps even a deployment diagram. The diagram you linked to is not a UML diagram, it's a "marchitecture / marketecture" diagram. It's not really supposed to be ...


12

Although I generally agree with Bart van Ingen Schenau's answer, I think a few points need additional elaboration. Th advantage of the 4+1 View Model is that it maps stakeholders to the type of information that they need, without requiring specific modeling notations to be used. The emphasis is on ensuring that all groups have the information to understand ...


11

When I've had them created before coding, we view them as "temporary" documents. That is, we create the diagrams and get our thoughts onto paper. We start coding from those class diagrams. We then throw them out. It's not worth spending the time to maintain them once coding has started. And if you want up-to-date class models, use a tool to create them from ...


11

It is very useful and valuable. As others have said it is best for communication and at a cursory glance you could say "only 1 developer so... no communication needed" but I don't think that's true. So who is the UML and the communication for? You! - Yes you. When you go away from the project for a while and then come back it will be there to help you ...


11

So you want to know, how to become an efficient developer? 1) You have to develop communication skills Before you start any project, you have to talk to you customer (in your case your boss) about what he wants. The difficulty here is not only to understand, what your customer says, but what he really means - these are most of the time two different ...


10

Ironically, UML is supposed to be flexible. In the real world, it is not supposed to be a pedantic exercise in doing it one right way. It is about effectively communicating and documenting a system/process/idea. To answer your question, I'm with the others. I've never fully utilized full-on, formal UML.


10

UML: Sequence Diagram Tutorial The data is included as the parameters within the messages. For example the instance buyersBank of the Bank class takes an accountNumber and returns the balance for the buyersBank instance. Update: I have highlighed the key points from the OMG specification. pg 491-494 Asynchronous Messages have an open arrow head. ...


10

Unless you think watching paint dry while neck-deep in sewage is a jolly good time, ignore the Unified Process. Wait, ignoring it is not enough. Fear it. As far as I know, it's only used these days by enormous places that are beyond all hope of efficiency, quality, or sanity. UML, on the other hand, can be a handy notation for important programming ...


10

In a class diagram, you don't show the act of instantiation. That is something that a sequence or communication diagram would show. Class diagrams show the static structure of a system. If a class A "depends on" a class B, then you could look at the association and dependency relationships. Dependency is the weaker of the two and is usually used if the ...


10

Exactly those classes which are necessary to understand the aspect of the system which that particular class diagram depicts. It could be the entire domain model, or all classes that make up the external API of a particular layer or subsystem, or whatever you think is important. But note that class diagrams are not the only type of diagram, nor the most ...


10

Use-cases are the description of the problem to solve, therefore, they must come before any other step in the process. I'd argue that it's not possible to make anything meaningful without knowing the problem. Use-cases will then determine what you design, whether you make class diagrams before writing any code, however, is personal preference.


9

If you create them before, they will be part of the design phase. If you create them after, you can just use them for documentation. But documenting is better and faster if you do that during design and coding. By the way, you don't lose time in doing design! The coding part will be faster. And better. After all, you think that doing design of a ...


9

When it comes to discussing a problem or designing, nothing beats the Whiteboard. You should use a whiteboard and informal UML sketches to discuss things. After that you should go to the IDE. It is slightly tedious to have formal and complete UML sketches for the design because, then you will have to maintain them as they tend to fall behind as code ...


9

To blatantly answer your question: It might or might not be worth it to draw a class diagram. You need to look at your system and determine what diagrams (if any) would add value to anyone working on the system. If producing a diagram will make the lives of developers, testers, or maintainers easier, then the diagrams should be produced. If they don't add ...


9

Can you use UML in a TDD project? The use of TDD does not prevent the use of UML, nor does the use of UML prevent TDD. In fact, I would suspect that using UML as a design tool to capture the behavior and interactions of the system would make it easier to write tests first. You would have a reference model of the implementation to use. However, as you ...



Only top voted, non community-wiki answers of a minimum length are eligible