Software Development Magazine - Project Management, Programming, Software Testing |
Scrum Expert - Articles, tools, videos, news and other resources on Agile, Scrum and Kanban |
BOUML - Free Unified Modeling Language (UML) & Code Generation Tool
Franco Martinig, Methods & Tools
BOUML is a free Unified Modeling Language (UML) and code generation tool that run under Windows, Linux and MacOS X. It provides a modeler that includes UML diagrams like use case, class, sequence, communication. BOUML also allows to generate code in C++, Java, Idl, PHP, Python and MySQL or import the code into diagrams. It is actively maintained and version 7.7.1 presented here was released in July 2018.
Web Site: https://www.bouml.fr/
Version presented: BOUML 7.7.1 on Window 8 in September 2018
System requirements: BOUML runs under Windows, Linux and MacOS X.
License & Pricing: Freeware
Support: support forums on https://www.bouml.fr/phpbb/
Besides that Windows was worried about installing a program from an unknown editor, the installation was as simple as running the setup program. Three icons are created on the desktop: BOUML, projectControl, and projectSynchro. These two tools are used for code generators/reverse/roundtrip features.
Documentation
Documentation is available online on the tool website and also as a large PDF file (470 pages in A4 format) that was last updated in June 2018. Some videos are also available on YouTube.
Working with BOUML
The BOUML screen is divided in three parts:
- the left window lists the content of your project in a tree structure
- the upper right window contains your diagram
- the bottom right window displays the information linked to item of the upper window
(click on figure to enlarge)
Using the tree structure of your project, you can add items or work on them simply by right-clicking on a selected item. The menu is always adapted to your context. The usage of the modeling tools is fairly intuitive. When your mouse point on a diagram component, a popup windows appear with its name. It is easy to add new items on a diagram and to define and describe them in specific dialog boxes.
BOUML supports the following diagram types
- Use Case Diagram
- Class Diagram
- Sequence Diagram
- Communication Diagram
- Object Diagram
- Deployment Diagram
- Collaboration Diagram
- Activity Diagram
Code generation
BOUML also allows to generate code in C++, Java, Idl, PHP, Python and MySQL. The target language is defined at the package level. The code generation settings are defined at the project level. Additional code generation information can be added during the diagramming activity depending of the context and the target language. The documentation provides extensive material on how to setup the different items for code generation. Some plug-outs allow to either do roundtrip engineering (import code and apply changes) or reverse engineering (import code only). The documentation explains how these plug-outs work for the different languages supported by BOUML.
(click on figure to enlarge)
Open architecture
BOUML has an open architecture. Its features can be expanded by writing external tools named plug-outs using the C++ or Java languages. A tutorial for writing plug-outs is available on the website.
Conclusion
Even if UML modeling and model-driven software development is currently not well-considered in a software development world influenced by Agile approaches, these practices are still useful for requirement engineering. BOUML is one of the rare free UML tool available that has the benefits of being actively maintained and having been commercially tested. Besides modeling, it provides many code generations features that are useful if you want to use the results of your modeling efforts in later phases of the software development life cycle.
Related Resources
- Understanding the Unified Modeling Language (UML)
- Database Modelling in UML
- Unified Modeling Language (UML) & Software Architecture Zone
This article was originally published in September 2018
Methods & Tools Testmatick.com Software Testing Magazine The Scrum Expert |