| <?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:epf="http://www.eclipse.org/epf" epf:version="1.5.0" xmi:id="-X7QSjItNBz7w8603yBCv0Q" |
| name="abstract_away_complexity,_we3F4ACpEdu8m4dIntu6jA" guid="-X7QSjItNBz7w8603yBCv0Q" |
| changeDate="2007-02-07T16:14:04.351-0800" version="1.0.0"> |
| <mainDescription><p>
 |
| Software&nbsp;development is a pursuit characterized by complexity. This can take many forms, such as accommodating
 |
| complex requirements, technology, or team dynamics. Elevating the level of abstraction helps you manage this complexity
 |
| and make measurable progress, despite the inherent difficulty of the task.
 |
| </p>
 |
| <p>
 |
| Suggestions for several strategies that help abstract away complexity follow.
 |
| </p>
 |
| <h4>
 |
| Leverage patterns
 |
| </h4>
 |
| <p>
 |
| Patterns help you take advantage of proven techniques for solving common problems. You can benefit from the experience
 |
| of seasoned practitioners and avoid "re-inventing the wheel," as the saying goes. The use of patterns is a crucial
 |
| aspect of an architecture-centric approach to development, because it helps reduce the novelty and diversity of a
 |
| solution, thus improves quality.
 |
| </p>
 |
| <p>
 |
| See <a class="elementLinkWithType" href="./../../../openup/guidances/concepts/pattern_10BE6D96.html" guid="_0YJvUMlgEdmt3adZL5Dmdw">Concept: Pattern</a>&nbsp;for more information.
 |
| </p>
 |
| <h4>
 |
| Design the architecture with components and services
 |
| </h4>
 |
| <p>
 |
| This strategy helps manage software complexity through&nbsp;partitioning&nbsp;a system into a set of loosely coupled
 |
| and highly cohesive subsystems. The benefits of this approach include the ability to organize the team around a set of
 |
| smaller, more manageable objectives, and the ability to substitute parts of the system without disturbing the overall
 |
| cohesion of the system. Exposing services encourages re-use by making the functionality of the system easier to
 |
| comprehend. Focusing on services makes it possible to understand what the system does from a technical perspective
 |
| without necessarily having to understand the details of how the system works.
 |
| </p>
 |
| <p>
 |
| See <a class="elementLinkWithType" href="./../../../openup/guidances/concepts/component_CB167D48.html" guid="_0YP18MlgEdmt3adZL5Dmdw">Concept: Component</a>&nbsp;for more information.
 |
| </p>
 |
| <h4>
 |
| Actively promote reuse
 |
| </h4>
 |
| <p>
 |
| Incorporating existing software into an overall architecture helps reduce cost and improve quality by reusing proven
 |
| working software, rather than developing from scratch. It also helps reduce the burden of maintenance by eliminating
 |
| duplication in the software. Although often difficult to manage, a project or enterprise can reap significant benefits
 |
| from a well-executed re-use strategy.
 |
| </p></mainDescription> |
| </org.eclipse.epf.uma:ContentDescription> |