Joseph,
I work for a consultancy that specializes in Design
Patterns and XP, so I find your discussion below amusing <grin/>. Could
you send a URL to the source code for HumanML_Write? I'd like to put together an
ASP/Web version, but don't have a handy copy of VB6 (my eight year old a few
years back decided to use the disks as VERY expensive frisbees one day).
-- Kurt
----- Original Message -----
From:
Joseph Norris
To: OASIS TC MAIN
Sent: Friday, September 21, 2001 10:29
AM
Subject: HumanML_Write.ProjectPlan:
Initial Proposal
HumanML_Write Project Plan
Proposal
-----------------------------------
HumanML_Write, as it stands, is a program
designed to create XML documents that conform to the several prototype schemas
produced during Phase 0 of the project. It was written in Visual Basic Version
6.
In the near future, I will create a Java version
of HumanML_Write, and this will form the basis of all our future development
efforts.
With the support of Ranjeeth, Kurt, and others we
can make HumanML_Write a platform that will be a showcase for HumanMarkup
technologies. Of course, the purposes of HM TC are not to develop software,
but there is no doubt that a few sample applications or development tools will
allow others to experience HumanMarkup in a more real and tangible
way.
Why Extreme Programming?
------------------------
Extreme Programming takes OOP principals and applies them to the complete
programming process. These methodlogies, adopted by many cutting edge software
developers, seeks to streamline the software developing process. Note the
following methodolgy was adapated from the rules and systems developed by http://www.extremeprogramming.org.
Extreme Programming
Methodologies
---------------------------------
I) Planning
A) Obtain "user stories"
- Specific use case examples developed by potential
users
- Details desired needs to HumanML_Write cosumers and
developers
B) Release Plan Meeting
- Discuss collected user stories and develop release plan for whole
project
C) Iterative Development
- Divide and conquer method
- Create development schedule
into about a dozen iterations of 1 to 3 weeks in length.
II) Designing
A) Focus on code simplicity
B) Focus on consistent system metaphor
- Team must name classes and methods consistently
C) Class, Responsibilities, and Collaboration Cards (CRC)
- Allows for greater team collabortation and input
- Moves
focus away from procedure to an object focus
D) Periodic "Spike Solutions"
- Create spike solutions to figure out answers to tough technical
or design problems.
- A spike solution is a very simple program to
explore potential solutions.
- When a technical difficulty threatens to hold up the system's
development put a pair of developers on the problem for a week or two and
reduce the potential risk.
E) Refactoring
- When we remove redundancy, eliminate unused functionality, and
rejuvenate obsolete designs we are refactoring.
III) Coding
A) Focus on potential audience of users
- All coding and design focus should stem from user stories,
requirments, and needs of potential users
B) All coding must be done according to agreed standards
- HumanML_Write shall be written in Java for maximum cross platform
compatabilty
C) Code the Unit Test First
- Create a test for program's success prior to intial
coding
- Allows for outcome produced coding pratices
D) Pair Programming
- Each task should be done by two programmers
simultaneously
- Not sure how this can be done under this particular
context
- Perhaps each coding section should be passed around between
partners
E) Code Intergration
- Continuous integration often avoids diverging or fragmented
development efforts
F) Collective Code Ownership
- No one person controls or owns any single part of the
project
- Collective Code Ownership encourages everyone to contribute
new ideas to all segments of the project
- Any developer can change
any line of code to add functionality, fix bugs, or refactor
-No one
person becomes a bottle neck for changes.
IV)Testing
A) Unit Tests
- Extensive testing to every
class in the system prior to release
- Code without proper tests may
not be released
B) Dealing with bugs
- Must create an "acceptance test" first
- This helps
programmers to concisely define the problem
C) Acceptance Tests
- Acceptance tests are black box system tests
- Each
acceptance test represents some expected result from the system
-
Whan all acceptance tests are passed then, and only then, can the code be
published.
-------------------------
Joe Norris
HumanML_Write
Facilitator