| <?xml version="1.0" encoding="UTF-8"?> |
| <!DOCTYPE html PUBLIC "-//W3C/DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> |
| <!-- VERSION rmc:7.1.0 --> |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> |
| <!-- START NON-TRANSLATABLE --> |
| <title>\openup_basic\guidances\concepts\visual_modeling.xmi</title> |
| </head> |
| <!-- WARNING: do not modify the generated comments in this file below this line. They are used as markers for the import process. --> |
| <body> |
| Element Name: visual_modeling.xmi<br/><br/> |
| <!-- END NON-TRANSLATABLE --> |
| <br/><br/><br/> |
| <!-- START NON-TRANSLATABLE --> |
| Attribute: presentationName<br/><br/> |
| <!-- END NON-TRANSLATABLE --> |
| <!-- START:presentationName,_0XY6UMlgEdmt3adZL5Dmdw CRC: 689168066 -->Visual Modeling<!-- END:presentationName,_0XY6UMlgEdmt3adZL5Dmdw --> |
| <br/><br/><br/> |
| <!-- START NON-TRANSLATABLE --> |
| Attribute: briefDescription<br/><br/> |
| <!-- END NON-TRANSLATABLE --> |
| <!-- START:briefDescription,_0XY6UMlgEdmt3adZL5Dmdw CRC: 3679078480 -->This concept introduces the use of semantically rich graphical and textual design notations to capture software designs.<!-- END:briefDescription,_0XY6UMlgEdmt3adZL5Dmdw --> |
| <br/><br/><br/> |
| <!-- START NON-TRANSLATABLE --> |
| Attribute: mainDescription<br/><br/> |
| <!-- END NON-TRANSLATABLE --> |
| <!-- START:mainDescription,_SB1n8MM1EdmSIPI87WLu3g CRC: 3857679696 --><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 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-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. |
| </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 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. |
| </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. |
| </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 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="./../../../openup_basic/guidances/supportingmaterials/references,_9ToeIB83Edqsvps02rpOOg.html" |
| guid="_9ToeIB83Edqsvps02rpOOg">[UML05]</a>. |
| </p><!-- END:mainDescription,_SB1n8MM1EdmSIPI87WLu3g --> |
| </body> |
| </html> |