Lib:Roadmap

From GNUpdf

Contents

The Project Plan (TM)

We maintain a project plan that defines all the planned tasks we think we need to perform in order to achieve the goals of the project. The project plan is stored in the libgnupdf.tjp file in the CVS repository.

The project plan is used to:

  • Define a roadmap.
  • Identify the critical path of the project.
  • Provide planned tasks to the tasks pool (see below).
  • Estimate effort.
  • Define milestones.

That said, please note that the project plan is an ideal one: the real world is another history. There are delays, plan changes and a quite variable availability of resources (developers). So if you read the project plan please do it with caution.

The GNU PDF Library is composed by several layers. Each layer is in turn composed by several modules. The combination of the modules provide the functionality to layers. See the architecture of the library for more information.

The development of the library involves the design of the overall architecture (determination of the layers that composes the library), the development of each layer and the design and implementation of system tests.

Library Development Procedure
Enlarge
Library Development Procedure

The development of each library layer involves the design of the overall architecture of the layer (determination of the modules that composes the layer), the development of each module and the design and implementation of subsystem tests.

Layer Development Procedure
Enlarge
Layer Development Procedure

The development of each module involves the design of the API offered by the module and the architectural details, the definition of development tasks needed to complete the implementation of the module and the design and implementation of unit tests.

Module Development Procedure
Enlarge
Module Development Procedure

The detailed planification of the development is in the project plan.

Please note that the implementation tasks are not contained in the project plan file: the tasks are continuously generated and inserted into the tasks pool. See the tasks management section for more details.

Status of the Development

There is a resume of the actual status of the main tasks in the development.

For detailed information about the status of development tasks please see the flyspray tasks tracker.

For detailed information about the status of planned tasks below the module level please see the list of reports. These reports are automatically updated nightly.

Base Layer

Layer Development

  • 20% Architecture design.
  • 80% Modules development.
  • 90% Subsystem tests design.
  • 100% Subsystem tests implementation.
Base Layer
    20%              


Modules Development

  • 20% API design.
  • 40% Architecture design.
  • 50% Tasks design.
  • 70% Implementation.
  • 80% Unit tests design.
  • 100% Unit tests implementation.
Memory Allocation Module
              70%    


Basic Types Module
          50%        


Hash Module
                   Completed 


List Module
                   Completed 


Stream Module
          50%        


Floating Point Arithmetic Module
    20%              


Text Module
                   Completed 


Time Module
          50%        


Filesystem Module
        40%          


Error Module
              70%    


Object Layer

Layer Development

  • 20% Architecture design.
  • 80% Modules development.
  • 90% Subsystem tests design.
  • 100% Subsystem tests implementation.
Object Layer
    20%              


Modules Development

  • 20% API design.
  • 40% Architecture design.
  • 50% Tasks design.
  • 70% Implementation.
  • 80% Unit tests design.
  • 100% Unit tests implementation.
Document Module
0%                  


Object Module
0%                  


Reader Module
0%                  


Writer Module
0%                  


Document Layer

Layer Development

  • 20% Architecture design.
  • 80% Modules development.
  • 90% Subsystem tests design.
  • 100% Subsystem tests implementation.
Document Layer
0%                  


Modules Development

Page Layer

Layer Development

  • 20% Architecture design.
  • 80% Modules development.
  • 90% Subsystem tests design.
  • 100% Subsystem tests implementation.
Page Layer
0%                  


Modules Development