EPP/PEP Sugested task list

Trent Shipley plug-devel@lists.PLUG.phoenix.az.us
Sat Mar 26 00:12:02 2005


On Saturday 2005-03-26 01:01, Alan Dayley wrote:
> This list is interesting.  I have inserted a few comments with some of the
> list quoted for context.  Take them or leave them.
>
> On Friday 25 March 2005 09:06 pm, Trent Shipley wrote:
> > [NBB!  This plan, with contributions by Bryan, Derek, and Trent
> > iterates over customers or sub-projects rather than Joseph's preference
> > for the outer iteration loop over a master architectural plan.]
>
> I don't understand the distinction here between this plan and Joseph's but
> I did not read every email in the discussions over the past week or so.
> Maybe I missed it but I'll go back and read for myself.

At the risk of putting words in Joseph's mouth, here is my understanding of 
previous discussions.


I advocate iterating over smallish, customer centric projects in the domain 
space.  Furthermore, you would do so much the way a commercial firm using 
agile methodology would.  

For example (take to an extreme of purity), if everything Installfest wanted 
could be done by a little PostNuke extension, then that is what you would do.

Then you move on to the Mega-Installfest.  If the Installfest work turned out 
to be a dead-end in terms of software architecture with regard to 
Mega-Installfest, you chuck the Installfest work and do not look back.

I call this iterating over cases or customers.  (This is akin to an outer 
loop.  Obviously you also iterate within each project.)

Iterating over cases has the advantage that you do not have to have in-depth 
understanding of the broader domain.  Another advantage is that everything is 
just the right size.  Disadvantages are lots of unsupported legacy code, 
architectural dead-ends, and avoidable reinvention.


Joseph wants to iterate inside a comprehensive software architecture (also an 
outer loop).

For example, in the case we are talking about he seems to want some sort of 
comprehensive Event software integration to be the backbone of the product 
life cycle.  Clean, stable, unified software architecture is critical so we 
need top-down software design combined with emergent bottom-up agile coding.

Stretching the example to the greatest extent we would locate the largest 
events available.  Suppose these were the Summer Olympics and FIFA World Cup.  
We would analyze these enormous events on the not unreasonable assumption 
that all other events must be a functional sub-set.  With the first returns 
from our research on mega-events we would begin our efforts at software 
architecture.  After a few iterative refinements between research, analysis, 
and high level design we would start work on a smallish event software 
integration problem, like Installfest automation.

The model itself is not static.  It is amended based on knowledge gained from 
project experience.  Nevertheless, it is assumed that resulting changes do 
not turn the model into the sort of dead-end snarl of legacy architecture, 
APIs and features that are known to occur when you iterate over cases.

There is dispute about how much domain uncertainty can exist for iteration 
within a comprehensive model to be a viable approach.  Theoretically, 
iteration within a comprehensive model should result in minimal dead-ending, 
legacy code, or need for reinvention.  If you like, the product is tailored 
to one case; that case is the entire domain at its maximum extent.

=================

So one side says research Installfest, analyze Installfest, design 
Installfest, build Installfest, END.

The other says research Olympics, analyze Olympics, design Olympics, build 
Installfest, Mega-Installfest, .. , Olympics, END.

There are more practical compromises and intermediate positions, but only the 
ideal poles have been staked out.  Work on practicalities and real-world 
compromise approaches has yet to begin.