Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

SPM Unit - 1

Download as pdf or txt
Download as pdf or txt
You are on page 1of 11

Software Project Management

Software Project Management is the process of planning, organizing, and overseeing the
development of software applications from inception to completion. It involves tasks such as
scheduling, resource allocation, risk management, communication, and quality assurance to
ensure that software projects are completed on time, within budget, and meet the specified
requirements.
For example: Development of a Mobile Banking Application
Suppose, a bank decides to develop a mobile banking application to provide its customers with
convenient access to their accounts, transfers, and other banking services.
Need for software project management
Software project management is crucial for several reasons:
1. Effective use of resources: Software project management ensures that resources such
as time, money, and personnel are used efficiently and effectively.
2. Better communication: Software project management involves effective
communication among team members, stakeholders, and clients, ensuring everyone is
on the same page.
3. Improved quality: Software project management focuses on delivering high-quality
software products that meet customer needs and expectations.
4. On-time delivery: With software project management, projects are completed on time,
meeting deadlines and ensuring timely delivery to clients.
5. Cost savings: Software project management helps to identify and mitigate risks
associated with software development, reducing the likelihood of costly mistakes or
rework.
6. Scope management: Software project management ensures that the project scope is
well-defined, and any changes are properly documented and approved, preventing
scope creep.
7. Risk management: Software project management identifies and mitigates risks
associated with software development, reducing the likelihood of project delays or
failures.
8. Improved team collaboration: Software project management fosters better
collaboration and communication among team members, ensuring everyone works
towards a common goal.
9. Enhanced transparency and accountability: Software project management provides
stakeholders with regular updates, ensuring transparency and accountability throughout
the project lifecycle.
10. Better decision-making: Software project management provides valuable insights and
data to make informed decisions and adjust project strategies accordingly.

Fundamentals of software project management:


Fundamentals of software project management encompass a range of principles and practices
aimed at effectively planning, executing, and completing software development projects. Here
are some key fundamentals:
1. Project Planning: This involves defining project scope, objectives, deliverables, and
requirements. Project planning also includes creating a detailed project schedule,
identifying tasks, dependencies, milestones, and allocating resources.
2. Risk Management: Identifying potential risks that could impact the project's success,
assessing their likelihood and impact, and developing strategies to mitigate or manage
them. This includes monitoring risks throughout the project lifecycle and adapting
strategies as needed.
3. Resource Management: Efficiently allocating and managing resources such as human
resources (developers, testers, etc.), time, budget, and tools to ensure optimal utilization
and productivity.
4. Quality Assurance: Establishing processes and standards to ensure that the software
product meets specified quality requirements. This involves defining quality metrics,
conducting regular reviews, testing, and validation to identify and address defects and
deviations from requirements.
5. Communication: Facilitating effective communication among project stakeholders,
including team members, clients, end-users, and management. This includes
establishing clear channels of communication, holding regular meetings, providing
status updates, and addressing concerns and issues in a timely manner.
6. Stakeholder Management: Identifying and engaging with stakeholders throughout the
project lifecycle to understand their needs, expectations, and concerns. This includes
managing stakeholder relationships, gathering feedback, and ensuring that project
outcomes align with stakeholder interests.
7. Project Monitoring and Control: Monitoring project progress against the planned
schedule, budget, and quality metrics. This involves tracking key performance
indicators, identifying variances, and taking corrective actions to keep the project on
track.
8. Documentation and Reporting: Maintaining accurate project documentation,
including project plans, requirements documents, progress reports, and meeting
minutes. This ensures transparency, accountability, and provides a reference for future
projects or audits.
9. Continuous Improvement: Reflecting on project outcomes, lessons learned, and best
practices to identify areas for improvement. This involves conducting post-project
reviews, capturing feedback, and implementing changes to enhance project
management processes and methodologies.
Phases of the Project Management Lifecycle
A project life cycle provides a high-level view of the project and the phases are tailored to fit a
project’s needs providing a roadmap to accomplish it. The project management life cycle is
divided into 5 phases: project initiation, planning, execution, monitoring & control, and
closure.
1. Project Initiation: The goal of the initiation phase is to define the project at a broad level
in terms of what needs to be done and achieved in order for it to be successful. This is where
the stakeholders (the people or business unit who will fund the project), the goals, objectives
and deliverables are identified and the resources and the money needed to do the project are
determined at a high level. A high level determination is made whether the project is “feasible
or not” based on these.

2. Project Planning: This phase begins after the project receives a green light in the Initiation
phase.

The Project Planning phase is most critical and requires complete diligence as it lays out the
project’s roadmap. It involves defining the work to be done and figuring out how to accomplish
it. This is especially true for large and/ or complex projects, which are typically executed using
traditional methodologies.
The project manager begins setting goals with a project plan. A well-crafted project plan
outlines a detailed project schedule, communication plan to give direction to the team for
producing quality output and handling risks.
During the planning stage, the Project Manager defines the scope of the project and project
management plan that involves the cost, quality, resources and project timeline. The scope is
defined by the project manager with a scope statement and Work Breakdown Structure (WBS)
(the deliverables for the project).

3. Project Execution: The execution phase involved actually carrying out the activities that
are identified in the project plan. This is where the rubber hits the road and the project
ultimately comes to reality!

This is the stage where planning is turned into action. The project team is built. Specific people
and other resources are assigned to the tasks identified in the project plan. The project work is
carried out in the required sequence in order to complete all of the work in the most efficient
manner possible.
The key outcome of the Execution phase are the various deliverables that are produced in line
with the defined project plan. The project manager organizes the team members, establishes
workflow and constantly monitors progress, ensuring that work is done as per plan, while
maintaining effective collaboration between the project team and various stakeholders.
4. Project Monitoring & Control: This phase typically runs in parallel with the Project
Execution phase and involves keeping the project on track and ensuring that objectives and
project deliverables are met.

The project manager reports on the performance of the project and makes sure the project is
going according to plan. This helps track any deviations from the planned budget, timeline and
quality goals of the project.
Any necessary changes to the project goals are implemented after formal evaluation of the
potential impact to the project goals and acceptance/ approval of the impact by the project
stakeholders.
This phase also involves continuously monitoring the project environment for any risks or
issues that are likely to impact the project performance, and taking the necessary steps to
prevent or mitigate them as proactively as possible, to minimize impact to any of the project
goals.

5. Project Closure: Project Closure is the final phase of the project management life cycle,
which indicates the end of the project and the final delivery of the project deliverables.

Project Closure involves completion of the final delivery of a project and its approval by the
stakeholders. Once the project’s closure is formally approved, other aspects of the closure can
be carried out.

The project manager conducts a “post-project review” meeting. or commonly referred to as a


retrospective- to review the lessons from the project, and the challenges that were faced during
the project. It gives an opportunity to comprehend lessons learned to improve productivity in
the future.

Once the above activities are completed, the project team members are released to other
projects.

Software Project Management Framework


A project management framework is a set of processes that help professionals manage a project.
The framework comprises workflows and templates that are useful in planning, implementing
and monitoring work on a project. The framework defines and organizes job tasks within a
project and provides managers with visualization capabilities to oversee project progress. It
also helps production professionals understand their role within a project and complete tasks
more effectively.
A project management framework is important because it helps improve efficiency and
encourages collaboration with tools that offer organization, accountability and help to review
work processes. Project management is a key factor in achieving success with projects. Using
a framework helps ensure successful projects by providing:
• Clarity: Framework helps define the steps towards project completion, including job
tasks, personnel and deadlines.
• Collaboration: Project management framework tools help facilitate collaboration on
teams and with clients by sharing information.
• Organization: Using framework methodologies and tools keep tasks and phases of a
project in order.
• Progress tracking: With job tasks in separate phases, it’s simpler for managers to track
progress and ensure the team is adhering to a schedule.
Software project planning
Software project planning is a crucial phase in the software development lifecycle that
involves defining the project's objectives, scope, deliverables, timelines, resources, and
risks. Here are the key steps involved in software project planning:
1. Define Project Objectives: Clearly articulate the goals and objectives of the
project. What problem is the software intended to solve? What are the expected
outcomes or benefits?
2. Gather Requirements: Identify and document the functional and non-functional
requirements of the software. This involves understanding user needs, stakeholder
expectations, and any regulatory or compliance requirements.
3. Scope Definition: Define the boundaries of the project scope, including what
features and functionalities will be included in the software product and what will
be excluded. This helps manage expectations and prevents scope creep.
4. Create a Work Breakdown Structure (WBS): Decompose the project scope into
smaller, manageable tasks or work packages. This hierarchical breakdown helps in
organizing and planning project activities effectively.
5. Estimate Effort and Duration: Estimate the effort required for each task or work
package and determine the duration based on resource availability and
dependencies. Various estimation techniques such as expert judgment, analogous
estimation, or parametric estimation can be used.
6. Develop a Project Schedule: Create a detailed project schedule that outlines the
sequence of tasks, milestones, and dependencies. Use project management tools
like Gantt charts or project scheduling software to visualize and manage the
schedule.
7. Allocate Resources: Identify the resources needed for the project, including human
resources (developers, testers, etc.), tools, equipment, and infrastructure. Allocate
resources based on project requirements and availability.
8. Risk Management: Identify potential risks that could impact the project's success
and develop strategies to mitigate or manage them. This includes assessing risk
likelihood and impact, developing contingency plans, and assigning
responsibilities.
9. Budgeting: Develop a project budget that includes costs associated with resources,
tools, infrastructure, and any other project-related expenses. Monitor and control
project costs throughout the project lifecycle to ensure adherence to budget
constraints.
10. Define Communication Plan: Establish a communication plan that outlines how
project information will be communicated, who will be responsible for
communication, and the frequency and mode of communication. Effective
communication is essential for project success.
11. Quality Assurance Plan: Define the quality standards and processes that will be
followed throughout the project. This includes quality assurance activities such as
code reviews, testing, and validation to ensure that the software meets specified
quality requirements.
12. Document the Project Plan: Document all aspects of the project plan, including
objectives, scope, schedule, resources, risks, and communication plan. This serves
as a reference for project stakeholders and provides a roadmap for project execution.
Software Project Estimation: (Project Estimation Process)

Step 1: Gather and Analyze Software Functional & Programmatic Requirements

In this step we Analyze and refine software requirements, software architecture, and
programmatic constraints. The Output of step1:

• Technical and programmatic constraints and requirements.


• Assumptions made about the constraints and requirements.
• Methods used to refine the software functional requirements.
• Refined software functional requirements.
• Software architecture hierarchy of segments and associated functions.

Step 2: Define the Work Elements and Procurements

The purpose of this step is to define the work elements and procurements for the software
project that will be included in the software estimate. The Output of step2:

• Assumptions about the work elements and procurements.


• List of procurements.
• Project-specific product-based software WBS including attributes of the work
elements.
• Risk List.

Below are 4 major steps (from Step 3 to Step 6) that play an important role in the estimation
of the software project:
Step 3: Estimating the size of the project

Estimating the size of the software to be developed is the very first step to make an effective
estimation of the project. A customer's requirements and system specification forms a baseline
for estimating the size of a software. At a later stage of the project, a system design document
can provide additional details for estimating the overall size of software.

• The ways to estimate project size can be through past data from an earlier
developed system. This is called estimation by analogy.
• The other way of estimation is through product feature/functionality. The system
is divided into several subsystems depending on functionality, and the size of each
subsystem is calculated.

The outputs of step3:

• Methods used to estimate software size.


• Assumptions made in order to estimate software size.
• Software size estimates for each function and software heritage category in logical
SLOC.
• Total software size estimate in logical SLOC.
Step 4: Estimating the Effort

When we are finished with the size estimation process, the next step is to estimate the effort
based on the size. The estimation of effort can be made from the organisational specifics of the
software development life cycle. The development of any application software system is more
than just coding of the system. Depending on deliverable requirements, the estimation of effort
for project will vary. Efforts are estimated in the number of man-months:

• The best way to estimate effort is based on the organisation's own historical data
of development process. Organizations follow similar development life cycle for
developing various applications.
• If the project is of a different nature which requires the organisation to adopt a
different strategy for development then different models based on algorithmic
approach can be devised to estimate effort.

The output of step4:

• Assumptions made in order to estimate Software Development Effort including


heritage.
• Methods used to estimate Software Development Effort.
• Software Development Effort of each function adjusted for heritage in work-
months.
• Total Software Development Effort in work-months.

Step 5: Estimating Schedule

After estimating the efforts, estimating the project schedule from the effort estimated is the
next step in the estimation process. The schedule for a project will generally depend on human
resources involved in a process. Efforts in man-months are translated to calendar months.

Schedule in calendar months = 3.0 * (man-months) 1/3

The parameter 3.0 is variable, used depending on the situation which works best for the
organisation. The outputs of step 5 are:

• Assumptions made to estimate schedule.


• Schedule including all work elements of the WBS, milestones, and reviews.
• Revised estimates and assumptions made to revise estimate.

Step 6: Estimating the cost

To estimate the total cost of the software project is the purpose of this step. The cost of a project
is derived not only from the estimates of effort and size but from other parameters such as
hardware, travel expenses, telecommunication costs, training cost etc. should also be taken into
account.

Cost estimation Process:

How to Estimate the total cost:

1. Determine the cost of procurements:

o Determine the cost of support and services, such as workstations, test-bed


boards and simulators, ground support equipment, and network and phone
charges.
o Determine the cost of software procurements such as operating systems,
compilers, licenses, and development tools.
o Determine the cost of travel and trips related to customer reviews and interfaces,
vendor visits, plus attendance at project-related conferences.

2. Determine the cost of training planned for the software project.


3. Determine the salary and skill level of the labor force.
4. Input the effort, salary levels, and cost of procurements into an institutionally supported
budgeting tool to determine overall cost. All estimates should be integrated with all rates
and factors, institutional standard inflation rates, and median salaries.
5. As with scheduling, inconsistencies and holes in the estimates may appear while
calculating the cost. This is especially true when trying to fit the cost into the budget
imposed on the software project. As a result, it may be necessary to reiterate the estimates
of other steps several times, reduce the effort and procurements, or assume more risk to fit
into the imposed budget. If the schedule becomes extended, costs will rise because effort
moves out to more expensive years. See later steps for reviewing estimates versus budgets
and schedule.

Estimation methods in Software Project Management


Estimation methods in Software Project Management (SPM) are techniques used to estimate
the effort required to complete a project task or a set of tasks. Here are some commonly used
estimation methods in SPM:
1. Analogous Estimation: This method uses historical data or similar projects to
estimate the effort required for a project. It is useful when there is limited
information available about the project.
2. Parametric Estimation: This method uses mathematical models to estimate the
effort required based on historical data. It is useful when there is a large amount of
historical data available.
3. Three-Point Estimation: This method uses a range of estimates from three
different perspectives - optimistic, pessimistic, and most likely - to estimate the
effort required. It is useful when there is a high degree of uncertainty.
4. Expert Judgment: This method uses the input of experts who are familiar with the
project to estimate the effort required. It is useful when there is a lack of historical
data.
5. Top-down estimate: A top-down estimating technique assigns an overall time for
the project and then breaks it down into discrete phases, work, and tasks — usually
based on your project’s work breakdown structure (WBS).

If a client tells you the project has to be done within six months, a top-down
approach allows you to take that overall timeline and estimate how much time you
can take for each activity within the project and still complete it on time.
6. Bottom-up estimate: A bottom-up estimate is the reverse of top-down. Using this
estimation technique, you start by estimating each individual task or aspect of the
project. Then you combine all those separate estimates to build up the overall
project estimate.
Since each activity is being assessed individually, this type of estimate tends to be
more accurate than the top-down approach. But it also takes more time.
Cost Estimation Models
Cost estimation models encompass mathematical algorithms or parametric equations utilized
to predict the cost of a product or project. Multiple techniques or models exist for cost
estimation, co mmonly referred to as Cost Estimation Models, as depicted below:

Empirical Estimation Technique – Empirical estimation involves utilizing empirically


derived formulas to predict essential data required for software project planning. These
formulas are typically based on data collected from previous projects, supplemented by
educated guesses, prior experience with similar projects, and underlying assumptions. This
method primarily relies on the software's size to estimate effort, involving an educated
approximation of project parameters. Consequently, these models are grounded in common
sense. However, due to the complexity of activities involved, empirical estimation techniques
are formalized, exemplified by approaches such as the Delphi technique and Expert Judgment
technique.

Heuristic Technique – Heuristic techniques are employed for problem-solving, learning, or


discovery, facilitating practical methods to achieve immediate goals. These techniques offer
flexibility and simplicity, enabling swift decision-making through shortcuts and approximate
calculations, particularly beneficial when dealing with intricate data. However, decisions made
through this technique should strive for optimality. Mathematical equations are utilized to
express the relationships among various project parameters. A well-known heuristic technique
is the Constructive Cost Model (COCOMO), utilized to expedite analysis and investment
decisions.

Analytical Estimation Technique – Analytical estimation involves measuring work by


dissecting tasks into their fundamental component operations or elements for analysis. If
standard time data is available from external sources, it is applied to each element or component
of work. Otherwise, estimates are based on experiential knowledge. Results from this technique
stem from specific assumptions made about the project, thus imbuing analytical estimation
with a scientific basis. Halstead’s software science exemplifies an analytical estimation model.

You might also like