Saturday, February 25, 2012

Essay: Fractal Agile Methodology

In order to fully understand the concepts in this essay, it is a prerequisite to understand the mathematics of the word “fractal.” Fractals are a class of sets that exhibit self-similarity. Each shape is constructed from, and/or is a member of, one or more copies of itself (Weisstein 2012). To create such a structure, the starting shape (or other structure) is replaced with one or more scaled copies which may also have been modified in different ways. The starting shape is called the initiator. The generator is an algorithm that makes the copy or copies. This replacement is called iteration and the replacement process must be repeated exactly each time. 

A good example of a fractal and its construction is the “Koch Curve.” The initiator is a straight line with length x. Removing the middle third of the line segment, and then replacing it with two lines produces the generator. The generator represents a specific set of rules. In the first iteration of the Koch curve, the middle third is replaced with two segments of the same length as the removed segment. (Riddle 2012) Therefore, the algorithm says to replace the middle third of each line segment with two line segments of length 1/3 as outlined above. Repeating this instruction produces the second iteration of the fractal.
(Wikimedia / Mandlebrot 1983)

Repeating the process gives us the third iteration. And the sequence is infinite unless otherwise specified by a limiting condition. (Riddle 2012)

Fractal Agile Development has both similarity to art methods and relevance to software projects that have a large art component. In art, there is also a recursive, or repeating, method of producing a large complex work. For example, in making an animated film the projects is “pitched” and receives a “green light” after feasibility testing. Then, entire film is assembled in multiple iterations of increasing complexity; first the script is written, and then assembled in storyboard form. Changes are made in these planning stages so that valuable production time is not wasted. Certain procedures, such as voice recording, must take place before facial animation. The entire film is re-assembled in animatic, and then re-assembled with completed animation; and again, adding special effects and music. Finally, test audiences are consulted, and revisions are made based on their response.

In a fractal distribution of work for a project, the algorithm splits the work into distinct phases. Previously, different methods of agile development offered their own sequences of work subunits, such as:
  • Analyze, Hypothesize, Synthesize, Verify (Scientific development)
  • Analyze, Make, Test, Fail/No Fail (Fast development)
  • Design, Implement, Deploy, Reconfigure (Urgent development)
  • Analyze, Plan, Develop, Test (Thorough development)
These are similar procedures and so the “thorough” development sequence will be expanded iteratively as an example of fractal agile methods. The algorithm is, “Separate the work into Analyze, Plan, Develop, and Test phases.” Let’s begin with a block of work called a “Project.” One iteration of the algorithm gives us this table:
Project
Analyze the Project
Plan the Project
Develop the Project
Test the Project
It’s important to note that this Project may be a part of a larger Project’s Development phase, emphasizing the self-similarity aspect of this method. Re-iterating the algorithm once again, we obtain:
Project
Analyze the Project
Analysis and Investigation of the Project Analysis
Planning and Designing the Project Analysis
Develop, Make or Perform the Project Analysis
Test and Reconfigure the Project Analysis
Plan the Project
Analysis and Investigation of the Project Plan
Planning and Designing the Project Plan
Develop, Make or Perform the Project Plan
Test and Reconfigure the Plan
Develop the Project
Analysis and Investigation of the Project Development
Planning and Designing the Project Development
Develop, Make or Perform the Project Development
Test and Reconfigure the Project Development
Test the Project
Analysis and Investigation of the Project Test
Planning and Designing the Project Test
Develop, Make or Perform the Project Test
Test and Reconfigure the Project Test

There are many types of branches of note at this point. The first is the Develop branch. This is where the main work of the current phase gets done – the action and execution of the phase. The second branch type of note is the reinforced branch – where the analysis is analyzed, the plan is planned, the development is developed, and the test is tested. This is of importance because it signifies a reflection phase of the project. For example, the planning of the plan might include decisions about how to format, disseminate, administrate and edit the plan documentation. 

At the Analysis phase of each phase, the subject undergoing analysis (the input) is the previous phase’s Test output. The known information about the top level Project (in this view) constitutes the input for the first step, the Analysis and Investigation of the Project Analysis. The Test phase of each phase is also of note; the result of the Test and Reconfigure the Project Analysis step might be to re-analyze the Project. It might also be a project fail point in which the entire Project is found to be unfeasible, redundant or too costly/risky. The Test and Reconfigure the Plan step is a natural point for a client review. There may be models of the final product presented here, if they were produced at the development of the project plan. The test of the Development phase would be integration testing, and the final test of the Testing phase could be a beta release of the software.

At the point where the Development branch reinforces itself (Develop, Make or Perform the Project Development) is the point at which the most activity is happening in the Project. The incoming condition is the result of the previous phase, the client-reviewed Plan. This Plan will outline the features of the project that need to be developed. We can split multiple branches off at this point, each representing a feature of the Project. 

Using the example of the motion picture above, one sub-project would be the soundtrack. Everything that goes into this branch - from selecting a composer; the composition and recording of the music; director critique and producer input; integration into the finished film sound mix; the soundtrack album production, its cover art, promotion and distribution; and continuing licensing of the music in other media, is all a sequence of events that follows a similar pattern as the motion picture project. And the motion picture itself may be viewed as a single branch in the development phase of the multinational conglomerate that owns the motion picture studio.

Develop, Make or Perform the Project Development
Analysis and Investigation of feature 1
Planning and Designing of feature 1
Develop, Make or Perform of feature 1
Test and Reconfigure of feature 1
and
Develop, Make or Perform the Project Development
Analysis and Investigation of feature 2
Planning and Designing of feature 2
Develop, Make or Perform of feature 2
Test and Reconfigure of feature 2

These end points within the Development reinforced branch are considered the top-level Projects for the teams working on them and can branch themselves. They might use one of the other Agile methods that is similar to Analyze, Plan, Develop, Test, such as Analyze, Make, Test, Fail/No Fail. They might be performed simultaneously or sequentially; and independently or with dependencies. In the above mentioned animated motion picture, the soundtrack might represent a project that exists at the end of the “Develop, Make or Perform the Project Development” branch, and which consists of its own iterated Analyze, Plan, Develop, Test branches.

Applying this four-step sequence to a 4-segment Koch curve, we obtain the following visualization.



Note that many tasks specified in other Agile methods fit in to this model as well.

 
Applying the same sequence as a series of curves will yield a different view of the equivalent function.


Milestones are easy to target in this view.


The UML diagram clearly shows the advantages of this schematic over the waterfall and spiral method diagrams.



References

Mandelbrot, B. B. (1983). The Fractal Geometry of Nature. W. H. Freeman, New York.
Riddle, L. (2012). Koch Curve. Agnes Scott College. Retrieved January 22, 2012 from http://ecademy.agnesscott.edu/~lriddle/ifs/kcurve/kcurve.htm
Weisstein, E. (2012) Fractal. From MathWorld--A Wolfram Web Resource. http://mathworld.wolfram.com/Fractal.html