Software Project Management: A Process Driven Approach

advertisement
Teaching material for a course in
Software Project Management &
Software Engineering – Part I
Part 1: Project Management
Chapter 1 (Introduction)
• Any set of activities can be considered to be a
Project if they have a definite start time and
end time and these set of activities achieve
some pre defined goals.
• A project needs resources for a definite period
of time. These resources are released after
project gets completed.
Part 1: Project Management
Fundamentals
Chapter 1 (Project Management Introduction)
Project consumes resources, time and budget
Part 1: Project Management
•
•
•
•
Chapter 1 (Introduction)
A project can be initiated to build a road, a building, a software product
etc. Managing a project will need different kinds of metrics, tools, skills
etc.
A project can be broken down into project phases. These project phases
include project initiation, project planning, project monitoring & control
and project closure.
For each kind of project, there could be sub processes within each of the
project phases. These sub processes are not related to project processes
but belong to industry specific processes. For example, software
development lifecycle processes (requirement gathering, software design
etc.) fall within various project processes but are not part of project
processes.
Software project management is the management of any software
project. Specialized skills are needed to manage these projects for
example software engineering, software testing, software design etc.
Part 1: Project Management
Fundamentals
Chapter 1 (Project Management Introduction)
Project phases
Part 1: Project Management
Fundamentals
Chapter 1 (Introduction)
• A software project will have processes like
software life cycle processes (requirement
gathering, software design, software
construction, software testing etc.), software
project processes, software configuration
management
Part 1: Project Management
Fundamentals
Chapter 1 (Project Management Introduction)
Software tasks in software projects
Part 1: Project Management
Fundamentals
Chapter 1 (Project Management Introduction)
project phases with software lifecycle tasks
Part 1: Project Management
Chapter 2 (Project Initiation)
• Software projects are initiated in the same manner as
any other type of projects.
• Project charter is made by the top management of the
organization for starting a software project. Project
charter basically defines the purpose for starting the
project.
• A detailed project scope is developed to define
boundaries of the project. The scope will include what
functionalities are needed in the software product to
be developed. It will also define level of quality needed
in the software product.
Part 1: Project Management
Chapter 2 (Project Initiation)
• An initial budget is estimated for the project.
As per the estimate a budget is sanctioned for
the project.
• The budget includes costs to cover for salaries
of people who will work on the software
project, purchase of hardware, services, travel
costs, management costs etc.
Part 1: Project Management
Chapter 2 (Project Initiation)
• Project costs are directly related to size of the
project. How much effort is needed to build
the software product is the most crucial
aspect for the project costs. The effort
estimate will determine labor cost for the
project.
Part 1: Project Management
Chapter 2 (Project Initiation)
• An initial project schedule is prepared for the project. The entire
project work is broken down into smaller tasks. Which tasks will
start and end at what times determines the project schedule.
Accurate estimation of duration of each task, dependencies of tasks
on each other are the factors which help in making the project
schedule accurately. After refinement, the initial project schedule
later becomes the baseline schedule.
• For better project effort & cost estimate, a technique known as
project division can be used (popular in Australia & New Zealand).
Here after preparing project charter and scope, an expert is hired
who will make effort and cost estimate. Now bids are invited from
software development companies for project planning & execution
based on the effort & cost figured given by the expert.
Part 1: Project Management
Fundamentals
Chapter 2 (Project Initiation)
Initial project cost & effort estimate
Part 1: Project Management
Fundamentals
Chapter 2 (Project Initiation)
Tentative project plan and schedule
Part 1: Project Management
Fundamentals
Chapter 2 (Project Initiation)
project division for better project size estimate
Part 1: Project Management
Fundamentals
Chapter 3 (Effort & Cost Estimation)
• Software projects are inherently effort driven
because most of work involves human effort
to build the software product.
• Estimating the effort required to build the
software product is difficult as the result of
effort is intangible and difficult to make effort
estimation in building software artifacts.
Part 1: Project Management
Fundamentals
Chapter 3 (Effort & Cost Estimation)
• There are many techniques like function point
analysis, wide band delphi, COCOMO etc. for
making effort estimation on software projects.
• Depending on requirement, a suitable effort
estimation technique is chosen for any software
project.
• Since effort estimation techniques are not
foolproof, effort estimates need to be revised as
the project progresses.
Part 1: Project Management
Fundamentals
Chapter 3 (Project Effort Estimation)
Function point count for effort estimate (function point analysis technique)
Part 1: Project Management
Fundamentals
Chapter 3 (Project Effort Estimation)
Function count type for effort estimate (function point analysis technique)
Part 1: Project Management
Fundamentals
Chapter 3 (Project Effort Estimation)
Effort sizing for effort estimate (function point analysis technique)
Part 1: Project Management
Fundamentals
Chapter 3 (Project Effort Estimation)
Effort estimate for iterative projects
Part 1: Project Management
Fundamentals
Chapter 3 (Effort & Cost Estimation)
• Once effort estimates are made for the
project, cost estimates are calculated based
on the effort estimate and cost parameters
like hourly salary of individual employees.
• Cost estimates are done using techniques like
activity based costing or cost factor analysis.
Part 1: Project Management
Fundamentals
Chapter 3 (Effort & Cost Estimation)
• Software projects use different kinds of software
development life cycle models like waterfall model,
iterative model etc. Effort estimation for each type of
software development lifecycle model requires
understanding the difference in the way the software
product is built. In iterative models, software products are
built in small incremental cycles. On the contrary in the
waterfall model, software products are built in one go and
thus all product features are fully built in the same one
cycle. This fundamental difference necessitates a different
approach to effort estimation for each type of software
development lifecycle model projects.
Part 1: Project Management
Fundamentals
Chapter 3 (Effort & Cost Estimation)
• Software products are made manually by software
engineers. How many of these people are needed on
the project and for how long, is determined by the
effort estimate and project duration.
• Resource estimation also needs to take into
consideration the skill set required on the project. Off
course speed with which a software engineer can build
a software product varies and thus this factor can
affect resource estimation on the project.
Part 1: Project Management
Fundamentals
Chapter 3 (Project Effort Estimation)
Comparison of effort estimate techniques
Part 1: Project Management
Fundamentals
Chapter 3 (Project Effort Estimation)
Effort and cost for various project tasks
Part 1: Project Management
Fundamentals
Chapter 4 (Risk Management)
• Any project needs to start and end at the pre
defined dates. There could be risks like resource
unavailability, service breakdown problems,
technology obsolescence, wrong selection of
project tools etc. These risks can occur and can
hamper project progress. Finding chances of
occurrences of risks and finding ways to tackle
them is important. So risk management is very
important for any project.
Part 1: Project Management
Fundamentals
Chapter 4 (Risk Management)
• Risk can hamper a project either affecting
product quality or rate of production. Product
quality can go down if software engineers lack
adequate skills or not enough time could be
allotted for testing. Rate of production may go
down if adequate resources are not allocated
on the project.
Part 1: Project Management
Fundamentals
Chapter 4 (Risk Management)
Major risk types on projects
Part 1: Project Management
Fundamentals
Chapter 4 (Risk Management)
Major causes of risks on projects
Part 1: Project Management
Fundamentals
Chapter 4 (Risk Management)
Mitigating risks through schedule buffer on projects
Part 1: Project Management
Fundamentals
Chapter 4 (Risk Management)
Mitigating resource risks through knowledge management system
Part 1: Project Management
Fundamentals
Chapter 4 (Risk Management)
Mitigating quality risks through quality gates on projects
Part 1: Project Management
Fundamentals
Chapter 4 (Risk Management)
Risk management through risk prioritization
Part 1: Project Management
Fundamentals
Chapter 4 (Risk Management)
• Each kind of risk which can occur on a project
should be identified and then evaluated for
the kind of impact it can have on the project.
Probability for the risk to occur should also be
identified. Together with impact and
probability, the risk factor can be devised for
each risk on the project.
Part 1: Project Management
Fundamentals
Chapter 4 (Risk Management)
• The biggest benefit of iterative software development
lifecycle model is that it minimizes risks. In the
waterfall model, the software product is available for
end user review only after the complete software
product is built. If there were misunderstandings in
getting end user requirements right then the software
product built will not be suitable to the end users. In
iterative models, this risk is minimized by building
small set of features and getting them reviewed by end
users. If any features are not correct then making the
required changes at this stage is not costly.
Part 1: Project Management
Fundamentals
Chapter 4 (Risk Management)
Risks of waterfall model
Part 1: Project Management
Fundamentals
Chapter 5 (Configuration Management)
• Software product features need to be changed if
end users make a request. This is not unusual and
is a common practice on software projects. There
could be many change requests during the entire
project duration. Thus many different versions of
the software product results. Managing change
requests and different versions of the software
product is done in configuration management.
Part 1: Project Management
Fundamentals
Chapter 5 (Configuration Management)
Characteristics required for a good configuration management system
Part 1: Project Management
Fundamentals
Chapter 5 (Configuration Management)
Document attributes needed to keep documents unique
Part 1: Project Management
Fundamentals
Chapter 5 (Configuration Management)
Document version control in configuration management system
Part 1: Project Management
Fundamentals
Chapter 5 (Configuration Management)
Characteristics of a good configuration management system
Part 1: Project Management
Fundamentals
Chapter 5 (Configuration Management)
Characteristics go a good configuration management system
Part 1: Project Management
Fundamentals
Chapter 6 (Project Planning)
• In project planning phase, elaborate planning for all project
components are made. You create baseline structure here which is
used to execute, monitor and control the project.
• Project planning consists of project scheduling, project budgeting,
manpower planning, communication planning, quality planning etc.
• Project scheduling can be done in 2 ways. Top down planning and
bottom up planning. But first of all you need to break the entire
project work into manageable small tasks. In top down planning
you first assign time duration for the entire project. Later you assign
time duration for smaller tasks within the time periods of their
respective container bigger tasks. In bottom up planning, time
duration is assigned to small tasks first. Later, the time duration of
all smaller tasks are added up to come up with time duration of
their container larger task.
Part 1: Project Management
Fundamentals
Chapter 6 (Project Planning)
Software Project planning components
Part 1: Project Management
Fundamentals
Chapter 6 (Project Planning)
Software Project planning inputs for top down planning technique
Part 1: Project Management
Fundamentals
Chapter 6 (Project Planning)
Software Project planning ouputs for top down planning technique
Part 1: Project Management
Fundamentals
Chapter 6 (Project Planning)
Software Project planning inputs for bottom up planning technique
Part 1: Project Management
Fundamentals
Chapter 6 (Project Planning)
Software Project planning outputs for bottom up planning technique
Part 1: Project Management
Fundamentals
Chapter 6 (Project Planning)
• Work breakdown structure (WBS) is the systematic way of breaking
down the complete project work into smaller tasks. WBS also
maintains relationship among tasks so that it is possible to know
which tasks precede another tasks, which tasks can not start before
completion of some other task etc.
• Once WBS structure for tasks is ready then you can allocate
resources for each task. Resource allocation should be based on
closely matching required skills with those available. How many
resources should be allocated on a task will depend on the amount
of effort required and for how long the task will run. For example, if
a task requires 50 hours of work and should be completed in 2 days
(16 hours) then you should assign 3 resources on this task. Still you
will need to over burden any resource for 2 hours of overtime work.
Part 1: Project Management
Fundamentals
Chapter 6 (Project Planning)
Software Project work breakdown structure
Part 1: Project Management
Fundamentals
Chapter 6 (Project Planning)
Resource requirements at various software tasks
Part 1: Project Management
Fundamentals
Chapter 6 (Project Planning)
Supplier management plan
Part 1: Project Management
Fundamentals
Chapter 6 (Project Planning)
Goldratt’s critical chain method (unnecessary buffer to be removed)
Part 1: Project Management
Fundamentals
Chapter 6 (Project Planning)
Goldratt’s critical chain method (unnecessary buffer removed)
Part 1: Project Management
Fundamentals
Chapter 6 (Project Planning)
• If you have hardware or software suppliers
(outsourcing partners etc.) on the project then you
need to make a supplier planning for the project.
Which tasks the supplier will perform on the project
and how these tasks are dependent on other tasks
should be clearly defined and communicated to the
supplier. Also quality planning should be clearly
outlined with the supplier so that quality does not
differ on software products made by the supplier to
the ones made inhouse.
Part 1: Project Management
Fundamentals
Chapter 6 (Project Planning)
• When you plan for configuration management, you decide how you
are going to create and maintain a repository for all your project
documents as well as how you will branch out various versions of
your software product.
• Communication on a project is both formal and informal. Most of
informal communication is lost as it is often not saved. The other
problem on projects is that even formal communication is lost or
leads to wrong communication as wrong communication tools and
techniques are deployed. Communication planning for the project
must include which channels of communications are used, which
communication tools are used, how communication with customers
and suppliers will be done and how to ensure that
miscommunication does not occur.
Part 1: Project Management
Fundamentals
Chapter 6 (Project Planning)
• Quality assurance is one of the most important aspects of any
project. How software product with required level of quality should
be produced on the project is one of the topmost considerations on
software projects. Quality assurance plan is thus made to ensure
the required level of quality of the software product produced.
• Project schedule planning is again one of the most important
aspects of any project. Using techniques like WBS, CPM (critical
path method), Goldratt’s critical chain method or any suitable
technique, a complete project schedule structure should be made
for the project.
• Project budgeting is again one of the most important project
planning tasks. If project costs exceed project budget then it can
jeopardize the project. Proper budget planning is thus very
important.
Part 1: Project Management
Fundamentals
Chapter 6 (Project Planning)
Project planning in partial iteration model
Part 1: Project Management
Fundamentals
Chapter 6 (Project Planning)
Project planning in full iteration models
Part 1: Project Management
Fundamentals
Chapter 6 (Project Planning)
• Project planning in iterative software lifecycle
model is different from project planning in
waterfall model environment. For iterative
projects, the entire project plan spans several
iterations. Depending on the lifecycle model,
these iterations can be full or partial.
Part 1: Project Management
Fundamentals
Chapter 7 (Project Monitoring & Control)
• Project plan is the baseline against which
progress of any project is measured.
• There are milestones set in the project plan
which help in determining if the target dates for
completion of any project milestone is achieved
as the project execution progresses.
• Work progress of any project task can be
measured by comparing the baseline start and
end dates with the actual start and end dates
achieved as the work on the task gets completed.
Part 1: Project Management
Fundamentals
Chapter 7 (Project Monitoring & Control)
• Similar to project schedule, project budget can also be
tracked as the work on project progresses. For doing this
you need to keep baseline budget and actual expense
dollar figures for the project or for the task for which you
want to measure the budget progress.
• Earned Value Management (EVM) is the best tool to
measure both schedule and budget progress for any project
as well as for project tasks. EVM requires that you maintain
accurate baseline and actual start and end dates. You also
need to maintain baseline budget and actual expense
figures accurately. Only then you will be able to get
accurate schedule and budget variance.
Part 1: Project Management
Fundamentals
Chapter 7 (Project Monitoring & Execution)
Project progress with planned and actually achieved schedule
Part 1: Project Management
Fundamentals
Chapter 7 (Project Monitoring & Execution)
Project schedule deviation
Part 1: Project Management
Fundamentals
Chapter 7 (Project Monitoring & Execution)
Project cost deviation
Part 1: Project Management
Fundamentals
Chapter 7 (Project Monitoring & Execution)
Earned value management
Part 1: Project Management
Fundamentals
Chapter 7 (Project Monitoring & Execution)
Task slippage due to delay in linked task completion
Part 1: Project Management
Fundamentals
Chapter 7 (Project Monitoring & Execution)
Slack and buffer management in iterative projects
Part 1: Project Management
Fundamentals
Chapter 7 (Project Monitoring & Execution)
Project plan after unnecessary slack removal in iterative projects
Part 1: Project Management
Fundamentals
Chapter 7 (Project Monitoring & Control)
• Performance indicators are used to measure performance of
project execution in comparison to its baseline project plan.
Performance indicators are also known as project metrics.
Sometimes, during project execution, if any task completes before
planned finish date then the project can be re-planned and
unnecessary slack can be removed by moving start dates of
dependent tasks and thus removing slack between tasks.
• Project metrics related to product quality include defect density,
robustness, platform operability etc. Effort in testing the product is
also important because software testing is a manual process and
dollars spent on testing the product is also a component of project
budget.
• Project metrics related to project schedule is schedule variance and
for project budget, it is budget variance.
Part 1: Project Management
Fundamentals
•
•
•
•
Chapter 7 (Project Monitoring & Control)
For measuring effective loading of resources on the project, you need to use
resource loading metrics and measure resource loading by comparing number of
hours of baseline work assigned to a resource and the actual number of hours of
work put in by the resource on the project.
In case of program management, you can also measure number of hours of work
assigned to a resource on projects and the idle hours of the resource when he/she
could not be assigned any project work in a specific period of time. This is known
as resource utilization. This metric helps in determining if resources are
overloaded (when they clock overtime work on projects) or under loaded (when
they have idle time and sit on bench for sometime between projects when they
are not assigned any project work for any reason).
To correct any deviation (delay) in project work, you can either use any slack
available in the project schedule or use resource leveling to prevent the deviation.
Schedule optimization is a technique which can be used to reduce unnecessary
slack in the project schedule and complete the project in less time duration. This
means the entire project schedule should be updated including the baseline dates
for milestones, start and end date of tasks.
Part 1: Project Management
Fundamentals
•
•
•
•
•
Chapter 8 (Project Closure)
Before winding up everything on the project when it gets completed, you should
make sure that the lessons learnt on the project does not get lost. If you can save
all measured project metrics then you can use them for your next projects. In fact,
this is a standard practice on projects these days.
Data related to measured project metrics are extremely useful when planning for
next projects (which are similar) gets started. Effort estimation, quality planning,
scheduling, budgeting, resource allocation etc. can be planned more realistically
using available data from previous projects.
Outsourcing companies use project metrics of previous projects to bag new
project contracts from customers.
The most important usage of measured project metrics is to improve upon project
processes themselves. Organizations like Project management Institute (PMI)
analyze data from past projects and improve standard project processes over time.
Before you close any project you need to release resources from the project.
Part 1: Project Management
Fundamentals
Chapter 8 (Project Closure)
Project deliverables before closure of project
Part 1: Project Management
Fundamentals
Chapter 8 (Project Closure)
Source code version management on project
Part 1: Project Management
Fundamentals
Chapter 8 (Project Closure)
Project measured metrics data filtration for archiving
Part 1: Project Management
Fundamentals
Chapter 8 (Project Closure)
Lessons learnt on the project through archived project data
Download