Software Project Development Teams Team Organization Goal organize















- Slides: 15
Software Project Development Teams
Team Organization • Goal: organize teams so that they are productive • teams can be used in every phase, especially implementation • two extreme approaches: – democratic team – chief programmer team
Democratic Team • Group works for a common cause with no single leader; each member finds faults in others’ code • advantages – positive attitude towards finding faults – especially productive in solving hard problems • disadvantages – management has difficulty working with egoless team – senior members may resent review by beginners
Chief Programmer Team • Introduced in the 70’s, in the keypunch days • chief programmer – directs and reviews work of other team members – does design and complex implementations • backup chief programmer • other programmers – specialized; work on detailed design and coding • programming secretary (librarian) – maintains project library (code, test cases, etc. ) – compiles, executes and runs test cases
Impracticality of chief programmer approach • Good chief programmers are hard to find – must be both good programmer and good manager • Good backup chief programmers are even harder to find • Nowadays programmers compile, run and test their software at their workstations • Disadvantage: chief is present at code reviews and also does evaluation of members; doesn’t foster positive attitude toward finding faults
Combined approach (Modern Team) • Team leader – responsible for technical aspects – attends all code reviews • team manager – responsible for non-technical aspects (budget, performance appraisals) – does not attend code reviews, but assesses performance based on periodic team meetings • can be scaled up for large projects • decentralize decision-making
Synchronize-and-Stabilize Team • Used by Microsoft Corp. • Work is divided into several builds; first build is for most critical features • Each build carried out by a number of small teams working in parallel • All teams synchronize daily by putting partially completed components together, testing, debugging • Stabilize at the end of each build • Advantages: – ensures components work together – get early insight into operation of the product
Synchronize and Stabilize Team Organization • • Program manager leads each team 3 to 8 developers per team 3 to 8 testers work one-on-one with developers Team is given specifications, team members design and implement their portion • Must meet at regular times for synchronization • advantages: – promotes individual creativity – daily synchronization promotes communication and coordination