Tuesday, October 25, 2011

Anthracite Elaboration Plan

Okay, so here's the Elaboration Iteration Plan for Anthracite.

For non-techies, I'm using the Rational Unified Process from IBM.  An "iteration" is a project plan increment that encompasses requirements, design, code and test.  Every phase is composed of several iterations, each with specific goals. I just finished the Inception phase, which is a concept phase that focuses on business case, customer identification and technical feature analysis.  Now I'm starting Elaboration. The purpose of Elaboration is to address your biggest business and technical risks by constructing a prototype software architecture.

My biggest risks are that:  1.  it's tough to engage artists and writers without a product demo, because they are constantly approached by dreamers, and 2. I am a novice at Internet marketing and have very few industry contacts to create a real sales channel.

You'll note that I don't consider technology a risk at this point.  The Anthracite platform technology is fairly straightforward software, so I believe any reasonably competent software engineer can drive it through to completion.  Time and cost are more meaningful risks, but the only way to understand those risks better is to implement the prototype.

I originally came up with over a dozen Elaboration iterations, but then I realized that it's completely unnecessary to implement the entire product as a JavaScript/CSS prototype.  I need just enough to show potential partners that the concept is real, and that I have the technical chops to implement the rest of the product plan as an iPad app.  I've already constructed 60% of the use case model, which expresses (at a generic level) how the customer and system interact.  The next step is converting these into sequence diagrams, or use case realizations, which show how the modules in the system interact to actually perform the use cases.

UCRs are a big step towards actual code.  In my opinion they are also the toughest part of Elaboration.  It's easy to lose the forest for the trees, and start inventing cool new features in the use cases, or start trying to create a finalized product architecture in the design diagrams.  The former is a temptation for visionaries, who thrive on creating cool new concepts, and perhaps not so much on actually producing completed products.  The latter is a big temptation for code monkeys, because you start thinking that you can avoid any rework and refactoring if you just get the design 'perfected' in Elaboration.  Both are huge mistakes.  All you end up doing is stretching out the phase, which actually increases your overall project risk.  You've got to stay laser focused on eliminating (or quantifying) your biggest project risks by driving through to actual functioning prototype code.  Many stakeholders will readily agree with high-level use case descriptions, only to have a strong negative reaction when they're actually seeing the product prototype.  And you're always going to do code rework in Construction.  It's much more important to get aligned that you're building the right system (business case, use cases) and that you've got a solid high-level design for that system (sequence diagrams, analysis objects, large architectural blocks, mechanisms).

Elaboration is about running through the minefield, stepping on as many mines as possible, so you know where most of them are before you commit the bulk of your development budget in Construction.  Your prototype doesn't need to be pretty, full-featured or bug-free, but it absolutely, positively must address your biggest technical and business risks.

And having written that, I need to seriously consider how I'm going to address the marketing risk, because the prototype only addresses the partnership risk.  :|  Good thing I wrote this all out.  I'll put some target dates on these goals in a subsequent post, after I do a little more analysis.

Elaboration Goal:  To implement a JavaScript/CSS prototype for iPad demos and YouTube videos.

E1:  Layout and Spinwheel
  • Produce HTML and CSS sheet layout.
  • Create a working spinwheel with radial x-y functionality.
  • Manipulating the spinwheel according to use case changes text boxes.

E2:  Character Templates and Objects
  • Create object containers for Character (PC + NPC).
  • Modify E1 prototype for single character, spinwheel selects Effect + Target.
  • Establish EBTs getters, setters and aggregators.

E3:  Basic Effects Resolution and Simple Battle
  • Implement the following:
    • Random Success
    • Append Static Effect
    • Post-round Static Effect check (defeat check)
    • Available Effect
  • 2 EBTs:  Attack, Health
  • NPCs get 1 Available Effect (no equip), direct assigned EBTs.
  • Any successful Available Effect causes -1 Health
  • PCs get 4 effects to showcase selection
  • At end of round, victory check is made with Health - Static Effects

===== YouTube Video #1 =====

No comments:

Post a Comment