Jump to content

Rigorous Software Design Processes in an Open-Source Environment

- - - - -

  • Please log in to reply
No replies to this topic

#1
brownhead

brownhead

    Programmer

  • Members
  • PipPipPipPip
  • 173 posts
I've been thinking a lot about design processes (aka software development processes, software development methodology, etc.) and their value in the Open-Source world, and I'm having trouble thinking of a design process that would really work well for a large Open-Source project.

What I've come up with so far is loosely this:

  • A large reigning specification is created by the core contributors at the outset of the project, aiming to describe the system and its components in detail, however, leaving out the nitty-gritty specifics like class diagrams and such. This specification will be a living document throughout the process, subject to change at any time. However, any changes that invalidate pieces of the program which have already been implemented must be made with great caution, and any discrepancies must be resolved immediately.
  • All components of the program at this point are marked as Inactive.
  • Components are grouped and prioritized, such that the components that are most independent (have the least dependencies) are of highest priority, and vice-versa.
  • Some number of components (ideally components that can be logically grouped together) are marked as Active and detailed specifications of each Active component are created. These specifications build off the reigning specification and fill in the nitty-gritty details (class diagrams, libraries used, languages used, etc.).
  • A feature list is created for each Active component. Each feature in this list explicitly references a part of the detailed specification for the component, details what exactly the feature is, and generally describes how one could go about testing to see if the feature is implemented properly (rather than test-first development, I'd like to think of it as test-conscious development). The feature list should be stored in some kind of dynamic way (like a website) so that developers can "check out" features and show that they are in the process of implementing them.
That's about all I have.. It's not very detailed and I feel as if it wouldn't work too well in practice. But I'm not really sure what would.

Does anybody know of a better way (possibly a process used by a successful open source project), or see improvements to the process above?




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users