Project management in software development is the process of planning, scheduling, executing, monitoring, and delivering software projects.
The
software project management is crucial to the success of a project. The main
goal of software project management is to enable a group of software developers
to work efficiently towards successful completion of the project.
Project
Management is a discipline about planning, monitoring, and controlling software
projects, identifying the scope, estimating the work involved, and creating a
project schedule. Along with it is also responsible to keep the team up to date
on the project’s progress and handle problems and discuss solutions.
Software project
management comprises of a number of activities, which contains planning of
project, deciding scope of software product, estimation of cost in various
terms, scheduling of tasks and events, and resource management.
Project management helps us to understand the scope
of work, risks incurred, resources required, the tasks to be accomplished,
milestones to be tracked, the amount to be expended on each task, and the
schedule to be followed etc.
Project Planning:
Project planning is an
organized and integrated management process. The goal of project planning is to
develop a plan for software development. A software plan is usually produced
before the development activity begins. It describes the activities and
the resources needed to complete the project successfully. The major activities of project planning are cost
estimation, schedule and milestone determination, staffing and quality control
plans, controlling and monitoring plans. Software project
plans allow software development teams to deliver timely and high-quality
software to their clients. Project
planning also helps in better utilization of resources and optimal usage of the
allotted time for a project. The other objectives of project planning are
listed below.
- It defines the roles and responsibilities of the
project management team members.
- It ensures that the project management team works
according to the business objectives.
- It checks feasibility of the schedule and user
requirements.
- It determines project constraints.
Several individuals help in
planning the project. These include senior management and project management
team. Senior management is responsible for employing team members and providing
resources required for the project. The project management team, which
generally includes project managers and developers, is responsible for
planning, determining, and tracking the activities of the project.
Project planning
comprises project
purpose, project scope, project
planning process, and project plan.
Project Purpose:
Software project is carried out to accomplish a specific purpose, which is classified into two categories, namely, project objectives and business objectives.
The commonly
followed project objectives are listed below:
· Meet user
requirements: Develop
the project according to the user requirements after understanding them.
· Meet
schedule deadlines: Complete the project milestones as described
in the project plan on time in order to complete the project according to the
schedule.
· Be within
budget: Manage
the overall project cost so that the project is within the allocated budget.
· Produce
quality deliverables: Ensure that quality is considered for accuracy
and overall performance of the project.
Business objectives ensure that the organizational objectives
and requirements are accomplished in the project. Generally, these objectives
are related to business process improvements, customer satisfaction, and
quality improvements.
Project Scope:
With the help of user
requirements, the project management team determines the scope of the project
before the project begins. This scope provides a detailed description of
functions, features, constraints, and interfaces of the software that are to be
considered. Functions describe the tasks that the software is expected to
perform. Features describe the attributes required in the software as per the
user requirements. Constraints describe the limitations imposed on software by
hardware, memory, and so on. Interfaces describe the interaction of
software components (like modules and functions) with each other. Project scope
also considers software performance, which in turn depends on its processing
capability and response time required to produce the output.
Project Planning Process:
The project planning process involves a set
of interrelated activities followed in an orderly manner to implement user
requirements in software and includes the description of a series of project
planning activities and individual(s) responsible for performing these activities.
In addition, the project planning process comprises the following:
1. Objectives and scope of the project
2. Techniques used to perform project planning
3. Effort (in time) of individuals involved in project
4. Project schedule and milestones
5. Resources required for the project
6. Risks associated with the project.
Project planning process consists of
the following activities:
- Identification of project requirements: Before starting a project, it is essential to
identify the project requirements as identification of project
requirements helps in performing the activities in a systematic manner.
- Identification of cost estimates: Along with the estimation of effort and time, it
is necessary to estimate the cost that is to be incurred on a project. The
cost estimation includes the cost of hardware, network connections, and
the cost required for the maintenance of hardware components. In addition,
cost is estimated for the individuals involved in the project.
- Identification of risks: Risks are unexpected events that have an adverse
effect on the project. Software project involves several risks (like
technical risks and business risks) that affect the project schedule and
increase the cost of the project. Identifying risks before a project
begins helps in understanding their probable extent of impact on the
project.
- Identification of critical success factors: For making a project successful, critical success
factors are followed. These factors refer to the conditions that ensure
greater chances of success of a project. Generally, these factors include
support from management, appropriate budget, appropriate schedule, and
skilled software engineers.
- Commencement of the project: Once the project planning is complete and
resources are assigned to team members, the software project commences.
Project Plan:
A project plan helps a project manager to understand, monitor, and control the development of software project. This plan is used as a means of communication between the users and project management team.
There are various advantages associated with a project plan, some of
which are listed below.
- It ensures
that software is developed according to the user requirements, objectives,
and scope of the project.
- It
identifies the role of each project management team member involved in the
project.
- It monitors
the progress of the project according to the project plan.
- It
determines the available resources and the activities to be performed
during software development.
- It provides
an overview to management about the costs of the software project, which is
estimated during project planning.
Software Cost Estimation Technique:
Software
cost estimation is the process of predicting the effort required to develop a
software system. Cost
estimation can be defined as the approximate judgment of the costs for a
project. It is a process
to estimate the approximate cost of the software project before the development
starts i.e. it describes the approximate requirements of effort, development
time and resources to complete the software project. Cost
estimation is usually measured in terms of effort. The most common metric used
is person months or years (or man months or years). The effort is the amount of
time for one person to work for a certain period of time.
Software cost
estimation is one of the crucial activities of the software development which
involves predicting the effort, size and cost required to develop a software
system. Without reasonably accurate cost
estimation capability, project managers can’t determine how much time and manpower
cost the project should take and that means the software portion of the project
is out of control from its beginning; system analysts can’t make realistic
hardware-software tradeoff analyses during the system design phase; software
project personnel can’t tell managers and customers that their proposed budget
and schedule are unrealistic. Cost estimation is one of the most challenging
tasks in project management.
Cost estimation includes the process
or methods that help us in predicting the actual and total cost that will be
needed for our software and is considered as one of the complex and challenging
activity for the software companies. Their goal is to develop
software which is
cheap and at
the same time deliver
good quality. Software cost estimation is used basically by
system analysts to get an approximation of the essential resources needed by a
particular software project and their schedules. Important parameters in
estimating cost are size, time, effort etc.
Techniques available for cost
estimation:
1. Empirical Estimation Technique
2. Heuristic Technique
1. Empirical Estimation Technique:
Empirical estimation techniques are
based on making an educated guess of the project parameters and common sense. While
using this technique, prior experience with development of similar project is
helpful. These
techniques are based on the data collected from a previously implemented project and also based on some
guesses as well as
assumptions. This technique takes into account the size of the
software in order to provide an estimate of the amount of work required.
Two popular empirical estimation
techniques are: Expert judgment
technique and Delphi cost estimation.
Expert Judgment Technique:
It is one of the most widely used estimation
techniques. In this technique, an expert makes an educated guess of the problem
size after analyzing the problem thoroughly. This technique captures the experience and the knowledge of
the estimator who provides the estimate based on their experience from a
similar project to which they have participated. Usually, the expert estimates the cost of the
different components (i.e. modules or subsystems) of the system and then
combines them to arrive at the overall estimate.
Shortcomings of Expert judgment:
1. Outcome is subject to human errors and individual
bias.
2. The expert may overlook some factors
inadvertently.
3. Expert may not have relevant experience and
knowledge of all aspects of the project
Delphi Cost Estimation:
This technique tries to
overcome some of the shortcomings of the expert judgment technique. Delphi cost
estimation is carried out by a team comprising of a group of experts and a
coordinator. The coordinator provides each estimator with a copy of the
software requirements specification (SRS) document and a form for recording his
cost estimate. Estimators complete their individual estimates and submit them to
the coordinator. In their estimates, the estimators mention any unusual
characteristic of the product which has influenced their estimation.
The coordinator prepares the
summary of the responses of all the estimators, and also includes any unusual fact
noted by any of the estimators. The prepared summary is distributed to the
estimators. Based on this summary, the estimators re-estimate. This process is iterated
for several rounds. However, no discussion among the estimators is allowed
during the entire estimation process. After the completion of several
iterations of estimations, the coordinator prepares the final estimate.
2. Heuristic Technique:
Heuristic Techniques assume that the relationship among the different project parameters can be modeled using suitable mathematical expression. Once the basic parameters are known, the other parameters can be easily determined by substituting the value of the basic parameters in the mathematical expression.
Different
heuristic estimation models can be divided into two classes:
1. Single variable model
2. Multivariable model
Single Variable Estimation Models:
It provides
a means to estimate the desired characteristics of a problem, using some previously
estimated basic (independent) characteristic of the software product such as
its size.
A single variable estimation model takes the following form:
Estimated Parameter=c1*ed1
Here, e is a characteristic
of the software which has already been calculated.
Estimated
parameter is the dependent parameter to be
estimated. The dependent parameters to be estimated could be effort, duration,
staff size etc.
c1 and d1 are constants. The values of the constants c1 and d1 are usually
determined using data collected from past projects (historical data).
The COCOMO model
is an example of Single Variable Estimation model.
Multivariable Cost Estimation Model:
A multivariable estimation model takes the following form:
Estimated Resources=c1*e1d1
+ c2*e2d2 + …
Where e1, e2, … are the basic (independent) characteristics of
the software already estimated. c1, c2, d1, d2, are constants.
Multivariable Estimation Models are expected to give more
accurate estimate compared to the Single Variable Models, since a project
parameter is typically influenced by several independent parameters. The
independent parameters influence the dependent parameter to different extents.
This is modeled by the constants c1,c2,d1,d2......
Values of these constants are determined from historical data.
The Intermediate COCOMO Model
is an example of Multivariable Cost Estimation Model.
COCOMO Model:
COCOMO (COnstructive COst estimation
MOdel) is a
software cost estimation model proposed by Barry Boehm in 1981.
It is one of the most popularly used
software cost estimation models i.e. it estimates or predicts the effort
required for the project, total project cost and scheduled time for the project
According to the
Boehm any software development project can be classified into one of the
following three categories based on the development complexity:
1. Organic
2. Semi-detached
3. Embedded
Boehm’s
definition of organic, semidetached, and embedded systems:
1. Organic:
A
development project can be considered of organic type, if the project deals with developing a well understood
application program, the size of the development team is small, and the team
members are experienced in developing similar types of projects.
2. Semidetached:
A development
project can be considered of semidetached type, if the development team
consists of a mixture of experienced and inexperienced staff. Team members may
have limited experience on related systems but may be unfamiliar with some
aspects of the system being developed.
3. Embedded:
A development
project can be considers to be of embedded type, if the software being
developed is strongly coupled to hardware, or if a
software project developed within a set of tight hardware, software and
operational constraints (e.g., flight control software for aircraft).
According to Boehm,
software cost estimation should be done through three stages:
1. Basic
COCOMO Model
2. Intermediate
COCOMO Model
3. Complete
COCOMO Model
Basic
COCOMO Model:
Basic COCOMO can be
used for quick and slightly rough calculations of Software Costs. The basic COCOMO model gives an approximate estimate of the
project parameters. The basic COCOMO estimation model is given by the following
expressions:
Effort
= a1 × (KLOC)a2 PM
Tdev
= b1 × (Effort)b2 Months
Where,
· KLOC is the
estimated size of the software product expressed in Kilo Lines of Code,
· a1, a2, b1, b2
are constants for each category of software products,
· Tdev is the
estimated time to develop the software, expressed in months,
· Effort is the
total effort required to develop the software product, expressed in person
months (PMs).
Intermediate COCOMO Model:
Intermediate COCOMO
model is an extension of the Basic COCOMO model which includes a set of cost
drivers into account in order to enhance more accuracy to the cost estimation
model as a result.
The basic COCOMO model assumes that effort and development time are functions of the product size alone. However, a host of other project parameters besides the product size affect the effort required to develop the product as well as the development time. Therefore, in order to obtain an accurate estimation of the effort and project duration, the effect of all relevant parameters must be taken into account. The intermediate COCOMO model recognizes this fact and refines the initial estimate obtained using the basic COCOMO expressions by using a set of 15 cost drivers (multipliers) based on various attributes of software development.
In general, the cost drivers can
be classified as being attributes of the following items:
- Product: The
characteristics of the product that are considered include the inherent
complexity of the product, reliability requirements of the product, etc.
- Computer: Characteristics
of the computer that are considered include the execution speed required,
storage space required etc.
- Personnel: The
attributes of development personnel that are considered include the
experience level of personnel, programming capability, analysis
capability, etc.
- Development Environment: Development
environment attributes capture the development facilities available to the
developers. An important parameter that is considered is the
sophistication of the automation (CASE) tools used for software
development
Complete COCOMO Model:
A major shortcoming of both the basic and
intermediate COCOMO models is that they consider a software product as a single
homogeneous entity. However, most large systems are made up of several smaller
sub-systems. These sub-systems may have widely different characteristics. For
example, some sub-systems may be considered as organic type, some semidetached,
and some embedded. Not only that the inherent development complexity of the
subsystems may be different, but also for some subsystems the reliability
requirements may be high, for some the development team might have no previous
experience of similar development etc. The complete COCOMO model considers
these differences in characteristics of the subsystems and estimates the effort
and development time as the sum of the estimates for the individual subsystems.
The cost of each subsystem is estimated separately. This approach reduces the
margin of error in the final estimate
0 Comments
if you have any doubts plz let me know...