| <?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> 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> 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. Note that programming is often required to complete the implementation after the design |
| model 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. To do so, consider the following: |
| </p> |
| <ul> |
| <li> |
| Examine the 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. <a class="elementLink" href="./../../openup_basic/guidances/concepts/refactoring,_Poc7IPDzEdqYgerqi84oCA.html" guid="_Poc7IPDzEdqYgerqi84oCA">Refactoring</a> 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. 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. 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 UML visualizations in the Eclipse IDE, |
| help developers identify issues such as excessive coupling or circular dependencies. |
| </li> |
| <li> |
| Perform informal, targeted code inspections. Ask colleagues to review 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> 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> |