provides software and services that enable enterprises
Live Chat 1-888-673-6564

Open Source Software Technical Articles

  • Home
  • Search
  • Source Code Scanning Tools
  • Products and Support
  • Services
  • Cloud Services
  • Open Source Training
  • Enterprise OSS Blog
  • Wazi Technical Blog
  • About Wazi
  • Attributions and Licensing
  • Supply Chain Compliance
  • How to Contribute
  • Contributors
  • Resources Library
  • Partners
  • Customers
  • Community
  • Company
  • Careers
  • News and Events
  • Contact Us

Subscribe to Wazi by Email

Your email:

click-here-to-chat-with-an-online-representative


Enterprise Developer Support 24 x 7 for Apache, CentOS, Tomcat, PostSQL and more. Get a Support Quote by clicking here!


Latest Posts

  • Build your own custom modules for Drupal 7
  • CentOS system administration using text-based user interfaces
  • Quickly create custom software packages with FPM
  • More easy RSS for your websites via Google and Yahoo! APIs
  • Get RSS for your website using jQuery and PHP
  • JSF tip: How to create bookmarkable pages
  • MySQL Workbench simplifies MySQL management tasks
  • Use Perl to enhance ModSecurity
  • The secret to great reporting with Drupal 7
  • A more colorful LibreOffice unveiled

Connect with Us!

Current Articles | RSS Feed RSS Feed

Survey of Open Source Modeling Tools for Software Development

Posted by Grant Smith on Thu, Feb 05, 2009
  
Email This Email Article  
Tweet  
  

Poor planning is one of the top reasons why software projects are delivered late, over budget, or not at all, so it’s important to get organized before you start coding. For decades programmers tried all manner of flow charts, elaborate diagrams, and volumes of specifications in an attempt to fully understand the code they planned to write, but these methods often proved to be ineffective and time consuming. Fortunately, programmers today can choose from a wide range of modeling tools that make it relatively easy to lay out the functionality and use cases for a new project.


In this article we’ll survey some of the modeling tools available to help you streamline the development planning process. All of the modeling tools covered in this survey are open source applications. The modeling tools addressed in this survey are:

    • Acceleo

    • AndroMDA

    • ArgoUML

    • BOUML

    • Dia

    • Fujaba

    • Gaphor

    • Kivio

    • NetBeans

    • Papyrus

    • PyUML

    • StarUML

    • Taylor

    • Umbrello

    • UniMod

    • Violet



Background


As modeling tools have evolved, they’ve blurred the boundaries of traditional software development planning. For example, some modeling tools can analyze and reverse engineer source code in order to produce UML diagrams. Similarly, most modeling tools support model-driven architecture (MDA), which means they can generate code from the models. Whether or not you use those features — and to what extent — is up to you. One option is to use the generated code as a skeleton and add in technology of your choice further down the road.


Most of the modeling tools covered in this survey use the Unified Modeling Language (UML), so you may wish to become proficient in UML to maximize your understanding of these tools. In addition to UML compliance, some of the other factors we’ll examine for these modeling tools include:

    • Code generation capabilities

    • Ease of use

    • Documentation



We’ll start by taking a look at "contenders" that have unique strengths or benefits but lack some of the features we feel are most desirable. Then, we’ll move on to our list of "primary candidates" that offer the strongest combination of capabilities, documentation, and ease of use.

 

Condenders


AndroMDA


If you're serious about taking the MDA approach to software development, AndroMDA is candidate worthy of consideration. While it does not have UML diagramming tools of it's own, AndroMDA integrates with others to do the code generation. What we love about it is that it integrates with Maven, which is quickly becoming the standard build tool for Java development.


Dia


Dia is an application for creating technical diagrams. Its interface and features are loosely patterned after the Windows program Visio, so many users will find it easy to get started. Features of Dia include multiple-page printing, export to many formats (including EPS, SVG, CGM, and PNG), and the ability to use custom shapes created by the user as simple XML descriptions. Dia is useful for drawing UML diagrams, network maps, and flowcharts, but it does not support code generation. It runs on Linux, Unix and Windows and is released under the GPL License.


Fujaba


Fujaba is a UML modeling tool that generates code in Java and vice-versa. Most of the documentation is is German, but there is great tutorial in English that demonstrates how to create a networked game using Fujaba exclusively. It is distinguished from other CASE-Tools by the fact that it performs Story Driven Modeling (SDM). Fujaba seems to be popular among German academic institutions and is used as a teaching aid for software development.


Gaphor


Gaphor is a simple UML 2.0 modeling environment, and simplicity seems to be its primary aim — it is easy to install, use and extend. Gaphor is cross-platform, running on multiple flavors of Unix and Windows. No code generation is supported. However the models can be exported to XMI, and SVG, PNG and PDF format exports are supported for the diagrams.


Kivio


Kivio is the KOffice flowchart and diagram creation tool. It allows you to create accurate scale diagrams by arranging pre-drawn shapes and stencils on a page. The stencils might represent stages of a process, office furniture, or components on an electronic circuit. Kivio comes with a large collection of different stencils, which are grouped into collections — known as stencil sets — by subject area. Kivio features script-able stencils using Python, support for Dia stencils, and a plugin framework for adding more functionality. No code generation is supported.


PyUML


PyUML is described as a fully functional UML-Roundtrip-Tool for Python. It is implemented as an Eclipse plugin based on the plugins PyDev and Eclipse Uml2Tools. Unfortunately, the user guide is only available in German, and as such we were not able to thoroughly evaluate its features. It appears to support code generation for Python only, and as of publication of this survey it did not support the latest version of Eclipse (Ganymede).


StarUML


StarUML is a Windows-only code generator and UML editor. The documentation is reasonably good, but it's obvious that it was directly translated from Korean or written by a non-native English speaker. Documentation is available in Korean, Russian and Japanese, too. The product itself is very powerful; generation is not limited at all, so you can generate Word documents and spreadsheets as well as source code. Although it is touted as open source, several commercial dependencies are required to build from source.




The last release of StarUML was in 2005, so it seems the product is either completely stable or development has stalled. A recent discussion on the forum page indicates that the project may have been abandoned, and some developers have started a fork called SunUML.

 

 

19a98812-f823-48dc-841e-bf029c63c6d7

 

Umbrello


Umbrello is a nice KDE-based UML modeler and code generator with a wealth of code generation options. In fact, it supports more languages out of the box than all of the other generators included in this survey. Most new Linux distributions with KDE4 include Umbrello as part of the kdesdk package. Umbrello is not yet available for Windows, but it looks as though this may soon change — there's a screenshot of Umbrello running on Windows in an experimental capacity on the project website.


UniMod


One approach to software development is to concentrate on defining and implementing application behavior using SWITCH-technology with the help of Structural Finite State Machines (FSM), and UniMod falls within this methodology. However, UniMod is different from other projects using FSMs for describing application logic in that it uses UML and is not focused on embedded systems. UniMod generates Java code exclusively and is another plugin for the Eclipse platform.


Violet


Violet is a simple UML diagram editor and is not intended as an industrial strength modeling tool. No code generation or reverse engineering capabilities are provided, and it does not support XMI export or perform semantic checking of models (in other words, you can draw contradictory diagrams). Violet can be run as an applet, via Java Web Start or as an Eclipse plugin. Violet's strength lies in its simplicity and easy of use.


Primary Candidates


ArgoUML


ArgoUML is another mature code generating CASE tool, supporting diagram editing for all 9 UML 1.4 diagrams. It boasts a rich set of features including code generation for Java, C++, C#, PHP4 and PHP5, and it's platform independent and available in ten languages. Diagrams can be exported in as GIF, PNG, PS, EPS, PGML and SVG. Another nice feature is that it supports reverse engineering with Jar/class file importing. Even though we found the user documentation to be lacking in some areas, the documentation seems to be an active work in progress.




ArgoUML is very easy to install, as it has no dependencies other than Java. In most cases it can be installed with a single click using Java Web Start. ArgiUML supports XMI, which is an XML based exchange format between UML tools, so interchange between XMI-compliant tools should be a snap. Other cool features include to-do lists, design critics, OCL support, checklists and multiple overlapping views.

It's worth mentioning that there is a commercial product called Poseidon, which uses the ArgoUML code base and presents a more complete, rounded product. Having used both, we can live with some of the rough edges in ArgoUML in order to gain some of the other benefits of using an open source solution.

BOUML


BOUML is a very promising project. Running under Linux, Solaris, MacOS X and Windows, it provides UML diagram editing and code generation for C++, Java, Python, PHP and IDL. The generated code is achieved through what the author calls "plug-outs" (named because they execute outside of the BOUML environment), which can be developed in C++ or Java to support other languages. Considering the author is a non-native English speaker, the documentation is excellent. This is a great example of useful open source.


Netbeans


The popular Netbeans IDE has a great UML plugin, which is easily installed via the Plugin Manager. Designers and analysts design applications using the UML modeling language, then developers generate Java code from the UML model. You can also update the model from changes made in the source code. Generated source code can be saved into new source files or merged into existing source code files, thereby providing full round-trip engineering capability. Your collection types are preserved during Forward and Reverse Engineering and may be set and changed. The Netbeans documentation is very good, and there are tutorial trails covering UML based development. However, code generation is currently Java only.


Papyrus / Acceleo


Another tool based on the Eclipse environment, Papyrus models within UML 2.0 and supports multiple code generation possibilities. It supports the DI (Diagram Interchange) standard, an extensible architecture that allows users to add new diagrams and new code generators as well as profile development support facilities for UML2 profiles, nested profiles, and OCL constraints in profile descriptions. Code generation is supported through interfacing with Acceleo.




Acceleo, built as an Eclipse plugin and utilizing the Eclipse EMF (Eclipse Modeling Framework), is a mature MDA environment. With syntax highlighting, real-time error detection, meta-model and scripts-based completion, and real-time preview of generated code, this is certainly an extremely useful product. Acceleo lets you insert custom coding into the generated code by defining coding zones, which are preserved in future iterations of generation. What this means is that you can use Acceleo throughout your development process and seamlessly evolve your project without losing any customization code. It uses custom templates to generate many commonly used programming artifacts, using wizards and a special syntax defined as a result of many years of experience in code generation. In addition, Acceleo uses "services" to extend templates to implement complex operations — basically allowing unlimited extensibility while keeping the templates clean and easy to read. Acceleo can be used to generate C, Fortran, Java, Smalltalk, XML, VB.Net, and virtually any markup language. This is accomplished by the use of Modules, which are basically groups of several templates that describe the information required to generate source code.



A large number of commercial and open source UML Case tools are compatible with Acceleo, and it runs on any Eclipse-compatible operating system. And if this all sounds way too technical, don't despair — the online documentation and tutorials are superb. The website features a support forum for both English and French language users. Additionally, there is a wiki, an IRC channel, a mailing list and an RSS feed.

Taylor


Implemented as a set of Eclipse plugins and targeted towards JEE development, Taylor aims to make creating JEE applications as easy as Ruby-on-Rails, but with the power of JEE and UML. We were very pleased to see that Taylor can generate JSF and JBoss Seam code, as well as EJB3 Entity and Session Beans. Equally exciting is the fact it can generate Maven pom.xml files and APT documentation from the UML comments. This merely scratches the surface of its feature list — Java Enterprise developers won't be disappointed with the direction of this project. The documentation is excellent and includes a cool Flash-based demo.


Conclusion


From the perspective of a reviewer with no specific software development project in mind, the most feature-laden option is the Papyrus / Acceleo combination. If your primary IDE is Eclipse, you will benefit from having your modeling software running in the same environment as your active code editor. For Java programmers using Netbeans, the same can said of its modeling tool. BOUML, while superb in its own right, is the vision of a single author and, as such, enterprise development institutions may be hesitant to adopt it. If you don't mind breaking away from your IDE, give Taylor a test drive.


As we’ve seen, there are many good open source choices for project conception and planning tools, but the best tool for the job is not easily defined. Your unique programming language requirements, environment, operating system, and IDE will guide your decision making process.

Follow @openlogic
Follow @CloudSwing

This work is licensed under a Creative Commons Attribution 3.0 Unported License
Creative Commons License.Follow @openlogic
Follow @OSCloudServices

This work is licensed under a Creative Commons Attribution 3.0 Unported License
Creative Commons License.
Tags: Comparison, Technical, NetBeans, Programming, Dia, Kivio, BOUML, AndroMDA, PyUML, UniMod, StarUML, ArgoUML, Gaphor, Violet, UML, Acceleo, Taylor

Comments

does these free tools support reverse engineering ,testing, reenginneering,meta modellingand software life cycle management.can anyone suggest a free tool which supports all these inaddition to uml design ,code generation and documentation
Posted @ Monday, June 17, 2013 11:54 PM by kmea
suggest a free tool which does requirement analysis,uml design ,documentation,code generation,testing,cost estimate,scheduling,reverse engineering,reengineering,data modeling, meta modeling and software lifecycle management
Posted @ Monday, June 17, 2013 11:58 PM by kmea
Post Comment
Name
 *
Email
 *
Website (optional)
Comment
 *

Allowed tags: <a> link, <b> bold, <i> italics

Loading...
Error sending email
Email sent successfully

Email article
Email To : 
Your name : 
Message : (maximum 200 characters)
Home | Search | Source Code Scanning Tools | Products and Support | Services | Cloud Services | Open Source Training | Enterprise OSS Blog | Wazi Technical Blog | Resources Library | Partners | Customers | Community | Company | Careers | News and Events | Contact Us
Products
OpenLogic Exchange (OLEX)
License Compliance Module
OSS Discovery
OSS Deep Discovery
OpenUpdate
Services
Open Source Support
CentOS Support
Scanning & Compliance
Open Source Training
Professional Services
Solutions
Support & Indemnification
Open Source Governance
Open Source Scanning
Open Source Provisioning
Consulting & Training
Contact Us
1-888-673-6564


© 2013 OpenLogic, Inc. All rights reserved.
Site Map  |  Privacy Policy