Chapter 3 Software Project Management - Part1
Chapter 3 Software Project Management - Part1
In past several projects have failure not for want of competent technical
professionals, neither for lack of resources, but due to the use of faulty project
management practices. It is important to carefully
Software Project
Cost Management Complexity: Estimating the total cost of the project is a very
difficult task and another thing is to keep an eye that the project does not overrun
the budget.
Quality Management Complexity: The quality of the project must satisfy the
customer requirements. It must assure that the requirements of the customer are
fulfilled.
Risk Management Complexity: Risks are the unanticipated things that may occur
during any phases of the project. Various difficulties may occur to identify these
risks and make amendment plans to reduce the effects of these risks.
Exactness of the Solution: A small error can create a huge problem in a software
project. The solution must be exact according to its design. The parameters of a
function call in a program are required to be correct with the function definition.
This requirement of exact conformity of the parameters of a function introduces
additional risks and increases the complexity of managing software projects.
Team-oriented and Intellect-intensive work: Software development projects are
team-oriented and intellect-intensive work. Software cannot be developed without
the interaction between developers. In a software development project, the life
cycle activities not only intellect-intensive, but each member has to typically
interact, review the work done by other members and interface with several other
team members creates various complexity to manage software projects.
Huge task regarding Estimation: One of the most important aspects of software
project management is Estimation. During project planning, a project manager has
to estimate the cost of the project, probable duration to complete the project and
how much effort needed to complete the project based on size estimation. This
estimation is a very complex task, which increases the complexity of software
project management.
A software project manager is the most important person inside a team who takes
the overall responsibilities to manage the software projects and play an important
role in the successful completion of the projects. A project manager has to face
many difficult situations to accomplish these works. In fact, the job responsibilities
of a project manager range from invisible activities like building up team morale to
highly visible customer presentations. Most of the managers take responsibility for
writing the project proposal, project cost estimation, scheduling, project staffing,
software process tailoring, project monitoring and control, software configuration
management, risk management, managerial report writing and presentation and
interfacing with clients. The task of a project manager is classified into two major
types:
Project planning
Project monitoring and control
Project planning
Project planning is undertaken immediately after the feasibility study phase and
before the starting of the requirement analysis and specification phase. Once a
project has been found to be feasible, Software project managers started project
planning. Project planning is completed before any development phase starts.
Project planning involves estimating several characteristics of a project and
then plan the project activities based on these estimations. Project planning is
done with most care and attention. A wrong estimation can result in schedule
slippage. Schedule delay can cause customer dissatisfaction, which may lead to
a project failure. For effective project planning, in addition to a very good
knowledge of various estimation techniques, past experience is also very
important.
Project monitoring and control activities are undertaken once the development
activities start. The main focus of project monitoring and control activities is to
ensure that the software development proceeds as per plan. This includes
checking whether the project is going on as per plan or not if any problem
created then the project manager must take necessary action to solve the
problem.
Three skills that are most critical to successful project management are the
following
Size is the most fundamental parameter based on which all other estimations and
project plans is made. Based on the size estimation, the effort required to complete
a project and the duration over which the development is to be carried out are
estimated. Based on the effort estimation, the cost of the project is computed. The
estimated cost forms the basis on which price negotiations with the customer is
carried out. Other planning activities such as staffing, scheduling etc. are
undertaken based on the effort and duration estimates made.
Figure : Precedence ordering among planning activities
Planning a project over a number of stages protects managers from making big
commitments at the start of the project. This technique of staggered planning is
known as sliding window planning.
In the sliding window planning technique, starting with an initial plan, the project
is planned more accurately over a number of stages.
The project size is a measure of the problem complexity in terms of the effort and
time required to develop the product. Currently, two metrics are popularly being
used to measure size—lines of code (LOC) and function point (FP). Each of these
metrics has its own advantages and disadvantages.
The implicit assumption made by the LOC metric is that the overall product
development effort is solely determined from the coding effort alone is flawed.
Even when the design or testing issues are very complex, the code size might be
small and vice versa. Thus, the design and testing efforts can be grossly
disproportional to the coding effort. Code size, therefore, is obviously an improper
indicator of the problem size.
LOC count depends on the choice of specific instructions
LOC measure correlates poorly with the quality and efficiency of the code
LOC metric penalises use of higher-level programming languages and code
reuse
LOC metric measures the lexical complexity of a program and does not address
the more important issues of logical and structural complexities
It is very difficult to accurately estimate LOC of the final program from
problem specification
The size of a software product (in units of function points or FPs) is computed
using different characteristics of the product identified in its requirements
specification. It is computed using the following three steps:
Step 1: Compute the unadjusted function point (UFP) using a heuristic
expression.
Step 2: Refine UFP to reflect the actual complexities of the different parameters
used in UFP computation.
Step 3: Compute FP by further refining UFP to account for the specific
characteristics of the project that can influence the entire development
effort.
Determine the function point measure of the size of the following supermarket
software. A supermarket needs to develop the following software to encourage
regular customers. For this, the customer needs to supply his/her residence
address, telephone number, and the driving license number. Each customer who
registers for this scheme is assigned a unique customer number (CN) by the
computer. Based on the generated CN, a clerk manually prepares a customer
identity card after getting the market manager’s signature on it. A customer can
present his customer identity card to the check out staff when he makes any
purchase. In this case, the value of his purchase is credited against his CN. At
the end of each year, the supermarket intends to award surprise gifts to 10
customers who make the highest total purchase over the year. Also, it intends to
award a 22 carat gold coin to every customer whose purchase exceeded Rs.
10,000. The entries against the CN are reset on the last day of every year after
the prize winners’ lists are generated. Assume that various project characteristics
determining the complexity of software development to be average.
Answer:
Step 1:
From an examination of the problem description, we find that there are two
inputs, three outputs, two files, and no interfaces. Two files would be required,
one for storing the customer details and another for storing the daily purchase
records. Now, using equation 3.1, we get:
UFP = 2 × 4 + 3 × 5 + 1 × 4 + 10 × 2 + 0 × 10 = 47
Step 2:
All the parameters are of moderate complexity, except the output parameter of
customer registration, in which the only output is the CN value. Consequently,
the complexity of the output parameter of the customer registration function can
be categorized as simple. By consulting Table 3.1, we find that the value for
simple output is given to be 4. The UFP can be refined as follows:
UFP = 3 × 4 + 2 × 5 + 1 × 4 + 10 × 2 + 0 × 10 = 46
Therefore, the UFP will be 46.
Step 3:
Since the complexity adjustment factors have average values, therefore the total
degrees of influence would be: DI = 14 × 4 = 56
Heuristic techniques assume that the relationships that exist among the different
project parameters can be satisfactorily modelled using suitable mathematical
expressions. Once the basic (independent) parameters are known, the other
(dependent) parameters can be easily determined by substituting the values of the
independent parameters in the corresponding mathematical expression. Different
heuristic estimation models can be divided into the following two broad categories
—single variable and multivariable models.
Empirical estimation techniques are easy to use and give reasonably accurate
estimates. Two popular empirical estimation techniques are—Expert judgement
and Delphi estimation techniques.
Expert Judgement
Heuristic Techniques
Single variable estimation models assume that various project characteristic can be
predicted based on a single previously estimated basic (independent) characteristic
of the software such as its size. A single variable estimation model assumes that
the relationship between a parameter to be estimated and the corresponding
independent parameter can be characterised by an expression of the following
form:
Estimated Parameter = c1* ed1
In the above expression, e represents a characteristic of the software that has
already been estimated (independent variable). Estimated Parameter is the
dependent parameter (to be estimated). The dependent parameter to be estimated
could be effort, project 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 discussed later is an example
of a single variable cost estimation model.
Where, p1, p2, ... are the basic (independent) characteristics of the software already
estimated, and c1, c2, d1, d2, .... are constants. Multivariable estimation models are
expected to give more accurate estimates 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 modelled by the different sets of constants c1, d1 , c2 ,
d2 , .... Values of these constants are usually determined from an analysis of
historical data. The intermediate COCOMO model discussed later can be
considered to be an example of a multivariable estimation model.