flipturn.org - stuff. things. other stuff.
dvorak | pantera | hacks

Iteration1

Phase: Inception

See ProcessOverview for a description of the process I'm going to be following as I develop this project.

Management

Phase goal: prepare business case and vision

Iteration goal: complete all the phase goals for each of the workflows.

Artifacts: Business Case | Software Development Plan | Vision | Work Breakdown Structure | Status

Well, there's not much of a business case except that I want to try to demonstrate the modern software process. I'm even satisfied in demonstrating it to myself if noone else is interested. :)

I have described the vision, and that document will evolve over time as everything in the modern process is wont to do.

Environment

Phase goal: define development environment and change management infrastructure

I'm developing the software using the Python language and the wxPython GUI toolkit, providing platform portability to lots of systems. I'm primarily targeting Windows and Linux, because those are the platforms I have access to. I'd love to support OSX at some point (and theoretically I get this for free with wxPython), but I've discovered that there are some minor incompatibilities across platforms that do require testing on the various platforms. I currently don't have access to a Mac, so OSX support may have to wait.

I'm using Subversion hosted on SourceForge, and I hope to have a Trac server setup somewhere on flipturn.org at some point where I can use its bug tracking capabilities.

Version numbers are going to follow this system, loosely based on the Python standard of version numbers for modules (i.e. major.minor.patchlevel[subrelease]) described in the distutils docs. The major number will remain at 0 until the Product Release Milestone at the end of the Transition Phase. Minor numbers will correspond to the iteration number at the time the version is published, and the patchlevel number will start at zero for each iteration and increment for each published version of the code during that iteration. So, if during iteration 3 there are two releases of the code, the first version will be numbered 0.3.0 and the second will be 0.3.1.

Requirements

Phase goal: define conops

Artifacts: Use Cases | Release Specifications | Vision

conops is the concept of operations, which means the high level overview of what the system is going to do from the user point of view. The conops supply the driving requirements, which are the basis of the vision document. So, for a small project like this, the conops are specified by the vision document.

Design

Phase goal: define architecture concept

Artifacts: Design Models | Test Models | Architecture Description

  • Multiple top-level windows (Frames in XEmacs parlance)
  • Dynamic menubar that changes based on the currently active major mode
  • wxSTC as the compatibility layer for making changes to documents. It provides methods for setting and getting blocks of data, undo/redo, cut/copy/paste, etc. All the text-based major modes should be implementable on top of the STC; if something can't be implemented on top of the STC, try to fake the STC methods.
  • be able to switch buffers between major modes
  • multi-stroke XEmacs-style keybindings

See the Architecture document for future updates to the architecture concept. This is a living document that will grow as the iterations progress.

Implementation

Phase goal: begin architecture prototypes

This iteration's implementation will be complete when the architecture concept has been demonstrated to satisfy all the bullet items in the Design workflow.

21 Sep 2006: I've got a prototype, version 0.1.0 that satisfies all the design items that I identified above. (See description of the naming convention below.) This completes the implementation workflow of this phase.

Assessment

Phase goal: assess plans, vision, prototypes

Artifacts: Release Specifications | User Manual

The prototype version 0.1.0 satisfies the initial architecture as described above. The hardest thing that I thought to implement would be the switching between major modes, but with the buffer/view separation that I've outlined, it is actually as simple as creating a new view of the same buffer and replacing the old view in the tabbed frame with the new one. The old view is discarded.

I'm still light on the business plans, the WBS and the business case, so I need to work on those before I do too much on Iteration2.

Deployment

Phase goal: analyze user community

Artifacts: Deployment Set

The user community is me, an XEmacs user. I want the ability to extend the editor with Python rather than elisp, so there must be extension points that are documented and public. I want to be able to extend it via plugins, but also have an equivalent to the ~/.emacs file where I can customize some parameters without having to write a complete plugin.

Milestone

23 Sep 2006, completed this iteration. Moving to Iteration2, the first elaboration iteration where I'll expand the vision and build on the architecture.