<?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>Create New Product Backlog</title>
    <para>
        This screen includes details that need for creating new product backlog and display product backlog list.
    </para>
    <section>
        <title>Update Product</title>
        <para>This part use to update product.</para>
        <orderedlist>
            <listitem><para>The user can update product name and description.</para></listitem>
            <listitem><para>Click submit button when insert above fields.</para></listitem>
        </orderedlist>
    </section>
    <section>
        <title>Add New Product Backlog</title>
        <para>This part use to create new product backlog.</para>
        <orderedlist>
            <listitem><para>Enter product backlog item name.*The Product Backlog is the master list of all functionality desired in the product, a Scrum team and its product owner begin by writing down everything they can think of easily.</para></listitem>
            <listitem><para>Click submit button when insert above field.</para></listitem>
        </orderedlist>
    </section>
    <section>
        <title>Product Backlog List</title>
        <para>This part use to display product backlog.</para>
        <orderedlist>
            <listitem><para>Click at product backlog name when user need to update product backlog page.</para></listitem>
            <listitem><para>Click at delete button when user need to delete some product backlogs.</para></listitem>
        </orderedlist>
    </section>
</section>
