| <?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.5/uma.ecore" |
| xmlns:rmc="http://www.ibm.com/rmc" rmc:version="7.5.0" xmlns:epf="http://www.eclipse.org/epf" |
| epf:version="1.5.0" xmi:id="_SB1n8MM1EdmSIPI87WLu3g" |
| name="visual_modeling,_0XY6UMlgEdmt3adZL5Dmdw" guid="_SB1n8MM1EdmSIPI87WLu3g" |
| changeDate="2008-02-14T04:58:00.031-0800" version="1.0.0"> |
| <mainDescription><p align="center">
 |
| <img height="229" alt="visual modelling" src="./resources/visual.gif" width="447" />
 |
| </p>
 |
| <p align="center">
 |
| Visual modeling raises the level of abstraction
 |
| </p>
 |
| <p>
 |
| 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 design team, as the design is formed and reviewed, allowing the reader to
 |
| reason about the design, and it provides an unambiguous basis for implementation.
 |
| </p>
 |
| <h3>
 |
| How visual models help
 |
| </h3>
 |
| <p>
 |
| 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:
 |
| </p>
 |
| <ul>
 |
| <li>
 |
| Increase understanding of complex systems
 |
| </li>
 |
| <li>
 |
| Explore and compare design alternatives at a low cost
 |
| </li>
 |
| <li>
 |
| Form a foundation for implementation
 |
| </li>
 |
| <li>
 |
| Capture requirements precisely
 |
| </li>
 |
| <li>
 |
| Communicate decisions unambiguously
 |
| </li>
 |
| </ul>
 |
| <h4>
 |
| Increase understanding of complex systems
 |
| </h4>
 |
| <p>
 |
| 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.
 |
| </p>
 |
| <p>
 |
| Similarly, a small application built by one person in a few days may be easily understood in its entirety. However, an
 |
| e&nbsp;-&nbsp;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.&nbsp;
 |
| </p>
 |
| <p>
 |
| Among the various types of models are these examples:
 |
| </p>
 |
| <ul>
 |
| <li>
 |
| Use cases to specify behavior unambiguously
 |
| </li>
 |
| <li>
 |
| Class diagrams and data model diagrams to capture design
 |
| </li>
 |
| <li>
 |
| State transition diagrams to model dynamic behavior
 |
| </li>
 |
| </ul>
 |
| <p>
 |
| Modeling is important because it helps the team visualize, construct, and document the structure and behavior of the
 |
| system without getting lost in complexity.
 |
| </p>
 |
| <h4>
 |
| Explore and compare design alternatives at a low cost
 |
| </h4>
 |
| <p>
 |
| 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.
 |
| </p>
 |
| <h4>
 |
| Form a foundation for implementation
 |
| </h4>
 |
| <p>
 |
| 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.
 |
| </p>
 |
| <p>
 |
| The creation of visual models, whether&nbsp;on paper; around a whiteboard; or in a modeling tool,&nbsp;can help a team
 |
| to gain agreement on key aspects of the system before investing time&nbsp;in proving&nbsp;their ideas&nbsp;with code.
 |
| Having a shared model of the system promotes collaboration within the team, encouraging everyone to work towards the
 |
| same goal.
 |
| </p>
 |
| <p>
 |
| With the support of appropriate tools, you can use a design model to generate an initial code for implementation. This
 |
| is referred to as <strong>forward engineering</strong> or <strong>code generation</strong>. You can also enhance design
 |
| models to include enough information to build the system.
 |
| </p>
 |
| <p>
 |
| <strong>Reverse engineering</strong> may also be applied to generate design models from existing implementations. You
 |
| can use this method to evaluate existing implementations.&nbsp;&nbsp;
 |
| </p>
 |
| <p>
 |
| <strong>Round-trip engineering</strong> 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.
 |
| </p>
 |
| <h4>
 |
| Capture requirements precisely
 |
| </h4>
 |
| <p>
 |
| 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.
 |
| </p>
 |
| <p>
 |
| 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.
 |
| </p>
 |
| <h4>
 |
| Communicate decisions unambiguously
 |
| </h4>
 |
| <p>
 |
| The Unified Modeling Language (UML) is&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::
 |
| </p>
 |
| <ul>
 |
| <li>
 |
| <p>
 |
| Serves as a language for communicating decisions that are not obvious or cannot be inferred from the code
 |
| itself.
 |
| </p>
 |
| </li>
 |
| <li>
 |
| <p>
 |
| Provides semantics that are rich enough to capture all important strategic and tactical decisions.
 |
| </p>
 |
| </li>
 |
| <li>
 |
| <p>
 |
| Offers a form concrete enough for humans to reason [about] and for tools to manipulate.
 |
| </p>
 |
| </li>
 |
| </ul>
 |
| <p>
 |
| UML represents the convergence of the best practice in software modeling throughout the object-technology industry. For
 |
| more information on the UML, see <a class="elementLinkWithUserText" href="./../../../core.tech.common.base/guidances/supportingmaterials/references.tech_6CCF393.html" guid="_9ToeIB83Edqsvps02rpOOg">[UML05]</a>.
 |
| </p></mainDescription> |
| </org.eclipse.epf.uma:ContentDescription> |