Friday, September 21, 2007

Software Development Methodology

As the project is dividable into small iterations, I am going to adopt the Agile Approach to building the Workflow Builder. A brief summary of the methodology is given below:

Agile Approach

Take an agile approach where we use iterative process to develop the workflow builder.

First Iteration

The first iteration heavily revolves around generating ideas and initial design documents. Once that is completed, I envisage to begin programming and developing a small component of the workflow builder. The iteration is to achieve the following set of tasks:

  • Design and revise the design of the Workflow Builder rigorously and continue to refine the design at later stages of iterations.
  • Create MySQL database to store simple XML workflow documents
  • Create a set of sequence documents
  • Write up program to add sequences only.
  • Convert the sequence into XML and output to the database.
  • Test the individual creation of sequence modules.
  • Create a sample sequence XML document adhering to the WDL. Create this abstract workflow and compare the XML output from the builder with the XML document.
  • Document findings and experimentation on the TRAC and summaries on the blog.

To begin the first iteration, we must research into:

  • Python classes and objects
  • Python arrays and other data structures
  • Python and XML
  • Document findings and experimentation on the TRAC and summaries on the blog.


Second Iteration

The second iteration is mainly focused on extensibility of simple, yet fundamental workflow points. The goal is to achieve the following set of tasks:

  • Extend the sequence and implement Parallel Workflow Element.
  • Ensure that Parallel Workflow can be converted to the XML format as per WDL.
  • Perform testing on the module level (and if possible at the unit level)
  • Create a sample sequence and parallel workflow XML document adhering to the WDL. Create this abstract workflow using the Workflow Builder and compare the XML output from the builder with the XML document.
  • Document findings and experimentation on the TRAC and summaries on the blog.

Third Iteration

The third iteration targets the more complex workflow; namely simple merge, synchronisation and exclusive choice. Exclusive choice is perceived to be the most difficult due to the possibility of large amount of nesting. Hence, third iteration is heavily focused on:

  • Develop Simple Merge and Synchronisation Workflow Elements.
  • Ensure that the Simple Merge and Synchronisation Workflow Elements can be converted into XML on its own basis.
  • Perform testing on the module level (and if possible at the unit level)
  • Extend second iteration sample XML documents to include simple merge and then synchronisation. Ensure that the generated XML will adhere to the WDL.
  • Develop the Exclusive Choice Workflow Element.
  • Ensure that the workflow element can be converted into XML on its own basis, i.e. the most basic case.
  • Perform testing on the module level (and if possible at the unit level)
  • Extend second iteration sample XML documents to include exclusive choice. Ensure that the generated XML will adhere to the WDL. Continue extending the XML document to test the exclusive choice nesting with sequences, parallel, simple merge and synchronisation workflow elements. Examine the outputted XML
  • Document findings and experimentation on the TRAC and summaries on the blog.

Fourth Iteration

The fourth iteration’s main goal is to develop the workflow builder which will manage the creation of abstract workflow. It is envisaged that due to the lack of time, either a basic and simple GUI will be developed or a basic command prompt interface will be developed. The main tasks for the fourth iteration is:

  • Finalise the testing in the first to third iterations.
  • Ensure that the format of the XML adheres to the WDL and make any changes as necessary. There will definitely be changes as the WDL is a constantly evolving piece of work.
  • Develop a basic workflow builder interface design on paper.
  • Research on Python’s GUI packages.
  • Implement a basic design without any bells or whistle
  • Document findings and experimentation on the TRAC and summaries on the blog.

Resources required to successfully complete this iteration includes:

  • Research on basic GUI
  • Experimentation on user interface design


Fifth Iteration
Once the interface has been designed, the fifth iteration will be more involved with testing; ensuring that different types of workflows can be abstractly represented. It is vital that the XML generation is consistent and can be used as input into the Workflow Manager. Also, as experience is gained from this development, documentation of results and more importantly documentation of future development, future direction of this research and a critical analysis of the system be duly noted. This will form the foundation of future work.

No comments: