Are UML diagrams the only way to model software

I often draw a stream of data on a piece of paper. Even the planning of my little tools is done on paper.

There is UML. The problem is that I don't like it. All the tools that I used (Visio and many online editors) are simply not flexible for my hands. Using a pencil, you can easily draw shapes and connect them, describe them.

What can you offer to create a data flow diagram, sequence diagram, etc. in the fastest, most natural and easiest way , except on the computer, and not in the document :)

**** Useful links in comments: ** SO Link # 1 SO Link # 2

Right now I'm interested in learning about 2 , and one of them was in my head for quite some time:

1) Mindmap - I tried it for a long time, he really liked it, but left it. Hover will give another try.

2) . This would be the simplest and most natural method, except that photographing and storing it somewhere on a computer would make the process repetitive and boring.

Are there any other interesting ideas? I would love to hear what others use to develop their software and progress.

Thanks a lot!

+4
source share
7 answers

Why do you want to manually draw UML, whether on paper or on a computer?

I agree that you need a model to represent the design. But even in large projects with about 500 man-months, I noticed that in reality only 3-4 sequence diagrams matter and have a chance to survive throughout the entire application life cycle. These 3-4 sequence diagrams (and class diagrams that represent their static time relationships) typically represent a high-level application design.

Or look at it this way:

Any decent corporate application will not have 20 different call flows. There will be one or two generic (or abstract) call flows that are implemented by all specific use cases. Take the simple Struts / EJB application. The overall thread will be something like: an action class that calls the validator, and then the session without the bean state, which in turn calls the domain class that will call the DAO. All use cases for the application simply implement this stream with specific classes specific to this use case.

Do you agree?

If you do not, I would like to hear about applications that have 20 different call flows and survived for 5 years after the first release.

If you agree with me, we boil up to 3-4 classes and sequence diagrams even for large corporate applications, including several thousand classes. Why is it important how you draw and maintain these 3-4 diagrams?

You can say that you want to document all use cases for training or documentation. During my last 14 years of working in the real world of enterprise software, I don’t remember having a good look at UML documentation. Firstly, good documents are difficult to produce and often do not occur. Secondly, they do not synchronize with the code most of the time. Most of my experience is associated with large banks, insurance companies, car companies, etc. These environments are too stressful and their resources are limited (in fact, are we talking about banks? Yes, it's hard to believe, but true) to “maintain” good documentation.

I suggest getting rid of UML?

No. We need visual models to represent complex systems. The human brain seems to be in a better condition when processing visual effects. visual corax , which is responsible for processing visual images, is the largest system in the human brain.

So, what is a smart solution to easily create and maintain UML models?

  • We should probably use the current UML toolkit to draw these 3-4 high-level UML diagrams. If you hate using them, check option 3. below.
  • For diagrams at the next level of abstraction (any utility models must have different levels of abstraction), generate UML from the source code. You can generate class and sequence diagrams.
  • At this age of agile methodologies, why not just write shell classes and generate these 3-4 high-level UML classes and sequence diagrams? Thus, UML will not support at all.

Source code is true.

Can you argue with this statement? If not, why not generate models from the source code itself? By the way, I do not propose a round-trip technique. I just offer a one-way ride - from code to models.

There are two main problems, but with the UML created.

  • When we draw a class diagram, we show the relationships between the classes involved in the script. Most existing class diagram generation tools allow the user to drop Java classes (source code) into the tool, and the tool automatically displays the relationships between the classes. The problem here is how to find out about the classes involved in the script, for starters?
  • The second problem is the verbosity of the constructed diagrams. Means exist for generating execution sequences and class diagrams for a script. But diagrams are often very verbose and downplay the goal of models whose purpose is to highlight important aspects and filter out irrelevant details.

Good UML generation tools should solve both of these problems. In the Java field, there are several tools that try to solve these problems. Check out the discussion below:

What tools should be used to visualize the structure of my code

Are there any tools for detecting architectural and design patterns in code?

I hope I answered the original question:

Are there any other interesting ideas? I would love to hear that others are using their software design and progress.

I am the author of the MaintainJ UML runtime generator , but I tried to objectively resolve the original question. Your comments are welcome.

+4
source

There are various tools that allow you to create diagrams based on text input. There's some preliminary training in what you need to learn the syntax of. However, this is not difficult. Once you do this, creating charts can be very quick. There are some disadvantages; in most cases there was limited ability to change layout / style. The significance of this will depend on whether you like their style or not.

There is a growing number, here are a few that you can look at:

  • UMLet : a desktop application that supports most UML plus various other diagrams. You can also create your own custom forms and connectors. FOSS.
  • WebSequenceDiagrams.com : online sequence diagrams.
  • TextUML : desktop application. Focus is executable models that automatically generate class diagrams. FOSS. He also has an online sales brother .

NTN.

+2
source

I like to use the whiteboard and camera. For more flexibility, use post-it notes on the board.

I use ER charts (on the board) to simulate my data and message sequence charts (on the board) to model the data flow. I will also make quick mockups of UI pages on the board.

In addition, I use Ruby / Rails to encode the server side and HTML / CSS / jQuery / JS on the client.

+2
source

Even if Visio is not flexible enough, I would suggest a digital whiteboard or touch screen with whiteboard software. After some placement, you could probably use a simple tablet (without a display) - they are really cheap.

As for pure software: we are trying to create a pen-type input method in UML Lab, but currently it only supports class diagrams ...

+1
source

I think UML and code should be mixed using a class diagram. You model your architecture with a class diagram (for example, a package, classes, etc.), then you code your business, finally a few iterations between the code and the model.

I think UML should focus more on code, but not focus on text input.

0
source

The problem with standard languages ​​such as UML is that you have to make significant efforts to learn the language and modeling tools. These languages ​​are determined by an expert consortium, for example. OMG, which offers a language specification suitable for the largest match of design problems in a particular domain.

Why not define your own language that exactly matches your needs and your specific problem? Such languages ​​are called Domain-Specific Languages ​​(DSL). Instead of investing in learning a complex language, you are investing in identifying languages ​​that exactly match your needs.

There are many approaches that support DSL definition. The most common is the Generic Eclipse Modeling System (GEMS) . Personally, I did a great job with GrGen because of its versatility and the ability to automate work steps using graph conversion.

0
source

No. There are other ways. UML is just an option. Pen and Paper Prototyping is a great option; it should not follow UML. Mind Map is another great way.

For more adaptive software processes, using UML is recommended as little as possible. For example, teams that practice Agile or XP tend to use less UML, and they prefer to rely more on informal tools to conceptualize software. In a tightly structured company, UML can be strictly enforced.

0
source

All Articles