Phase: Inception
See ProcessOverview for a description of the process I'm going to be following as I develop this project.
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.
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.
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.
Phase goal: define architecture concept
Artifacts: Design Models | Test Models | Architecture Description
See the Architecture document for future updates to the architecture concept. This is a living document that will grow as the iterations progress.
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.
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.
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.
23 Sep 2006, completed this iteration. Moving to Iteration2, the first elaboration iteration where I'll expand the vision and build on the architecture.