blob: 7640504478bdaf05209a022ef54f6bd48fea8ca9 [file] [log] [blame]
<?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\tasks\implement_solution.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: implement_solution.xmi<br/><br/>
<!-- END NON-TRANSLATABLE -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: presentationName<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:presentationName,_0hyzgMlgEdmt3adZL5Dmdw CRC: 4143109244 -->Implement the Solution<!-- END:presentationName,_0hyzgMlgEdmt3adZL5Dmdw -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: briefDescription<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:briefDescription,_0hyzgMlgEdmt3adZL5Dmdw CRC: 3037338676 -->Implement source code to provide new functionality or fix defects.<!-- END:briefDescription,_0hyzgMlgEdmt3adZL5Dmdw -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: mainDescription<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:mainDescription,_d2aMwKrMEdmqUqi7YGiSxw CRC: 2658401817 --><p>
Usually, this task is focused on a specific element, such as a class or component, but it does not need to be.
</p>
<p>
You implement a portion of the design during each iteration by performing this task. You can perform the task any
number of times during an iteration.
</p>
<p>
Modify the implementation incrementally. Make additions and changes to the implementation for an issue, run the unit
and regression tests, and then complete the issue before moving on to other issues.
</p>
<p>
See the associated guidelines for information on how to perform the steps described in this task.
</p><!-- END:mainDescription,_d2aMwKrMEdmqUqi7YGiSxw -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: keyConsiderations<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:keyConsiderations,_d2aMwKrMEdmqUqi7YGiSxw CRC: 4055917555 --><p>
This task is complete once the build has successfully completed. The implementation should then be immediately tested.
</p><!-- END:keyConsiderations,_d2aMwKrMEdmqUqi7YGiSxw -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: purpose<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:purpose,_d2aMwKrMEdmqUqi7YGiSxw CRC: 2968539442 --><p>
The purpose of this task is to produce an implementation for part of the solution (such as a class or component), or to
fix one or more defects. The result is typically new or modified source code, which is generally referred to <em>the
implementation</em>.<br />
</p><!-- END:purpose,_d2aMwKrMEdmqUqi7YGiSxw -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: name<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:name,_2sxisE2iEduU655MA_3VXg CRC: 2952321852 -->Determine a strategy<!-- END:name,_2sxisE2iEduU655MA_3VXg -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: sectionDescription<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:sectionDescription,_2sxisE2iEduU655MA_3VXg CRC: 2880397127 --><p>
You need to determine a strategy, based on the <a class="elementLink" href="./../../openup_basic/workproducts/design,_0WuL8slgEdmt3adZL5Dmdw.html" guid="_0WuL8slgEdmt3adZL5Dmdw">Design</a>&nbsp;of the work item being worked on, for how you're going to implement it.
Your fundamental options are:
</p>
<ol>
<li>
Apply existing, reusable assets.
</li>
<li>
Model the design in detail and generate the source code (by model transformation).
</li>
<li>
Write the source code.
</li>
<li>
Any combination thereof.
</li>
</ol><!-- END:sectionDescription,_2sxisE2iEduU655MA_3VXg -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: name<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:name,_iMMWoKuPEdmhFZtkg1nakg CRC: 2355737883 -->Identify opportunities for reuse<!-- END:name,_iMMWoKuPEdmhFZtkg1nakg -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: sectionDescription<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:sectionDescription,_iMMWoKuPEdmhFZtkg1nakg CRC: 1065575463 --><p>
Complete the implementation by reusing code at every opportunity.
</p>
<p>
Identify existing code or other implementation elements that you can reuse in the portion of the <a class="elementLink" href="./../../openup_basic/workproducts/implementation,_0YoQcMlgEdmt3adZL5Dmdw.html" guid="_0YoQcMlgEdmt3adZL5Dmdw">Implementation</a>&nbsp;that you are creating or changing. A comprehensive understanding
of the overall design is helpful, because it is best to leverage reuse opportunities when you have a thorough
understanding of the proposed solution.<br />
</p><!-- END:sectionDescription,_iMMWoKuPEdmhFZtkg1nakg -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: name<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:name,_pjehkNb7Edq_LtLvi4w2yw CRC: 211604240 -->Transform design into implementation<!-- END:name,_pjehkNb7Edq_LtLvi4w2yw -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: sectionDescription<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:sectionDescription,_pjehkNb7Edq_LtLvi4w2yw CRC: 3423206138 --><p>
If you are using sophisticated modeling tools, you should be able to generate a portion of the required source code
from the model.&nbsp;Note that programming is often required to complete the implementation after the design
model&nbsp;has been transformed into code.
</p><!-- END:sectionDescription,_pjehkNb7Edq_LtLvi4w2yw -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: name<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:name,_mFQ58KuPEdmhFZtkg1nakg CRC: 1364477963 -->Write source code<!-- END:name,_mFQ58KuPEdmhFZtkg1nakg -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: sectionDescription<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:sectionDescription,_mFQ58KuPEdmhFZtkg1nakg CRC: 3270119313 --><p>
You should strive to reuse and/or generate code wherever possible, but you will still need to do some
programming.&nbsp;To do so, consider the following:
</p>
<ul>
<li>
Examine the&nbsp;requirements. Because some requirements information does not translate directly into your design
you should examine the requirement(s) (potentially including both the <a class="elementLink" href="./../../openup_basic/workproducts/use_case,_0VGbUMlgEdmt3adZL5Dmdw.html" guid="_0VGbUMlgEdmt3adZL5Dmdw">Use Case</a>(s) and <a class="elementLink" href="./../../openup_basic/workproducts/supporting_requirements,_BVh9cL-CEdqb7N6KIeDL8Q.html" guid="_BVh9cL-CEdqb7N6KIeDL8Q">Supporting Requirements</a>) to ensure that they are fully realized in the
implementation.
</li>
<li>
Refactor your code to improve its design.&nbsp;<a class="elementLink" href="./../../openup_basic/guidances/concepts/refactoring,_Poc7IPDzEdqYgerqi84oCA.html" guid="_Poc7IPDzEdqYgerqi84oCA">Refactoring</a>&nbsp;is a technique where you improve the quality of your code via
small changes.
</li>
<li>
Tuning the results of the existing implementation by improving performance, the user interface, security, and other
nonfunctional areas.
</li>
<li>
Adding missing details, such as completing the logic of operations or adding supporting classes and data structures
</li>
<li>
Handling boundary conditions.
</li>
<li>
Dealing with unusual circumstances or error states.
</li>
<li>
Restricting behavior (preventing users from executing illegal flows, scenarios, or combinations of options).
</li>
<li>
Adding critical sections for multi-threaded or re-entrant code.<br />
</li>
</ul><!-- END:sectionDescription,_mFQ58KuPEdmhFZtkg1nakg -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: name<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:name,_-0yzwDH4EduMqpUNhaTSRA CRC: 1454371900 -->Create a build<!-- END:name,_-0yzwDH4EduMqpUNhaTSRA -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: sectionDescription<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:sectionDescription,_-0yzwDH4EduMqpUNhaTSRA CRC: 2933548742 --><p>
Create a new <a class="elementLink" href="./../../openup_basic/workproducts/build,_0YuXEMlgEdmt3adZL5Dmdw.html" guid="_0YuXEMlgEdmt3adZL5Dmdw">Build</a>. This might involve simply running an existing build script and/or updating an
existing build script.
</p><!-- END:sectionDescription,_-0yzwDH4EduMqpUNhaTSRA -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: name<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:name,_ni25UKuPEdmhFZtkg1nakg CRC: 4213619129 -->Evaluate the implementation<!-- END:name,_ni25UKuPEdmhFZtkg1nakg -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: sectionDescription<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:sectionDescription,_ni25UKuPEdmhFZtkg1nakg CRC: 2586302880 --><p>
Verify that the implementation is fit for its purpose.&nbsp;Examine the code for its suitability to perform its
intended function. This is a quality assurance step that you perform in addition to testing, and it is described in
other tasks. Consider these strategies:
</p>
<ul>
<li>
Pair programming.&nbsp;By pairing to implement the code in the first place, you effectively evaluate the code as
its being written.
</li>
<li>
Read through the code for common mistakes. Consider keeping a checklist of common mistakes that you make, as a
reminder reference.
</li>
<li>
Use tools to check for implementation errors and inappropriate code. For example, use a static code rule checker or
set the compiler to the most detailed warning level.
</li>
<li>
Use tools that can visualize the code. Code visualization, such as the&nbsp;UML visualizations in the Eclipse IDE,
help developers identify issues such as excessive coupling or&nbsp;circular dependencies.
</li>
<li>
Perform informal, targeted code inspections. Ask colleagues to review&nbsp;small critical sections of code and code
with significant churn. Avoid reviewing large sections of code.
</li>
<li>
Use the Tester to assure the implementation is testable and understandable to testing resources.
</li>
</ul>
<p>
Improve the implementation based on the results of these evaluations.
</p><!-- END:sectionDescription,_ni25UKuPEdmhFZtkg1nakg -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: name<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:name,_q5XiIKuPEdmhFZtkg1nakg CRC: 3985354331 -->Communicate significant decisions<!-- END:name,_q5XiIKuPEdmhFZtkg1nakg -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: sectionDescription<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:sectionDescription,_q5XiIKuPEdmhFZtkg1nakg CRC: 4224173571 --><p>
Communicate the impact of unexpected changes to the design and requirements.
</p>
<p>
The issues and constraints that you uncover when you implement the system must be communicated to the team. The impact
of issues discovered during implementation must be incorporated into future decisions. If appropriate, update use cases
and supporting requirements to reflect ambiguities that you identified and resolved in the implementation so they can
be tested and you can manage the <a class="elementLink" href="./../../openup_basic/roles/stakeholder,_dTa6gMAYEdqX-s4mWhkyqQ.html" guid="_dTa6gMAYEdqX-s4mWhkyqQ">Stakeholder</a>&nbsp;expectations appropriately. Similarly, update the design to reflect
new constraints and issues uncovered during implementation to be sure that the new information is communicated to other
developers.
</p>
<p>
Usually, there is no need for a change request if the required change is small and the same person is designing and
implementing the class. That individual can make the design change directly. If the required change has a broad impact,
such as a change in a public operation, it may be necessary to communicate that change to the other team members
through a change request.<br />
<br />
</p><!-- END:sectionDescription,_q5XiIKuPEdmhFZtkg1nakg -->
</body>
</html>