blob: e7993820cb7a93f28190d908e1c34f2eb8ecb170 [file] [log] [blame]
<?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="-t7mQSRPYITkMoYRVNz7jQg"
name="develop_architecture,_mDf2EBapEduSTJywppIxVQ" guid="-t7mQSRPYITkMoYRVNz7jQg"
changeDate="2007-04-13T05:42:38.234-0700" version="1.0.0">
<mainDescription>&lt;h3> Identify architecturally significant design elements &lt;/h3>&#xD;
&lt;p align=&quot;left&quot;> Consider&amp;nbsp;each high-priority&amp;nbsp;scenario that is within &#xD;
the scope of the project. Walk through the actions that the&amp;nbsp;scenario initiates, &#xD;
and highlight the areas of the architecture that are factors in realizing, or &#xD;
implementing, the requirements. &lt;/p>&#xD;
&lt;p>&#xD;
Identifying components will help hide the complexity of the system and help you work at a higher level. Components need&#xD;
to be internally cohesive and to provide external services through a limited interface. Component identification can&#xD;
be&amp;nbsp;based on architectural layers, deployment choices, or key abstractions. Ask yourself these questions:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
What is logically or functionally related (same use case or service, for example)?&#xD;
&lt;/li>&#xD;
&#xD;
&lt;li> What entities provide services to multiple other services? &lt;/li>&#xD;
&lt;li>&#xD;
What entities depend on each other? Strongly or weakly?&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
What entities should you be able to exchange independently from others?&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
What will run on the same processor or network node?&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
What parts are constrained by similar performance requirements?&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
Each component includes entities from the problem domain, control classes that coordinate complex tasks within&#xD;
components, and interfaces that handle communication with the environment. The interface for each instantiated element&#xD;
is identified. At this point, interfaces do not need to be as detailed as a signature, but they do need to document&#xD;
what the elements need, what they can use, and what they can depend on.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Identified patterns define the types of elements, but not a specific number. Apply the chosen patterns to define a new&#xD;
set of elements that conform to the patterns. Functionality will be allocated to the instantiated elements.&#xD;
&lt;/p>&#xD;
&lt;h3> Refine&amp;nbsp;the Architectural Mechanisms &lt;/h3>&#xD;
&lt;p> Consider each high-priority quality scenario, and map each of these onto the &#xD;
Architectural Mechanisms. Refine the mechanisms to identify the specific technology&amp;nbsp;that &#xD;
will handle each mechanism within the scope. For example, for the Persistence &#xD;
mechanism, it may be appropriate to&amp;nbsp;use a relational database management &#xD;
system, such as MySQL.&amp;nbsp;Consider the selection of technology in the context &#xD;
of the requirements and constraints. &lt;/p>&#xD;
&lt;p>&#xD;
See &lt;a class=&quot;elementLinkWithType&quot; href=&quot;./../../../openup/guidances/concepts/arch_mech_2932DFB6.html&quot; guid=&quot;_mzxI0A4LEduibvKwrGxWxA&quot;>Concept: Architectural Mechanism&lt;/a> for more information.&#xD;
&lt;/p>&#xD;
&lt;h2 align=&quot;left&quot;> Map the software to the hardware &lt;/h4>&#xD;
&lt;p align=&quot;left&quot;> Produce a precise map of deployable software components to network &#xD;
nodes. &lt;/p>&#xD;
&lt;h4> Define development and test architectures &lt;/h4>&#xD;
&lt;p> The configuration of the environments where the system is developed and tested &#xD;
may be different from the target production environment, and this may have an &#xD;
impact on the solution. For example:&lt;/p>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
Additional software may needed to be developed to support testing.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Alternative deployment configurations may need to be defined for different environments in response to constraints&#xD;
on development and test&amp;nbsp;hardware.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Multiple environments may be required to support different categories of tests (such as&amp;nbsp;performance testing or&#xD;
user acceptance testing). These will need to be specified.&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p> These scenarios, although not desirable, are often forced on the team through &#xD;
various constraints. Consequently, the architecture for these different environments &#xD;
will need to be specified&amp;nbsp;with particular attention paid to significant &#xD;
differences. Be sure to consider the impact of any differences on the quality &#xD;
of the overall target production architecture. &lt;/p>&#xD;
&lt;h4> Validate the architecture &lt;/h4>&#xD;
&lt;p> The surest way to validate the architecture is through software. The software &#xD;
developed up to the end of the Elaboration phase is largely aiming to validate &#xD;
the architecture (to the point where it can be baselined), thereby providing &#xD;
some level of stability during the Construction phase. &lt;/p>&#xD;
&lt;p> It can also be useful to perform simple validation by walking through the &#xD;
main design concepts and models, perhaps by using a whiteboard or through other &#xD;
collaborative techniques. This can help refine thinking but will not act as &#xD;
a substitute for building some software. &lt;/p>&#xD;
&lt;h4> Communicate decisions &lt;/h4>&#xD;
&lt;p> You can document and communicate your decisions as many ways as you wish, &#xD;
for example:&lt;/p>&#xD;
&lt;ul>&#xD;
&#xD;
&lt;li> Publication of&amp;nbsp;reference source code&lt;/li>&#xD;
&#xD;
&lt;li> Publication of&amp;nbsp;reference models&lt;/li>&#xD;
&#xD;
&lt;li> Publication of&amp;nbsp;software architecture documentation&lt;/li>&#xD;
&#xD;
&lt;li> Formal&amp;nbsp;presentations of the material&lt;/li>&#xD;
&#xD;
&lt;li> Informal walkthroughs of the architecture&lt;/li>&#xD;
&lt;/ul></mainDescription>
</org.eclipse.epf.uma:ContentDescription>