Developing software without modeling will most likely end up as a failed project or become a victim of its own success and fail. Good software meets the needs of its users and can easily adapt to new business requirements.  A model is a blueprint of a system that we are trying to build. Modeling is the processing of creating a blueprint for a system. Models allow us to visualize system in a 360 degree view and help identify key issues in the development. This article covers the following topics
  • Why system modeling is important
  • Effective use of UML
  • Factors to consider when choosing a UML modeling tool
  • List of UML tools and when to use them
  • UML Use cases text and diagram for customer ordering system
  • UML Class diagram for customer ordering system
  • Summary

4 Reasons why system modeling is important

  1. Models act as communication tools – you are developing software for users. Model will help you easily communicate the requirements between yourself and the users of the system. Other developers who may later join your team will also easily catch up by going through the models of your system.
  2. Get a complete view of the system – the human mind works better with visual elements. Think of a complex building’s blueprint. It will show you all the components of the building, the electric wiring, water system etc. based on the building’s blueprint, you will be able to make extension plans to the system that are cost effective and will not break the existing structures. The same applies when use models to visualize systems.
  3. Better understand the system – by being able to view all the system components and how they work together, we can easily understand how the system should work.
  4. Manage risk – models can help us identify weakness in the system design and come up with measures that prevent the weaknesses from materializing or reducing the impact of the weaknesses when they happen

Effective use of UML

UML is the acronym for Unified Modeling Language, most system designers use it as a drawing notation for fancy diagrams that every complex system designer should produce. UML should be used primarily for modeling systems. That is producing system blueprints that facilitate communication between developers and user and among developers themselves, help visualize the system under design and, help manage risks. UML can also serve as part of the documentation of a system. UML has a number of diagrams but we will focus on two (2) of them only namely;
  1. Use cases – a description of steps involved when a user interacts with a system is called a scenario. A use case is a set of scenarios tied together by a common user goal (Martin Fowler). Use case diagrams simplify communication between developers and end users.
  2. Class diagrams - a set of classes and interfaces, and how they relate to one another. The classes usually have attributes and operations.

Factors to consider when choosing a UML modeling tool

  1. Modeling can be done from two main perspectives,
    1. Users’ perspective - when working is working from a user’s functional requirements perspective, drawing is far much more important. End users will love and easily understand their interactions with the system based on the roles.
    2. Developer’s perspective – well designed class diagrams that follow UML standards can be used to generate skeleton code of the designed classes with the attributes.
    3. Models portability – you may want to upgrade your models to a new product without redoing the whole work
    4. Use case management, Rational Unified Process (RUP) integration, pattern creation etc.
    5. Platforms on which the tool runs – one of the reasons we all love Java is its cross platform. C# is cross platform tool. The point is your developers should be allowed to choose their favorite OS Windows, Mac or Linux and still use the same tool to model and share model diagrams.

Popular UML Tools and my Humble Personal Opinion (Ideal for)

Sr NoToolPlatformLicenseWebsiteIdeal for
1StarUML this is my personal favorite that I use all the time. It is not currently being developed. The active one is WhiteStarUML. I will make the case for the good old StarUML in a separate postWindowsOpen sourceLinkWorking from a developer’s perspective.Partially supports almost all of the above factors
2ArgoUMLCross-platformOpen sourceLinkAlmost the same as StarUML
3Edraw MaxWindowsCommercialLinkUser’s perspective
4Enterprise ArchitectWindows, supports Linux and MacCommercialLinkMost of the above plus many more
5IBM Rational SoftwareCommercialLinkMostly factor number 3. Others apply too
For a comprehensive list of UML tools, check this Link on Wikipedia

UML Use cases text and diagram for customer ordering system

This article on ERD diagram using a real world example contain the background case study information for the UML diagrams used in this article. Use case text Order a product(s)
  1. Customer selects item(s)
  2. Customer Places Order
  3. Customer fills in personal and delivery details
  4. System accepts order and notifies employee chosen by customer
  5. System sends confirming email to customer
Alternative: insufficient product quantity at hand At step 2, customer ordered more than what we currently have, ask customer to cancel remove product or reduce ordered quantity

Use case diagram customer ordering system (Modeled using StarUML)

ordering system use case diagram We will not create use cases for all the scenarios. The above diagram should give you ideas of what you ought to do.

UML Class diagram for customer ordering system (Modeled using StarUML)

Class diagrams should be responsibility oriented and not data oriented (Martin Fowler). We at CodeBlog agree with the words of Martin Fowler. For simplicity’s sake, we will not include all the attributes of the class. Only key ones will be included. ordering system class diagram Our case study business scenario will be implemented in PHP, C# and Java. The class ORM Model will be replaced with;
  • Eloquent ORM (From Laravel PHP Framework) used outside Laravel framework
  • NHibernate ORM for C#
  • Hibernate ORM for Java
  • Modeling is a powerful technical that facilitates communication between developers and end users and among developers
  • Model can be used to manage risk
  • Models help us as human beings to fully understand the system by giving us a 360 degrees view
  • Unified Modeling Language (UML) is used to model systems
  • Use cases and class diagrams are some of the commonly used UML diagrams

Summary

Subscribe to our newsletter to receive updates directly into your mailbox. Read our privacy policy if you have concerns on how we use your personal details collected on the website. Support us by liking, sharing and providing feedback on our articles using the comments section and on social media.