| <?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="-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_basic/guidances/concepts/pattern,_0YJvUMlgEdmt3adZL5Dmdw.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_basic/guidances/concepts/component,_0YP18MlgEdmt3adZL5Dmdw.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> |