<?xml version="1.0" encoding="UTF-8"?>
<org.eclipse.epf.uma:ContentDescription xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:org.eclipse.epf.uma="http://www.eclipse.org/epf/uma/1.0.3/uma.ecore" epf:version="1.0.0" xmi:id="_SB1n8MM1EdmSIPI87WLu3g" name="visual_modeling,_0XY6UMlgEdmt3adZL5Dmdw" guid="_SB1n8MM1EdmSIPI87WLu3g" changeDate="2007-03-03T12:12:42.271-0500" version="1.0.0">
  <mainDescription>&lt;p align=&quot;center&quot;&gt;
    &lt;img height=&quot;229&quot; alt=&quot;visual modelling&quot; src=&quot;./resources/visual.gif&quot; width=&quot;447&quot; /&gt;
&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;
    Visual modeling raises the level of abstraction
&lt;/p&gt;
&lt;p&gt;
    Visual modeling is the use of semantically rich, graphical and textual design notations to capture software designs. A
    notation, such as UML, allows the level of abstraction to be raised, while maintaining rigorous syntax and semantics.
    In this way, it improves communication in the team as the design is formed and reviewed, allowing the reader to reason
    about the design, and it provides an unambiguous basis for implementation.
&lt;/p&gt;
&lt;h3&gt;
    How visual models help
&lt;/h3&gt;
&lt;p&gt;
    A model is a simplified view of a system. It shows the essentials of the system from a particular perspective and hides
    the nonessential details. Visual models help you:
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;
        Increase understanding of complex systems
    &lt;/li&gt;
    &lt;li&gt;
        Explore and compare design alternatives at a low cost
    &lt;/li&gt;
    &lt;li&gt;
        Form a foundation for implementation
    &lt;/li&gt;
    &lt;li&gt;
        Capture requirements precisely
    &lt;/li&gt;
    &lt;li&gt;
        Communicate decisions unambiguously
    &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
    Increase understanding of complex systems
&lt;/h4&gt;
&lt;p&gt;
    The importance of models increases as systems become more complex. For example, you can build a doghouse without
    blueprints. However, as you progress to building houses and then to skyscrapers, your need for blueprints becomes
    pronounced.
&lt;/p&gt;
&lt;p&gt;
    Similarly, a small application built by one person in a few days may be easily understood in its entirety. However, an
    e-commerce system with tens of thousands of source lines of code (SLOCs) or an air traffic control system with hundreds
    of thousands of SLOCs can no longer be easily understood by one person. Constructing models allows a developer to focus
    on the big picture, understand how components interact, and identify fatal flaws.&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
    Among the various types of models are these examples:
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;
        Use cases to specify behavior unambiguously
    &lt;/li&gt;
    &lt;li&gt;
        Class diagrams and data model diagrams to capture design
    &lt;/li&gt;
    &lt;li&gt;
        State transition diagrams to model dynamic behavior
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
    Modeling is important because it helps the team visualize, construct, and document the structure and behavior of the
    system without getting lost in complexity.
&lt;/p&gt;
&lt;h4&gt;
    Explore and compare design alternatives at a low cost
&lt;/h4&gt;
&lt;p&gt;
    You can create and modify simple models inexpensively to explore design alternatives. Innovative ideas can be captured
    and reviewed by other developers before investing in costly code development. When coupled with iterative development,
    visual modeling helps developers assess design changes and communicate these changes to the entire development team.
&lt;/p&gt;
&lt;h4&gt;
    Form a foundation for implementation
&lt;/h4&gt;
&lt;p&gt;
    Today, many projects employ object-oriented programming languages to build reusable, change-tolerant, and stable
    systems. To get these benefits, it is even more important to use object technology in design.
&lt;/p&gt;
&lt;p&gt;
    The creation of visual models, whether on paper; around a whiteboard; or in a modeling tool, can help a team to gain
    agreement on key aspects of the system before investing time in proving their ideas with code. Having a shared model of
    the system promotes collaboration within the team, encouraging everyone to work towards the same goal.
&lt;/p&gt;
&lt;p&gt;
    With the support of appropriate tools, you can use a design model to generate an initial code for implementation. This
    is referred to as &lt;strong&gt;forward engineering&lt;/strong&gt; or &lt;strong&gt;code generation&lt;/strong&gt;. You can also enhance design
    models to include enough information to build the system.
&lt;/p&gt;
&lt;p&gt;
    &lt;strong&gt;Reverse engineering&lt;/strong&gt; may also be applied to generate design models from existing implementations. You
    can use this method to evaluate existing implementations.
&lt;/p&gt;
&lt;p&gt;
    &lt;strong&gt;Round-trip engineering&lt;/strong&gt; combines both forward and reverse engineering techniques to ensure consistent
    design and code. Combined with an iterative process and the right tools, round-trip engineering allows you to
    synchronize the design and code during each iteration.
&lt;/p&gt;
&lt;h4&gt;
    Capture requirements precisely
&lt;/h4&gt;
&lt;p&gt;
    Before building a system, it's critical to capture the requirements. Specifying the requirements using a precise and
    unambiguous model helps to ensure that all stakeholders can understand and agree on the requirements.
&lt;/p&gt;
&lt;p&gt;
    A model that separates the external behavior of the system from the implementation of it helps you focus on the
    intended use of the system, without getting bogged down in implementation details.
&lt;/p&gt;
&lt;h4&gt;
    Communicate decisions unambiguously
&lt;/h4&gt;
&lt;p&gt;
    The Unified Modeling Language (UML) is&amp;nbsp;a consistent notation that can be applied for system engineering, as well
    as for business engineering. According to these excerpts from the UML specification, a standard notation:
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;
        &lt;p&gt;
            Serves as a language for communicating decisions that are not obvious or cannot be inferred from the code
            itself.
        &lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;p&gt;
            Provides semantics that are rich enough to capture all important strategic and tactical decisions.
        &lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;p&gt;
            Offers a form concrete enough for humans to reason [about] and for tools to manipulate.
        &lt;/p&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
    UML represents the convergence of the best practice in software modeling throughout the object-technology industry. For
    more information on the UML, see &lt;a class=&quot;elementLinkWithUserText&quot;
    href=&quot;./../../../openup_basic/guidances/supportingmaterials/references,_9ToeIB83Edqsvps02rpOOg.html&quot;
    guid=&quot;_9ToeIB83Edqsvps02rpOOg&quot;&gt;[UML05]&lt;/a&gt;.
&lt;/p&gt;</mainDescription>
</org.eclipse.epf.uma:ContentDescription>
