53
Software Project Planning “Weeks of programming can save you hours of planning.”

Software Project Planning “Weeks of programming can save you hours of planning.”

Embed Size (px)

Citation preview

Page 1: Software Project Planning “Weeks of programming can save you hours of planning.”

Software Project Planning

“Weeks of programming can save you hours of planning.”

Page 2: Software Project Planning “Weeks of programming can save you hours of planning.”

Introduction

• Planning is critical to project success.

• In one study of over 250 large projects, Capers Jones found a strong correlation between planning and project outcomes. Successful projects were always well-planned and failing projects nearly always had inadequate plans [Jones Crosstalk Oct 2004].

Page 3: Software Project Planning “Weeks of programming can save you hours of planning.”

The reasons for planning a project are a lot like the reasons for planning a vacation.

• In both cases there is a limited amount of time and money. You can make the most of limited resources by planning ahead.

• You are likely to avoid many problems by thinking through them in advance of starting on your journey.

• There is no confusion about what to do each day—the plan provides optimal direction.

Page 4: Software Project Planning “Weeks of programming can save you hours of planning.”

Vacation Analogy [cont]

• The plan serves as a baseline for tracking progress and controlling performance.– Tracking Progress: “Are we there yet?” “I don’t know, let me look

at the plan. No, we aren’t there yet, but according to the plan we will be there in 3 hours.”

– Controlling performance: On the third day you notice that you are consistently underachieving. Each day you are seeing on average half of what you planned to see. Some analysis of the problem reveals you are spending much more time than anticipated on meeting and coordinating individual activities. You decide to purchase walky-talkies so you can better coordinate activities.

• Detailed planning results in better estimates. The guide said “Europe on $100 a day,” but after detailed planning you conclude that for the kind of trip you have in mind it’s more like $300 a day.

Page 5: Software Project Planning “Weeks of programming can save you hours of planning.”

Reasons for Planning a Project

• You can avoid problems and rework by thinking through your actions before performing them.

• Plans serve as a baseline for tracking progress and controlling performance. A project can’t be “on track” unless there is a plan with which to compare actual progress against.

• Detailed planning provides for more accurate bottom-up estimates.

• Planning and the schedules that come from planning establish commitments that others outside the project can use to make their own plans and commitments.

• A plan serves as roadmaps for completing the work of a project.• A plan is a tool for gaining visibility into a project.• Planning provides for more efficient and effective use of

resources.

Page 6: Software Project Planning “Weeks of programming can save you hours of planning.”

Project Lifecycle

• The software development process is iterative and incremental

• Artifacts are progressively refined over a series of iterations

• Planning is divided between initial planning (step 4), release planning (step 5) and iteration planning (step 6).

• Product architecture shapes project planning.

Page 7: Software Project Planning “Weeks of programming can save you hours of planning.”

Inputs and Outputs of Project Planning

Page 8: Software Project Planning “Weeks of programming can save you hours of planning.”

Four main components of a project plan

• Not surprisingly, the four main components of the project plan are closely aligned with the four main variables of a project. A full project plan will have:– A budget for managing the cost component– A schedule for managing the time

component (most notably, delivery date).– A release plan for managing the scope of

the project.– A quality plan for managing product quality.

Page 9: Software Project Planning “Weeks of programming can save you hours of planning.”

Release Plans and Iteration Plans

• On an iterative project, two kinds of plans are useful [Kruchten 2002]:– A release plan, one per project, which specifies

the timing of iterations and a rough allocation of product features to iterations.

– Iteration plans, one per iteration, which specify the detailed tasks for an iteration, and in some cases an assignment of tasks to individuals.

Page 10: Software Project Planning “Weeks of programming can save you hours of planning.”

Release Plan compared to Iteration Plans

Page 11: Software Project Planning “Weeks of programming can save you hours of planning.”

Internal and External Releases

• There are three important opportunities for feedback and control: during frequent integration, at the end of an iteration with an internal release and at the end of an iteration with an external release.

Page 12: Software Project Planning “Weeks of programming can save you hours of planning.”

Predictive and Adaptive Planning

• There is a range of planning options available to the project manager from adaptive to predictive:

Page 13: Software Project Planning “Weeks of programming can save you hours of planning.”

Adaptive Planning

• With adaptive planning, near-term work is planned in detail and work further out in the schedule is planned at a higher level of abstraction.

• Adaptive planning is the idea of progressive elaboration applied to project planning.

• Note that adaptive planning is not the same as doing little or no planning. With adaptive planning there are detailed plans; they just aren’t long-range. There are long-range plans; they just aren’t detailed.

Page 14: Software Project Planning “Weeks of programming can save you hours of planning.”

Predictive Planning

• Predictive planning starts with a major upfront effort to understand product requirements. This knowledge is used to construct a detailed plan for implementing the product definition.

• Predictive planning is most effective when requirements are well-understood and stable.

• Changes are permissible and are handled according to formal change control procedures.

Page 15: Software Project Planning “Weeks of programming can save you hours of planning.”

How much planning is enough?

Page 16: Software Project Planning “Weeks of programming can save you hours of planning.”
Page 17: Software Project Planning “Weeks of programming can save you hours of planning.”

Home ground for adaptive and predictive planning

Page 18: Software Project Planning “Weeks of programming can save you hours of planning.”

Planning Horizon

• A project’s planning horizon is the distant into the future in which work items are well understood.

Page 19: Software Project Planning “Weeks of programming can save you hours of planning.”

Finding the Right Balance

Page 20: Software Project Planning “Weeks of programming can save you hours of planning.”

Some projects need more planning

Page 21: Software Project Planning “Weeks of programming can save you hours of planning.”

Some are better off with less

Page 22: Software Project Planning “Weeks of programming can save you hours of planning.”

Planning Process

Page 23: Software Project Planning “Weeks of programming can save you hours of planning.”

Work Breakdown Structure (WBS)

• Creating a WBS is a systematic way of identifying the tasks needed to complete a project.

• It provides a hierarchical decomposition of the work.

• A WBS can be presented in graphical or outline form.

Widget Project1.0 Initiate2.0 Define Requirements 2.1 Gather Requirements 2.2 Analyze Requirements 2.3 Document Requirements3.0 Plan . . .

Page 24: Software Project Planning “Weeks of programming can save you hours of planning.”

WBS Structure• There are two types of tasks:

– Summary, and

– Detailed elemental tasks (aka work packages)

• Summary tasks may be activities or deliverables. Summary tasks always have detailed subtasks.

• Detailed tasks are always the actual schedulable tasks. They are leaf nodes in the WBS hierarchy.

Widget Project1.0 Define Requirements 1.1 Gather Requirements 1.2 Analyze Requirements 1.3 Document Requirements2.0 Plan Project . . .

Widget Project1.0 Requirements Document 1.1 Gather Requirements 1.2 Analyze Requirements 1.3 Document Requirements2.0 Software Project Management Plan . . .

Page 25: Software Project Planning “Weeks of programming can save you hours of planning.”

Work Packages• Information needed for each schedulable task or

work package:– Tasks description– Owner– Schedule start and stop date– Effort estimate– Expected output or deliverable (optionally with

completion/acceptance criteria)– Staff and material resources needed to complete the

task.

Page 26: Software Project Planning “Weeks of programming can save you hours of planning.”

Task Dependencies

• Before you can schedule tasks you have to know the predecessor and successor relationships between tasks.

• The standard dependency between nodes in a network diagram is finish-to-start. That is, if there is a finish-to-start dependency from A to B, A must finish before B starts.

Network Diagram

Page 27: Software Project Planning “Weeks of programming can save you hours of planning.”

Types of Dependencies

• Finish-to-Start - Task A must finish before task B can start. This is the most common type of dependency.

• Finish-to-Finish - Task A must finish before task B finishes. This is common with work that is largely sequential but can also benefit from feedback from downstream activities

• Start-to-Start - Task A can not start until task B starts. 

• Start-to-Finish - Task A must start before task B finishes. This dependency is rarely used.

Page 28: Software Project Planning “Weeks of programming can save you hours of planning.”

Estimation

• Effort and duration estimates are made for each task.

• After scheduling, these estimates are rolled up (bottom-up estimation) into overall estimates for project cost and duration.

• There are several estimation techniques that may be used (analogy, algorithm models, expert opinion, etc.)

Page 29: Software Project Planning “Weeks of programming can save you hours of planning.”

Effort vs. Duration

• Effort is the amount of labor required to complete a task, typically measured in terms of person months or person hours.

• Duration is the amount of calendar time or clock time needed to complete a project or task.

• Effort is used to measure resource usage and duration is used in scheduling.

Page 30: Software Project Planning “Weeks of programming can save you hours of planning.”

Effort vs. Duration—Example

Cutting a tree with a two-person saw

Ironing a shirt

Effort = 10 minutes

Duration = 10 minutes

Cooking a turkey

Effort = 1 hour

Duration = 3 hours

Effort = 30 minutes

Duration = 15 minutes

Page 31: Software Project Planning “Weeks of programming can save you hours of planning.”

Scheduling

• The Gantt chart is probably the most common tool for presenting schedule information. It shows start and and stop types for tasks in a visually recognizable calendar form. It also shows timing of milestones.

Page 32: Software Project Planning “Weeks of programming can save you hours of planning.”

Critical Path Analysis and Float Time

• The critical path is the longest sequence of activities in the network diagram. A delay for any activity on the critical path will delay the project completion date.

• Free slack - the amount of time a task can slip without delaying another task.

• Total slack -the amount of time a task can slip without delaying the project completion date

Page 33: Software Project Planning “Weeks of programming can save you hours of planning.”

Order of Events

• Is it better toAssign resources Estimate effort Schedule

OR

Estimate effort Schedule Assign resources

Page 34: Software Project Planning “Weeks of programming can save you hours of planning.”

Resource Leveling

Page 35: Software Project Planning “Weeks of programming can save you hours of planning.”

Documenting the Plan

• There is significant value in just planning

• Most projects will also need a written plan which documents the planning work done

• Software Project Management Plan (SPMP)

Page 36: Software Project Planning “Weeks of programming can save you hours of planning.”

A comprehensive SPMP will address the following items:

1. Project goals and objectives

2. Major milestones and deliverables

3. Priorities and constraints

4. Work breakdown structure (WBS). The WBS fleshes out the detailed tasks that must be completed in order to accomplish the goals of the project.

5. Schedule which shows the timing of major milestones and deliverables. As much as possible, work should be planned in units of customer-visible functionality [Beck 2005]. The schedule should show timing of iterations and features planned for each iteration.

6. Estimates for cost, effort and duration.

7. Project budget. The budget shows expenditures over time.

8. Organizational structure including project roles, lines of authority and reporting relationships. The organizational structure may also include an initial assignment of people to roles.

9. Configuration Management Plan.

10. Risk Management Plan. The risk management plan identifies threats to project success and documents the planned actions for mitigating these threats.

11. Communication Plan - A project's communication plan states: (1) what information is collected and by whom, (2) to whom the information should flow and by what method, (3) a schedule for producing and disseminating the needed information.

12. Metrics collection plan

13. Status and progress reporting

Page 37: Software Project Planning “Weeks of programming can save you hours of planning.”

Communications Planning

• During the course of a project people need information in order to do their job

• Communication planning is the process of…– Determining the information needs of each

stakeholder, and– Making sure the needed information is created

and delivered to the right people at the right time in the right format

Page 38: Software Project Planning “Weeks of programming can save you hours of planning.”

Creating a Communication Plan

1. Determine the information and communication needs of each stakeholder

2. Determine the source of the needed information

3. Decide on the format and frequency of distribution

4. Create a plan for the free flow of information during the project

Page 39: Software Project Planning “Weeks of programming can save you hours of planning.”

Determining the Information Needs of Stakeholders

• Standard stakeholder roles include: customer, users, project sponsor, project manager, developers, senior management, etc.

• Stakeholder information needs include: Summary project status, detailed project status, task assignments, solutions to technical problems, product quality, changes and updates to requirements/scope/plan, major risks and risk mitigation strategies, issues and problems, forecasts, lessons learned.

Page 40: Software Project Planning “Weeks of programming can save you hours of planning.”

Example: Stakeholders and Their Information needs

Page 41: Software Project Planning “Weeks of programming can save you hours of planning.”

Sources of Information

• Most information passes directly from one individual to another, but may also be stored for later use.

• Example information stores:– Issues database– Configuration management system– Process assets database

Page 42: Software Project Planning “Weeks of programming can save you hours of planning.”

Format and Timing

• Format dimensions: formal / informal; written / verbal; push / pull.

• Example formats: email, memo, written report, casual conversation, meeting, telephone/conference call, white paper, presentation, web site, Wiki

• Example timings: weekly, monthly, on demand, project closeout.

Page 43: Software Project Planning “Weeks of programming can save you hours of planning.”

Documenting the Communication Plan

• The communication plan states:– What information is collected and by whom– To whom the information should flow and by what

method– A schedule for producing and disseminating the needed

information

• The communication plan may also include guidelines and procedures for communications (e.g. guidelines for conducting an effective team meeting)

• Change control and issue tracking are typically described outside of the communication plan

Page 44: Software Project Planning “Weeks of programming can save you hours of planning.”

Sample Communications Plan

Page 45: Software Project Planning “Weeks of programming can save you hours of planning.”

Informal Spontaneous Communication

• Informal spontaneous communication is an important form of information exchange.

• Although, planned spontaneous communication might seem like a contradiction in terms, it is reasonable to make plans to foster (or at least not hamper) the opportunity for spontaneous communication [example from psychology of computer programming].

• Part of communications planning is taking steps to nurture the opportunity for informal spontaneous communication

Page 46: Software Project Planning “Weeks of programming can save you hours of planning.”

Team Meetings

• Holding a regularly scheduled team meeting (weekly for most projects) is one of the best ways to keep everyone informed, identify problems, make decisions, build relationships and establish commitments.

• The basic agenda for a team meeting is to have each individual or group representative briefly present:– What was accomplished since the last meeting?

– What work is planned between now and the next meeting?

– What issues or problems are blocking progress?

• The team meeting isn’t the forum for solving problems. Problems are better handled in smaller groups outside of the team meeting

Page 47: Software Project Planning “Weeks of programming can save you hours of planning.”

Configuration Management

• The freedom to change a document is more restricted after the document is baselined.

Page 48: Software Project Planning “Weeks of programming can save you hours of planning.”

Change Control

Procedure

Page 49: Software Project Planning “Weeks of programming can save you hours of planning.”

Timing

• The planning phase of the project life cycle comes after some portion of the product requirements are known

• The output of planning is a project plan which provides direction for the remainder of the technical development activities.

• The project plan sets a course of action for accomplishing the goals and objectives outlined in the project charter

Page 50: Software Project Planning “Weeks of programming can save you hours of planning.”

Communication Planning

• During a project people need information in order to do their job

• Communication planning is about…– Determining the information needs of each

stakeholder, and– Creating a plan that ensures needed information

is delivered to the right people at the right time in the right format

Page 51: Software Project Planning “Weeks of programming can save you hours of planning.”

Selecting a Methodology

• Just as the plans used to built most homes are adaptations from generic plans that fit within certain architecture styles, most software development plans are adaptations of generic plans that fit within a certain software development methodology.

• For example, a group might select to use Extreme Programming (XP) with formal inspections in place of pair programming.

Page 52: Software Project Planning “Weeks of programming can save you hours of planning.”

New Slides

Page 53: Software Project Planning “Weeks of programming can save you hours of planning.”

Progressive Elaboration

• The major artifacts and deliverables associated with a software project are rarely created and finalized in one step.

• More often they are conjured up in a primitive form and evolved over time to become more explicit and detailed.

• It’s generally easier to grow a complicated and complex artifact than it is to engineer one in a single step.

• created in a primitive ini• tend to evolve over time becoming more explicit and detailed over time as

more information becomes available. through a process of continuous refinement.

• Progressive elaboration describes the way that most major artifacts associated with a software projects are created and refined.

• is a characteristic of projects were by process by which there is an initial attempt at creating an artifact, followed by repeated cycles of incremental improvement.