<?xml version="1.0" encoding="UTF-8"?>
<!--
    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at
    
    http://www.apache.org/licenses/LICENSE-2.0
    
    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.
-->
<section xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="5.0" 
    xmlns:xl="http://www.w3.org/1999/xlink" 
    xmlns:xi="http://www.w3.org/2001/XInclude"
    xsi:schemaLocation="http://docbook.org/ns/docbook ../../../content/dtd/docbook.xsd"
    xmlns="http://docbook.org/ns/docbook">
    <title>Sprint View Screen</title>
    <para>
        This screen the details of sprint.
    </para>
    <section>
        <title>Burndown Chart</title>
        <para>A burn down chart is a graphical representation of work left to do versus time.
        The outstanding work (or backlog) is often on the vertical axis, with time along the horizontal.
        That is, it is a run chart of outstanding work. It is useful for predicting when all of the work will be completed.</para>
        <para>The hour burndown chart provides you with the following information:</para>
        <orderedlist>
            <listitem><para>Actual Hours -- The number of hours remaining until the version release date.</para></listitem>
            <listitem><para>Planned Hours -- The minus of the previous planned hours and the current actual hours.</para></listitem>
            <listitem><para>Ideal Hours -- The ideal burndown. This is computed with the remaining estimates, not the original estimates of the hours remaining at the version's start date.</para></listitem>
            <listitem><para>Daily Completed -- The total time worked by the team (the current actual hours).</para></listitem>
        </orderedlist>
    </section>
    </section>
