<html>
<head>
<base href="https://wiki.asterisk.org/wiki">
<link rel="stylesheet" href="/wiki/s/en/2176/25/9/_/styles/combined.css?spaceKey=AST&forWysiwyg=true" type="text/css">
</head>
<body style="background: white;" bgcolor="white" class="email-body">
<div id="pageContent">
<div id="notificationFormat">
<div class="wiki-content">
<div class="email">
<h2><a href="https://wiki.asterisk.org/wiki/display/AST/Project+Planning+Template">Project Planning Template</a></h2>
<h4>Page <b>edited</b> by <a href="https://wiki.asterisk.org/wiki/display/~mjordan">Matt Jordan</a>
</h4>
<br/>
<h4>Changes (2)</h4>
<div id="page-diffs">
<table class="diff" cellpadding="0" cellspacing="0">
<tr><td class="diff-snipped" >...<br></td></tr>
<tr><td class="diff-unchanged" >h2. JIRA Issues <br> <br></td></tr>
<tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">{jiraissues:url=https://issues.asterisk.org/jira/sr/jira.issueviews:searchrequest-xml/11309/SearchRequest-11309.xml?tempMax=1000|anonymous=true|cache=off} <br></td></tr>
<tr><td class="diff-added-lines" style="background-color: #dfd;">{jiraissues:url=https://issues.asterisk.org/jira/sr/jira.issueviews:searchrequest-xml/11309/SearchRequest-11309.xml?tempMax=1000} <br></td></tr>
<tr><td class="diff-unchanged" > <br>h2. Contributors <br></td></tr>
<tr><td class="diff-snipped" >...<br></td></tr>
</table>
</div> <h4>Full Content</h4>
<div class="notificationGreySide">
<div class='panelMacro'><table class='warningMacro'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/wiki/images/icons/emoticons/forbidden.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td>This page is currently a draft proposal of a project planning template for major Asterisk projects. Please refrain from commenting on this page.</td></tr></table></div>
<h1><a name="ProjectPlanningTemplate-Description"></a>Description</h1>
<p>Each major project being performed for a targeted release of Asterisk should have a project page on the Asterisk wiki. The purpose of a project page is to provide a point of reference for the project for Asterisk contributors.</p>
<p>Please use this page as a template for your projects under the <a href="/wiki/display/AST/Roadmap" title="Roadmap">Roadmap</a> Section.</p>
<div class='panelMacro'><table class='noteMacro'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/wiki/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td>Remove this section ("Description") for your project.</td></tr></table></div>
<div>
<ul>
<li><a href='#ProjectPlanningTemplate-Description'>Description</a></li>
<li><a href='#ProjectPlanningTemplate-ProjectOverview'>Project Overview</a></li>
<li><a href='#ProjectPlanningTemplate-RequirementsandSpecification'>Requirements and Specification</a></li>
<ul>
<li><a href='#ProjectPlanningTemplate-UseCases'>Use Cases</a></li>
<ul>
<li><a href='#ProjectPlanningTemplate-UseCase%3ABobcallsAlice'>Use Case: Bob calls Alice</a></li>
</ul>
<li><a href='#ProjectPlanningTemplate-UserStories'>User Stories</a></li>
<li><a href='#ProjectPlanningTemplate-Configuration'>Configuration</a></li>
<ul>
<li><a href='#ProjectPlanningTemplate-project.conf'>project.conf</a></li>
<li><a href='#ProjectPlanningTemplate-RealTimeschemas'>RealTime schemas</a></li>
</ul>
<li><a href='#ProjectPlanningTemplate-APIs'>APIs</a></li>
</ul>
<li><a href='#ProjectPlanningTemplate-Design'>Design</a></li>
<li><a href='#ProjectPlanningTemplate-TestPlan'>Test Plan</a></li>
<ul>
<li><a href='#ProjectPlanningTemplate-TestsforUseCase%3ABobcallsAlice'>Tests for Use Case: Bob calls Alice</a></li>
</ul>
<li><a href='#ProjectPlanningTemplate-ProjectPlanning'>Project Planning</a></li>
<ul>
<li><a href='#ProjectPlanningTemplate-JIRAIssues'>JIRA Issues</a></li>
<li><a href='#ProjectPlanningTemplate-Contributors'>Contributors</a></li>
</ul>
<li><a href='#ProjectPlanningTemplate-ReferenceInformation'>Reference Information</a></li>
</ul></div>
<h1><a name="ProjectPlanningTemplate-ProjectOverview"></a>Project Overview</h1>
<p>This section should provide a description of the project and its goals. Appropriate information here would include:</p>
<ul>
        <li>Motivations behind the project. If replacing/refactoring an existing module, sufficient motivation should be provided to justify the risk of the project. If new functionality, a description of the benefits the project adds to Asterisk should be noted.</li>
        <li>The end product of the project, e.g., a new channel driver, resource module, or some functionality.</li>
</ul>
<h1><a name="ProjectPlanningTemplate-RequirementsandSpecification"></a>Requirements and Specification</h1>
<p>The purpose of this section is to provide the minimum requirements the project must fulfill. This can take several forms depending on the project; project developers should choose the schemes that best fit the project they are developing. This section should also provide details about the project from an end-user perspective. This can include dialplan configuration, sample configuration files, API descriptions, etc.</p>
<p>If needed, break this section up into multiple subsections. Several subsection examples are provided below; feel free to use/remove these as your project dictates.</p>
<div class='panelMacro'><table class='infoMacro'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/wiki/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td>If sufficiently complex, subpages should be used to provide reference information. In particular, sufficiently large configuration schemas and detailed API descriptions may benefit from their own subpage.</td></tr></table></div>
<h2><a name="ProjectPlanningTemplate-UseCases"></a>Use Cases</h2>
<p>Assuming a use case approach is used, the following can be used as a model.</p>
<h3><a name="ProjectPlanningTemplate-UseCase%3ABobcallsAlice"></a>Use Case: Bob calls Alice</h3>
<p>Actor: Alice<br/>
Actor: Bob</p>
<p>Scenario:</p>
<ul>
        <li>Bob picks up his phone. He dials Alice's extension.</li>
        <li>Bob hears a ringing indication.</li>
        <li>Alice's phone rings.</li>
        <li>Alice picks up her phone.</li>
        <li>Both Bob and Alice's phones stop ringing.</li>
        <li>Both Bob and Alice can talk to each other and hear the other person.</li>
</ul>
<h2><a name="ProjectPlanningTemplate-UserStories"></a>User Stories</h2>
<p>Assuming a user story approach is used, the following can be used as a model.</p>
<ul>
        <li>As a user of a SIP phone, I want to be able to pick up my SIP phone, dial an extension, and hear a ringing indication while I wait for the other phone to be picked up.</li>
        <li>As a user of a SIP phone, I want to be able to speak with another user using a SIP phone if they answer when I call them.</li>
</ul>
<h2><a name="ProjectPlanningTemplate-Configuration"></a>Configuration</h2>
<h3><a name="ProjectPlanningTemplate-project.conf"></a>project.conf</h3>
<h4><a name="ProjectPlanningTemplate-%5Cgeneral%5C"></a>[general]</h4>
<div class='table-wrap'>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Parameter </th>
<th class='confluenceTh'> Description </th>
<th class='confluenceTh'> Type </th>
<th class='confluenceTh'> Default Value </th>
</tr>
<tr>
<td class='confluenceTd'> foo </td>
<td class='confluenceTd'> Turns feature foo on or off </td>
<td class='confluenceTd'> Boolean </td>
<td class='confluenceTd'> True </td>
</tr>
<tr>
<td class='confluenceTd'> bar </td>
<td class='confluenceTd'> A comma delineated list of bar items (pun intended?) </td>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'> </td>
</tr>
</tbody></table>
</div>
<h3><a name="ProjectPlanningTemplate-RealTimeschemas"></a>RealTime schemas</h3>
<h2><a name="ProjectPlanningTemplate-APIs"></a>APIs</h2>
<p>Add an entry for each Application, Function, AMI command, AMI event, AGI command, CLI command, or other external way of interacting with the features provided by the project. Different APIs require different sets of documentation; in general, sufficient documentation should be provided to create the standard XML documentation for that particular item.</p>
<h1><a name="ProjectPlanningTemplate-Design"></a>Design</h1>
<p>For sufficiently complex projects, a high level design may be needed to illustrate how the project plugs into the overall Asterisk architecture. Sufficiently detailed design of the project should be provided such that newcomers to the Asterisk project are provided a conceptual view of the construction of the implementation.</p>
<p>Note that the design should be independent of the implementation, i.e., if the code is not drastically changed, it should not require updates to this section.</p>
<h1><a name="ProjectPlanningTemplate-TestPlan"></a>Test Plan</h1>
<p>Project should include automated testing, using either the Asterisk Unit Test Framework or the Asterisk Test Suite. Automated testing not only helps collaborators and reviewers verify functionality, but also helps to future proof new functionality against breaking changes in the future. A test plan maps Use Cases, User Stories, or specific APIs to tests that exercise that functionality. Test plans should be broken up by specific pieces of functionality, and should enumerate the tests for each function.</p>
<p>Each test description should provide, at a minimum, the name of the test, the test level (Unit, Integration, or System), and a description of what the test covers. For System level tests (which implies manual testing), a detailed description should be provided such that the test is reproducible by any third party.</p>
<h2><a name="ProjectPlanningTemplate-TestsforUseCase%3ABobcallsAlice"></a>Tests for Use Case: Bob calls Alice</h2>
<div class='table-wrap'>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Test </th>
<th class='confluenceTh'> Level </th>
<th class='confluenceTh'> Description </th>
</tr>
<tr>
<td class='confluenceTd'> sip_basic_call </td>
<td class='confluenceTd'> Integration </td>
<td class='confluenceTd'> Test a basic call scenario between two SIP UAs and Asterisk </td>
</tr>
<tr>
<td class='confluenceTd'> sip_uri_parse_nominal </td>
<td class='confluenceTd'> Unit </td>
<td class='confluenceTd'> Nominal parsing of SIP URIs </td>
</tr>
<tr>
<td class='confluenceTd'> sip_uri_parse_off_nominal </td>
<td class='confluenceTd'> Unit </td>
<td class='confluenceTd'> Tests that ensure that off nominal SIP URIs are handled properly </td>
</tr>
<tr>
<td class='confluenceTd'> sip_invite_request_test_nominal </td>
<td class='confluenceTd'> Unit </td>
<td class='confluenceTd'> Test INVITE request handling </td>
</tr>
</tbody></table>
</div>
<h1><a name="ProjectPlanningTemplate-ProjectPlanning"></a>Project Planning</h1>
<p>Provide links to the appropriate JIRA issues tracking work related to the project using the {jiraissues} macro (for more information on its usage, see <a href="https://confluence.atlassian.com/display/DOC/JIRA+Issues+Macro" class="external-link" rel="nofollow">JIRA Issues Macro</a>). The sample below uses one of Leif's public Triage filters - you will need to set up a JIRA issue filter for the macro to pull issues from.</p>
<h2><a name="ProjectPlanningTemplate-JIRAIssues"></a>JIRA Issues</h2>
<p>
<div>
<p>Errors were reported by the JIRA trusted connection.</p>
<ul>
<li>BAD_REMOTE_IP;        Request not allowed from IP address: {0};        ["76.164.170.14"]</li>
</ul>
</div>
<table cellspacing="0" class="grid" style="width: 100%">
<tr>
<th colspan="11" style="text-align: left; ">
<a rel="nofollow" href="https://issues.asterisk.org/jira/secure/IssueNavigator.jspa?requestId=11309&tempMax=1000">JIRA Issues</a> (0 issues) </th>
</tr>
<tr>
<th style="text-align: left; text-transform: capitalize;">Type</th>
<th style="text-align: left; text-transform: capitalize;">Key</th>
<th style="text-align: left; text-transform: capitalize;">Summary</th>
<th style="text-align: left; text-transform: capitalize;">Assignee</th>
<th style="text-align: left; text-transform: capitalize;">Reporter</th>
<th style="text-align: left; text-transform: capitalize;">Priority</th>
<th style="text-align: left; text-transform: capitalize;">Status</th>
<th style="text-align: left; text-transform: capitalize;">Resolution</th>
<th style="text-align: left; text-transform: capitalize;">Created</th>
<th style="text-align: left; text-transform: capitalize;">Updated</th>
<th style="text-align: left; text-transform: capitalize;">Due</th>
</tr>
</table>
</p>
<h2><a name="ProjectPlanningTemplate-Contributors"></a>Contributors</h2>
<div class='table-wrap'>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Name </th>
<th class='confluenceTh'> E-mail Address </th>
</tr>
<tr>
<td class='confluenceTd'> <a href="/wiki/display/~mjordan" class="confluence-userlink" data-username="mjordan" >Matt Jordan</a> </td>
<td class='confluenceTd'> mjordan@digium.com </td>
</tr>
</tbody></table>
</div>
<h1><a name="ProjectPlanningTemplate-ReferenceInformation"></a>Reference Information</h1>
<p>Include links to code reviews, asterisk-dev mailing list discussions, and any other related information.</p>
</div>
<div id="commentsSection" class="wiki-content pageSection">
<div style="float: right;" class="grey">
<a href="https://wiki.asterisk.org/wiki/users/removespacenotification.action?spaceKey=AST">Stop watching space</a>
<span style="padding: 0px 5px;">|</span>
<a href="https://wiki.asterisk.org/wiki/users/editmyemailsettings.action">Change email notification preferences</a>
</div>
<a href="https://wiki.asterisk.org/wiki/display/AST/Project+Planning+Template">View Online</a>
|
<a href="https://wiki.asterisk.org/wiki/pages/diffpagesbyversion.action?pageId=21463986&revisedVersion=19&originalVersion=18">View Changes</a>
|
<a href="https://wiki.asterisk.org/wiki/display/AST/Project+Planning+Template?showComments=true&showCommentArea=true#addcomment">Add Comment</a>
</div>
</div>
</div>
</div>
</div>
</body>
</html>