Re: HumanML_Write.ProjectPlan: Initial Proposal

From
Kurt Cagle <>
Date
2001-09-21T18:08:02+00:00
ID
00bc01c142c8$26559580$693c36d0@tazy
Thread
Re: HumanML_Write.ProjectPlan: Initial Proposal
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