380 likes | 483 Views
Software Project Management. Managing People People Teams Managing Processes Code-and-fix Traditional process models Newer process models Project Management Tools. ?. Working with People.
E N D
Software Project Management • Managing People • People • Teams • Managing Processes • Code-and-fix • Traditional process models • Newer process models • Project Management Tools ?
Working with People • Very few projects can be done by one person, thus working effectively with others is a critical professional skill. • Software is developed by people for people. The stakeholders include: “All programmers are optimists.”- F.P. Brooks, The Mythical Man Month, 1975
Myers-Briggs Type Indicator • Energy source (Introversion/Extroversion) • Information gathering (Sensing/iNtuition) • Decision making (Thinking/Feeling) • Organization (Judging/Perceiving)
Team Organization • Teams can be organized in many ways: • Democratic teams • Chief Programmer teams • Pair Programming Teams • Hybrid Structures • “Adding manpower to a late software project makes it later.”- F.P. Brooks, The Mythical Man Month, 1975
Democratic Teams • Described by Weinberg, 1971 • No official leader • Egoless programmers
tester Chief tester programmer librarian programmer programmer Chief-Programmer Teams • Suggested by Brooks, 1975 • Centralized chief programmer • Specialized team members
Pair Programming Teams • Adopted by extreme programming (XP) • Programming is done in promiscuous, two-person teams. • Programmers don’t specialize.
Hybrid Structures 1 • Split the technical and non-technical management. Technical Manager Financial Manager tester tester programmer librarian programmer programmer
Hybrid Structures 2 • Use hierarchies of organizational structure. • Can use democratic, hierarchical or paired structures at each level.
Traditional Process Models • More traditional software process models tend to favor “high ceremony”, planned processes. • Traditional models include: • Waterfall • Prototyping • Spiral • Traditional Project Management image from: http://www.dilbert.com/
The Waterfall Model Analysis Design Coding Testing Maintenance
Relative Effort of Phases data from Schach, 2002
The Prototyping Model Listen to customer Build prototype Evaluate prototype
Traditional Project Management • Project management must: • Estimate costs; • Manage risk; • Orchestrate project schedules. • These are hard management issues.
Cost Estimation • Traditional project planning must estimate: • the required human effort • the duration • the cost • Common estimation methods include: • Expert judgment • Bottom-up estimates • Algorithmic cost models (e.g., COCOMO)
Risk Management • Risks must be identified and addressed, using some strategy: • proactive • reactive • The best managers: • know what’s going to go wrong before it does • take steps to be prepared
Project Scheduling • A good project schedule sets a realistic agenda for the whole project. • It will never be perfect. • Management keys off of it nevertheless. • Gantt Charts are commonly used to specify plans. image from: Pressman, SEPA
Newer Process Models • Newer models tend to favor iteration and lower ceremony. • Problems with the waterfall model • Newer models include: • Synch-and-Stabilize model • Open-Source • Agile models • Summary of newer models image from: http://www.dilbert.com/
Requirements Change Data from Larman, 2005
Waterfall-Specified Feature Use Data from Larman, 2005
Synchronize and Stabilize Analysis Architectural Design Develop components Synchronize daily Stabilize Build
Open-Source Models Implement first version Use the system. Do a variety of maintenance tasks.
Agile Methods • Agile approaches (e.g., XP, Scrum) share a common set of principles. They tend to: • value people over processes • focus on software rather than documents • prefer collaboration over contracts • react rather than plan • Agile approaches are always iterative and incremental.
Agile Models Analysis Build Planning Develop, Test & Integrate Tasks Acceptance Tests
XP image from: http://www.extremeprogramming.org/
Scrum image from: http://www.scrumfoundation.com/
Unified Process image from: http://www.ibm.com/
Summary of Process Models Level of Ceremony Cycle length Based on Larman, Agile & Iterative Development, Figure 3.1
Cloud-based services can help teams manage shared projects: • Project hosting services • Distributed version control systems • Task management systems • Project statistics tools “Good craftspeople are known by their tools.”- proverb repeated by F.P. Brooks, The Mythical Man Month, 1975 Project Management Tools
Projects artifacts must be maintained throughout the life of the project. • We’ll use Bitbucket from Atlassian to keep these artifacts in one place: • https://bitbucket.org/ Project Hosting Services Image from https://bitbucket.org/
Project code is a critical artifact. • We’ll use Mercurial to maintain the code base. • Mercurial is supported by: • Bitbucket • Eclipse (MercurialEclipse) Distributed Version Control Image from http://mercurial.selenic.com/
Projects comprise numerous sub-tasks that must be scheduled. • We’ll use Trello from FogCreek: • https://trello.com/ Task Management Systems Image from https://trello.com/
Progress on a project can be analyzed using a variety of statistics. • We’ll use GoogleDocs spreadsheets: • https://docs.google.com/ Project Statistics Tools Image from http://docs.google.com/
Pizza Simulation • Rules: • Pizza cooks in 30 seconds, burns in 45 seconds. • You can’t add new pieces to a closed oven. • Pick up more paper when necessary. • Compute scoreat the end of each round: • Finished pizza slice – add 5 points • Penalties for unused items: • Pizza base – subtract 2 points • Pair of unused toppings – subtract 1 point • Burned pizza – consider all burned parts as unused. Exercise taken from www.agile42.com
Create an oven the size of this page. Model your pizza slices, ham and pineapple on the image below. Pizza Simulation Template Fold the edge. Only 3 slices at a time. Draw the pizza sauce on with a marker. Cut the crust and toppings to these sizes. Arrange the six toppings as you choose.
Add seven strips of rucola after the crust and sauce have cooked. Rucola will burn if put in the oven. Second Pizza Style Exercise taken from www.agile42.com/
What’s the Big Idea Kent BeckExtreme Programming (XP) • Innovative work on CRC cards, patterns and XP • XP values: • Communication • Simplicity • Feedback • Courage • Respect images from www.threeriversinstitute.org and amazon.com