The popularity of modeling is increasing. And with good reason, because modeling (especially based on standards) provides a means for communication, thinking and complexity management. However, given the diversity of domains that are modeled, and the different methods and work processes, what modeling tool should you choose? Is there an ultimate tool that could fit all your needs? We do not think so, and we will try to explain why.
Modeling is essential for these major activities:
Sketches/Prototype Designs/Throw-away Models
Although these are the simplest forms of modeling activities, modeling is still much better than doing no modeling at all. Transform your words into pictures – they are better understood. Transform your ideas into a model – now they have structure. Frankly, in most of these cases, paper or a whiteboard will substitute for a modeling tool. If you still want software for this task, you can even consider a drawing tool.
The major requirements for a tool:
- Fast. You want to keep your ideas flowing, and the tool has to be capable of keeping up.
- Inexpensive. You really do not need an expensive, full-blown product suite for this simple task.
The problem with tool selection at this step is, of course, gauging your future needs – will it be very difficult to do full-blown modeling later? It’s like fast food – it might feed you today, but it may harm you in the long run. Consider your long-term needs before making your selection.
Another term for a tool to be used in such way is “tool of the consultant” – you come, you do the drawing, you get the value and you go.
The architect’s dream is to model the system and then … launch it. However, the reality is not so glamorous. Usually modeling tools generate skeletons of code, saving some time, but on the other hand consuming time for creating code-level class models. There is a reason for such behavior – models usually do not have enough information to produce full code, and it would take a lot of time if you wanted to model all those little details. What are the options?
- Do not use code generation. Concentrate on higher-level architecture and design, and leave code to coders.
- Use MDA (Model Driven Architecture) tools. These tools can (in combination with modeling tools) generate 60-100% of your system – code, persistence, etc. However, they have to be chosen wisely, since they provide the most value for repetitive/machine-like tasks. For example, if you are modeling a mobile application which slightly differs from platform to platform, then it makes sense to generate code for different platforms from a single source – the model. This way you save the money for maintaining two, three or even more similar code bases which are still different.
Code reverse engineering into a model is a different story. This is good for quick code reviews – reverse, visualize, review, throw away. There is no need to maintain those models, since it should be easy to reverse engineer them from the latest version of your code base.
Creating Complex Systems
Creating a complex system is a complex task. There are certain qualities in a modeling tool that can make this task easier. The primary goal for a modeling tool is to create a collaborative environment that allows users to create and validate design ideas, prevent errors early, and communicate those ideas/designs to those who will further refine them. Let’s break down the benefits you should expect from a modeling tool for production of complex systems.
- Robustness and ease of use. If it takes more time to manage the tool than to do the actual work – you need a different tool.
- Standards-compliant. Communication in producing a complex system is a very important component; therefore, you need a modeling solution that:
- Is based on standards, since learning a proprietary methodology is expensive and unnecessary.
- Forces to create standards-compliant models. Creating non-standard models introduces the risk of interpreting them differently. Ambiguity leads to communication problems.
- Centralized repository. You really do not want to look for the latest version of your models somewhere on the network. And if you are working with an older version, it will be difficult to incorporate changes to the latest one.
- Teamwork. Complex systems require large teams, so your selected tool has to allow for multiple people working on the same model, preventing conflicts while allowing model branches. Plus, you might not want a team developer to have the ability to modify high-level architecture.
- Analysis/validation functions. The larger the model gets, the easier it is to miss things. You want the tool to:
- Provide multiple views of the model, allowing users to study the model from different perspectives.
- Automatically validate the model, allowing the user to identify obvious model gaps or inconsistencies.
- Document output. Unfortunately, there is a lot of paperwork circulating in the IT world. However, a carefully selected modeling tool should do it for you – the information is in the model, you just need to “transform” it to a paper format.
- Simulation. For really complex systems, mission-critical systems, or hardware systems, errors that could be prevented in the design/analysis phase are very expensive in the production phase. The best way to make sure that the system works as described in the model is to simulate it.
- Support for all types of related models. The last thing you want to have is multiple types of models, created by different modeling tools. That means you will struggle with traceability, synchronization of data, etc.
- Multiplatform. If your company is not strict about the operating system (Windows/MacOS/Linux/etc.), your selection of a modeling tool should be multiplatform as well.
Creating Integrated Models for Your Business
If you want to improve your business, you need to know three things:
- Current situation
- Future (improved) situation
- How to get there
So it starts with knowing the current situation:
- Traceability. In the case of business processes, you need to know who is responsible for this task, why this task is performed, and how it is automated by the IT system.
- Integrated models. Businesses involve different types of models such as organizational charts, business processes, etc. You need those models to be tightly integrated.
- Ability to customize. Every business is different, so the modeling solution which you select needs to take that into account. Your modeling solution should be able to adapt, to match the specific details that make up your business unique.
- Web output. Information that is in the model is important to all the people in your company. Your colleagues should not need a special tool to access the models.