Software Project Study Material
Software Project Study Material
LECTURE # 1
The art of planning for the future has always been a human trait. In essence a
project can be captured on paper with a few simple elements: a start date, an end
date, the tasks that have to be carried out and when they should be finished, and
some idea of the resources (people, machines etc) that will be needed during the
course of the project.
Project management is also defined as a strategic competency that has successfully been
applied in such high profile projects as the construction of silk root, organizing and managing the
Olympics Games, and the construction of Islamabad-Lahore motorway, just to name a few. If
project management can play a major role in these success stories, just imagine what it might be
able to do for your own organization.
1
Software Project Management (CS615)
Almost any human activity that involves carrying out a non- repetitive task
can be a project. So we are all project managers! We all practice project
management (PM). But there is a big difference between carrying out a very
simple project involving one or two people and one involving a complex mix of
people, organizations and tasks.
When the plan starts to involve different things happening at different times, some
of which are dependent on each other, plus resources required at different times
and in different quantities and perhaps working at different rates, the paper plan
could start to cover a vast area and be unreadable.
The original programs and computers tended to produce answers long after an
event had taken place. Now, there are many project planning and scheduling
programs that can provide real time information, as well as linking to risk
analysis, time recording, and costing, estimating and other aspects of project
control.
But computer programs are not project management: they are tools for
project managers to use. Project management is all that mix of components of
control, leadership, teamwork, resource management etc that goes into a
successful project.
Project managers can be found in all industries. Their numbers have grown
rapidly as industry and commerce has realized that much of what it does is project
work. And as project-based organizations have started to emerge, project
management is becoming established as both a professional career path and a way
of controlling business.
2
Software Project Management (CS615)
Projects are undertaken at all levels of the organization. They may involve a
single person or many thousands. Their duration ranges from a few weeks to more
than five years. Projects may involve a single unit of one organization or may
cross organizational boundaries, as in joint ventures and partnering.
1. Temporary
Temporary means that every project has a definite beginning and a definite end.
The end is reached when the project’s objectives have been achieved, or it
becomes clear that the project objectives will not or cannot be met, or the need for
the project no longer exists and the project is terminated. Temporary does not
necessarily mean short in duration; many projects last for several years. In every
case, however, the duration of a project is finite; projects are not ongoing efforts.
3
Software Project Management (CS615)
The presence of repetitive elements does not change the fundamental uniqueness
of the project work. For example:
3. Aims/Tasks/Purpose
The projects are designed to achieve specific targets defined in terms of aims,
tasks or a purpose. The nature and size of the project depends upon
complexity of the task, realization of the aims and scope of the purpose any
organization wants to achieve. In short project has to be aimed for achieving
certain tasks in a given time frame.
Progressive, Elaboration
Progressive elaboration is a characteristic of projects that accompanies the
concepts of temporary and unique. “Progressively” means developing thoroughly
in steps, and continuing steadily by increments while elaborated means “worked
out with care and detail; developed thoroughly”
For example, the project scope will be broadly described early in the project, and
made more explicit and detailed as the project team develops a better and more
complete understanding of the objectives and deliverables.
5
Software Project Management (CS615)
LECTURE # 2
1. Temporary
Temporary means that every project has a definite beginning and a definite end.
The end is reached when the project’s objectives have been achieved, or it
becomes clear that the project objectives will not or cannot be met, or the need for
the project no longer exists and the project is terminated. Temporary does not
necessarily mean short in duration; many projects last for several years. In every
case, however, the duration of a project is finite; projects are not ongoing efforts.
6
Software Project Management (CS615)
The presence of repetitive elements does not change the fundamental uniqueness
of the project work. For example:
5. Aims/Tasks/Purpose
The projects are designed to achieve specific targets defined in terms of aims,
tasks or a purpose. The nature and size of the project depends upon
complexity of the task, realization of the aims and scope of the purpose any
organization wants to achieve. In short project has to be aimed for achieving
certain tasks in a given time frame.
• The project must be organized in a manner that enables the software team to
succeed.
Effective software project management focuses on the four P’s: people, product,
process, and project. The order is not arbitrary. The manager who forgets that
software engineering work is an intensely human endeavor will never have
Success in project management. A manager who fails to encourage
comprehensive customer communication early in the evolution of a project risks
building an elegant solution for the wrong problem. The manager who pays little
attention to the process runs the risk of inserting competent technical methods and
tools into a vacuum. The manager who embarks without a solid project plan
jeopardizes the success of the product.
⇒ People
VP 1: I guess if you had to pick one thing out that is most important in our
environment. I’d say it’s not the tools that we use, it’s the people.
VP 2: The most important ingredient that was successful on this project was
having smart people…very little else matters in my opinion....The most
important thing you do for a project is selecting the staff...The success of the
software development organization is very, very much associated with the
ability to recruit good people.
VP 3: The only rule I have in management is to ensure I have good people –
real good people-and that I grow good people – and that I provide an
environment in which good people can produce.
1. The Players
1. Senior managers who define the business issues that often have
significant influence on the project.
8
Software Project Management (CS615)
Who interact with the software once it is released for production use.
Every software project is populated by people who fall within this
taxonomy. To be effective, the project team must be organized in a way
that maximizes each person’s skills and abilities. And that’s the job of the
team leader.
3. Team Leaders
⇒ The Process
9
Software Project Management (CS615)
Software engineers and their managers adapt the process to their needs and
then follow it. In addition, the people who have ties defined by the process
requested the software play a role in the software process.
At a detailed level, the process that you adopt depends on the software you’re
building. One process might be appropriate for creating software for an
aircraft avionics system, while an entirely different process would be
indicated for the creation of a web site.
From the point of view of a software engineer, the work products are the
programs, documents and data produces as a consequence of the software
engineering activities defined by the process.
10
Software Project Management (CS615)
LECTURE # 3
– The 80:20, rule was originated by Vilfredo Pareto, an Italian economist who
studies the distribution of wealth in a variety of countries around 1900. He
discovered a common phenomenon: about 80% of the wealth in most countries
was controlled by a consistent minority -- about 20% of the people. Pareto called
this a "predictable imbalance." His observation eventually became known as
either the "80:20 rule" or "Pareto's Principle."
The credit for adapting Pareto's economic observations to business goes to the
"Father of Total Quality Management," service quality consultant Joseph M.
Juran. In 1950, he published "The Quality Control Handbook," which first
recognized the applicability of the Pareto principle in the context of inventory
management, e.g.:
• 20% of the repair parts normally account for 80 percent of the total
inventory
• 80% of production volume usually comes from 20% of the producers
The "80:20 rule" has become one of the best known "leadership shorthand terms"
reflecting the notion that most of the results (of a life, of a program, of a financial
campaign) come from a minority of effort (or people, or input).
The Rule, states that a small number of causes (20%) is responsible for a large
percentage (80%) of the effect. It means that in anything a few (20 percent) are
vital and many (80 percent) are trivial.
There is an inherent imbalance between cause and effect, effort and reward, inputs
and outputs, etc; and that imbalance tends to the ratio of 80:20. So, if we know
which 20% of our work produces 80% of our income, we can do more of it and
our income will increase proportionately!
11
Software Project Management (CS615)
You know 20 percent of you stock takes up 80 percent of your warehouse space
and that 80 percent of your stock comes from 20 percent of your suppliers. Also
80 percent of your sales will come from 20 percent of your sales staff. 20 percent
of your staff will cause 80 percent of your problems, but another 20 percent of
your staff will provide 80 percent of your production. It works both ways.
Some Sample 80/20 Rule Applications
– The value of the Pareto Principle for a manager is that it reminds you to focus on
the 20 percent that matters. Of the things you do during your day, only 20 percent
really matter. Those 20 percent produce 80 percent of your results. Identify and
Characteristic
focus on those things. When the fire drills of the day begin to sap your time,
remind yourself of the 20 percent you need to focus on. If something in the
schedule has to slip, if something isn't going to get done, make sure it's not part of
that 20 percent.
Pareto's Principle, the 80/20 Rule, should serve as a daily reminder to focus 80
percent of your time and energy on the 20 percent of you work that is really
important. Don't just "work smart", work smart on the right things.
– Size
The larger product, there will be more requirements and features to deliver,
eventually it will take more time in its production. So if you cut the size of the
produce to half it will save you 60% of the effort.
– Characteristic
– Development Tools
12
Software Project Management (CS615)
Value of products
Total value
Value of services +
Personal value
Real value to
Image value the customer
-
Financial cost
Total costs
Time cost
Energy cost
Psychical cost
Organizations performing projects will usually divide each project into several
Project phases to improve management control and provide for links to the
ongoing operations of the performing organization.
Collectively, the project phases are known as the project life cycle. Software
development, just like most other activities, has a beginning, middle and an end.
⇒ Initiation
Articulate your vision for the project, establish goals, assemble your team,
and define expectations and the scope of your project.
⇒ Planning
Refine the scope, identify specific tasks and activities to be completed,
and develop a schedule and budget.
⇒ Executing
Accomplish your goals by leading your team, solving problems, and
building your project.
13
Software Project Management (CS615)
⇒ Controlling
Monitor changes to the project make corrections, adjust your schedule to
respond to problems, or adjust your expectations and goals.
⇒ Closing
Deliver your project to your audience, acknowledge results, and assess its
success. Take the time to compose a written evaluation of the project and
the development effort.
The middle three phases are not sequential. You will find that you are constantly
planning, executing, and controlling your project as necessary.
Aren't these phases really just common sense? In many ways, yes, but keep in
mind that software development, whether a few Web pages or a complex CD-
ROM, is a complex, unpredictable process.
The project life cycle serves to define the beginning and the end of a project. For
example, when an organization identifies an opportunity to which it would like to
respond, it will often authorize a needs assessment and/or a feasibility study to
decide if it should undertake a project. The project life-cycle definition will
determine whether the feasibility study is treated as the first project phase or as a
separate, standalone project.
14
Software Project Management (CS615)
The project life-cycle definition will also determine which transitional actions at
the beginning and the end of the project are included and which are not. In this
manner, the project life-cycle definition can be used to link the project to the
ongoing operations of the performing organization.
The phase sequence defined by most project life cycles generally involves some
form of technology transfer or handoff such as requirements to design,
construction to operations, or design to manufacturing. Deliverables from the
preceding phase are usually approved before work starts on the next phase.
However, a subsequent phase is sometimes begun prior to approval of the
previous phase deliverables when the risks involved are deemed acceptable. This
practice of overlapping phases is often called fast tracking.
What technical work should be done in each phase (e.g., is the work of the
architect part of the definition phase or part of the execution phase?).
Who should be involved in each phase (e.g., implementers who need to be
involved with requirements and design).
Project life-cycle descriptions may be very general or very detailed. Highly
detailed descriptions may have numerous forms, charts, and checklists to
provide structure and consistency. Such detailed approaches are often called
project management methodologies.
Cost and staffing levels are low at the start, higher toward the end, and drop
rapidly as the project draws to a conclusion.
The probability of successfully completing the project is lowest, and hence
risk and uncertainty are highest, at the start of the project. The probability of
successful completion generally gets progressively higher as the project
continues.
The ability of the stakeholders to influence the final characteristics of the
project’s product and the final cost of the project is highest at the start and
gets progressively lower as the project continues. A major contributor to this
phenomenon is that the cost of changes and error correction generally
increases as the project continues.
Care should be taken to distinguish the project life cycle from the product life
cycle. For example, a project undertaken to bring a new desktop computer to
market is but one phase or stage of the product life cycle.
Although many project life cycles have similar phase names with similar
deliverables required, few are identical. Most have four or five phases, but some
15
Software Project Management (CS615)
have nine or more. Even within a single application area, there can be significant
variations.
One organization’s software development life cycle may have a single design
phase while another’s has separate phases for functional and detail design.
Subprojects within projects may also have distinct project life cycles. For
example, an architectural firm hired to design a new office building is first
involved in the owner’s definition phase when doing the design, and in the
owner’s implementation phase when supporting the construction effort. The
architect’s design project, however, will have its own series of phases from
conceptual development through definition and implementation to closure. The
architect may even treat designing the facility and supporting the construction as
separate projects with their own distinct phases.
A. Concept Phase
1. User Need
2. Initial Investigation
3. User Review
4. System Performance Design
5. Candidate Review
6. Study Phase Report
B. Requirements Phase
1. The software requirements specification document
2. The project development plan
3. The software test plan
C. Design Phase
1. General System Review
2. Processing Requirements Identification
3. Data Base Design
4. Control Requirements
5. Output Design
6. Input Design
7. Software Selection
8. Equipment Selection/Acquisition
9. People
10. Reference Manual Identification
11. Plans
12. Design Specifications Preparation
13. Design Phase Report Preparation
D. Development Phase
16
Software Project Management (CS615)
1. Implementation Planning
2. Computer Program Design
3. User Review
4. Equipment Acquisition and Installation
5. Coding and Debugging
6. Computer Program Testing
7. System Testing
8. Reference Manual Preparation
9. Personnel Training
10. Changeover Plan Preparation
11. Development Phase Report Preparation
12. User Acceptance Review
E. Operation Phase
1. System Changeover
2. Routine Operation
3. System Performance Evaluation
4. System Changes/Enhancements
Software development, just like most other activities, has a beginning, middle and
an end. The end of one development activity is sometimes perceived as being
linked to the beginning of a new development activity thus producing a cycle of
beginning-middle-end, link, beginning-middle-end, link, and so forth. This view
of software development is referred to as the software development life cycle.
There are many variations of the software development life cycle. Figure 1
presents a simple life cycle that was common during the first few decades of
software development. In those early days of software development, the
programmer would create programs by iterating from code to fix then back to
code, and then to fix again, until something acceptable was (hopefully) produced.
At the start of the cycle, there was usually no clear concept of what was required,
and the basic development procedure was a form of 'let's see what we can do'
approach.
The numbers in Table 1 are derived from the general shift in emphasis to software
planning (requirements and design) and testing. Commercial data processing
systems, with some exceptions, still spend a significant amount of development
time in the programming and unit testing phase. Real-time systems are often more
complex, and may include extensive hardware software integration. This usually
requires more planning and more integration and testing.
Table 1 Estimated percentage of time spent in each major software development phase
Military systems require high reliability and are usually closely supervised by the
customer, leading to a significant increase in the time spent in planning.
Figure 2 presents the basic phased model of a software development cycle. This
model, called the Waterfall model, gets its name from the way in which each
phase cascades into the next (due to overlapping), as demonstrated in Fig. 3.
Some interpretations of the Waterfall model, like the one that follows, combine
the top level design and the detailed design phases into a single design phase, and
the integration and test phases into a single phase. In fact, there are many
variations of the classic Waterfall model, but they are all based upon a systematic
transition from one development phase to the next, until the project is complete.
18
Software Project Management (CS615)
Conception
Maintenance Software
Requirements
Test
Top level
Design
Integration Detailed
Design
Implementation
Conception
Software requirements
Detailed design
Implementation
Integration
Test
Maintenance
T
Figure 3: The Waterfall model of the software development life cycle
⇒ Rapid prototyping There are other development methodologies that do not move
from one phase to the next like the Waterfall model. Rapid prototyping, for
19
Software Project Management (CS615)
Different models maybe suitable for different software projects or for different
software development organizations However, a good model must include certain
fundamental features. Some of these basic requirements are discussed in IEEE
Standard (IEEE 1993) Standard for Software Life Cycle Processes. This standard
describes the processes that are mandatory for the development of software and
specifies the activities that must be included in the life cycle model.
Most modern software development models, and certainly those following IEEE
Standard 1074, include some form of the basic phased model. It is therefore
important to understand the different phases and how they relate to one another.
20
Software Project Management (CS615)
LECTURE # 4
Project Cost Management includes the processes required to ensure that the
project is completed within the approved budget.
These processes interact with each other and with the processes in the other
knowledge areas as well.
Each process may involve effort from one or more individuals or groups of
individuals, based on the needs of the project.
Although the processes are presented here as discrete elements with well-defined
interfaces, in practice they may overlap and interact in ways not detailed here.
Project cost management is primarily concerned with the cost of the resources
needed to complete project activities.
However, project cost management should also consider the effect of project
decisions on the cost of using the project’s product.
For example, limiting the number of design reviews may reduce the cost of the
project at the expense of an increase in the customer’s operating costs. This
broader view of project cost management is often called life-cycle costing. Life-
cycle costing together with Value Engineering techniques are used to reduce cost
and time, improve quality and performance, and optimize the decision-making.
21
Software Project Management (CS615)
In others (e.g., capital facilities projects), project cost management also includes
this work. When such predictions and analyses are included, project cost
management will include additional processes and numerous general management
techniques such as return on investment, discounted cash flow, payback analysis,
and others.
Project cost management should consider the information needs of the project
stakeholders—different stakeholders may measure project costs in different ways
and at different times. For example, the cost of a procurement item may be
measured when committed, ordered, delivered, incurred, or recorded for
accounting purposes.
⇒ What is a Program?
It can be argued that Program Management has evolved from the complexities of
the more intricate aspects of Project Management.
– Mission:
22
Software Project Management (CS615)
– Goals:
23
Software Project Management (CS615)
Each of the goals would then be analyzed for providing objectives. For example:
gets paid into the company’s bank account thereby increasing cash flow which
is achieving one of the company’s objectives.
Sometimes the projects are much more directly aimed at corporate goals -
opening a new factory or launching a new product - spring to mind.
The common elements of the projects are that they run simultaneously or at
least overlap with each other, they share resources and are supposed to
generate some income. One project being cancelled does not necessarily
change the organization’s general direction. These types of programs run for
ever and need have no end date. The projects are separate in that there need
not be logical links between projects. Whilst they share the same resources,
delays in one project need not cause delays in others.
The USA’s Man on the Moon Project was such a program. In this sense the
term program indicates one very large project which is made up from a
number of components. Within the Apollo program there were many projects:
the Lunar Lander, the Orbiter, the Launcher and the Control Systems were all
projects which were large, complex and interesting. Polaris and the
Manhattan project (which resulted in the nuclear bomb) are other famous
projects large enough to be called programs. Therefore, particularly in USA,
the word program refers to a series of projects which make up one large
project.
These sorts of programs end. There will be a time when the overall objective
has been achieved and the program and all of its constituent projects are over.
The projects within this type of program are often linked. Delays with one
project often cause knock on effects with others due to logical links between
tasks in both projects.
For example if the moon rocket launch pad project was delayed, it would
delay the testing of the moon rocket itself. The Beirut Shopping Mall will be
of little use without the water treatment plant and the new sewer scheme. Such
25
Software Project Management (CS615)
projects may not share the same resources but there are almost certain to be
linked through their logic.
Project success is correlated with thorough analyses of the need for project
deliverables. Our research has shown that when a project results in deliverables
that are designed to meet a thoroughly documented need, then there is a greater
likelihood of project success. So managers should insist that there is a
documented business need for the project before they agree to consume
organizational resources in completing it.
We conduct planned and controlled software projects for one primary reason - it
is the only known way to manage complexity. And yet, we still struggle. In 1998,
industry data indicated that 26 percent of software projects failed outright and 46
percent experienced cost and schedule overruns [REE99].
Although the success rate for software projects has improved somewhat, our
project failure rate remains higher than it should be.
In order to avoid project failure, a software project manager and the software
engineers who build the product must avoid a set of common warning signs,
understand the critical success factors that lead to good project management, and
develop a common sense approach for planning, monitoring and controlling the
project.
Jaded industry professionals often refer to the 90-90 rule when discussing
particularly difficult software projects: The first 90 percent of a system absorbs 90
percent of the allotted effort and time. The last 10 percent takes the other 90
26
Software Project Management (CS615)
percent of the allotted effort and time [ZAH94]. The seeds that lead to the 90-90
rule are contained in the signs noted in the preceding list.
But enough negativity! How does a manager act to avoid the problems just noted?
Reel [REE99] suggests a five-part commonsense approach to software projects:
1. Start on the right foot. This is accomplished by working hard (very hard)
to understand the problem that is to be solved and then setting realistic
objects and expectations for everyone who will be involved in the project.
It is reinforced by building the right team (Section 3.2.3) and giving the
team the autonomy, authority, and technology needed to do the job.
2. Maintain momentum. Many projects get off to a good start and then
slowly disintegrate. To maintain momentum, the project manager must
provide incentives to keep turnover of personnel to an absolute minimum,
the team should emphasize quality in every task it performs, and senior
management should do everything possible to stay out of (the team's way.
3. Track progress. For a software project, progress is tracked as work
products (e.g., specifications, source code, sets of test cases) are produced
and approved (using formal technical reviews) as part of a quality
assurance activation, software process and project measures can be
collected and used to assess progress against averages developed for the
software development organization.
4. Make smart decisions. In essence, the decisions of the project manager
and the software team should be to "keep it simple.” Whenever possible,
decide to use commercial off-the-shelf software or existing software
components, decide to avoid custom interfaces when standard approaches
are available, decide to identify and then avoid obvious risks, and decide
to allocate more time than you think is needed to complex or risky tasks
(you'll need every minute).
5. Conduct a postmortem analysis. Establish a consistent mechanism for
extracting lessons learned for each project. Evaluate the planned and
actual schedules, collect and analyze software project metrics, get
feedback from team members and customers, and record findings in
written form.
No project ever goes 100% as planned, so project managers must learn to adapt to
change. There are many things that can go wrong with project management.
These are commonly called barriers. Here are some possible barriers:
1. Poor Communication
– Many times a project may fail because the project team does not
know exactly what to get done or what's already been done.
2. Disagreement
Good project management deals with three factors: time, cost and
performance.
Projects are successful if they are completed on time, within budget, and to
performance requirements. In order to bring the many components of a large
project into control there is a large toolkit of techniques, methodologies, and
tools.
28
Software Project Management (CS615)
– Project scope
– Time and
– Cost
High quality projects deliver the required product or service within scope, on
time and within budget.
The relationship among these factors is such that if any one of the three
factors changes, at least one other factor must change.
Simply put: project success means completing all project deliverables on time,
within budget, and to a level of quality that is acceptable to sponsors and
stakeholders.
The project manager must keep the team's attention focused on achieving
these broad goals. Most people still want their projects to be on time, meet
quality objectives, and not cost more than the budget. These form the classic
time, quality, cost triangle.
29
Software Project Management (CS615)
More recently, this has given way to a project management diamond, with
time, cost, scope and quality the four vertices and customer expectations as a
central theme. No two customers' expectations are the same so you must ask
what their expectations are.
30
Software Project Management (CS615)
(a) Leadership
(b) Communications
(c) Problem Solving
(d) Negotiating
(e) Influencing the Organization
(f) Mentoring
(g) Process and technical expertise
(a) Leadership
31
Software Project Management (CS615)
(b) Communicating
Few skills are more vital to leadership. Studies show that good leaders
communicate feelings and ideas, actively solicit new ideas from others,
and effectively articulate arguments, advocate positions, and persuade
others.
The general management skill of communicating is related to, but not the
same as, Project Communications Management.
(c) Negotiating
Negotiations occur around many issues, at many times, and at many levels
of the project.
There are three steps involved in this important leadership role; identifying
problem; analyzing its cause; and solving the problem.
(e) Decision-making
Decisions can be made or obtained (from the customer, from the team, or
from a functional manager).
Decisions also have a time element to them—the “right” decision may not
be the “best” decision if it is made too early or too late.
34
Software Project Management (CS615)
Both power and politics are used here in their positive senses.
The negative sense, of course, derives from the fact that attempts to
reconcile these interests result in power struggles and organizational
games that can sometimes take on a thoroughly unproductive life of their
own.”
(g) Mentoring
Leaders attempt to engage the full person of the subordinate and enthuse
them. They arouse in their subordinates a heightened awareness of the key
issues for the group or the organization. They seek to concern subordinates
with achievement, growth and development.
35
Software Project Management (CS615)
36
Software Project Management (CS615)
LECTURE # 5
Project Integration Management includes the processes required to ensure that the
various elements of the project are properly coordinated. It involves making
tradeoffs among competing objectives and alternatives to meet or exceed stake-
holder needs.
These processes interact with each other and with the processes in the other
knowledge areas as well. Each process may involve effort from one or more
individuals or groups of individuals, based on the needs of the project. Each
process generally occurs at least once in every project phase.
Project integration management comes into play when a cost estimate is needed
for a contingency plan, or when risks associated with various staffing alternatives
must be identified. However, for a project to be completed successfully,
integration must also occur in a number of other areas as well. For example:
The work of the project must be integrated with the ongoing operations of the
performing organization.
Product scope and project scope must be integrated.
One of the techniques used to both integrate the various processes and to measure
the performance of the project as it moves from initiation through to completion is
Earned Value Management (EVM).
37
Software Project Management (CS615)
Project Scope Management includes the processes required to ensure that the
project includes all the work required, and only the work required, to complete the
project successfully. It is primarily concerned with defining and controlling what
is or is not included in the project.
The processes, tools, and techniques used to manage product scope vary by
application area and are usually defined as part of the project life cycle
A project generally results in a single product, but that product may include
subsidiary components, each with its own separate but interdependent product
scopes. For example, a new telephone system would generally include four
subsidiary components—hardware, software, training, and implementation.
Completion of the project scope is measured against the project plan, but
completion of the product scope is measured against the product requirements.
Both types of scope management must be well integrated to ensure that the work
of the project will result in delivery of the specified product.
These processes interact with each other and with the processes in the other
knowledge areas as well. Each process may involve effort from one or more
individuals or groups of individuals, based on the needs of the project. Each
process generally occurs at least once in every project phase.
38
Software Project Management (CS615)
Project Cost Management includes the processes required to ensure that the
project is completed within the approved budget.
These processes interact with each other and with the processes in the other
knowledge areas as well. Each process may involve effort from one or more
individuals or groups of individuals, based on the needs of the project. Each
process generally occurs at least once in every project phase.
Project Quality Management includes the processes required to ensure that the
project will satisfy the needs for which it was undertaken. It includes “all
activities of the overall management function that determine the quality policy,
objectives, and responsibilities and implements them by means such as quality
planning, quality assurance, quality control, and quality improvement, within the
quality system.
These processes interact with each other and with the processes in the other
knowledge areas as well. Each process may involve effort from one or more
individuals or groups of individuals, based on the needs of the project. Each
process generally occurs at least once in every project phase.
Project quality management must address both the management of the project and
the product of the project. The generic term product is occasionally used, in
literature regarding quality, to refer to both goods and services.
39
Software Project Management (CS615)
These processes interact with each other and with the processes in the other
knowledge areas as well. Each process may involve effort from one or more
individuals or groups of individuals, based on the needs of the project.
40
Software Project Management (CS615)
These processes interact with each other and with the processes in the other
knowledge areas as well. Each process may involve effort from one or more
individuals or groups of individuals, based on the needs of the project.
These processes interact with each other and with the processes in the other
knowledge areas as well. Each process may involve effort from one or more
individuals or groups of individuals, based on the needs of the project. Each
process generally occurs at least once in every project phase.
These processes interact with each other and with the processes in the other
knowledge areas. Each process generally occurs at least once in every project.
These processes interact with each other and with the processes in the other
knowledge areas as well. Each process may involve effort from one or more
individuals or groups of individuals, based on the needs of the project
42
Software Project Management (CS615)
The seller will typically manage its work as a project. In such cases:
The buyer becomes the customer, and is thus a key stakeholder for the seller.
The seller’s project management team must be concerned with all the
processes of project management, not just with those of this knowledge area.
The terms and conditions of the contract become a key input to many of the
seller’s processes. The contract may actually contain the input (e.g., major
deliverables, key milestones, cost objectives), or it may limit the project
team’s options (e.g., buyer approval of staffing decisions is often required on
design projects).
43
Software Project Management (CS615)
LECTURE # 6
Note that the influence can be exercised in a: variety of ways. It may be the
'bridge to engine room' approach, where the leader commands and controls. Or
the influence can be exercised by guiding and facilitating the group's behavior so
that the goal is accomplished. The notion of reciprocity is also part of man
definitions. Influencing is often two ways. Leaders may influence followers, but
followers influence leaders to lead in one way rather than another. An influencing
style appropriate for checkout assistant in a supermarket may be different from
that appropriate for rock scientists. The choice is open to the leader of how to
influence is one of the key aspects investigated by leadership researchers.
Another aspect of leadership is that the right to lead is often voluntarily conferred
on the leader by some or all members of the group. A group of friends may
recognize one, of their group as the leader, in the sense that she influences the
group more than any of the other members. There also may be informal leader.
While the nominal head of a department may have the formal leadership position,
the real leadership may be exercised by someone lower down the hierarchy who
influences the group towards goals that may not be those that the organization
whishes to be pursue.
Finally, leadership implies that a leader motivates the group to spend energy
in attaining the goals of the group. Influence without change or movement isn’t
influence. Leaders make change happen, a difficult but vitally important task.
44
Software Project Management (CS615)
What they meant by this is that leadership is about having a vision. It involves
having a strategy or thinking strategically; it means having a view of where the
organization should go or be or do; it means deciding what is important for the
success of the organization; it involves envisaging the future, A leader's
responsibility is to think what are the key criteria for success of his or her part of
the business and not just now but for the future.
Managers, on the other hand, are more concerned with implementing others
strategies and plans, They are concerned with running their part of the
organization, making sure that the accounts get prepared, that invoices are sent
out, that the service is sold, that the traffic is directed, that the research paper is
written, or whatever the task that needs to be done.
A very similar view is put forward by Kotter (1990). He argues that management
is concerned with activities which are designed to produce 'consistency and order',
whereas leadership is concerned with, 'constructive or adaptive change'. Kotter
says there are four major ways that management and leadership differ:
towards the vision. It means appealing to their needs and values so that they
overcome barriers to change.
4. Outcomes: predictability and order, or change. Management produces
predictability and order so that others, such as customers or shareholders can
rely on consistent results. Leadership produces change that is often a quantum
leap, such as new products or new approaches to managing people, that makes
the organization more competitive.
Kirkpatrick and Locke (1991) suggest that the following traits distinguish
leaders from non-leaders:
They point out, though, that there is much more to being an effective leader than
merely possessing a list of traits. While the traits may provide people with the
potential for leadership, it is the capacity to create a vision and implement it that
turns the potential into reality.
Strong leadership motivation may sound an obvious trait for a leader. After all,
only those who want the weighty responsibilities and grueling pressures of
leadership are likely to strive for it. McClelland (1985) distinguishes between two
types of power motivation. On the one hand, leaders may be interested in
personalized power, which describes the motivation of leaders who "seek power
for its own sake, who wish to dominate others and are often concerned with the
status and trappings of power. The late Robert Maxwell, former owner of the
Mirror Group allegedly displayed such traits. On the other hand, leaders who
show socialized power motivation are more interested in cooperating with others
to achieve desired goals. They work with others rather than attempting to
dominate or control them. From the point of view of subordinates and the
organization as a whole, the leader motivated by socialized power is obviously
preferable. On the question of cognitive ability; leaders must be able to gather,
integrate and interpret large amounts of information. Many
Many researchers have pointed out that it is not necessary to be brilliant, though;
leadership effectiveness is helped by above average intelligence, not genius. Of
Kirkpatrick and Locke’s six characteristics, some would argue that drive and
persistence are much more important than intelligence.
of traits which distinguish leaders from others, and a clear distinction between
effective and ineffective leaders has not yet emerged.
Managerial identity
A good project manager must take charge of the project. She must have the
confidence to assume control when necessary and the assurance to allow good
technical people to follow their instincts.
Achievement
To optimize the productivity of a project team, a manager must reward initiative
and accomplishment and demonstrate through his own actions that controlled risk
taking will not be punished.
47
Software Project Management (CS615)
Most projects are organized as teams, with each team assigned specific
functions within the project, Different types of project require different
types of team structure, as for example a team of junior programmers
requires a technical team leader while a team of experts may require only
an administrative team leader. It is the project manager's responsibility to
select the structure best suited for the project.
Delegation
1
Supervision
2
Authority Responsibility
3 4
There are many ways to organize a software project. The larger the project
the more critical the organizational structure becomes. Badly organized
projects breed confusion, and confusion leads to project failure. Figure 2
describes the basic structure of a project in which below the project
manager are just two general functions: development and support. This
very basic software project structure was not uncommon in the 1950s and
1960s. It is still a valid project structure for very small projects (up to five
developers), though occasionally it can still be found today in larger
projects.
48
Software Project Management (CS615)
Project
Project Project
development support
Project
manager
Deputy Secretary
project
manager
49
Software Project Management (CS615)
Project
manager
Team 3 Team 3
Project managers are just two general functions: development and support. This very
basic software project structure was not uncommon in the 1950s and 1960s. It is a project
structure for very small projects (up to five developers). Though occasionally, it can still
be found today in larger projects.
Figure 3 describes a detailed organizational chart including all major support functions.
This organizational structure is suitable for large projects (with a staff exceeding 20).
Smaller projects may not require a deputy project manager or separate configuration
control and quality assurance groups.
Very large projects (exceeding a staff of 40) can often be managed more easily by
dividing the project into sub-projects. Figure 4 presents the organizational chart for a
large project. This chart includes both software and hardware development teams, and an
integration group that is responsible for hardware/software integration as well as
integration within each group.
As an example, consider the organization of a large satellite project. The project manager
is in fact responsible for a number of projects: the ground control station, the rocket and
the satellite itself. The software for all of these sub-projects is managed within a single
project office. Each sub-project is then managed by a sub-project manager. An
organizational chart similar to the one described in Fig. 4 can be applied to the satellite
project; the resulting chart is described in Fig. 5.
50
Software Project Management (CS615)
Satellite
PM
Sub-project Secretary
Coordinator
Team 3 Team
3
Configuration
Control
Clearly the project's organizational structure is dependent on the type of project being
developed. Some of the issues that must be considered are:
– Project size: the larger the project, the more important the organization. Large
projects have significant human communications and coordination overhead, and
therefore require more support functions.
– Hardware/software development projects. The simultaneous development of
hardware and software is not easy. Planning, integration and testing are much
more complicated, and require dedicated support groups.
– High reliability systems. Any system that is sensitive to issues of reliability (such
as military or life-saving systems) requires a major effort in quality assurance.
Quality is also an important consideration in many marketable software products
(e.g. communications packages). These types of project require a separate quality
assurance organization.
51
Software Project Management (CS615)
Corporate structure usually dictates one of two basic types of project organization:
matrix or pyramid. Figure 5 describes the structure of a matrix organization (compare
this to the pyramid structure in Fig. 4). Within a corporate matrix organization, the
project manager manages the technical activities of the project staff, while his or her
involvement in non-technical personnel issues (e.g. salary reviews, promotion, and
training) is minimal.
⇒ Matrix Structure
Think of the functional structure. Imagine if you took someone from each of the
major functions in the functional structure (the boxes along the bottom of the
organization chart), e.g., people from sales, engineering, etc., and organized them into
a separate group intended to produce and sell one certain kind of product or service.
Members of this group stay together until that product is produced or they continue to
sell and service it. This overall structure (made up of a functional structure that also
has groups assigned to products) is a matrix structure. This structure is useful because
it focuses highly skilled people from across the organization to work on a complex
product or service. It can be difficult though, because each person essentially reports
to two supervisors: the supervisor of the functional area (e.g., engineering) and the
product manager, as well. When the organization needs constant coordination of its
functional activities, then lateral relations do not provide sufficient integration.
Consider the matrix structure. To adopt the matrix structure effectively, the
organization should modify many traditional management practices.
project manager role is more that of a coordinator or expediter than that of a manager.
In similar fashion, strong matrices have many of the characteristics of the projectized
organization—full-time project managers with considerable authority and full-time
project administrative staff.
Most modern organizations involve all these structures at various levels. For example,
even a fundamentally functional organization may create a special project team to
handle a critical project. Such a team may have many of the characteristics of a
project in a projectized organization. The team may include full-time staff from
different functional departments, it may develop its own set of operating procedures,
and it may operate outside the standard, formalized reporting structure.
Most modern organizations involve all these structures at various levels. For example,
even a fundamentally functional organization may create a special project team to
handle a critical project. Such a team may have many of the characteristics of a
project in a projectized organization. The team may include full-time staff from
different functional departments, it may develop its own set of operating procedures,
and it may operate outside the standard, formalized reporting structure.
– Lower staff loyalty. All employees like to know exactly who their superior is.
In a matrix organization, an employee has more than one superior. This causes
a division of loyalty, and a weaker bond between employee and manager.
Though promotion and status are not always the most effective motivators, a
project manager should rarely relinquish any effective management tool.
Therefore, from the perspective of a single project, the pyramid organization is
often the best.
⇒ Functional Structure
The classic functional organization is a hierarchy where each employee has one
clear superior. Staff members are grouped by specialty, such as production,
marketing, engineering, and accounting at the top level, with engineering further
subdivided into functional organizations that support the business of the larger
organization (e.g., mechanical and electrical). Functional organizations still have
projects, but the perceived scope of the project is limited to the boundaries of the
function: the engineering department in a functional organization will do its work
54
Software Project Management (CS615)
⇒ Project Structure
In this structure, there is a centralized corporate office and under it, are various
divisions each of which is dedicated to producing and / or selling a certain type of
business or product, e.g., product 1, product 2, etc. Each division that is dedicated
to a certain business or product is, in turn, is organized as its own functional
structure. So, for example, the division dedicated to making product 1 has its own
sales department, human resources, etc. Basically, project structure is a bunch of
functional structures each of which reports to one central office. Use a divisional
structure when the organization is relatively large, geographically dispersed,
and/or produces wide range of goods/services.
Structural dimensions:
Contextual Dimensions:
Culture - the values and beliefs shared by all (note that culture is often
discerned by examining norms or observable behaviors in the workplace)
55
Software Project Management (CS615)
Project roles (who do what) and responsibilities (who decide what) must be
assigned to the appropriate project stakeholders. Roles and responsibilities may
vary over time. Most roles and responsibilities will be assigned to stakeholders who
are actively involved in the work of the project, such as the project manager, other
members of the project management team, and the individual contributors. The
roles and responsibilities of the project manager are generally critical on most
projects, but vary significantly by application area. Project roles and responsibilities
should be closely linked to the project scope definition. A Responsibility
Assignment Matrix (RAM) is often used for this purpose. On larger projects, RAMs
may be developed at various levels. For example, a high-level RAM may define
which group or unit is responsible for each component of the work breakdown
structure, while lower-level RAMs are used within the group to assign roles and
responsibilities for specific activities to particular individuals.
Organization chart
Project Personnel
The staffing management plan describes when and how human resources will be
brought onto and taken off of the project team. The staffing plan may be formal or
informal, highly detailed or broadly framed, based on the needs of the project. It is a
subsidiary element of the overall project plan.
Supporting detail
message. At the core of the training is the fundamental premise that the role of
communication is to create understanding. When communication is effective, it
promotes understanding and plays a fundamental role in building interpersonal
skills, leadership and strong teams. Organizations that achieve high levels of
maturity in the people management area have a higher likelihood of implementing
effective software engineering practices.
58
Software Project Management (CS615)
LECTURE # 7
The understanding about software and software development has come a long
way from the days of punch cards and Ada. In the first stage of computing,
hardware mattered the most. Computers themselves were the domains of the
government, and most software was developed in defense-funded labs, dedicated
to the advancement of science and technology in the national interest.
By the 1950s, large corporations realized the benefits of using computers. They
increasingly started using computers to process and analyze financial and
production data. These computers were huge in size. There was inadequate
software available for them. Even the software that existed was designed
essentially to function on a specific hardware product. The software was
developed and maintained by the company that manufactured the hardware.
Software design and documentation existed only in the developer's head. If the
developer left the company, you would find maintenance to be a nightmare.
In the second phase of software evolution, the corporate and academic sectors
increasingly started using computers, and the perspective about both software and
software development began to change. By the late 1960s and early 1970s,
concepts such as multi-sessions, multi-user systems, multiprogramming gained a
foothold. Soon computers were developed to collect, process, transform, and
analyze data in seconds. The focus of software development shifted from custom
software to product software. Now, multiple users on multiple computers could
use the same software. This phase of software evolution also saw the emergence
of software maintenance activities. These activities comprised fixing bugs, and
modifying the software based on changes in user requirements.
The third phase in software evolution was driven by the widespread use of
silicon-based microprocessors, which further led to the development of high-
speed computers, networked computers, and digital communication. Although, all
the advancement in software and hardware was still largely restricted to enterprise
applications manufacturers had begun to see the application of the microprocessor
in something as mundane as ovens to the robots used in car plants.
The fourth, and current, phase of software evolution began in the early 1990s.
This phase saw the growth of client-server environment, parallel computing,
distributed computing, network computing, and object-oriented programming.
59
Software Project Management (CS615)
This phase also witnessed the growing popularity of personal computer (PC).
During this phase, the Internet facilitated easy accessibility of information. In
addition to complex software to support the advanced hardware, the scope of
software development widened to include software products for the common man.
Figure 1.1 sketches the path of software from the 1950s onwards.
was prevalent in the early stages of software evolution hampered the application
of systematic processes. This conflict referred to as the software crisis. Some of
the reasons to which you can attribute the software crisis include:
During the period of software crisis, you will find that software that was produced
was generally over budgeted, under scheduled, and of poor quality. The
immediate knee-jerk response to these problems was software maintenance,
which began to consume huge resources. During this period, maintaining software
was adopted as a short-term solution due to the costs involved in fixing software
regularly. This often resulted in the original software design approach getting lost
due to the lack of documentation.
In contrast, the situation in the present times has changed to a large extent.
Software costs have risen, although hardware is purchased easily off the shelf.
Now, the primary concerns regarding software projects are project delays, high
costs, and a large number of errors in the finished product.
For the project manager, it is essential to be constantly informed of the true status
of the project. This is achieved by assuring the regular flow of accurate
information from the development teams. Many of the methods of acquiring
information are not objective and rely on the accuracy of the reports provided by
the project developers themselves. They include:
Although reports and meetings are indeed useful sources of information, nothing
can replace direct contact between the project manager and the development staff.
Frequent informal talks with the developers are excellent sources of information,
especially when held in an informal atmosphere (and not in the project manager's
office).
The project manager must keep on constant guard against an error commonly
referred to as the '90/50 syndrome’, which states that, 'it takes 50 percent of the
time to complete 90 percent of the work, and an additional 50 percent of the time
to complete the remaining 10 percent of the work'. This means that project
developers will begin to boast quite early that they have 'almost finished' their
tasks. Unfortunately, there is a great difference between 'almost finished' and
‘finished'.
Finishing a task -writing documentation, and polishing off the last few problems,
often takes longer than developers anticipate. This is because these activities
produce very few visible results, and developers tend (wrongly) to associate work
with results. Therefore, managers can obtain more information from developers
by asking them how long they estimate it will take to finish, and not how much of
their work has been completed.
• Status reports
Status reports should be required from every member of the development team,
without exception. The reports should be submitted periodically, usually weekly
or bi-weekly, and should contain at least the following three sections (see Fig.
5.8):
3. Problems
62
Software Project Management (CS615)
Each subsection within this section describes a major problem that either occurred
during the report period, or that was reported previously and has not yet been
resolved. This means that problems will be repeatedly reported until they are
resolved. In particular, this section must explain why this report's Section 1 does
not correspond to the previous report's Section 2.
1. Date of report
2. Report period (e.g. 3 July to 10 July 1992)
3. Name of report (e.g. Communications team status report)
4. Name of person submitting the report
The preparation of a periodic status report should take about 20 minutes, but not
longer than 30 minutes. Developers should submit their status reports to their
team leader. The team leader then combines the reports of the team into a single
status report, while maintaining the same report structure. This activity should
take the team leader about 30 minutes, but not longer than 45 minutes (this is
easily done when the reports are prepared and submitted by electronic mail).
Each team leader submits the team status report to the project manager. The
individual status reports need not be submitted; these should be filed and
submitted to the project manager only on request.
63
Software Project Management (CS615)
1.2 Coding of the command pass through modules (activity group 5.12) continues, and is
currently behind schedule by about 1 week.
2.2 Two members of the team (Ed and Joan) will attend a two day course on the
Programmer’s interface to the new user interface package. This is an unscheduled
activity that was approved at the last project meeting. This will not delay the
schedule, due to the early completion of the command pass through modules (see
Section 1.2 above).
3. Problems:
3.1 The user interface package we originally planned to use was found to be inadequate
for the project. Two team members will study the new proposed package (sec Section 2.2
above). If the new package is also found to be unsuitable, then this will severely impact
our development schedule.
3.2 One of our team members (Jack Brown) has been using an old VTI00 terminal
instead of a workstation for the past two weeks, due to the acute shortage of
workstations. This is the reason why Jack's task 5.12 was not completed this week, as
scheduled.
The project manager also receives status reports from other project support
personnel such as the project systems engineer or the deputy project manager. The
project manager then prepares the project status report by combining the
individual reports received into a single three-part report. The project status report
is then submitted to top management.
64
Software Project Management (CS615)
Project status reports are not necessarily submitted at the same frequency as
internal project status reports. Project reports may be submitted bi-weekly or
monthly.
Project status meetings should be held periodically, usually once a week. A good
time for status meetings is either at the end of the last day of the week, or at the
beginning of the first day of the week. Status meetings also contribute to the
atmosphere of order and control within the project, and should be held regularly,
at a fixed time. Participants who cannot participate in the project status meeting
may, with the project manager's approval, delegate participation to another
member of their team.
The project manager prepares for the status meeting by reviewing the status
reports submitted by the key project members (particularly scrutinizing the
problem section). Therefore the status reports should be submitted at least two to
three hours before the status meeting. Project status meetings are attended by the
key project members. The meeting begins with a report of project activities and
general issues by the project manager. Then each participant should be given
about five to ten minutes to report on the activity of his or her team or area of
responsibility. The discussion of problems should not be restricted to the person
reporting the problem and the project manager. All problems may be addressed by
all participants, with possible assistance offered between team leaders, thus
making their experience available throughout the project. It is not the project
manager's role to provide solutions to the problems, but rather to guide the team
members toward solutions.
Solutions should be worked out whenever possible during the status meeting. Any
problem not resolved within five minutes should be postponed for discussion by
the relevant parties after the status meeting. The proceedings of all project status
meetings must be recorded. Verbatim minutes are not required, though the
following items should appear in the record:
1. Date of meeting
2. Name of meeting
3. Present (list of participants)
4. Absent (list of absent invited participants)
5. Action items (name, action, and date for completion)
6. Major decisions and items discussed
The record of the project status meeting should be typed and distributed as soon
as possible, but no later than by the end of the day. This is particularly important
when there are action items to be completed on the same day. When the project is
sufficiently large to justify a secretary, then the record will be taken and typed by
65
Software Project Management (CS615)
the secretary. In smaller projects, the project manager can rotate this task each
week between the participants.
You all know that a project is much more than a collection of methodologies,
tasks, resources, and reviews. A project is a synchronized event where there is
perfect harmony and understanding between the participants. The participants are
equipped with the essential skills of planning, cooperating, helping, and
communicating. However, the most important activity here is to orchestrate the
movement of the participants. The onus lies with the project manager to
synchronize the activities of the project to result in a perfect presentation.
Although each project manager has a unique style of functioning, there are some
fundamental approaches that guide a project manager. These approaches are
traditional project management concepts and software engineering concepts. To
understand software projects and their dynamics, you must be aware of the
environment in which a software project is executed. This further requires an
understanding of the larger framework of software project management.
In this chapter, you will learn to, build a connection between traditional project
management concepts and software engineering concepts. Both traditional and
software projects share the same methodologies, techniques, and processes.
However, managing software projects requires a distinct approach. In this,
chapter, you will learn to apply traditional project management principles to
software projects. Further, you will learn about the responsibilities of a software
project manager. You will also learn about the phases in a software project and
the activities within each phase. Finally, the chapter will provide you an overview
of the problems that affect a software project and the myths prevalent about
software project management.
Each phase represents the development of either a part of the software product or
something associated with the software project, such as user manual or testing.
Each phase is composed of various activities. You can consider a phase complete
when all activities are complete.
66
Software Project Management (CS615)
A phase is named according to the primary deliverable set that is achieved at the
end of that phase. For example, if the requirements document is required as the
output, the phase is called the requirements phase. Similarly, most software
projects have phases for analysis, design, construction, implementation, and
testing.
Different organizations have different ways of assessing and arranging the phases
in a project. These are called process models. Process models define how a
software life cycle actually works. They provide you with a framework to plan
and execute the various phases in the project. Typically, project life cycles display
the following characteristics:
• The level of cost and effort required in a software project life cycle is small to
begin with but grows larger towards the end of the project. This happens
because the phases such as software construction and implementation, which
come at later stages in a software project, require more resources than the
initial phases of the project.
• At the start of the SDLC, external entities, such as the customer and the
organization, play an important role with regard to their effect on the
requirements. However, towards the end of the software project as the cost
and effort required to implement changes rise, the requests for change in
requirements decreases.
• The uncertainty faced by the software project is highest at the beginning of the
SDLC. Their level decreases as the project progresses.
There are a few standard software process models that you can use, with some
customization. Some standard process models are given below:
• The Waterfall model: This is the traditional life cycle model. It assumes that
all phases in a software project are carried out sequentially and that each
phase is completed before the next is taken up.
• The Prototyping Model: A model that works on an iterative cycle of gathering
customer requirements, producing a prototype based on the requirement
specifications, and getting the prototype validated by the customer. Each
67
Software Project Management (CS615)
iteration of the life cycle builds on the prototype produced in the previous
iteration.
• The Incremental Model: The Incremental model is an example of an
evolutionary life cycle model. It combines the linear nature of the Waterfall
model and the iterative nature of the Prototyping model. The Incremental
model divided the development life cycle into multiple linear sequences, each
of which produces an increment of the final software product. In this model,
the software product is developed in builds. A build is defined as a self-
contained unit of the development activity. The entire development cycle is
planned for a specific number of logical builds, each having a specific set of
features.
• The Spiral model: Another evolutionary life cycle model that combines the
linear nature of the Waterfall model and the iterative nature of the Prototyping
model. The project life cycle is divided into phases, and each phase is
executed in all of the iteration of the Spiral Model.
68
Software Project Management (CS615)
LECTURE # 8
One organizational issue that can influence a software project is the reaction of
the organization to external influences.- As a project manager, it is important for
you to assess how the organization reacts to changes in the external environment,
For example, in the current technology environment that changes rapidly, an
organization should be proactive in strengthening its capability baseline by
adopting new technology and retraining its employees as per market
requirements.
Another organizational issue that can influence a software project is the interest of
management in human resources. The human resources of an organization are its
primary resource. You need to ensure that the people in the development team
enjoy a comfortable work environment, which is conducive for smooth and
trouble-free work. This includes providing suitable compensations, a friendly
work environment, and smooth processes. The absence of these factors negatively
affects employee morale, and therefore, productivity.
As a software project manager, you become the key player in a software project.
You not only manager the day-to-day activities of the project but also ensure that
the software product is delivered on time. What makes your role challenging is
the performance of project-related activities within a specified budget and time
constraint. At the same time, you need to keep the requirements and specifications
of the customer in mind.
To deliver expected results, you carry out three successive processes: studying the
feasibility of the project, planning to meet the requirement, and executing the
plan. These processes can be further broken down into activities, such as
planning, staffing, and monitoring.
You plan and organize the software development team to complete development
within the stipulated time and budget. To do this, you form a team of people who
have the required technical skills. Then, you ensure that all activities are carried
out as planned by the relevant people.
• Managing Resources
• Managing Cost
70
Software Project Management (CS615)
• Managing Risk
• Managing Schedule
• Managing the project plan
• Managing quality
⇒ Managing Resources
The primary input required to create software are resources. Resources for a
software project may be of three kinds: human, hardware, "and software. Human
resource management is about effectively identifying the people with the
appropriate skills, assigning roles and responsibilities to these people, and
establishing reporting relationships. On the other hand, hardware and software
resource management relates to identifying and ensuring resources such as
workstations, disk space on servers, software tools, and software licenses. You
need to ensure that human resource identification and allocation is carried out;
simultaneously with hardware and software resource management.
To manage resources effectively, there are two areas that you require your
attention. These include:
Management of human resources calls for a number of actions. First, you define
reporting relationship for the software project. Reporting relationship can exist
within and across organizational units, technical areas, and hierarchical levels.
Next, determine the skills required for the software project, and identify the
appropriate people who possess the required skills. You can review the resource
pool and identify resources on the basis of their experience and availability. In
case the resources are unavailable, you request for their release from another
project or outsource the required resources. Depending upon the organizational
practices arid experiences from past projects, you can assign roles and
responsibilities to the development team. Finally, create a staff management plan
and an organizational chart to show the hierarchical structure of the development
team.
reward explicit and achievable. You should also ensure that the training needs of
the development team are met.
⇒ Managing Cost
Quite often, when a software project starts to become too expensive, many project
managers also tend to start cutting costs. This can have a direct impact on
employee morale. When employee morale drops, so does the quality of work, and
the productivity. Therefore, as a project manager you must prepare for all
circumstances through proper estimation and allocation. To manage costs for
software projects, you need an accurate estimation of costs. To do that, there is a
sequence of steps that you need to perform.
To estimate costs, you first identify and describe all the resources required in the
software project. You also estimate the duration for which the resources are used.
72
Software Project Management (CS615)
Next, estimate the cost of each resource. To estimate the cost, you can use
mathematical tools. However, in the case where limited information is available
about resources, you can also use expert judgment to estimate costs.
After the costs of the required resources are estimated, you set cost baselines for
each activity. Cost baselines measure the performance of an activity with regard
to the cost and duration defined for the completion of the activity.
Finally, as the project manager you implement a control system for cost changes.
The cost control system defines cost baselines, identifies cost changes, and
modifies cost baselines to adjust cost changes.
⇒ Management Risk
As a project manager, you perform two primary activities to manage risks for
software project:
• Risk Analysis
o Risk identification
o Risk quantification
• Risk management
The first activity in risk analysis is risk identification. Risk identification helps
you point out the, potential risks for a software project across all phases of the
project. Risks might evolve through the duration of a software project, and
therefore, risk identification is an ongoing activity. To identify potential risks for
a software project, you can analyze the activities in the software project, the
software product description, and risks faced by the development team in similar
past projects. This exercise allows you to identify the potential sources of risks to
the current software project, Assessing the factor influencing the different inputs
also allows you to identify the phases in the SDLC when risk might materialize.
After potential risks have been identified, you can quantify them. This is done to
ascertain their priority. If multiple risks materialize at the same time, then you
must assign a priority to each risk based on the degree of impact on the project
and handle the highest-risk events first. For example, the risk of change in client
73
Software Project Management (CS615)
After you have identified and quantified the potential risks for a software project,
you create a risk mitigation plan. The purpose of the risk mitigation plan is to help
you identify procedures to choose the path of least damage and highest returns in
a case a risk materializes. To mitigate risks for a software project, you first need
to be aware of the opportunities and threats that can be pursued or ignored. This
enables you to focus on the risks that might have a negative impact on the
software project and develop contingent plans to deal with these risks. You can
also mitigate risks by evolving alternative strategies to altogether prevent
potential risks from materializing.
⇒ Managing Schedule
Time is a major constraint for a software project. With most software projects, the
delivery dates for the software product are already committed to the customer at
the time the project commences. As a software project manager you must perform
various tasks to balance time and deadlines. These are:
The first task is to identify the different deliverables that constitute the software
product. These deliverables also mark the completion of the different phases
within a software project.
Next, define the activities that are required to produce the deliverables. To do this,
you can break down the SDLC into phases, identify the deliverables at the end of
each phase, and the activities required for creating the deliverables.
74
Software Project Management (CS615)
After the activities are defined, you identify the interdependencies between them.
The purpose of this exercise is to organize the activities and sequence them in the
form of a project schedule.
Next, you define the duration of each activity. The inputs that you need for
scheduling are the resources required to complete each activity. Then, assesses the
availability of these resources and the duration of each similar activity in similar
past projects.
After estimating the time required for each activity to complete, you assess the
project network diagram. This includes an assessment of the duration estimates,
resource requirements, resource pool description, and assumptions and constraints
for the software. You can use Mathematical tools to determine a schedule for the
project. The project schedule defines the activities within each phase, the team
members assigned to complete each activity, the duration of each activity, and the
start and end dates for all of the activities.
Finally, create a schedule management and control plan. The purpose of this plan
is to identify when changes occur, Implement the changes to the project schedule,
and ensure that the changes are beneficial to the software project. After the
changes are implemented, you might need to modify the sections of the project
plan to ensure that the project is completed on time.
75
Software Project Management (CS615)
LECTURE # 9
Preparing it project plan for a software project helps you ensure that the specified
requirements and objectives are met successfully. It is a collation of all planning
activities that have happened for a software project. This includes activities such
as design and analysis, activity definition, risk planning, and cost estimation. To
create the plan, you assess all planning activities, organizational policies
regarding the creation of the project plan and assumption and constraints for the
project. To implement the software project plan, you require management skills,
such as leadership, communication, and problem solving, along with the basic
knowledge about the software. You also need to ensure that the senior
management bf the company has authorized work on the software project.
Knowledge management techniques help you to make informed decision
regarding the project plan.
After the project plan is executed, you manage the changes to it in such a way that
the performance measurement baselines are not impacted, To manage the project
plan effectively you monitor the project plan, periodic performance status reports,
and requests for change. The primary tool that you can use to control the changes
in the project plan is the change control mechanism: This is a set of formal
procedures for changing the project plan.
⇒ Managing Quality
76
Software Project Management (CS615)
quality product, even at the cost of missing a deadline or two ensures that your
customer comes back for repeat orders. On the other hand, the price of non-
conformance (PONC) on quality standards simply translates into the loss of
goodwill and loss of business.
However, as the project manager you have a critical role in maintaining quality.
You provide the resources required to complete the activities of the software
project and ensure that quality levels are constantly monitored.
You first identify the areas that must be monitored for ensuring quality and the
quality measures to implement. Then, consider the quality policy of the
organization, the scope of the project, the applicable standards, and the software
product description. Next, use tools, such as a cost-benefit analysis and a
flowchart, to identify the areas where you need to monitor quality and the
subsequent actions for control. The output of this exercise is the quality plan for
the software project. In addition, this exercise allows you to create checklists to
help monitor quality.
As a software project manager, you also need to use a quality control mechanism
so that the quality of the software product does not suffer. The aim of the quality
control mechanism is to ensure compliance with quality standards.
You already learned in the beginning of the chapter that a software project is
divided into different phases. This division is done on the basis of the activities
performed in each phase. Similarly, project management activities are also
arranged in phases. As a project manager, you perform the activities that map to
each of these phases. The project management phases can be broadly categorized
as follows;
– Project initiation
– Project closedown
– Project planning, control, and tracking
– Product implementation
• Project Initiation
77
Software Project Management (CS615)
Resource allocation: During project initiation, you identify the resources required
and allocate them to the software project. The resources identified may be people,
reusable software components, and hardware or software tools. You allocate the
resource to the software project on the basis of the activities defined in the scope
determination exercise. While allocating appropriate resources for a software
project, you also need to calculate the cost of each resource. The cost of a
resource is calculated according to the duration of the resource in the software
project. Estimating the cost of resources also helps you prepare a budget for the
software project.
Note:
Scope determination and resource allocation are discussed in more detail in later
chapters.
Initial project plan: Another exercise that you carry out during project initiation
is the creation of a rough project plan. This plan is a draft version and carries only
the primitive project plan features. This project plan carries the initial risk
analysis of the software project, the initial start and end dates, the duration of the
activities in the project, and the sequencing of these activities.
This activity of the project manager involves detailed tasks. These tasks are
mentioned below:
Detailed project plan: After the scope for the software project is determined and
the product design is ready, you prepare a detailed project plan. To create a
detailed project plan, you define a detailed list of all the elements that make up the
78
Software Project Management (CS615)
project deliverables. Next, the deliverables are further broken up to help In the
calculation of durations, start dates and end dates for each activity mentioned in
the plan. Roles and responsibilities are assigned to people with the appropriate
skills to complete each activity within specified time.
Control mechanism: These are set up to control the impact of changes on the
software project. The control mechanism includes a detailed risk management and
mitigation plan, a detailed quality plan, and quality assurance activities. You also
implement a review and audit system for periodic assessment and measurement of
the software project activities. The review and audit system enables you to
evaluate the progress of the software project. It ensures that all necessary data is
collected, deviation from the planned baselines is checked, and corrective action
is taken at all checkpoints. In this way, the review and audit system ensures
compliance with the organizational processes for software development.
79
Software Project Management (CS615)
LECTURE # 10
⇒ Product Implementation
• Support plan creation: the project manager also needs to create a support plan for
the customer. The support plan includes consideration such as the post-
implementation support activities provided to the customer. Post-implementation
considerations include the number of support staff available to the customer, their
names, contact numbers, and the duration of their availability.
• User acceptance plan: You also need to prepare a user acceptance plan. The user
acceptance plan provides a detailed outline on how and when the user acceptance
tests are performed. The primary focus of user acceptance test is to ensure that the
final software product offers all the functionality and performance that the
customer wanted. Therefore, the customer tests the software product for issues
such as aesthetics, user friendless, and scalability.
⇒ Project Closedown
The final activity for a project manager is project closedown. For most software
projects, the project closedown activities take place in the post-implementation
phase. However, in some software projects, the customer requests support
activities for a longer duration. In such cases, the software project is considered
80
Software Project Management (CS615)
closed immediately after implementation. The tasks that you perform in project
closedown are mentioned below:
• Prepare closedown report: The project closedown report contains the results of
the causal analysis that you do for the project. This contains an analysis of what
went wrong, what went right, and what you could have done better in the software
project.
• Identify learning: You also need to assess the entire software project and the
results of the causal analysis to identify the key learning points from the software
project. This helps you identify areas of improvement for future projects. The
learning points can also be used by the organization as considerations while
planning and executing the next software project.
• Create reference material: After the project is complete, you can create white
papers and reference documents. This can be a significant contribution to the
organization and the application area of the software by creating an authoritative
knowledge base.
In most cases, you learn the skills required to manage a software project while on
the job. As a result, most software project managers practice a lot of management
techniques that are of doubtful authenticity. Many software project managers
learn about the so-called management skills and concepts that are actually myths.
The following list aims to clarify some of the more prevalent myths in software
project management.
1. Combining the best resources with the worst resources available for a
software project helps to complete the project successfully.
81
Software Project Management (CS615)
4. As software by itself is flexible, you can change the requirements at any point
in the software project life cycle.
5. The management and the customer always impose an unrealistic deadline for
the software project.
7. Software maintenance is an easy task and requires less effort than actual
software development.
8. Identifying and reporting errors during the reviews makes the software
developer unhappy and spoils the work environment.
Myth: Combining the best resources with the worst resources available for a project
helps to complete the project successfully.
In software projects, combining the best resources with the worst resources drags
down the efficiency and productivity of good resources. This invariably decreases
the speed of the software project, and the project ends much after the specified
deadline.
Many software project managers and customers believe that a general statement
of objectives gives a reasonable idea of the requirements. However, a formal and
detailed description of the customer requirements is needed before the project
commences. The software project manager must ensure that all information
regarding the software project, such as the functions, performance, interfaces,
constraints, assumptions and validation criteria is gathered.
Myth: Allocating extra resources to a late project allows it to catch up with the
project schedule.
A software project is not a mechanical process such as, say; digging an artificial
lake. In case of creating an artificial lake, adding more people to the job can help
dig a larger area in the same time. However, in a software project, adding, more
people actually increases the time required to finish the project. This happens
because a new person joining the project requires time to understand the
82
Software Project Management (CS615)
requirements of the client, software design, and standards. Moreover, the existing
people in the project need to devote time and effort to train the new people on the
software project. Therefore, allocating additional resources to a risky situation
increases the risk to the software project.
Requests for changes are common with all projects. However, the timing of the
change for requests is critical. This is because an untimely change adversely,
impacts the cost of the software project. For example, a change request during the
requirements gathering stage has a relatively low impact on costs. On the other
hand, a change request during, the software construction stage can be extremely
expensive to incorporate. The software project manager must decide with the
customer upon a set of objectives that must be achieved at the end of the project.
In addition, the project manager and the customer must decide on a specific
phase, beyond which only critical change requests are accepted.
Myth: The management and customer always impose an unrealistic deadline for the
software project.
The management and customer usually believe that project managers prepare cost
effort, and time estimates inclusive of buffers. The management and customers
rationalize that if they can cut the buffers by imposing a tight deadline or a low
budget on a project, the project manager would still complete the project on time.
Myth: A software project that meets all the stated objectives is a success.
Customer requirements for a software project are always in two forms, spoken
and unspoken. Usually, the objectives formed from the customer requirements are
based on the spoken requirements. The software project manager must to be
aware of the unspoken requirements and ensure that these are met.
Myth: Software maintenance is an easy task and requires less effort than actual
software development.
If change requests are made toward the end of the project, then maintenance
activities can contribute to large costs and effort overruns. Moreover, contrary to
the popular view, implementing changes in the software product in the
maintenance stage is a painstaking task.
Myth: Identifying and reporting errors during the reviews makes the software
developer unhappy and spoil the work environment.
83
Software Project Management (CS615)
84
Software Project Management (CS615)
LECTURE # 11
Software projects are similar to traditional projects in the sense that the same
types of problems affect them both. However, the difference in managing these
problems lies in the approach that you take to the specific issue. For example, a
technology-related problem for a software project might be the low degree of
reuse of the software components created. However, for a car-manufacturing firm,
there is no chance of reusing a component such as a front axle.
You can classify the problems that affect software projects into the following four
categories:
• People-related problems
• Process-related problems
• Product-related problems
• Technology-related problems
⇒ People-related problems
• Problem employees: Some members of any team always create a problem. For
example, an employee may carry a 'holier-than thou' attitude. Problem
employees raise the chances of conflicts and differences of opinions within
the development team. They lower the efficiency and productivity of other
team members and make it difficult to meet the objectives of the software
project within the specified time. You need to ensure that employees are not
allowed to create a pr9blem for the rest of the team. Even if the employee is
very competent, you need to assess the indispensability of such emp1oyees for
the project. Moreover, you refrain from playing favorite with certain
employees and treat everyone with the same measure.
85
Software Project Management (CS615)
⇒ Product-related Problems
There are many product-related problems that you can face in a software project.
These are:
• Product scope changed toward the end of the project life cycle: The project
time, effort, and cost estimates for a software project can go up dramatically
when the customer changes the scope 9f the product toward the end of the
project. In such situations, you should verify the criticality of the scope
change. However, if the change request is not critical, you should retain the
original scope with a proper explanation to the customer. If the change request
is critical, you should explain the situation to the customer. Usually, a
customer gives more time and funds to a software project if proper
justification is provided. In some cases, the scope change may also be because
of a change in government policy. It may become mandatory for you to
include such change requests.
technology is used, the software development team can lose focus of the
objectives by getting into a research-oriented approach. It becomes your
responsibility as the project manager to maintain the focus on the objective.
88
Software Project Management (CS615)
LECTURE # 12
⇒ Product-related Problems
• III-defined scope: You need to define the scope of the software product in the
initial stages of a software project. The scope of a software product is defined
in terms of the functionality requirements, the performance requirements, the
assumptions, and the constraints on the product. If the product scope is ill
defined, the software project does not have a proper focus on the features
required in the product.
• Fuzzy users: You also need to clarify the background characteristics of the
users of the final software product at the beginning of the software project. If
the description of the users is fuzzy, then the software analysis, design, and
development stages may reflect the ambiguity with regard to the functions and
performance of the final software product.
⇒ Technology-related problems
• Switching tools in mid way: The current technology environment offers new
tools and technologies for software development at a fast rate. All these tools
and technologies offer the benefits of a shorter development cycle, lower
costs, and under better functionality than earlier tools. You should identify
and commit to the tool and technology for the software project before the
project commences. Switching the tool or technology used during the software
development stage causes the developers to relearn a new tool. In addition,
89
Software Project Management (CS615)
there is a chance that it might not be possible to integrate the software already
developed with the new tool.
⇒ Summary
The phases in a software project can be organized into a project life cycle. Some
standard life cycle models are the Waterfall model, the Prototyping model, the
Incremental model, and the Spiral model.
The role of a software project manager includes managing resources, cost, risk,
schedules, project plan, and quality. Software project management activities can
be divided into phases. The main phases and the associated activities are initiating
the project, planning, controlling, and tracking, implementing the product, and
project closedown.
Various myths regarding software project management are adding more people to
a late project can help to finish the project on time, combining the best resources
90
Software Project Management (CS615)
with the worst resources results in optimal resource allocation, and changes to the
scope of the software project and the software product can be made at any-time in
the SDLC.
91
Software Project Management (CS615)
LECTURE # 13
⇒ Preview
Both the software engineer and customer take an active role in software
requirements engineering-a set of activities that is often referred to as
analysis. The customer attempts to reformulate a sometimes nebulous
system-level description of data, function and behavior into concrete
detail. The developer acts as interrogator, consultant, problem solver and
negotiator.
92
Software Project Management (CS615)
⇒ Requirements analysis
System
Engineerin
g
Software
Requirement
s Software
Analysis Design
93
Software Project Management (CS615)
Initially, the analyst studies the System Specification (if one exists) and
the Software Project Plan. It is important to understand software in a
system context and to review the software scope that was used to generate
planning estimates. Next, communication for analysis must be established
so that problem recognition is ensured. The goal is recognition of the basic
problem elements as perceived by the customer/users.
Problem evaluation
Solution synthesis
95
Software Project Management (CS615)
LECTURE # 14
⇒ Requirements Analysis
• Models
• Specification
96
Software Project Management (CS615)
Communication has begun. But, as we have already noted, the road from
communication to understanding is often full of potholes.
98
Software Project Management (CS615)
– Are you the right person to answer these questions? Are your
answers "official"?
– Are my questions relevant to the problem that you have?
– Am I asking too many questions?
– Can anyone else provide additional information?
– Should I be asking you anything else?
These questions (and others) will help to "break the ice" and
initiate the communication that is essential to successful analysis.
But a question and answer meeting format is not an approach that
has been overwhelmingly successful. In fact, the Q&A session
should be used for the first encounter only and then replaced by a
meeting format that combines elements of problem solving,
negotiation, and specification.
4. Use Cases
• Informal meeting
• FAST or QFD
5. Analysis Principles
6. Software Prototyping
102
Software Project Management (CS615)
LECTURE # 15
– Quality
– Timeliness and
– Completeness of SW product
• Principles
ii. Develop a model of desired behavior of a system that encompasses data and
the functional response of a system to various stimuli from the environment.
iii. Establish the context in which SW operates by specifying the manner in which
other system components interact with software.
iv. Define the environment in which system operates and indicate how a highly
inter-wined collection of agents react to stimuli in the environment (changes
to objects) produced by those agents.
103
Software Project Management (CS615)
i. Establish the content and structure of a specification in a way that will enable it to
be amenable to change.
• Representation
iii. It should reveal layers of information so that reader can move to the level
of detail required. Paragraph & diagram number scheme to indicate level.
iv. Diagrams and other notational forms should be restricted in number and
consistent in use. (Confusing or inconsistent notations, whether graphical
or symbolic degrades understating and foster errors.)
vi. The content of specification will change. Ideally, CASE tools should be
available to update all representations that are affected by each change.
The Introduction of the software requirements specification states the goals and
objectives of the software, describing it in the context of the computer-based
system; actually, the Introduction may be nothing more than the software scope of
the planning document.
104
Software Project Management (CS615)
Validation Criteria is probably the most important and, ironically, the most often,
neglected section of the Software Requirements specification.
⇒ Review
Extreme care should be taken in conducting the review because the specification
forms the foundation of the development phase.
The review is first conducted at a macroscopic level; that is, reviewers attempt to
ensure that the specification is complete, consistent, and accurate when the overall
information, functional, and behavioral domains; are considered. However, to
fully explore each of these domains, the review becomes more detailed,
examining not only broad descriptions but the way in which requirements are
worded. For example, when specifications contain "vague terms" (e.g., some,
sometimes, often, usual ordinarily, most, or mostly), the reviewer should flag the
statements for further clarification.
Even with the best review procedures in place, a number of common specification
problems persist. The specification is difficult to "test" in any meaningful way,
and therefore inconsistency or omissions may pass unnoticed. During the review,
changes to the specification may be recommended. It can be extremely difficult to
assess the global impact of a change; that is, how a change in one function affects
requirements for other functions. Modem software engineering environments
incorporate CASE tools that have been developed to help solve these problems.
106
Software Project Management (CS615)
LECTURE # 16
2.12 Design
⇒ Management Aspect
⇒ Attributes of SW Design
– Data structure,
– Software architecture,
– Interface representations, and procedural (algorithmic) detail.
107
Software Project Management (CS615)
a. Code generation
b. Testing
Once code has been generated, program testing begins. The testing
process focuses on the logical internals of the software, ensuring
that all statements have been tested and on the functional externals;
that is, conducting tests to uncover errors and ensure that defined
input will produce actual results that agree with required results.
Support
Modularity
Modularity (in both program and data) and the concept of abstraction
enable the designer to simplify and reuse software components.
Refinement provides a mechanism for representing successive layers of
functional detail. Program and data structure contribute to an overall view
of software architecture, while procedure provides the detail necessary for
algorithm implementation.
108
Software Project Management (CS615)
The moral is this: Don't rush through it! Design is worth the effort.
• Exception handling,
• Localization
• Portability
• Reuse
• Input/output
• Memory management,
• Performance
2.13 Construction
– Coding practices
Naming, layout, documentation
– Data-related concepts
Scope, persistence, binding time
• To ensure that project stays consistent over time: You need to:
1. Identifying Objects
2. Controlling Versions
3. Controlling Changes
4. Auditing
5. Communicating Changes
1. Identifying Objects
You can use the Item Traceability Matrix to identify SCIs at the end of
each phase. A sample of Item Traceability Matrix is displayed in Table
1. In the table, you can see the different SCIs in different phases of the
development process.
110
Software Project Management (CS615)
2. Controlling Versions
111
Software Project Management (CS615)
LECTURE # 17
b. Controlling Versions
c. Controlling Changes
112
Software Project Management (CS615)
Start
Outcome is notified
Is the Yes
Request
Rejected?
No
Yes Is the
Request
Deferred?
No
Stop
A request for change triggers that change control procedure. Then request is
logged in the change request register. Next, the change request number is
recorded in the change request evaluation plan. The request is evaluated and
analyzed to check if the change is valid. Change request is also evaluated in
113
Software Project Management (CS615)
terms of the number of items affected and the effort involved in effecting the
change. Finally, the possible outcome of the change request is communicated.
The request for change is rejected, deferred, or approved. If the request for
change is rejected, the requestor needs to log a fresh request. A deferred
change request is evaluated at a later date while the change request that is
approved is implemented.
There are tools that provide facilities to check in and check out so that the
same version of the object is not updated more than once. The check-in and
checkout facilities provide synchronization control. Synchronization control
helps to ensure that parallel changes performed by two different people do not
overwrite one another.
d. Auditing
e. Communicating Changes
not being communicated. At times, those who should be pointing out the
serious side effects caused by a change are not aware of the implementation of
the change. There are also instances of version mismatch when teams are
unaware of the latest version to be followed. To avoid such hazards due to
lack of communication among the project team, changes are communicated
among team members. Therefore, status reporting provides information about
each change to those who need to know. Software configuration management
takes care of changes in a software process. SCM identifies controls, audits,
and reports modifications that occur during software development. SCM helps
maintain the integrity of configurable items produced during software
development.
SCM is an integral part of SQA. SCM involves assessing the impact of the
changes made during SQA activities and making decisions based on cost and
benefit analysis. SCM can be defined as the art of identifying, organizing, and
controlling changes in a software project with the objective of minimizing
mistakes. SCM is different from software maintenance. Software maintenance is
required after the software is delivered to the client and is put into operation. As
opposed to this, SCM is a set of tracking and controlling activities that begins
when a software project begins and ends only when the software is taken out of
operation.
⇒ Misapplication of Guidelines
117
Software Project Management (CS615)
LECTURE # 18
⇒ Definition
The quality of software is said to be high if it meets the standards and procedures,
defined for the product. Standards are criteria to which the products are compared.
For example, there may be standards that govern the quality review process.
Documentation standard design standard and code standard are the three types of
standards that software projects usually follow.
Documentation standard specifies the form and content for planning, control, and
product documentation. Design standards provide rules and methods for
translating the software requirements into software design. The design standards
are specified in the form and content of the product design.
Unlike documentation standard, code standard defines the language in which code
should be written. The standard clearly mentions the structures, style conventions,
and rules for data structures and interfaces that will be implemented in the project.
118
Software Project Management (CS615)
Procedures are criteria to which the development and control processes are
compared. Procedures are explicit steps followed in a process. Procedures need to
be properly documented because they are needed for configuration management,
nonconformance reporting, corrective action, testing, and formal inspections.
Proper documentation of procedures is necessary because SQA activities rely on
them for project compliance. Organizations normally enforce quality standards
with the help of checklists, common error lists, and standards and guidelines.
⇒ Concepts
The quality of product design, in turn, depends on how effectively the product
designer captures the client requirements and specifications. At times, the client
has some implicit requirements that are not captured in the requirements
document. There are three things that guide requirements: want, desire, and wish.
Usually, wants are captured explicitly in the requirements documents. However, if
you manage to capture desires and wishes, the product becomes a great success.
The product designer needs to state these implicit requirements clearly during
analysis. The adherence to these implicit requirements is the key attribute that sets
one product apart from another.
The product quality also depends on how strictly, and to what degree the
developer adheres to design specifications. This is what the concept quality is
meeting or exceeding our client's needs and requirements' means.
⇒ Quality Control
• Inspections
• Reviews and
• Tests, used throughout the SDLC of the software product
The objective of quality control is to find problems as early as possible and fix
them.
Quality control ensures that the software product meets the requirements defined
at every stage in its development.
119
Software Project Management (CS615)
There is provision for feedback mechanism during quality control. Any slippage
in meeting the requirements during the development process is communicated to
the development team immediately.
Feedback ensures that errors or misses found during quality control are rectified
as soon as they are detected.
⇒ Quality Factors
There are a number of factors that determine the quality of a software product.
These factors can be measured either directly or indirectly. McCall (MCC77) and
his colleagues proposed some software quality factors based on three most
important aspects of a software product:
1. Product operation
2. Product revision and
3. Product transition
Correctness Accuracy of the program and the extent to which it fulfills design specifications
Reliability Extent to which the program is secure and its ability to recover quickly from failure.
120
Software Project Management (CS615)
Efficiency Performance of the program and its ability to perform tasks within a time frame
Ability of the program to take care of security and the extent to which it can prevent
Integrity
unauthorized.
Usability Ease with which a user can learn, operates, and uses the program.
Portability Efficiency with which a program runs on different platforms or operating systems
Reusability Extent to which the program can be used in more than one program or system
Interoperability Effort needed to transfer a program to another system
Ability of the program to be installed at more than one location with different
Configurability
features at each location
Expandability Ability of the program to support an increase in data and users
121
Software Project Management (CS615)
LECTURE # 19
SQA is the process of evaluating the quality of a product and enforcing adherence
to software product standards and procedures. It is an umbrella activity that
ensures conformance to standards and procedures throughout the SDLC of a
software product. There are a large number of tasks involved in SQA activities.
These include:
requirements of a software product and its design quality. FTRs help in detecting
errors at an early phase of development. This prevents errors from percolating
down to the latter phases and resulting in rework.
123
Software Project Management (CS615)
⇒ Software Review
Software review is an effective way of filtering errors in a software product.
Typically, an error found after the product release costs 50 times as much to
correct as one detected during the design phase.
This means the cost of fixing a defect rises dramatically if it is found late in the
development life cycle of the product. Therefore, you need to filter errors as early
as possible.
Reviews also indicate those areas that do not need any improvement. You can use
software reviews to achieve consistency and uniformity across products. Reviews
also make the task of product creation more manageable. Some of the most
common software review techniques, practiced across software organizations
include:
a) Inspection
b) Walkthrough
c) Formal technical reviews
a) Inspections
124
Software Project Management (CS615)
b) Walkthroughs
The term walkthrough refers to a group activity in which the developer of the
product guides the progress of the review. Walkthroughs are less rigorous than
either formal inspections or peer reviews in which the developer plays a more
passive role. Normally walkthroughs turn into a presentation by the author.
The focus of finding errors is diluted. Such misadventures make walkthroughs
usually less successful at detecting bugs than the more formal review
methods.
125
Software Project Management (CS615)
Individual peer desk-checks are quite cost-effective. Only one person besides
the author examines the material. This approach can be more effective if there
are individuals who are extremely good at finding defects on their own.
Tip:
If someone consistently finds most of the group-identified defects during the
individual preparation step, such a person is fit to perform individual peer
desk-checks.
Using FTR, you can verify whether or not the software product adheres to the
defined standards. FTR is also conducted to check for consistency in the
software product and audit the manageability of the software product. It
includes activities such as walkthrough and inspection.
FTR also concentrates on the entire product. The participants in FTR are the
developer, the project leader, and all the reviewers.
At the end of the review meeting, the issues recorded are formalized into
review issues list. The minutes of the meeting are summarized into a review
summary report as displayed in table 4.
126
Software Project Management (CS615)
Tip:
To prepare realistic schedule, you can collect data from past projects. Speak to related
project managers regarding time estimation for reviews, the review capacity of the
reviewer, and estimates the review effort accordingly.
Fastest schedule
(BEST schedule)
Development
Development
Time Time
95% 100%
Percentage of
Defects Removed
127
Software Project Management (CS615)
LECTURE # 20
3. Processes
Software engineers and their managers adapt the process to their needs and then
follow it. In addition, the people who have ties defined by the process requested
the software play a role in the software process.
At a detailed level, the process that you adopt depends on the software you're
building. One process might be appropriate for creating software for an aircraft
avionics system, while an entirely different process would be indicated for the
creation of a web site.
From the point of view of a software engineer, the work products are the
programs, documents and data produces as a consequence of the software
engineering activities defined by the process.
128
Software Project Management (CS615)
Common process
Framework activities
Tasks
Tasks
Milestones,
SQA points
But what exactly is a software process from a technical point of view? A software
process is a framework for the tasks that are required to build high-quality
software. Is process synonymous with software engineering? The answer is "yes"
and "no." A software process defines the approach that is taken as software is
engineered. But software engineering also encompasses technologies that
populate the process-technical methods and automated tools.
⇒ Software Engineering
129
Software Project Management (CS615)
Process
A quality focus
Tools
Metho
The key process areas form the basis for management control of software projects
and establish the context in which technical methods are applied, work products
(models, documents, data, reports, forms, etc.) are produced, milestones are
established, quality is ensured, and change is properly managed.
130
Software Project Management (CS615)
Project management processes can be organized into five groups of one or more
processes each:
– Inputs
– Tools & Techniques
– Outputs
The process groups are linked by the results they produce—the result or out-
come of one often becomes an input to another.
Among the central process groups, the links are iterated—planning provides
executing with a documented project plan early on, and then provides documented
updates to the plan as the project progresses. These connections are illustrated in
Figure 3.
The project management process groups are not discrete, one-time events; they
are overlapping activities that occur at varying levels of intensity throughout each
phase of the project. These process groups overlap and vary within a phase.
Figure 4 illustrates how the process groups overlap and vary within a phase.
Finally, the process group interactions also cross phases such that closing one
phase provides an input to initiating the next. For example, closing a design phase
requires customer acceptance of the design document. Simultaneously, the design
document defines the product description for the ensuing implementation phase.
This interaction is illustrated in Figure 5. Repeating the initiation processes at the
start of each phase helps to keep the project focused on the business need that it
was undertaken to address. It should also help ensure that the project is halted if
the business need no longer exists, or if the project is unlikely to satisfy that need.
It is important to note that the actual inputs and outputs of the processes depend
upon the phase in which they are carried out. Although Figure 5 is drawn with
discrete phases and discrete processes, in an actual project there will be many
overlaps. The planning process, for example, must not only provide details of the
work to be done to bring the current phase of the project to successful completion,
but must also provide some preliminary description of work to be done in later
phases. This progressive detailing of the project plan is often called rolling wave
planning; indicating that planning is an iterative and ongoing process.
Initiating Planning
Processes Processes
Controlling
Processes Executing
Processes
Closing
Processes
132
Software Project Management (CS615)
Executing
Processes
Planning
Processes
Phase Phase
Start Finish
Controlling
Controlling Executing Executing
Closing Closing
133
Software Project Management (CS615)
LECTURE # 21
3. Processes
⇒ Inputs
• Product Description
• Strategic Plan
• Selection Criteria
• Historical Information
⇒ Outputs
• Project Charter
• Project Manager assignments
• Constraints
• Assumptions
• Resource allocation: During project initiation, you identify the resources required
and allocate them to the software project. The resources identified may be people,
reusable software components, and hardware or software tools. You allocate the
resource to the software project on the basis of the activities defined in the scope
134
Software Project Management (CS615)
• Initial project plan: Another exercise that you carry out during project initiation
is the creation of a rough project plan. This plan is a draft version and carries only
the primitive project plan features. This project plan carries the initial risk
analysis of the software project, the initial start and end dates, the duration of the
activities in the project, and the sequencing of these activities.
Planning is setting the direction for something -- some system -- and then guiding
the system to follow the direction.
The basic planning process typically includes similar nature of activities carried
out in similar sequence.
The phases are carried out carefully or -- in some cases -- intuitively, for example,
when planning a very small, straightforward effort the complexity of the various
phases (and their duplication throughout the system) depend on the scope of the
system.
For example, in a large corporation, the following phases would be carried out in
the corporate offices:
• In each division
• In each department
• In each group, etc.
135
Software Project Management (CS615)
Specific:
For example, it's difficult to know what someone should be doing if they are to
pursue the goal to "work harder". It's easier to recognize "Write a paper".
Measurable:
It's difficult to know what the scope of "Writing a paper" really is. It's easier to
appreciate that effort if the goal is "Write a 30-page paper".
Acceptable:
If I'm to take responsibility for pursuit of a goal, the goal should be acceptable to
me. For example, I'm not likely to follow the directions of someone telling me to
write a 30-page paper when I also have to five other papers to write.
Time frame: It may mean more to others if I commit to a realistic goal to "Write
a 30-page paper in one week". However, it'll mean more to others (particularly if
they are planning to help me or guide me to reach the goal) if I specify that I will
write one page a day for 30 days, rather than including the possibility that I will
write all 30 pages in last day of the 30-day period.
136
Software Project Management (CS615)
Extending: The goal should stretch the performer's capabilities. For example, I
might be more interested in writing a 30-page paper if the topic of the paper or the
way that I write it will extend my capabilities.
Rewarding: I'm more inclined to write the paper if the paper will contribute to an
effort in such a way that I might be rewarded for my effort.
137
Software Project Management (CS615)
LECTURE # 22
3. Processes
1. Scope Planning
2. Scope Definition
3. Activity Definition
4. Activity Sequencing
5. Activity Duration Estimating
6. Resource Planning
7. Cost Estimating
8. Cost Budgeting Risk Planning
9. Schedule Development
10. Quality Planning
11. Communications Planning
12. Organization Planning
13. Staff Acquisition
14. Procurement Planning
15. Project Plan Development
138
Software Project Management (CS615)
15) Project Plan Development —taking the results of other planning processes
and putting them into a consistent, coherent document.
139
Software Project Management (CS615)
Ensuring that project objectives are met by monitoring and measuring progress
and taking corrective measures when necessary
The controlling process group contains core processes and facilitating processes.
forecasting.
141
Software Project Management (CS615)
LECTURE # 23
4. PLANNING
Planning is one of the most important management activities and is an ongoing effort
throughout the life of the project. Software project management begins with a set of
activities that are collectively called Project Planning.
The objective of software project planning is to provide a framework that enables the
manager to make reasonable estimates of:
• Resources
• Cost, and
• Schedule
These estimates are made within a limited time frame at the beginning of a software
project and should be updated regularly as the project progresses.
In addition, estimates should attempt to define best case and worst-case scenarios so
that project outcomes can be bounded.
Planning is one of the most important management activities and is an ongoing effort
throughout the life of the project.
Software project management begins with a set of activities that are collectively
called Project Planning.
The software project planner must estimate following things before a project begins:
142
Software Project Management (CS615)
• How do I ensure that I've done it right? That’s hard, because you won't really
know until the project has been completed. However, if you have experience and
follow a systematic approach, generate estimates using solid historical data, create
estimation, data points using at least two different methods, and factors in
complexity and risk. You can feel confident that you've done a right job to
achieve the targets.
The software development management section, which describes the organization and
resources that will be used to develop the product, should always be included. The
management section discusses how the facilities will be organized to support the
development effort. This is one of the sections that provide much of the detail needed
to prepare the heart of the development plan, namely the development schedule. The
schedule provides answers to two basic planning questions: what and when, while
much of the remaining sections discuss how.
143
Software Project Management (CS615)
The discussion in the how sections provides information on how the project will be
organized, how risks will be handled, how reviews will be conducted, how standards
will be applied, what development methodologies will be used, and how the product
will be tested.
It is usually best to leave the completion of the schedule section for last. The
schedule, being dependent on most of the other sections, is the most sensitive part of
the development plan. After a first draft of the development plan is ready, an initial
development schedule can then be prepared. As we shall see, the schedule will then
be further refined as the development plan goes through progressive iteration.
Why is the system being developed? The answer to this question enables all parties
to assess the validity of business reasons for the software work. Stated in another
way, does the business purpose justify the expenditure of people, time and money?
What will be done, by when? The answers to these questions help the team to
establish a project schedule by identifying key project tasks and the milestones that
are required by the customer.
Who is responsible for a function? Earlier in this chapter, we noted that the role and
responsibility of each member of the software team must be defined. The answer to
this question helps accomplish this.
Where they are organizationally located? Not all roles and responsibilities reside
within the software team itself. The customer, users, and other stake" holders also
have responsibilities.
How will the job be done technically and managerially? Once product scope is
established, a management and technical strategy for the project-must be defined.
How much of each resource is needed? The answer to this question is derived by
developing estimates based on answers to earlier questions.
The definition phase focuses on what. That is, during definition, the software
engineer attempts to identify what information is to be processed, what function and
performance are desired, what system behavior can be expected, what interfaces are
to be established, what design constraints exist, and what validation criteria are
required to define a successful system. The key requirements of the system and the
software are identified. Although the methods applied during the definition phase will
vary depending on the software engineering paradigm (or combination of paradigms)
that is applied, three major tasks will occur in some form: system or information
engineering, software project planning and requirements analysis.
The development phase focuses on how. That is, during development a software
engineer attempts to define how data are to be structured, how function is to be
implemented within a software architecture, how procedural details are to be
144
Software Project Management (CS615)
The support Phase focuses on Change associated with error correction, adaptations
required as the software's environment evolves, and changes due to enhancements
brought about by changing customer requirements. The support phase reapplies the
steps of the definition and development phases but does so in the context of existing
software. Four types of change are encountered during the support phase:
1. Correction
Even with the best quality assurance activities, it is likely that the customer will
uncover defects in the software. Corrective maintenance changes the software to
correct defects.
2. Adaptation
Over time, the original environment (e.g., CPU, operating system, business rules,
external product characteristics) for which the software was developed is likely to
change. Adaptive maintenance results in modification I the software to
accommodate changes to its external environment.
3. Enhancement
As software is used, the customer/user will recognize additional functions that
will provide benefit. Perfective maintenance extends the software beyond its
original functional requirements.
4. Prevention
Computer software deteriorates due to change, and because ( this, preventive
maintenance, often called software reengineering, must be conducted to enable
the software to serve the needs of its end users, in essence, preventive
maintenance makes changes to computer programs so that they ca be more easily
corrected, adapted, and enhanced.
Planning is one of the most important management activities and includes the
preparation of good estimates, the maintenance of the development schedules and the
efficient assignment of personnel.
i. Scope Planning
145
Software Project Management (CS615)
v. Project Control
Project Control may be considered to be one of the continuous objectives for the
project manager. As such he is responsible for taking remedial actions, within
the defined terms of reference, to correct potential problems or taking risk
avoidance measures. The prime objective is to protect the integrity of the project
at all times.
Once the scope of the project has been defined in the Terms of Reference, the project
enters the detailed planning phase. This involves the creation of a:
At this point the project has been planned in detail and is ready to be executed
By this stage, the benefits and costs of the project have been clearly documented, the
objectives and scope have been defined, the project team has been appointed and a
formal project office environment established. It is now time to undertake detailed
planning to ensure that the activities performed in the execution phase of the project
are properly sequenced, resourced, executed and controlled.
146
Software Project Management (CS615)
The first step is to document the Project Plan. A 'Work Breakdown Structure'
(WBS) is identified, which includes a hierarchical set of phases, activities and
tasks to be undertaken on the project. After the WBS has been agreed, an
assessment of the effort required to undertake the activities and tasks is made. The
activities and tasks are sequenced, resources are allocated and a detailed project
schedule is formed. This project schedule will become the primary tool for the
Project Manager to assess the progress of the project.
A schedule is assembled for each type of resource so that the Project Manager can
assess the resource allocation at each stage in the project.
Similar to the Resource Plan, a Financial Plan is prepared to identify the quantity
of money required for each stage in the project. The total cost of labor, equipment
and materials is quantified and an expense schedule is defined which provides the
Project Manager with an understanding of the forecast spending vs. the actual
spending throughout the project. Preparing a detailed Financial Plan is extremely
important as the project's success will depend on whether or not it is delivered
within the 'time, cost and quality' estimates for this project.
Meeting the quality expectations of the customer is critical to the success of the
project. To ensure that the quality expectations are clearly defined and can
reasonably be achieved, a Quality Plan is documented. The Quality Plan:
147
Software Project Management (CS615)
Lists clear and unambiguous quality targets for each deliverable. Each quality
target provides a set of criteria and standards which must be achieved to meet
the expectations of the customer
Outlines a plan of activities which will assure the customer that the quality
targets will be met (i.e. a Quality Assurance Plan)
Identifies the techniques used to control the actual level of quality of each
deliverable as it is built (i.e. a Quality Control Plan).
Finally, it is important to review the quality not only of the deliverables produced
by the project but also of the management processes which produce them. A
summary of each of the management processes undertaken during the execution
phase is identified, including Time, Cost, Quality, Change, Risk, Issue,
Procurement, Acceptance and Communications Management.
5. Develop Risk Plan
The foreseeable project risks are then documented within a Risk Plan and a set of
actions to be taken formulated to both prevent each risk from occurring and
reduce the impact of the risk should it eventuate. Developing a clear Risk Plan is
an important activity within the planning phase as it is necessary to mitigate all
critical project risks prior to entering the Execution phase of the project.
The key to a successful project is gaining acceptance from the customer that each
deliverable produced meets (or exceeds) his/her requirements. To clarify the
criteria used to judge each deliverable for customer acceptance, an Acceptance
Plan is produced. The Acceptance Plan provides the criteria for obtaining
customer acceptance, a schedule of acceptance reviews within which customer
acceptance will be sought and a summary of the process used to gain acceptance
of each deliverable from the customer.
Prior to the Execution phase, it is also necessary to identify how each of the
stakeholders will be kept informed of the progress of the project. The
Communications Plan identifies the types of information to be distributed, the
methods of distributing information to stakeholders, the frequency of distribution
and responsibilities of each person in the project team for distributing information
regularly to stakeholders.
The last planning activity within the Planning phase is to identify the elements of
the Project which will be acquired from external suppliers to the project. The
Procurement Plan provides a detailed description of the Products (i.e. goods and
services) to be procured from suppliers, the justification for procuring each
148
Software Project Management (CS615)
product externally, as opposed to from within the business, and the schedule for
procurement. It also references the process for the selection of a preferred supplier
("Tender Process") and the process for the actual order and delivery of the
procured products ("Procurement Process").
The project development plan is one of the first formal documents produced by the
project. Within this document, the project manager describes in detail:
The project development plan assures that the development of the project is well
charted before the main development activities begin. In -addition to the basic
development schedule, the plan addresses such issues as:
The timely provision of equipment and tools so that they are available to
developers when needed.
The availability of staff to perform the development tasks in accordance with
the schedule.
Provision of contingency plans in the event that project risks materialize
The designation .of duties within the development team, and the assignment
of these duties to the team members.
Preparing the project plan for a software project helps you ensure that the specified
requirements and objectives are met successfully. It is a collation of all planning
activities that have happened for a software project. This includes activities such as
design and analysis, activity definition, risk planning, and cost estimation. To create
the plan, you assess all planning activities, organizational policies regarding the
creation of the project plan and assumption and constraints for the project. To
implement the software project plan, you require management skills, such as
leadership, communication, and problem solving, along with the basic knowledge
about the software. You also need to ensure that the senior management bf the
company has authorized work on the software project. Knowledge management
techniques help you to make informed decision regarding the project plan.
After the project plan is executed, you manage the changes to it in such a way that the
performance measurement baselines are not impacted, To manage the project plan
effectively you monitor the project plan, periodic performance status reports, and
requests for change. The primary tool that you can use to control the changes in the
project plan is the change control mechanism: This is a set of formal procedures for
changing the project plan.
The Project Plan is a vital part of the project initiation stage. The plan
should normally contain the following information:
This information creates the generation of a Project Book (log). The log
should be in a loose-leaf binder with clearly identified sections and version
control exercised over the documentation sets. These logs are now often
retained as computer file, which enables a greater level of security to be
maintained over them and version control to be established as an automatic
feature.
The contents of the project development plan may be adapted to the size of
the project; it may be a large document or just a few pages. Table 1 presents
an outline of some of the subjects covered in the project development plan.
Not all subjects in Table 1 are applicable to all projects. For example, many
projects do not administer their own budget. Some organizations have a
financial officer responsible for the administration of project budgets. The
interface with external sources is another area riot applicable to all projects.
The term, external sources covers such activities as interfacing with
subcontractors, vendors and representatives of the customer.
Many standards have been produced for the project development plan. The
formal structure or the project development plan document differs,
depending on the actual documentation standard used. For example, the US
DOD standard 2167 provides the option of describing the testing,
configuration management and quality assurance plans in three separate
documents. For large projects, this option can become a requirement.
150
Software Project Management (CS615)
151
Software Project Management (CS615)
1. System overview
2. Software development management
Project organization and resources
Development facilities
Project organizational structure
Personnel
3. Schedule and milestones
Scheduled activities
Milestones and baselines
Activity network diagrams
System component source
Budget administration
Milestone payments
Major budgetary expenditures
Expenditure authorization procedure
4. Risk analysis
5. Security
6. Interface with external sources
7. Procedure for formal reviews
8. Corrective action process
9. Problem change report
10. Software engineering
Standards and procedures
Development methodology
Development resources
Personnel - qualifications and function
11. Testing procedure
12. Software configuration management
13 Software quality assurance
Project plan development uses the outputs of the other planning processes,
including strategic planning, to create a consistent, coherent document that
can be used to guide both project execution and project control. This process
is almost always iterated several times. For example, the initial draft may
include generic resource requirements and an undated sequence of activities
while the subsequent versions of the plan will include specific resources and
explicit dates.
153
Software Project Management (CS615)
LECTURE # 24
4. PLANNING
154
Software Project Management (CS615)
Project plan execution is the primary process for carrying out the project plan the
vast majority of the project’s budget will be expended in performing this process.
In this process, the project manager and the project management team must
coordinate and direct the various technical and organizational interfaces that exist
in the project. It is the project process that is most directly affected by the project
application area in that the product of the project is actually created here.
Performance against the project baseline must be continuously monitored so that
corrective actions can be taken based on actual performance against the project
plan. Periodic forecasts of the final cost and schedule results will be made to
support the analysis.
155
Software Project Management (CS615)
1. Work results. Work results are the outcomes of the activities performed to
accomplish the project. Information on work results—which deliverables have
been completed and which have not, to what extent quality standards are
being met, what costs have been incurred or committed, etc.—is collected as
part of project plan execution and fed into the performance reporting process.
It should be noted that although outcomes are frequently tangible deliverables
such as buildings, roads, etc., they are also often intangibles such as people
trained who can effectively apply that training.
156
Software Project Management (CS615)
LECTURE # 25
4. PLANNING
Project Plan is iteratively defined through Concept & Requirements Phase. Initial
estimates are refined as scope and requirements become clearer. There are two
phases of project plan:
1. Preliminary
2. Final
Following are some elements of Software Project Plan:
a) Scope Planning
• Project Scope Planning starts with the initial inputs of product description, the
project charter, and the initial definition of constraints and assumptions.
• The outputs of scope planning are the scope statement and scope management
plan, with the supporting detail.
• The scope statement forms the basis for an agreement between the project and
the project customer by identifying both the project objectives and the project
deliverables.
• Project teams develop multiple scope statements that are appropriate for the
level of project work decomposition.
c) Technical Approach
157
Software Project Management (CS615)
– Technologies
– In House vs. Consultants
– Derivatives of existing (i.e. use existing object model)
– Architectural Layout – Layers
d) Contractual Aspects
Cost-plus is a contractual relationship where the developer is paid for the cost of
the service provided and in addition is allowed an agreed profit margin.
This is rather like renting a car the customer pays for the time that the car is used
(by the hour, day, week etc.), and for any other expenses such as insurance and
gasoline.
2. Fixed price
This is similar to purchasing a bus ticket, when the bus company agrees to take
the customer to a specific destination within a published timetable, and for an
agreed fee.
e) Schedules
f) Resource Allocation
158
Software Project Management (CS615)
g) Evaluation Methods
• Web trends
• Database Logs
– Transaction logs
– Setup schedule for reviews
159
Software Project Management (CS615)
LECTURE # 26
5. ORGANIZATION
• First, you schedule a meeting of all managers and the Finance, Marketing,
Production, and Systems personnel. You can follow a process to complete
this 'task. You may send email messages or call them up personally.
• Fina1ly, you determine the territory where the product should be launched.
This is done in consultation with the Production and Marketing
departments.
1. The Waterfall model: This is the traditional life cycle model. It assumes that
all phases in a software project are carried out sequentially and that each
phase is completed before the next is taken up.
2. The Prototyping Model: A model that works on an iterative cycle of
gathering customer requirements, producing a prototype based on the
requirement specifications, and getting the prototype validated by the
160
Software Project Management (CS615)
customer. Each iteration of the life cycle builds on the prototype produced in
the previous iteration.
3. The Incremental Model: The Incremental model is an example of an
evolutionary life cycle model. It combines the linear nature of the Waterfall
model and the iterative nature of the Prototyping model. The Incremental
model divided the development life cycle into multiple linear sequences, each
of which produces an increment of the final software product. In this model,
the software product is developed in builds. A build is defined as a self-
contained unit of the development activity. The entire development cycle is
planned for a specific number of logical builds, each having a specific set of
features.
4. The Spiral model: Another evolutionary life cycle model that combines the
linear nature of the Waterfall model and the iterative nature of the Prototyping
model. The project life cycle is divided into phases, and each phase is
executed in all of the iteration of the Spiral Model.
5. The RAD Model:
A process model is flexible and does not follow any rigid rules of implementation.
An organization can deploy a totally new process model for its overall software
development effort. It can also customize an existing process model to merge with
its implemented process model. For example, figure 1, shows two process models,
A and B. Process model A was used by an organization that manufactures
confidential defense applications. The management used the model to plan
extensively for unexpected project risks. However, after discussing with the
project managers and system analysts, the organization wants to merge its current
process model with a model lat has simple and consistent SDLC phases. This
leads to the evolution of the process model B.
161
Software Project Management (CS615)
For example, if you select a process model, you know for sure that you need to carry out
certain activities, such as planning, scheduling, resource allocation, risk management, and
cost and effort estimation. These activities ensure smooth progress of a project within the
162
Software Project Management (CS615)
allocated time and ensure maintenance of quality and measurability throughout the
project.
With so many process models available, a project manager is likely to face the dilemma
of selecting the right process model for managing a software project efficiently.
To select a process model that is suitable to a project, the following criteria can be
considered:
staffing requirements in the Spiral model may increase or decrease depending on the
changes in requirements arid feasibility of the proposed project in the future.
Risks Perceived in a Project
This is yet another important criterion for the selection of a process model. You choose
the Waterfall or Incremental model if the occurrence of risks and their impact perceived
is minimum. However, you should go in for the Spiral model if the risks and their
perceived impact are very high.
• The project is large yet it is clearly divided into discrete phases and each phase
has defined number of days, personnel, and resources allocated. The Waterfall
model requires the presence of defined phases and processes in each phase.
• The development also perceives that it can have defined set of input and certified
output. This is because each phase would lead to another and the next phase
would not begin until the previous phase is certified as closed. This way baselines
and milestones for each phase can be identified. The Waterfall model assumes the
closure of a previous phase before the successive phase begins. This ensures
linear progression of a project where developers do not need to revert to an earlier
phase or a process.
• The development team is not likely to face any bumps in the development process
because of clear cut project requirements as well documentation provided to them
by the client. Clarity of project vision and project requirements are the essential
features of the Waterfall model, which are fulfilled in the preceding scenario.
Therefore, if the requirements are defined and a project is large enough to be divided into
defined phases, you can go for the Waterfall model.
• There cannot be a sudden crossover from one phase to the next. Real-time projects
require sudden crossover between phases because such projects are subjected to
change in every phase of the development cycle. For example, real-time projects such
as embedded software development where the phases and the requirements for every
phase cannot be determined at the analysis phase cannot deploy the Waterfall model.
• Another reason for the unpopularity of the Waterfall model is that it requires too
much effort for stringent documentation-in every phase. Every phase is closed with
formal documentation. Projects with predictable final product, such as banking
software or an airline reservation project, usually have formal documentation. This is
because the phases of these projects are defined. However, it is difficult for research
and development (R&D) related projects to complete all project documentation.
• The Waterfall model does not support the development of a working model of a
164
Software Project Management (CS615)
project first and then further development based on client feedback. Absence of a
working model prevents you from detecting an issue in an early phase. As a result,
you incur higher expenditure in rectifying the issue in a later phase. This in turn has
an adverse effect on the effort, cost, and time spent on rework.
• Finally, the Waterfall model causes, as a "blocking state". When a blocking state
occurs, some team members wait for other team members to finish a dependent task.
For example, in the following figure, the team member assigned to do the design task
cannot begin work until the analysis is complete. This delays the turnaround of the
software project. Many times, the blocking state wastes a lot of developers' time that
could have been spent on productive project -related work.
Analysis
Design
Coding
Testing
Implementation &
Design
• The client is not clear about the requirements of the proposed system or
165
Software Project Management (CS615)
To resolve the conflict, the development team develops a working model so that the
requirements of the client become defined. Defined client requirements enable the
physical development of the actual product.
The Prototyping model enables an analysis team to first construct a working model with
their prior software experience combined with the vague needs of the client.
The Prototyping model can be as simple as a drawing on a paper or as complex as the real
working software. The closer your prototype is to the actual product, the more precise is
your evaluation.
There are different types of prototyping methods that an organization can implement:
• Rapid prototyping
• Reusable prototyping
• Modular prototyping
Rapid prototyping
This model is suitable when:
Reusable prototyping
This model is used when:
• The old design needs major changes but the supplementary components of the old
design do not need major changes.
Modular prototyping
This model is used when:
Using the Prototyping model saves cost and time involved in the build-it-twice approach.
The experience of developing the prototype is useful for developers while developing the
final product. It reduces the risks of an unfeasible project design because the developers
gain a fair idea of the resources and the probable time taken to create the [mal product.
They also get a feel of the implementation tool to be used in the project.
Incremental Model
166
Software Project Management (CS615)
In such cases, the management can decide to divide and develop a product in individual
builds. When the resources are available, the subsequent builds are planned and executed.
This process model is useful in real life because normally all the resources required to
complete the project are not available at the same time.
Example:
Consider a situation in which you might need to use the Incremental model of SDLC.
Supersoft2000 requires a software product that automates the employee and their salary
details. It has assigned this project to Blue Valley Consulting (BVC) that specializes in
developing Human Resources (HR)-related applications. The project requirements are
defined to start the project. However, the client wants to roll out the new system for the
benefit of its employees as early as possible. The analysis team in BVC has been able to
divide the entire project into seven independent modules. On the basis of their prior
experience, it feels each module can be executed and deployed independently by the
client. After all the modules are completed, the maintenance team in BVC can assemble
and implement the system at the client site. Currently, the development personnel in BVC
are hired on contract and BVC faces shortage of skilled personnel.
In such a case, you use the Incremental model because of the following reasons:
• Time and lack of skilled personnel are the main hindrances in this project.
Therefore, by using the Incremental model, you can design, develop, and deliver
independent modules. This way by using a few skilled personnel you are able to develop
a system with basic features and provide it to the client immediately. The most important
and the least dependent module are developed first. While the client is using the module,
BVC can arrange for additional skilled personnel to complete the rest of the modules and
deliver them to the client.
The Incremental model enables you to revert to an earlier phase and refine the product
based on client feedback. After all the modules have been developed, the development
personnel can be released. BVC can then hire or retain a few experienced personnel to
create a maintenance team. This team would assemble and implement the entire
employee salary details product at the client site. This flexibility of personnel can be
exercised because you use the Incremental model. Using the Incremental model enables:
167
Software Project Management (CS615)
Therefore, if time and skilled personnel are constraints of a Project, you can effectively
use the Incremental model.
Spiral Model
The basic goal of using the Spiral model is to define ways of eliminating risks in the
design phase. Consequently, minimum and manageable risks percolate into the
development phase.
Example:
LMN Inc. has acquired a project to develop a telecommunications project using the
Voice-over Internet telephony (VOIP) technology. The company does not have any prior
experience or the required level of expertise to develop such a project. There is a team of
three analysts and the company does not propose to dedicate a team to complete this
project. This is because it anticipates many risks and a large amount of rework that may
add to the cost of project execution. The company has determined multiple models and
designs to execute the project. After presenting the models to the client, the client is itself
confused. However, it assures LMN Inc. of continued feedback and support. The client
fully understands the ambitiousness of the project and does not consider time and budget
as constraints for the project. Consequently, LMN Inc. decides to use the client feedback
and risk analysis effectively until the end of the project.
In this situation, you would use the Spiral model because of the following reasons:
You (the PM) need to choose which documents are appropriate. Documents do not have
to be lengthy.
The requirements phase formally concludes with the project's first major review: the
software requirements review (SRR). It is this review that signs off the requirements
specification and formally declares the requirements document as the first approved
project baseline.
The project manager (or the advising consultant adopting this role) must ensure
that the project sponsor has produced a written statement of requirements (SOR).
This must be a thorough document which is:
o Unambiguous
o Fully defined or complete
o Verifiable deliverables
o No conflicts
o Consistent
o Auditable
The SOR will be the document against which change control will be exercised.
The SOR should be closely matched to the contract and there should be no
conflict of interests between the two. Where consultants are involved, the client or
sponsor SOR will normally form the basis of the proposal. All of these documents
must carefully align and there should be no scope for misinterpretation, confusion
or lack of understanding. This will be the cornerstone of the project.
3. System Specification
4. Design Specification
The first stage of risk analysis requires a review of all, project technical and
administrative plans in order to identity potential problems. It includes:
169
Software Project Management (CS615)
All major dependencies in the project development plan are examined and
evaluated.
The project design specification is a detailed plan of how the requirements are to
be implemented.
A list of all anticipated problems is then compiled, identifying each problem and
describing the potential effect on the project. Following table presents an example
of an anticipated problem list.
Problem Description
5. High staff turnover The schedule is tight with only minimal slack
time. If there is more than average staff
Replacement during development, we will slip the
schedule.
170
Software Project Management (CS615)
The anticipated problem list should be compiled with the participation of the
principle members of the project development team. Other people may also be
invited to contribute to the list, based on their experience and technical or
administrative knowledge. This might include people from other project teams,
support groups, the company's legal department or the purchasing department.
While the objective is not to list every conceivable problem that any project may
experience, it is necessary to identify those problems that should reasonably be
considered in relation to the project. In any event, the following analysis stage is
designed to isolate only those problems that could have significant impact on the
project, and that can reasonably be expected to appear.
Standard 2168 (DOD 1988b) contains the requirements for the development,
documentation and implementation of a software quality program. The software
quality program includes planning for and conducting:
Evaluations of the quality of software
Associated documentation and related activities
Follow-up activities necessary to assure timely and effective resolution of
problems
The DID s are a comprehensive set of documentation standards that cover all
phases of software development, maintenance and the production of user
reference manuals. The DID s include a section called preparation instructions
that provide a large degree of freedom by permitting tailoring of the document
format and the use of alternate presentation styles. The full set of DID s is
described in Table 2.
Standard 2167 states that it is not intended to specify or discourage the use of any
particular software development method (DOD 1988a). However, as mentioned
previously, the standard is heavily inclined toward phased development
methodologies, such as the Waterfall paradigm. The phased approach is inherent
171
Software Project Management (CS615)
The Data Item Descriptions define the formal documentation standards for all
required documents generated during the development of software according to
standard 2167. DID s apply to the development of one or more computer system
configuration items (CSCI s), a term used throughout the 2167 standard to
identify high level decomposition components of a computer system.
Table 2: DOD Data Item Descriptions (DID s)
Development documentation
• Software development plan
System documentation
• System/segment specification
• System/segment design document
Version description
• Version description document
Test documentation
• Software test plan
• Software test description
• Test report
Release manuals
• Computer system operator's manual
• Software user's manual
• Software programmer's manual
• Firmware support manual
172
Software Project Management (CS615)
Table 3 contains a list of the DID s referenced by standard 2167A. The software
quality DID is referenced separately in the DOD software quality program
standard 2168. All DID document formats follow a similar pattern. Several of the
sections are common to most, if not all of the documents, such as:
173
Software Project Management (CS615)
phasis is on the required content and not on the required format. This is
specifically addressed in the preparation instructions accompanying each DIn
addition, the page format, page numbering scheme, section numbering scheme
and various other preparation instructions are common. This clearly suggests the
use of an automatic tool to assist in the preparation of the documents, a practice
greatly encouraged by the 2167 standard. Many such tools have been developed
to support 2167, and Polack, in a paper analyzing the use of CASE tools for DOD
projects (Polack 1990), concludes that these tools do indeed save time, and result
in a higher quality software system.
Each DID describe the requirements for the preparation of a specific document,
but the main emID, which state that other presentation styles, including charts,
tables or matrices, are acceptable (e.g. Hatley and Pirbhai (1988) or Ward and
Mellor (1986). There is also substantial flexibility in the requirements regarding
the content of the documents. The standard provides for considerable tailoring to
adapt the standard to the type of project being developed.
The DOD has issued a guide for tailoring that can be used as a reference source
for adapting the standards to the type of project being developed. Two basic
principles apply to tailoring:
The first principle means that these modifications can only include the deletion of
requirements from the standard (and not changes to the requirements in the
standard). The second principle means that the contractor (i.e. the developer)
cannot tailor the standard without receiving permission from the contracting
agency (i.e. the DOD).
Tailoring of the 2167 standard must be completed as early as possible. This is best
performed either during contract negotiations or as one of the initial activities as
soon as the project begins. The following is a description of the basic procedure
for tailoring standard 2167:
• testing activities
• quality assurance activities
• configuration control activities
• other required development activities
2. Identify the requirements that are not applicable, justifiable or reasonable for
the project being developed. For example, the Firmware Support Manual will
not be required if no firmware is being developed: or two design reviews
(POR and COR) may not be necessary for a small project.
3. Prepare a list of requests for deletions from the standard. This may include:
• exclusion of documents
• exclusion of sections in documents
• exclusion of activities.
• exclusion of parts of activities
In order to be able to differentiate between forgotten items and tailored items, all
tailored items must be clearly referenced. When submitting a list of documents for
a formal review or milestone, all documents tailored out should be listed together
with a statement to that effect. Within a document, when a paragraph is tailored
out a statement to that effect will appear directly after the paragraph number. If a
paragraph and all of its subparagraphs are tailored out, only the highest level
paragraph number need be included.
The list of the DID s together with the list of tailoring approvals are an integral
part of the project deliverables. Until tailoring approval has been granted, the
developer is obligated to provide the full list of Dills, with all their inclusions.
This is the reason why tailoring should be concluded as early as possible.
The SCMP documents the resources that are needed, how they are to be used, and
which standards and procedures will be applied during the project.
175
Software Project Management (CS615)
The SCMP then becomes the mandate for the configuration control group during
project development. The issuance of this plan is the responsibility of the project
manager, though in large projects it may be delegated to the configuration Control
manager.
Table 4 contains a list of the main subjects covered in the SCMP. When any of
these subjects is covered elsewhere (e.g. in the software quality assurance plan), it
can be omitted from the SCMP and replaced by a pointer to the document in
which it is covered. Though most of the subjects in Table 1 are self-descriptive,
the following are some guidelines:
The section on identification methods describes the way in which each component
generated by the project is marked for unique identification. Security, restricted
access and classification refer to the secure development of sensitive products
(such as documents, software, patents, military classified information etc.). It is
often convenient to assign many of these tasks to configuration control because of
the need to be involved in the review and classification of documents and other
related activities that are associated with security.
Subcontractors, vendors and suppliers mayor may not implement their own
configuration management plan. It is the project manager's responsibility to assure
that either subcontractors or external developers submit a CMP for review, or that
the project's configuration manager assumes responsibility for their work.
The SCMP may also include diagrams and flow charts to describe procedures for
submitting change requests, or for reporting problems.
176
Software Project Management (CS615)
In essence, SSPI uses software failure analysis to collect information about all
errors and defects encountered as an application, system, or product is developed
and used. Failure analysis works in the following manner:
1. All errors and defects are categorized by origin (e.g., flaw in specification, flaw in
logic, non conformance to standards).
2. The cost to correct each error and defect is recorded.
3. The number of errors and defects in each category is counted and ranked in
descending order.
4. The overall cost of errors and defects in each category is computed.
5. Resultant data are analyzed to uncover the categories that result in highest cost to
the organization.
6. Plans are developed to modify the process with the intent of eliminating or
reducing the frequency of the class of errors and defects that is most costly.
3. Configuration identification
Method for defining SCCI s Description of the SCCI s for this project
6. Change control
Change control procedures (method of submission, review. approval and
rejection)
Reporting documentation (change requests, problem reports)
Change review procedures and review board
7. Version control
Preparation of software and documentation versions
Release approval procedure
• A collection and filing structure that details what methods will be used to gather
and store various types of information. Procedures should also cover collecting
and disseminating updates and corrections to previously distributed material.
• A method for updating and refining the communications management plan as the
project progresses and develops. The communications management plan may be
formal or informal, highly detailed or broadly framed, based on the needs of the
project. It is a subsidiary component of the overall project plan.
Every project must have a quality plan. The quality plan will be presented as a
section in the project plan.
178
Software Project Management (CS615)
It is drawn up by the project manager at the start of the project and should be
agreed with the project sponsor.
You would expect the quality plan to contain the following elements:
The software quality assurance plan (SQAP), like the software configuration plan,
is also part of the overall software project development plan.
The SQAP documents which resources are needed, how they should be used and
which standards and procedures will be applied during the project.
The SQAP then becomes the mandate for the quality assurance group during
project development. The issuance of this plan is the responsibility of the project
manager, though in large projects it will usually be delegated to the quality
assurance manager.
The SQAP may appear as a separate document or as a section within the project
development plan, and may include the configuration management plan (if this
has not been documented separately).
Table 5 contains a list of the main subjects covered in the SQAP. When any of
these subjects is covered elsewhere, such as in the software configuration
management plan (SCMP), it can be omitted from the SQAP and replaced by a
pointer to the document in which it is covered.
However, the SCMP and the SQAP are concerned with different aspects of the
controlled items. The SCMP is primarily concerned with the format of controlled
items while the SQAP is more involved with the contents of controlled items.
In any project, the quality of external components is ultimately the concern of the
project manager and the SQA organization. When a system fails, it usually makes
179
Software Project Management (CS615)
The plans for supervising these external groups must be adapted to the type of
external components being provided (off the shelf or new development) and the
type of organization (do they have their own quality assurance organization?).
180
Software Project Management (CS615)
The SQAP, as part of the project development plan, should be reviewed and
updated periodically and whenever any requirements, project development
procedures, methodologies or other relevant activities are changed.
181
Software Project Management (CS615)
The IEEE SQAP guide recommends periodic evaluation of two aspects of the
plan:
The plan's content should be evaluated with regard to the specific SQAP standard
used, to assure the plan's continuing compliance with the standard even when the
characteristics of the software project change.
When updating the SQAP the following project activities and events should be
considered:
A collection of risk information sheets developed for all risks that lie above the
cut off. A risk management strategy can be included in the software project plan
or the risk management steps can be organized into a separate Risk Mitigation,
Monitoring and Management Plan. The RMMM plan documents all work
performed as part of risk analysis and are used by the project manager as part of
the overall project plan.
Some software teams do not develop a formal RMMM document. Rather, each
risk is documented individually using a risk information sheet (RIS) [WIL97]. In
most cases, the RIS is maintained using a database system, so that creation and
information entry, priority ordering, searches, and other analysis may be
accomplished easily.
Once RMMM has been documented and the project has begun, risk mitigation
and monitoring steps commence.
182
Software Project Management (CS615)
Good estimates are important, as they form the foundations of a good project
development plan. This plan, prepared by the project manager, is produced during
the initial stages of the project and includes estimates related to:
In parallel with integration and testing, the following managerial and activities
take place:
The phased approach to software development divides the development life cycle
into:
Apart from the actual code being written (and hopefully being well commented),
some of the other documents that are developed during this phase include:
183
Software Project Management (CS615)
At the conclusion of the integration and test phase all documentation must be
complete and ready for delivery, including:
• Maintenance documentation
• Final user documentation
• All updated development documentation
• Test documentation and test reports
The statement of work is the basis of the contract between the pro-poser and the
customer, and is often incorporated into the contract. The SOW contains a
detailed list of all work to be performed by the pro-poser for the benefit of the
customer.
184
Software Project Management (CS615)
The SOW starts as a general list of required deliverables in the RFP. A more
detailed version t of the SOW is submitted as part of the proposal, and is still
considered only an initial description of the work to be performed. The blinding
version of the SOW is finalized during contract negotiations, or after the detailed
project requirements have been completed.
Table 6 presents an example of an SOW outline for a software project. The list of
items varies considerably, depending on the type of project being developed; for
example not all projects include the delivery of hardware components, and not all
projects require training or installation.
The basic guideline for the preparation of the SOW is that any activity, service or
product required by the customer, and agreed to by the developer, must be
included. This means that there can be no binding work items that were
informally understood or agreed to verbally, which do not appear in the SOW.
The formal SOW must include all and only the work to be performed. This
condition prevents misunderstandings and disagreements later, after the project
begins.
The statement of work (SOW) describes the procurement item in sufficient detail
to allow prospective sellers to determine if they are capable of providing the item.
“Sufficient detail” may vary, based on the nature of the item, the needs of the
buyer, or the expected contract form.
Some application areas recognize different types of SOW. For example, in some
government jurisdictions, the term SOW is reserved for a procurement item that is
a clearly specified product or service, and the term Statement of Objectives (SOO)
is used for a procurement item that is presented as a problem to be solved.
The statement of work may be revised and refined as it moves through the
procurement process. For example, a prospective seller may suggest a more
185
Software Project Management (CS615)
efficient approach or a less costly product than that originally specified. Each
individual procurement item requires a separate statement of work. However,
multiple products or services may be grouped as one procurement item with a
single SOW.
1. Referenced documents
• requirements specification
• existing system description
• customer's RFP
• developer's proposal
• vendor's and developer's technical literature
2. Software deliverables
• functionality (as documented in the requirements specification)
• list of major software components
4. Training
• user courses
• operator training
• installation training
5. Market research
6. Procurement
7. Supervision of subcontractors
8. Documentation
• development documentation
• user documentation
• maintenance documentation
• other technical documentation
9. Testing
• alpha testing
• beta testing
• acceptance tests (ATP)
10. Installation
11. Maintenance services
12. Other services and deliverable items
13. Method of delivery
186
Software Project Management (CS615)
• software
• documentation
• hardware
In some application areas, there are specific content and format requirements for a
SOW.
Project roles (who do what) and responsibilities (who decide what) must be
assigned to the appropriate project stakeholders.
Roles and responsibilities may vary over time. Most roles and responsibilities will
be assigned to stakeholders who are actively involved in the work of the project,
such as the project manager, other members of the project management team, and
the individual contributors.
The roles and responsibilities of the project manager are generally critical on most
projects, but vary significantly by application area. Project roles and
responsibilities should be closely linked to the project scope definition.
For example, a high-level RAM may define which group or unit is responsible for
each component of the work breakdown structure, while lower-level RAM s are
used within the group to assign roles and responsibilities for specific activities to
particular individuals.
A structure that relates the project organization structure to the work breakdown
structure, to help ensure, that each element of the project’s scope of work is
assigned to a responsible individual.
– Shows who does what (x=person, y=phase). The most important feature of the
RAM is the participatory development process involving all stakeholders.
Show who is participant, who is accountable, who handles reviews, who
provides input and who must sign off on specific work packages or project
phases.
187
Software Project Management (CS615)
The risk management plan describes how risk identification, qualitative and
quantitative analysis, response planning, monitoring, and control will be
structured and performed during the project life cycle. The risk management plan
may include the following.
– Methodology. Defines the approaches, tools, and data sources that may be
used to perform risk management on this project. Different types of
assessments may be appropriate, depending upon the project stage, amount of
information available, and flexibility remaining in risk management.
– Roles and responsibilities. Defines the lead, support, and risk management
team membership for each type of action in the risk management plan. Risk
management teams organized outside of the project office may be able to
perform more independent, unbiased risk analyses of project than those from
the sponsoring project team.
– Timing. Defines how often the risk management process will be performed
throughout the project life cycle. Results should be developed early enough to
affect decisions. The decisions should be revisited periodically during project
execution.
– Thresholds. The threshold criteria for risks that will be acted upon, by whom,
and in what manner. The project owner, customer, or sponsor may have a
different risk threshold. The acceptable threshold forms the target against
which the project team will measure the effectiveness of the risk response plan
execution.
– Reporting formats. Describes the content and format of the risk response
plan. Defines how the results of the risk management processes will be
documented, analyzed, and communicated to the project team, internal and
external stakeholders, sponsors, and others.
188
Software Project Management (CS615)
– Tracking. Documents how all facets of risk activities will be recorded for the
benefit of the current project, future needs, and lessons learned. Documents if
and how risk processes will be audited.
4.10 Scheduling
Any project can be completed, given an infinite amount of time and resources.
Realistically, the amount of time available for project development is always
finite.
In fact, in most cases it is less than the project manager considers sufficient.
Few projects are completed ahead of time; many projects overrun their schedule.
The project schedule is one of the most important parts of the project
development plan.
No matter how well the project schedule is prepared, that schedule is useless
unless it is adhered to. It is the project manager's responsibility to withstand
pressure and to assure that the project is developed in an orderly fashion,
according to the schedule. Whenever circumstances change, the project schedule
should then be updated to reflect the new situation.
189
Software Project Management (CS615)
A common failure in many kinds of planning is that the plan is never really
implemented. Instead, all focus is on writing a plan document.
Most of the following guidelines help to ensure that the planning process is
carried out completely and is implemented completely or, deviations from the
intended plan are recognized and managed accordingly.
It's critical that all parts of the system continue to exchange feedback in order to
function effectively. This is true no matter what type of system.
When planning, get input from everyone who will be responsible to carry out
parts of the plan, along with representative from groups who will be affected by
the plan.
New managers, in particular, often forget that others don't know what these
managers know.
Even if managers do communicate their intentions and plans verbally, chances are
that others won't completely hear or understand what the manager wants done.
Therefore, it's critical to write plans down and communicate them widely.
• Specific
• Measurable
190
Software Project Management (CS615)
• Acceptable
• Realistic
• Time frame
• Extending
• Rewarding
Plans should specify who is responsible for achieving each result, including goals
and objectives.
Be sure to have someone of authority "sign off" on the plan, including putting
their signature on the plan to indicate they agree with and support its contents.
It's OK to deviate from the plan. The plan is not a set of rules. It's an overall
guideline. It is equally important to notice deviations and adjust the plan
accordingly.
During the planning process, regularly collect feedback from participants. Do they
agree with the planning process? If not, what don't they like and how could it be
done better?
During regular reviews of implementation of the plan, assess if goals are being
achieved or not. If not, were goals realistic? Do responsible parties have the
resources necessary to achieve the goals and objectives?
Should goals be changed? Should more priority be placed on achieving the goals?
What needs to be done?
Write down how the planning process could have been done better. File it away
and read it the next time you conduct the planning process.
191
Software Project Management (CS615)
This is extremely unfortunate because the real treasure of planning is the planning
process itself.
During planning, planners learn a great deal from ongoing analysis, reflection,
discussion, debates and dialogue around issues and goals in the system.
192
Software Project Management (CS615)
LECTURE # 27
5. ORGANIZATION
How you interpret each of the above major parts of an organization depends very
much on your values and your nature. People can view organizations as machines,
organisms, families, groups, etc.
– Delegation
– Authority
– Responsibility
– Supervision.
Most projects are organized as teams, with each team assigned specific functions
within the project.
Different types of project require different types of team structure, as for example
a team of junior programmers requires a technical team leader while a team of
experts may require only an administrative team leader.
It is the project manager's responsibility to select the structure best suited for the
project.
How you interpret each of the above major parts of an organization depends very
much on your values and your nature. People can view organizations as machines,
organisms, families, groups, etc.
193
Software Project Management (CS615)
Simply put, a system is an organized collection of parts that are highly integrated
in order to accomplish an overall goal.
The system has various inputs which are processed to produce certain outputs,
which together, accomplish the overall goal desired by the organization.
There is ongoing feedback among these various parts to ensure they remain
aligned to accomplish the overall goal of the organization. There are several
classes of systems, ranging from very simple frameworks all the way to social
systems, which are the most complex. Organizations are, of course, social
systems.
Systems have inputs, processes, outputs and outcomes. To explain, inputs to the
system include resources such as raw materials, money, technologies and people.
These inputs go through a process where they're aligned, moved along and
carefully coordinated, ultimately to achieve the goals set for the system. Outputs
are tangible results produced by processes in the system, such as products or
services for consumers.
Another kind of result is outcomes, or benefits for consumers, e.g., jobs for
workers, enhanced quality of life for customers, etc. Systems can be the entire
organization, or its departments, groups, processes, etc.
Feedback comes from, e.g., employees who carry out processes in the
organization, customers/clients using the products and services, etc.
Feedback also comes from the larger environment of the organization, e.g.,
influences from government, society, economics, and technologies.
Each organization has numerous subsystems, as well. Each subsystem has its own
boundaries of sorts, and includes various inputs, processes, outputs and outcomes
geared to accomplish an overall goal for the subsystem.
The organizational system is defined by, e.g., its legal documents (articles of
incorporation, by laws, roles of officers, etc.), mission, goals and strategies,
policies and procedures, operating manuals, etc.
In systems theory terms, the design ensures that the appropriate inputs go through
the necessary processes to produce the required outputs to produce the intended
outcomes.
– Organizations that derive their revenue primarily from performing projects for
others—architectural firms, engineering firms, consultants, construction con-
tractors, government contractors, nongovernmental organizations, etc
The project management team should be acutely aware of how the organization’s
systems affect the project.
For example, if the organization rewards its functional managers for charging
staff time to projects, then the project management team may need to implement
controls to ensure that assigned staff members are being used effectively on the
project.
– Shared values,
– Norms,
– Beliefs
– Expectations
– Policies and
– Procedures
– View of authority relationships and numerous other factors
The following table shows key project related characteristics of the major types of
enterprise organizational structures:
i. Functional Structure
Think of a picture that has a box at the top labeled "Central Office". Think of a
row of boxes underneath the top box. Each box is labeled, e.g., sales, engineering,
human resources, etc.
197
Software Project Management (CS615)
Connect the boxes with lines coming down from the top box to each of the boxes
below. Use functional structures when the organization is small, geographically
centralized, and provides few goods and services.
When the organization experiences bottlenecks in decision making and
difficulties in coordination, it has outgrown its functional structure.
The classic functional organization is a hierarchy where each employee has one
clear superior. Staff members are grouped by specialty, such as production,
marketing, engineering, and accounting at the top level, with engineering further
subdivided into functional organizations that support the business of the larger
organization (e.g., mechanical and electrical).
Functional organizations still have projects, but the perceived scope of the project
is limited to the boundaries of the function: the engineering department in a
functional organization will do its work independent of the manufacturing or
marketing departments.
In this structure, there is a centralized corporate office and under it, are various
divisions each of which is dedicated to producing and / or selling a certain type of
business or product, e.g., product 1, product 2, etc.
So, for example, the division dedicated to making product 1 has its own sales
department, human resources, etc. Basically, project structure is a bunch of
functional structures each of which reports to one central office.
198
Software Project Management (CS615)
Think of the functional structure. Imagine if you took someone from each of the
major functions in the functional structure (the boxes along the bottom of the
organization chart), e.g., people from sales, engineering, etc., and organized them
into a separate group intended to produce and sell one certain kind of product or
service.
Members of this group stay together until that product is produced or they
continue to sell and service it. This overall structure (made up of a functional
structure that also has groups assigned to products) is a matrix structure.
This structure is useful because it focuses highly skilled people from across the
organization to work on a complex product or service.
To adopt the matrix structure effectively, the organization should modify many
traditional management practices.
199
Software Project Management (CS615)
Chief
Executive
Project
Figure 1: Weak Matrix Organization Coordinatio
Chief
Executive
Project
Manager Staff Staff
Project
Coordinatio
Figure 2: Balanced Matrix Organization
200
Software Project Management (CS615)
Chief
Executive
Project
Staff Staff Manager
Project
Staff Staff Manager
Project
Figure 3: Strong Matrix Organization Coordinatio
(Black boxes represent staff engaged in project activites)
There is a range of uses for what constitutes a project office. A project office may
operate on a continuum from providing support functions to project managers in
the form of training, software, templates, etc. to actually being responsible for the
results of the project.
Most modern organizations involve all these structures at various levels. For
example, even a fundamentally functional organization may create a special
project team to handle a critical project.
The team may include full-time staff from different functional departments, it
may develop its own set of operating procedures, and it may operate outside the
standard, formalized reporting structure.
201
Software Project Management (CS615)
LECTURE # 28
5. ORGANIZATION
i. Project interfaces. Project interfaces generally fall into one of three categories:
iii. Constraints. Constraints are factors that limit the project team’s options. A
project’s organizational options may be constrained in many ways. Common
factors that may constrain how the team is organized include, but are not limited
to, the following:
i. Templates. Although each project is unique, most projects will resemble another
project to some extent. Using the role and responsibility definitions or reporting
relationships of a similar project can help expedite the process of organizational
planning.
203
Software Project Management (CS615)
iv. Stakeholder analysis. The identification of stakeholders and the needs of the
various stakeholders should be analyzed to ensure that their needs will be met.
i. Role and responsibility assignments. Project roles (who does what) and
responsibilities (who decides what) must be assigned to the appropriate project
stakeholders. Roles and responsibilities may vary over time. Most roles and
responsibilities will be assigned to stakeholders who are actively involved in the
work of the project, such as the project manager, other members of the project
management team, and the individual contributors. The roles and responsibilities
of the project manager are generally critical on most projects, but vary
significantly by application area. Project roles and responsibilities should be
closely linked to the project scope definition. A Responsibility Assignment
Matrix is often used for this purpose. On larger projects, RAM s may be
developed at various levels. For example, a high-level RAM may define which
group or unit is responsible for each component of the work breakdown structure,
while lower-level RAM s are used within the group to assign roles and
responsibilities for specific activities to particular individuals.
ii. Staffing management plan. The staffing management plan describes when and
how human resources will be brought onto and taken off of the project team. The
staffing plan may be formal or informal, highly detailed or broadly framed, based
on the needs of the project. It is a subsidiary element of the overall project plan.
The staffing management plan often includes resource histograms. Particular
attention should be paid to how project team members (individuals or groups) will
be released when they are no longer needed on the project. Appropriate
reassignment procedures may:
iii. Recruitment practices. One or more of the organizations involved in the project
may have policies, guidelines, or procedures governing staff assignments. When
they exist, such practices act as a constraint on the staff-acquisition process.
205
Software Project Management (CS615)
ii. Pre-assignment. In some cases, staff may be pre-assigned to the project. This is
often the case when a) the project is the result of a competitive proposal, and
specific staff was promised as part of the proposal, or b) the project is an internal
service project, and staff assignments were defined within the project charter.
i. Project staff assigned. The project is staffed when appropriate people have been
reliably assigned to work on it. Staff may be assigned full time, part time, or
variably, based on the needs of the project.
ii. Project team directory. A project team directory lists all the project team
members and other stakeholders. The directory may be formal or informal, highly
detailed or broadly framed, based on the needs of the project.
i. Project staff. The staff assignments implicitly define the individual competencies
and team competencies available upon which to build.
ii. Project plan. The project plan describes the technical context within which the
team operates.
iv. Performance reports. Performance reports provide feedback to the project team
about performance against the project plan.
v. External feedback. The project team must periodically measure itself against the
expectations of those outside the project.
iii. Reward and recognition systems. Reward and recognition systems are formal
management actions that promote or reinforce desired behavior. To be effective,
such systems must make the link between project performance and reward clear,
explicit, and achievable. For example, a project manager who is to be rewarded
for meeting the project’s cost objective should have an appropriate level of
control over staffing and procurement decisions. Projects must often have their
own reward and recognition systems since the systems of the performing
207
Software Project Management (CS615)
iv. Co-location. Collocation involves placing all, or almost all, of the most active
project team members in the same physical location to enhance their ability to
perform as a team. Collocation is widely used on larger projects and can also be
effective for smaller projects (e.g., with a war room, where the team congregates
and posts schedules, updates, etc.). On some projects, collocation may not be an
option; where it is not viable, an alternative may be scheduling frequent face to
face meetings to encourage interaction.
ii. Input to performance appraisals. Project staff should generally provide input to
the appraisals of any project staff members with whom they interact in a
significant way.
i. Management Development
– Responsibility
208
Software Project Management (CS615)
– Authority
– Competence
– Resource Distribution
– Pre-requisites
– Constraints
– Calendar
v. Progress reporting
– Mandatory periodic reports
– Exception reports
– Event reporting
– Current status reporting
– Reporting formats
– Reporting frequency
– Report recipient
– Reporting officer
– Reporting Media
– Response analysis (of previous reporting)
– Review of Reports
– Signing of Reports
– Tracking of Reports
– Mitigations offered
– Corresponding the dead lines
209
Software Project Management (CS615)
A contract is a mutually binding agreement that obligates the seller to provide the
specified product and obligates the buyer to pay for it.
Although all project documents are subject to some form of review and approval,
the legally binding nature of a contract usually means that it will be subjected to a
more extensive approval process. In all cases, a primary focus of the review and
approval process should be to ensure that the contract language describes a
product or service that will satisfy the identified need. In the case of major
210
Software Project Management (CS615)
projects undertaken by public agencies, the review process may even include
public review of the agreement.
• Types of Contracts
Owing to the rapid advances in technology during the last several decades, it has
become increasingly necessary for high technology organizations to specialize in
specific, well-defined areas. Specialization has not only defined many new
branches of engineering, it has also defined areas of expertise within the
engineering disciplines. This is especially true of software engineering.
The development of software is much less deterministic and more risky than other
areas of technology. This often leads to misunderstandings and disagreements that
could have been avoided if they had been anticipated and contained early enough.
Cost-plus is a contractual relationship where the developer is paid for the cost of
the service provided and in addition is allowed an agreed profit margin.
This is rather like renting a car the customer pays for the time that the car is used
(by the hour, day, week etc.), and for any other expenses such as insurance and
gasoline. Thus, in a cost-plus contract the total cost of the projects is only known
after the project has been completed.
211
Software Project Management (CS615)
The customer company, Alpha, may require the developer, company Beta, to
receive prior authorization before incurring any single expense exceeding $250,
and any expense in excess of $6000 monthly total. Such authorization should
always be in writing. This defines a basic cost-plus contractual relationship
between the two companies.
In many cases, cost-plus can be the most appropriate way to contract development
work however, there are numerous potential problems. A conflict of interest may
arise due to the developer's lack of motivation to complete the project as quickly
as possible, or due to the customer's reluctance to authorize additional expenses.
The requirements phase is then used to bring the rest of the project to a
sufficiently well-defined state from which it can then be contracted at a fixed
price. Occasionally, one company is awarded a cost-plus contract for the
requirements phase, and another company is awarded the remaining phases as a
fixed price contract.
Cost-plus may be preferred by the customer who wants to retain control of the
development process. In some cases, the developer is perceived as an extension of
the customer's organization, and the development activities are managed by the
customer. A cost-plus contract should cover the following issues:
212
Software Project Management (CS615)
The assignment percentage refers to the amount of time each person will be
expected to devote to the project. This may be 100 percent for some engineers,
and 50-60 percent for experts in specific areas.
The billing rate may be a fixed rate for all persons assigned to the project, or
individual rates may be set for each person or class of people.
For example, for each hour worked on the project, the developer will bill $80,
irrespective of who, worked that hour. Or the contract may stipulate that design
engineers bill at $120 per hour, coders at $60 per hour, documentation writers at
$50 per hour, and so forth. The most difficult cost-plus contract billing rate
method is the individual billing method, where Frank Jones is billed at $90 per
hour, John Smith at $75 etc. This means that each time a person is replaced or
added to the project, the hourly rate must renegotiated.
Most employees prefer a clear definition of the hierarchy to which they belong. In
a cost-plus contract the employee works within the customer's hierarchy, but
belongs to the developer's hierarchy, and this can cause discontent.
213
Software Project Management (CS615)
Clearly is dependent on the type of project and the conditions under which it will
be developed, as we as on other non-technical business considerations.
This is similar to purchasing a bus ticket, when the bus company agrees to take
the customer to a specific destination within a published timetable, and for an
agreed fee. Of course, travelers can elect to rent a car, instead of purchasing a bus
ticket, and then drive to their destinations themselves. However, this may turn out
to be more expensive, and requires of the traveler some prior skills and
knowledge, such driving skills and knowledge of the route to the destination. So
travelers (or customers) must decide between providing the service themselves
and contracting someone else to provide the service.
A successful software organization will often prefer a fixed price contract. These
are usually the projects that build a company's professional reputation, and
generate profit to enable growth.
Unfortunately, these are also the projects that generate loss, and which often
severely harm a company. Stiff competition for an important contract
occasionally tempts a company to underbid, which ultimately generates losses for
the developer.
It is almost inevitable in any project that the developer will be requested to change
requirements during development. Such changes are usually associated with
additional cost the customer, and are invariably a cause of disagreement between
developer and customer.
From the customer's perspective, the advantages in a fixed price contract include:
Even though the interests of the developer and the customer may be different,
fixed price contracts are still often preferred by both parties. If the project is
sufficiently detailed and clear and if the relationship between the two parties is
215
Software Project Management (CS615)
well defined, then fixed price contracts can be beneficial to both the developer
and the customer.
There is often a real or imagined conflict of interest between the developer and
the customer. The customer wants to spend less and the developer wants to earn
more. As we shall see, a good relationship between developer and customer need
not necessarily lead to this conflict of interest.
There are basically two types of contractual relationship between the customer
and the Developer:
Different types of contracts are more or less appropriate for different types of
purchases. Contracts generally fall into one of three broad categories:
Cost-plus and fixed price are two of the traditional contractual relationships
between developer and customer. There are many variations of these two
basic relationships, including various combinations that are tailored to suit
specific projects. Some of these relationships are associated with the roles of
customer and developer, and attempt to provide more incentives for the
developer to support the customer's objectives beyond contractual obligations.
Additional types of customer-developer relationship include:
Joint ventures are instances where the customer-developer dividing line can
become hazy, and many of the previously discussed advantages and
disadvantages may not apply. There are many cases where some form of joint
venture may be desirable for both parties, such as when the developer wants to
retain rights to the product, or when the developer joins the customer in
funding part of the development effort.
One way the customer can offer the developer moderate participation in the
business aspect of the project is by substituting royalties as partial payment. This
generates an added dimension to the developer's interest in the success of the
project. The royalties are usually such that the failure of the project would
produce less revenue for the developer than a straightforward fixed price contract,
and the success of the project will increase the developer's revenue.
Long-term relationships are often important for the developer. In many cases,
long term commitments are also in the customer's interest. This occurs when the
developer, by being awarded the initial contract, gains, through acquired
knowledge, a major advantage over others for subsequent development work.
Clearly, when the developer successfully completes a large and complex project,
a significant advantage is then acquired over other companies with respect to
future extensions of the project. A long-term commitment may then be of mutual
interest to both parties, wherein the customer assures future services from the
developer and the developer assures a long term income commitment.
217
Software Project Management (CS615)
The statement of work is the basis of the contract between the pro-poser and the
customer, and is often incorporated into the contract. The SOW contains a
detailed list of all work to be performed by the pro-poser for the benefit of the
customer.
For external projects, the statement of work can be received from the customer as
part of a bid document, for example, request for proposal, request for
information, request for bid, or as part of a contract. The SOW indicates a:
The SOW starts as a general list of required deliverables in the RFP. A more
detailed version t of the SOW is submitted as part of the proposal, and is still
considered only an initial description of the work to be performed. The blinding
version of the SOW is finalized during contract negotiations, or after the detailed
project requirements have been completed.
218
Software Project Management (CS615)
17. Training
• user courses
• operator training
• installation training
22. Testing
• alpha testing
• beta testing
• acceptance tests (ATP)
23. Installation
24. Maintenance services
25. Other services and deliverable items
26. Method of delivery
• software
• documentation
• hardware
219
Software Project Management (CS615)
The basic guideline for the preparation of the SOW is that any activity, service or
product required by the customer, and agreed to by the developer, must be
included. This means that there can be no binding work items that were
informally understood or agreed to verbally, which do not appear in the SOW.
The formal SOW must include all and only the work to be performed. This
condition prevents misunderstandings and disagreements later, after the project
begins.
The statement of work (SOW) describes the procurement item in sufficient detail
to allow prospective sellers to determine if they are capable of providing the item.
“Sufficient detail” may vary, based on the nature of the item, the needs of the
buyer, or the expected contract form.
Some application areas recognize different types of SOW. For example, in some
government jurisdictions, the term SOW is reserved for a procurement item that is
a clearly specified product or service, and the term Statement of Objectives (SOO)
is used for a procurement item that is presented as a problem to be solved.
The statement of work may be revised and refined as it moves through the
procurement process. For example, a prospective seller may suggest a more
efficient approach or a less costly product than that originally specified. Each
individual procurement item requires a separate statement of work. However,
multiple products or services may be grouped as one procurement item with a
single SOW.
In some application areas, there are specific content and format requirements for a
SOW.
i. Scope of work: Describe the work to be done in detail. Specify the hardware and
software involved and the exact nature of the work.
ii. Location of Work: Describe where the work must be performed. Specify the
location of hardware and software and where the people must perform the work.
iii. Period of Performance: Specify when the work is expected to start and end,
working hours, number of hours that can be billed per week, where the work must
be performed, and related schedule information. Optional “Compensation”
section.
220
Software Project Management (CS615)
iv. Deliverables Schedule: List specific deliverables, describe them in detail, and
specify when they are due.
vi. Acceptance Criteria: Describe how the buyer organization will determine if the
work is acceptable
These packages were originally created to manage one project at a time, but over
the years have been enhanced to handle multiple projects.
1. Primavera
2. TurboProject
3. OpenPlan
4. Microsoft Project
5. AutoPlan
6. Project Scheduler 8
7. CA SuperProject
8. Timeline
221
Software Project Management (CS615)
LECTURE # 29
6. ESTIMATION
Watts Humphrey in his book, Managing the Software process, has said, “If you
don’t know where you are, a map won’t help.” This saying is very relevant while
dealing with software project estimation. In a software project, unless you are sure
that your estimation is accurate, you cannot make much progress.
Estimation of factors such as cost, effort, risks, and resources is crucial. It gives
you a fair idea of the size of the project. You can use the information about size to
estimate the cost, effort, and duration of the project. This further helps plan for
resources and schedule the project.
Software cost and effort estimation will never be an exact science. Too many
variables - human, technical, environmental, political - can affect the ultimate cost
of software and effort applied to develop it.
1. Delay estimation until late in the project (obviously, we can achieve 100%
accurate estimates after the project is complete!).
2. Base estimates on similar projects that have already been completed.
3. Use relatively simple decomposition techniques to generate project cost and
effort estimates.
4. Use one or more empirical models for software cost and effort estimation.
Unfortunately, the first option, however attractive, is not practical. Cost estimates
must be provided 'up front.' However, we should recognize that the longer we
222
Software Project Management (CS615)
wait, the more we know, and the more we know, the less likely we are to make
serious errors in our estimates.
The second option can work reasonably well, if the current project is quite similar
to past efforts and other project influences (e.g., the customer, business
conditions, the SEE, deadlines) are equivalent. Unfortunately, past experience has
not always been a good indicator of future results.
Software project estimation is a form of problem solving, and in most cases, the
problem to be solved (i.e., developing a cost and effort estimate for a software
project) is too complex to be considered in one piece. For this reason, we
decompose the problem, re-characterizing it as a set of smaller (and hopefully,
more manageable) problems.
– Strategic planning
– Feasibility study and/or SOW
– Proposals
– Vendor and sub-contractor evaluation
– Project planning (iteratively)
In a software project, unless you are sure that your estimation is accurate, you
cannot make much progress.
– Cost,
– Effort,
223
Software Project Management (CS615)
– Risks
– Resources
Estimation gives you a fair idea of the size of the project. You can use the
information about size to estimate the cost, effort, and duration of the project.
This further helps plan for resources and schedule the project.
• Experience,
• Access to good historical information
• Courage to commit to quantitative predictions when qualitative
information is all that exists
a) Project complexity
b) Project size
c) The degree of structural uncertainty
d) The availability of historical information
e) Risk
b) Project size is another important factor that can affect the accuracy and efficacy
of estimates. As size increases, the interdependency among various elements of
the software grows rapidly. Problem decomposition, an important approach to
estimating, becomes more difficult because decomposed elements may still be
alarming. To paraphrase Murphy's Law: "What can go wrong will go wrong"- and
if there are more things that can fail, more things will fail.
e) When comprehensive software metrics are available for past projects, estimates
can be made with greater assurance, schedules can be established to avoid past
difficulties, and overall risk is reduced.
225
Software Project Management (CS615)
LECTURE # 30
6. ESTIMATION
Software project estimation is a form of problem solving, and in most cases, the
problem to be solved (i.e., developing a cost and effort estimate for a software
project) is too complex to be considered in one piece. For this reason, we
decompose the problem, re-characterizing it as a set of smaller (and hopefully,
more manageable) problems.
Before an estimate can be made, the project planner must understand the scope of
the software to be built and generate an estimate of its "size."
(1) The degree to which the planner has properly estimated the size of the product
to be built
(2) The ability to translate the size estimate into human effort, calendar time, and
dollars (a function of the availability of reliable software metrics from past
projects)
(3) The degree to which the project plan reflects the abilities of the software team
(4) The stability of product requirements and the environment that supports the
software engineering effort.
As project estimate is only as good as the estimate of the size of the work to be
accomplished, sizing represents the project planner's first major challenge.
226
Software Project Management (CS615)
4. Change sizing: This approach is used when a project encompasses the use of
existing software that must be modified in some way as part of a project. The
planner estimates the number and type (e.g., reuse, adding code, changing
code, and deleting code) of modifications that must be accomplished. Using
an "effort ratio" [PUT92) for each type of change, the size of the change may
be estimated.
After dividing a project into tasks, you can categorize them as logical, broad
tasks. For example, tasks, such as drawing up a marketing strategy, planning a
phase-wise product release, and interacting with media agencies and the
production department can be compiled under a common category, Marketing.
First, it gives the management an idea about the size and complexity of the
project.
To aid planning, scheduling, and monitoring a project, you can use tools such as:
These tools use WBS as the fundamental basis for assessing resources to tasks,
computing the number of days needed, and the cost required to complete the
tasks.
ii. Measuring Effort for a Project
Measuring the effort for a project is a specialized activity. It enables you to derive
cost estimates that are critical for project management. An incorrect measurement
of effort at the beginning of project can result in inaccurate project plans and
frequent slippages. It can also lead to inaccurate cost estimates, which can cause
steep cost deviations between estimated and actual cost values.
There are many techniques that you can use to accurately estimate effort, such as:
These are quantitative estimation techniques because they rely on the use of
formulae to calculate effort.
d) Delphi technique
This technique is based on soft skills and relies more on human factors, such as
collecting information during group discussions.
228
Software Project Management (CS615)
a) SLOC- Technique
There are many techniques to calculate the size of a software project. You can
calculate the size by using a directly measurable technique, the SLOC technique.
It is defined as the source lines of code that are delivered as part of the product.
The effort spent on creating the source lines of code is expressed in relation to
thousand lines of code (KLOC).
The SLOC technique is an objective method of estimating the size because there
are no multiple ways of calculating the lines of code. Therefore, the effort
estimate is close to being accurate.
The SLOC technique is also used to directly calculate the effort to be spent on a
project.
Following figure is a simple example of counting source lines of code. The code
displayed here contains four lines of code.
If (emp_code<=1200)
Print (“Welcome to the Inventory database.”);
Else
Print (“Access denied to the Inventory databases.”);
– Counting SLOC
You can use the SLOC technique to estimate the effort required for a project
when the programming language and the technology to be used are predefined. In
addition to the programming language and technology, the complexity and effort
required to write a program should be easily predictable.
The use of the SLOC technique requires that the technology or language remain
unchanged throughout the project. Generally, you can use the SLOC technique
when you are using third-generation languages, such as FORTRAN or COBOL.
While counting the source lines of code, there are some general considerations
that you need to keep in mind. However, these can vary in every organization.
229
Software Project Management (CS615)
• Only the delivered lines of code are included in SLOC calculation. For
example, test drivers and other support software are not part of the number of
lines developed for a project.
• Only the source lines of code written only by the development team as
counted. This excludes the code created by applications generators.
• Only declaration statements are counted as source lines of code. This
excludes comments inserted to improve the readability of programs.
Despite being accurate in providing figures to calculate the effort required for a
project, the SLOC technique has a drawback.
For example, to conceive and write 8 lines of code that accomplish a task in the
assembly language may require 15 minutes. However, you may need only five
minutes to complete the same lines of code if it is written in Visual Basic.
b) FP Technique
You use the FP technique to estimate the total size of a project. The total size of a
project is estimated as a single FP value. After calculating the total size of a
project in FP, you divide the total FP into the different phases of the SDLC. This
way, you can determine how much effort per FP is required in that particular
phase.
For example, the testing phase is planned for 20 FP of work. The project
managers, based on their past project experience, determine the amount of effort
in man/person months required in the testing phase.
230
Software Project Management (CS615)
Similarly, you can express the cost required to complete FP of work for a
particular phase. At the end of a project, you can also express the number of
defects reported in terms of per FP for a phase.
The major components and their relationships are represented in following figure.
Function Points
User Outputs
User Inquiries
You can calculate the function point estimates for a project or a particular phase
by following four steps:
231
Software Project Management (CS615)
In addition, you can use function points as a project estimation technique when
you anticipate changes in the middle of a project. These changes may disturb the
estimates if, you had used SLOC to estimate the effort, cost, or size of a project.
The FP estimation uses a subjective and holistic approach for project estimation.
Consequently, the estimates calculated by using the FP are unlikely to be
incorrect.
Estimation by using FP generally uses data from past projects for assigning
weights to GSC s and the information domain values. To be able to do this
realistically, it is important for the organization to have developed similar projects
in the past.
The organization should also be prepared with adequate data and tools for FP
estimation of the new project.
Consequently, at the end of a project, deviations from the estimated to the actual,
values of each of the factors maybe quite extreme.
232
Software Project Management (CS615)
LECTURE # 31
6. ESTIMATION
i. Basic
ii. Intermediate
iii. Advanced
i. Basic COCOMO
The basic COCOMO technique estimates the effort and cost of a software project
by using only the lines of code. You, use basic COCOMO when you need a rough
estimate of effort, such as during maintenance projects. This is because in such
projects, a majority of the work is already completed. Estimating the effort in the
basic COCOMO technique involves three steps.
You have already seen how the total delivered lines of code are estimated. The
next step in the COCOMO model is to determine the type of the project being
developed. The basic COCOMO technique considers three types of projects to
calculate effort.
– Organic
– Embedded
– Semidetached
Organic projects have sufficient and defined objectives. The organizations that
undertake organic projects have ample experience in development and use small
development teams. These are simple business and financial applications; such as
a banking system and inventory system.
233
Software Project Management (CS615)
Embedded projects have stringent and specialized hardware, software, and human
resources requirements. Organizations usually have less experience in developing
such projects. Examples of such projects include real-time operating systems
(RTOS), industrial automation systems, and sophisticated space and aviation
systems.
Ej = a1 * (KLOC)a2
In the formula, Ei is the effort for a project. The effort constants, al and a2
depend on the type of project being developed.
These cost driver attributes relate to the various aspects of a software project, such
as project, product, personnel, and computer attributes. Using the intermediate
COCOMO technique, you can accurately estimate effort and cost required for a
project. Accurate estimates are very helpful to start new development projects.
1. Estimate the initial development effort by using SLOC. To do this, you use
the following formula:
Ei = a1 * (KLOC)a2
In the formula the initial development effort, KLOC refers to 1,000 lines of code.
The constant values a1 and a2 differ with every project.
2. The second step is to determine the relevant cost driver attributes that affect
your project intensively. This provides you with the value for EAF.
234
Software Project Management (CS615)
Rating
Cost Drivers Very Extremely
Negligible Low Average High
high critical
Analyst Capability (ACAP)
Programmer Capability (PCAP)
Programming Language
Experience (LEXP)
Virtual Machine
Experience(VEXP)
Required Software Reliability
(RELY)
Database Size (DATA)
Software Product Complexity
(CPLX)
Execution Time Constraint
(TIME)
Main Storage Constraint
(STOR)
Computer Turnaround Time
(TURN)
Virtual Machine Volatility
(VIRT)
Use of Software Tools (TOOL)
Modern Programming Practices
(MODP)
Required Development
Schedule (SCED)
3. Finally, you calculate the actual effort by multiplying the weighted cost driver
attributes with the initial effort estimate. Typically, the val1,les that rate each
cost driver attribute range from 0.9 through 1.4. For example, if software
reliability (RELY) is of prime importance according to the requirements
specifications, it is provided a rating of high or a value of 1.4. Similarly, if the
time to execute a software program is of negligible importance, you assign a
rating of low or a value of 0.9. For software attributes that are of mediocre
importance, you can assign a value between 0.9 and 1.4.
235
Software Project Management (CS615)
E = EAF * Ei
Ei = a1 (KLOC)a2
Ei =3.2 * 31.05
Ei = 3.2 * 3.16
Ei = 10.11
The values assigned to the cost driver attributes that are applicable to a particular
software application are displayed in Table 2. According to the table, the time to
execute a software program is of high importance. Therefore, the attribute TIME
is assigned a value of 1.35. In contrast, the software application does not require a
very high analyst involvement. Therefore, the value assigned to ACAP is very
low or 0.95. Using the same logic, the values for other cost driver attributes are
assigned.
After obtaining the values for the variables Ei and EAF, you can substitute these
values in the formula to calculate the total effort.
E = EAF * Ei
E = 1.53 * 10.11
236
Software Project Management (CS615)
The advanced COCOl\l10 technique uses the steps of the intermediate COCOMO
technique. In addition, it uses costs driver attributes assigned to each phase of the
SDLC such as analysis and design.
• Applicability of COCOMO
COCOMO is flexible and capable of using SLOC, FP, and even object points.
Object points are measurable code sections in an object-oriented programming
language, such as C++, Ada, and Java.
You can use COCOMO when the size of a project is extensive and the
requirements of the project are vague. In contrast, SLOC and FP can be used for
projects where either the requirements are more or less known or developers
possess the relevant experience in developing projects.
COCOMO is suitable for complex and sophisticated projects that are expected to
operate within intensive hardware, software, and personnel constraints.
Generally, you can use COCOMO when the software development environment
is new to an organization. In addition, you can use COCOMO when you do not
have baseline data about past projects. However, you need complete data about
your current project to assign weight age to each cost driver attribute. You can use
FP or SLOC techniques when you have enough past project data to assign
accurate weight age to the 14 GSC s and the various information domain value
elements.
d) Delphi Technique
The rationale of using the Delphi technique is that when many experts
independently arrive at the same estimate on the basis of similar assumptions, the
estimate is likely to be correct.
1. Identify the terms that need to perform the estimation activity. In an estimation
activity meeting, three distinct groups of people need to be present.
237
Software Project Management (CS615)
2. The author presents the project details including clients’ needs and system
requirements to the group of experts. The author also describes the expectations
from the group. The author and experts jointly identify the tasks that need to be
estimated. They also identify the valid assumptions that they need to consider
while estimating. For example, while estimating the effort needed to create a
high-level design, they can assume that the SRS document is approved by the
client.
3. The author and experts arrive at a consensus that any estimation with a specific
variance value will not be accepted. For example, they may decide that any
variance above 25 percent will not be accepted as an estimation value for
computing the project effort or the productivity.
4. The coordinator prepares a list of tasks jointly decided by the team and
distributes the list to all experts. These tasks comprise a project plan.
5. The experts independently make their estimates for each task. After recording
their estimates, they hand over their estimates to the coordinator. This is a critical
step. While making estimates, no discussions or consultations are permitted
because a mutual discussion may influence the estimation logic of the fellow
experts. The coordinator and the author jointly ensure this.
7. The coordinator hands over the summary to the group of experts and the author.
The group of experts and the author discuss tasks and assumptions where the
percentage of variance is more than the acceptable level. The maximum and
minimum estimates of tasks are not disclosed or discussed. For example, in Table
7.10, the group and the coordinator do not accept the high-level design task
because it exceeds the agreed variance value of 25%. Therefore, the team would
discuss this task to estimate its maximum and minimum effort afresh. To resolve
238
Software Project Management (CS615)
the high percentage of the variance value, some tasks may be broken down
further or combined. This activity of breaking down tasks into smaller levels
involves fresh estimates for those tasks at the smaller levels.
8. Revert to step 5 and repeat the steps. You do this until all tasks are assigned
estimates that have an acceptable percentage of variance value. Figure 7.4.
summarizes the steps of the Delphi technique in the form of a flowchart.
239
Software Project Management (CS615)
240
Software Project Management (CS615)
LECTURE # 32
i. Salient features
Large, complex projects are organized and comprehended by breaking them into
progressively smaller pieces until they are a collection of defined "work
packages" that may include a number of tasks.
Work breakdown structure (WBS) is a technique to decompose the project for the
purpose of management and control. It provides the framework for organizing and
managing the work.
The WBS is commonly used at the beginning of a project for defining project
scope, organizing Gantt schedules and estimating costs.
It lives on, throughout the project, in the project schedule and often is the main
path for reporting project costs.
Many of the WBS development tasks are derived from the development method
that will be used, and from the design and architecture of the system.
241
Software Project Management (CS615)
It starts with the end objective required and successively subdividing it into
manageable components in terms of size and complexity of:
– Program,
– Project,
– System,
– Subsystem,
– Components,
– tasks, subtasks, and
– work elements
The WBS is first and foremost a technical data gathering structure, developed so
that the achievement in technical progress can be measured and analyzed against a
formal baseline plan.
The WBS aids the customer in understanding the status of the project as time
elapses. The WBS aids the customer's customer in understanding the status of the
project.
All managers, internal and external need to use the planning and status
information within the WBS structure to:
It’s an outline of the work of the project, not the work itself, created by those
doing the work – that may include all functional stakeholders.
242
Software Project Management (CS615)
The WBS is produced following the development of the scope statement, before
the schedule. It is a “bridging” document between the Scope and Schedule. (what
and when)
v. Uses of WBS
– Defines 100% of the scope and can communicate the scope of the project
without the presence of the scope statement or document.
– Communicates effectively to all stakeholders
– Defines and clarifies
– Boundaries (Life cycle of the project – not the product)
– Deliverables
– Refines Scope
It’s not a single document that can be mistaken for the project plan, schedule or
scope statement
a. Manage Risk
b. Manage Costs
c. Assign Work
The WBS is also useful for determining an acquisition strategy and/or assigning
work. The information contained in the WBS can help a Program Manager
243
Software Project Management (CS615)
A schedule of key events can be developed for each element in the WBS.
Completion of these key events is then tracked.
Software development
Installation
Maintenance
Management
Training
Procurement
Documentation
– At all times, any, work being performed by a member of the software project
team must be part of a WBS task: No member of the team should ever
perform any task that does not appear in the WBS list of tasks.
– The WBS is essentially a management tool that provides the ability to assign
well-define tasks to members of the development team.
– It is through the WBS that progress is monitored as tasks are completed and
potential problems are discovered.
– New tasks that were overlooked are identified, and estimates are revised based
on the actual resources used for completed tasks.
f. Report Expense
– The WBS is also a budgetary tool that provides a means of charging each
development activity to the appropriate section in the project budget.
– This is one of the basic methods for planning and monitoring project
expenditure.
– These utilities run both on small PC type computers and large mainframes.
244
Software Project Management (CS615)
245
Software Project Management (CS615)
LECTURE # 33
The project manager will have to decide to what degree employment of various
details of WBS implementation will benefit the efficient management of the
project. On a very small project, a formal WBS may serve no useful purpose, but
it can become valuable if project size or complexity start to increase.
246
Software Project Management (CS615)
WBS Elements
Hardware Software Systems Training
Engr.
Functional Areas
Info. Systems Cost Account Cost Account Cost Account Cost Account
Tech. Editors
Work
Packag
es
WORD OF CAUTION
• It should be updated periodically together with the project development plan and
the project schedule.
• It is reasonable to expect the WBS list to have tasks added, modified or even
removed as project development progresses.
247
Software Project Management (CS615)
LECTURE # 34
h) The deliverables in the WBS must match the scope or contract (WBS should not
contain work that is not defined in the scope – Scope should not describe work
not contained in the WBS)
j) Every WBS element should be clearly defined – or should be clarified in the WBS
Dictionary
k) Features
– The WBS should contains 100% of the work defined by the scope or contract
– Should be deliverable-oriented
l) Usefulness
248
Software Project Management (CS615)
– Should define the context of the project and clarifies the work
m) WBS Is Not
– A single document that substitutes for the project schedule or project plan
i) Types of WBS
a) Contract WBS
A Contract WBS extends the Program WBS to a lower level in order to provide
management and cost information to the Government. It includes all the elements
for products (e.g., hardware, software, data, or services) that are the responsibility
of the contractor. It must be consistent with the Program WBS.
249
Software Project Management (CS615)
Contractors may extend the work breakdown structure to whatever level they feel
is necessary to manage the program. Contractors also use the Contract WBS to
define work packages. Work packages are:
b) Program WBS
A Program WBS is defined as "the work breakdown that covers the acquisition of
a specific defense materiel item and is related to contractual effort."
250
Software Project Management (CS615)
j) Sample WBS
Software
Project
– Prototyping
Classroom
– Testing
– User Acceptance
– Life-cycle Management
Hands-on
– Warranty
251
Software Project Management (CS615)
Level 1 Project
Level 2
Level 3
1.1.2 1.2.2
1.1.2.1
Level 4
1.1.2.1.1
Level 5
252
Software Project Management (CS615)
Project A
Level 1
1.1 1.2 1.3 1.4 1.6 1.7 1.8
1.5
Software
Level 2
Build 1.3.1
Unit
Testing 1.3.2 Level 3
Software
Design 1.3.3
READING REFERENCE:
253
Software Project Management (CS615)
LECTURE # 35
Sample 1: These two graphics illustrate approaching the WBS as a parts list or as a
process list
254
Software Project Management (CS615)
255
Software Project Management (CS615)
256
Software Project Management (CS615)
The list of activities is often called a Work Breakdown Structure (WBS). The goal is to
integrate the WBS, the schedule, and the budget into a written plan.
The WBS reflects activities associated with overall project management, requirements,
design, implementation, transition management, testing, training, installation, and
maintenance. The project manager is responsible for defining all top level tasks
associated with a project and then further decomposing them as planning continues.
An activities list is typically shown in one of two ways. It can be shown as an outline or
it can be graphically presented. Two samples of an activities list (WBS) are shown
below.
1.0 MANAGEMENT
2.0 DESIGN
257
Software Project Management (CS615)
3.0 DEVELOPMENT/INTEGRATION
5.0 INSTALLATION
6.0 MAINTENANCE
258
Software Project Management (CS615)
WBS
Work Breakdown
Schedule (WBS)
Prepare
Plan Project Preliminary Develop Plan Acceptance Develop Hardware
Design Software Test Installation Plan Maintenance
Develop Conversation
Plan
Develop User
Manual
Transition
Management
259
Software Project Management (CS615)
00
Retail Web
Site
1.0 2. 3. 4. 5.0
0 0 0
Project Requiremen Design and Site Software
Managemen ts Analysis Development
1.10 MANAGEMENT
1.1 Plan Project
1.1.1 Develop Project Plan
1.1.2 Update Project Plan
1.2 Track Project
1.2.1 Prepare status reports
1.2.2 Collect/analyze project metrics
1.3 Perform Quality Activities
1.3.1 Prepare QA Plan
1.3.2 Conduct Reviews
1.3.3 Conduct Audits
1.4 Perform Configuration Management
1.4.1 Prepare CM Plan
1.4.2 Develop Project Library
1.4.3 Manage Change Board
1.4.4 Maintain Configuration Items
2.0 DESIGN
2.1 Prepare Preliminary Design
2.1.1 Develop Enterprise Architecture
2.1.2 Prepare Data Flow Diagrams
2.1.3 Prepare Logical Data Model
2.2 Prepare Detailed Design
2.2.1 Prepare Physical Data Model
2.2.2 Prepare Data Dictionary
2.3 Document Design
2.3.1 Develop Design Specification
2.4 Review Design
3.0 DEVELOPMENT/INTEGRATION
3.1 Develop Software
3.1.1 Develop Server Application
3.1.2 Develop User Interface
3.1.3 Develop XYZ Interface
3.2 Procure Hardware
3.2.1 Procure Server
3.2.2 Procure Workstations
3.3 Procure Software Packages
3.3.1 Procure Database
3.3.2 Procure User Interface Building Tool
3.3.3 Procure Operating System
3.4 Perform Integration Testing
3.5 Convert Data
261
Software Project Management (CS615)
5.0 INSTALLATION
5.1 Develop Installation Plan
5.2 Site Preparation
5.3 Install at Locations
5.3.1 Headquarters
5.3.2 Site 1
6.0 MAINTENANCE
6.1 Hardware Maintenance
6.2 Software Maintenance
2. Construction
2.1.A. System implementation
2.1.A.1 Unit tests TBD
2.1.A.2 Production code TBD
262
Software Project Management (CS615)
4. Transition
4.A. Release packaging TBD
4.B. Documentation for other groups TBD
5. Reflection
5.1. Postmortem report TBD
Total fixed costs TBD
• Tasks shown as blue are fixed costs of the project. These should be
estimated soon.
• Tasks shown as red depend on the defect rate in the delivered code. These
will be estimated after 12 months experience.
TIP: Label each step uniquely to show its position in the WBS, e.g.,
Step 1.1.4.A. Use numbers for steps that you intend to do in
sequence, and use letters for steps that you intend to do in parallel.
E.g., Step 1.1 comes before Steps 1.2.A and 1.2.B, but those two
steps may be done in parallel, and Step 1.3 will be done after all 1.2.*
steps have been finished. Don't worry about renumbering if you delete
a step.
263
Software Project Management (CS615)
a) Project Decomposition
264
Software Project Management (CS615)
System
2.1.2
2.2.3
In Fig. 2(a) the Controlled access system software has five low level software
components:
Figure 2(b) describes the same Controlled access system software, but this time it
is represented as a hierarchical chart. Here, each component in the diagram
represents a real software component.
265
Software Project Management (CS615)
The System executive main Loop component calls three other components:
Visitor identification, Door lock control and Alarm activation: The Visitor
identification component calls two components: Illegal access identification and
Access file manager.
Figure 2: (a) Decomposition of high level components into low level components; (b) a
hierarchical structure chart
Controlled
(a) Access
system
Software
Access Alarm
Control System
Illegal
Visitor Door lock Access Access Alarm
Identification Control File Identification Activation
Manager
(b)
System
Executive
Main loop
Illegal Access
Access File
Identification Manager
266
Software Project Management (CS615)
Just like any other large complex task, the development of a software project is
more easily managed with the divide and conquer approach.
Stepwise refinement, when applied to a software project, produces all the low
level work tasks and includes
– development tasks
– managerial tasks
– support tasks and
– administrative tasks
The WBS list of project tasks is derived from the project's statement of work (the
SOW) that defines the scope of the project. The SOW is usually prepared before
the official launching of the project, and is often part of the project contract
between the customer and the developer.
For internal projects, when an organization is funding its own development work,
the SOW becomes synonymous with the Project definition specification or a
similar document that defines the scope of work for the software project manager.
b) Functional Decomposition
Let us consider an automatic bank teller system. The ability to communicate on-
line between the remote automatic tellers and the bank's central computer in order
to provide updated account information is a functional characteristic or the
system.
This will usually be defined during the requirements phase of the development
cycle. However, the method of transmission between the automatic teller and the
central computer is not a functional characteristic of the system, as this is internal
to the design and implementation of the system and is not apparent to the user.
The method of transmission, including the communications protocol, will usually
be defined during the design phase of the development of the system.
267
Software Project Management (CS615)
Automatic
Bank teller
System
Automatic Central
Teller Computer
Services Services
Central Teller
User Computer Machine Report Customer Operator
Services Query and Interface Generator Data base Services
Update Functions Manager
Just as the requirements phase precedes the design phase, so the functional
decomposition of a software system will usually precede the design
decomposition.
In fact, the functional decomposition is often a good place to start when designing
a software system, as the major functional components of a system will often
correspond to the initial division of the system into subsystems or high level
components.
268
Software Project Management (CS615)
c) Design Decomposition
269
Software Project Management (CS615)
Automatic
Bank teller
System
A fully decomposed system, with all its low level components, is not always easy
to grasp. This is especially true during the presentation of the system at a project
review, when the system needs to be quickly understood by people who have not
been involved in its design.
System
System
System
271
Software Project Management (CS615)
WBS tasks are developed by asking, “What tasks need to be done to accomplish
the project objective?” The choice of WBS structure is subjective and reflects the
preferences and judgment of the project manager.
As levels of the WBS become lower, the scope, complexity, and cost of each
subtask become smaller. The lowest level tasks, or work packages, are
independent, manageable units that are planned, budgeted, scheduled, and
controlled on their own.
As efforts of similar scope and type are planned, the basic WBS tasks remain
fairly similar, but each project requires a specific set of tasks that address the
uniqueness of the project's requirements. Certain top level elements, such as
project management, are included in the WBS of every project, regardless of its
type, size, or complexity. Other items, like installation, may not apply to every
project.
The initially developed WBS evolves over the course of the planning. It is highly
probable that it will look quite different as the scheduling, estimation, and
resource allocation portions of the plan are completed.
One of the difficult parts of talking about IT projects generically is the wide range
of such projects. Typically, in a small project, there is a single project
development phase.
Sometimes these phases are driven by the need to achieve certain levels of
functionality prior to the availability of the complete system.
Other times, the phases are defined to partition the development effort and to
reduce the risks associated with larger project efforts.
272
Software Project Management (CS615)
LECTURE # 36
For large systems, the decomposition of the system into smaller components
needs to be done early in the planning cycle.
The rationale for the decomposition must be known, otherwise, different results
derived from different reasons for the system decomposition may occur.
For example, if a phase is defined to accommodate user needs, the phase may
cross multiple functional areas of the system. If, on the other hand, a system is
divided into phases simply to reduce risk, a functional division might occur where
the phases represent completion of entire functional areas of the system.
The way in which the phases are handled, differs with each application. Often,
phases are handled as top level WBS elements, with tasks associated with each
phase defined.
If a project is broken down into phases, be sure that the WBS reflects this. The
WBS structure denotes a hierarchy of task relationship.
There can, however, also be relationships between tasks that are not within the
outlined hierarchy.
These relationships need to be noted, and the ultimate structuring of the tasks
optimized to favor a minimum of horizontal dependencies and relationships. If the
tasks are not organized efficiently, it becomes difficult to schedule and allocate
resources to the tasks.
The project scope of work is an iterative process that is generally done by the
project team with the use of a Work Breakdown Structure (WBS), allowing the
team to capture and then decompose all of the work of the project.
273
Software Project Management (CS615)
As with the scope statement, the WBS is often used to develop or confirm a
common understanding of project scope. Each descending level represents an
increasingly detailed description of the project deliverables.
A WBS is normally presented in chart form, however, the WBS should not be
confused with the method of presentation—drawing an unstructured activity list
in chart form does not make it a WBS.
g) Defining Deliverables
Deliverables associated with each task are shown in the WBS and are reflected in
the Deliverables portion of the Project Plan. A sample of a Deliverables template
is shown next. All deliverables are listed as they are identified.
As the schedule is completed, the due date is filled in, and responsibility for the
deliverable is assigned as it is known (typically when the organization chart is
defined). The date delivered is a field that is filled in as deliveries are made.
Over the course of the project, a comparison of the due date and the date delivered
provides a metric for how well deliverable dates are met by the project team.
274
Software Project Management (CS615)
Each task can be subdivided into sub tasks. Fro example, in a general software
project, a task is to perform project analysis. You may also consider studying the
organizational objectives and preparing a project proposal to present to the client.
Therefore, in a project analysis task, there are three subtasks. A subtask is also
known as a work package. A work package is a unit-level entity in a project
system.
You can create a WBS by following the three steps listed below. These are
general steps, and they can vary in relation to an individual or an organization.
The first step in creating a WBS is to organize a meeting of all senior managers,
system analysts, and prospective developers. The objective of the meeting is to
brainstorm and come up with a set of broad tasks that need to be performed in a
project. During the brainstorming session, you can make a note of all possible
tasks.
For example, XYZ Inc. conducts a brainstorming session to divide the tasks into
multiple subtasks that are performed during the analysis phase of a project.
During the session the project managers and the analysts come up with tasks on
the basis of prior project experience. These include tasks such as determining the
scope of a project, drafting the software specifications, and securing resources for
the project.
275
Software Project Management (CS615)
Some additional tasks are also determined based on client requirements. Preparing
the initial project budget and estimating the approximate project timeline are
examples of such tasks. In addition, personnel responsible to complete each task
are also determined.
The subtasks are subsequently arranged in the order in which they are executed.
Figure 6 depicts the subtasks in the analysis phase. Note that after a questionnaire
is prepared, you can either arrange to meet the client or document the feedback
collected by the questionnaire. It is clear from the figure that preparation of the
SRS document can begin only after the preceding three tasks are complete.
Prepare a Client
questionnaire.
Prepare a Software
Requirements Specification
(SRS) document.
Arrange for
meetings with
li t
Document client
feedback
Dividing a main task into multiple subtasks also enables you to estimate the
duration and the effort required for individual tasks.
Subsequently, at the end of the phase, you can evaluate the actual effort and
duration. This helps you compare the estimated values with the actual values and
prepare a schedule for the subsequent phases.
The duration of each task affects the total duration of a phase. This, in turn,
affects the schedule of the subsequent phases. You can make similar deductions
while comparing the estimated costs with the actual costs of a task.
276
Software Project Management (CS615)
In the second step of creating a WBS, you refine the list of tasks that was
compiled during brainstorming.
Refining the tasks may include adding more tasks or combining the existing ones.
During this step, you may also change the arrangement of tasks.
A change in the arrangement of tasks can occur on the basis of two theories of
WBS.
• Deliverable-based theory
• Project life-cycle-based theory
You use the deliverable-based theory when the deliverables of a project are more
important than its phases. This normally happens when the deliverables are
decided before the project begins.
However, if the phases of a project are completely defined, you use the project
life-cycle-based theory. You can use the project life-cycle-based theory to arrange
the tasks in a project.
Finally, after defining tasks and arranging them, you categorize each task into a
logical task header.
For example, preparing test plans and test cases and drawing up the test plans can
be categorized as Testing.
This activity provides another chance to ensure that you have not missed any task
during brainstorming.
In addition, you can also consult an expert such as a senior manager to review and
validate the tasks identified.
i. Implementation Strategy
When you set up a project WBS, think about how you will be using it later in the
project. Consider how you will organize the WBS, schedule format, manager
assignments, and charge numbers, in your early project planning. It will be
helpful if you can map the charge numbers, managers, and task groups to each
other. This will help you track costs and progress for each manager.
277
Software Project Management (CS615)
If your project schedule will on MS-Project, you may want to insert "text"
columns into your schedule (Gantt View) for project charge numbers and
manager names.
– Be compatible with how the work will be done and how costs and
schedules will be managed,
There are usually many ways to design a WBS for a particular project, and there
are sometimes as many views as people in the process.
Experience teaches that everyone takes a slightly different slice of the apple, so
make sure WBS arguments seeking metaphysical certainty are quickly brought to
closure.
ii. Methodology
– PM must map activities to chosen lifecycle as each lifecycle has different sets
of activities.
– Integral process activities occur for all Planning, configuration and testing.
– Operations and maintenance phases are not normally in plan (considered
post-project)
– Some models are “straightened” for WBS:
i. General Guidelines
– What often hurts most is what’s missing. Break down until you can generate
accurate time & cost estimates. Ensure each element corresponds to a
deliverable.
– Re-use a “template” if you have one. Although each project is unique, WBS
can often be “reused” since most projects will resemble another project to
some extent.
• Ex: Most projects within a given organization will have the same or similar
project life cycles, and will thus have the same or similar deliverables required
from each phase.
– Decide if adequate cost and duration estimates can be developed at this level
of detail for each deliverable.
– Verify the correctness of the decomposition: are the low-level items both
necessary and sufficient for completion of the decomposed item? Is each item
clearly and completely defined? Can each item be appropriately scheduled and
279
Software Project Management (CS615)
budgeted?
– Each low level module may be assigned three basic work tasks:
• module design,
• coding and
• unit testing
Following table contains a typical list of high level WBS tasks to be included in
the formal WBS task list.
– This is not an exhaustive list of all project development tasks, and not all
projects will require all the tasks described.
– However, this table will be useful as a checklist to assist in locating tasks that
may have been overlooked.
Software development
Requirements analysis
Prototype development
Prototype specification
Prototype design
Prototype implementation
Design
Top level design
Detailed design
Implementation
Coding
Unit test
Integration
Software integration
Hardware/software integration
Testing
Alpha testing
Beta testing
280
Software Project Management (CS615)
Acceptance
Installation / Maintenance
Error correction
Software enhancement
Management
Planning
Staffing
Administration and services
Budget administration
Personnel management
Quality assurance
Configuration management
Training / Procurement
Acquisition of development tools
Acquisition of system components (off the shell)
Equipment selection
Vendor selection
Ordering procedure
Inventory control
Documentation
Technical writing
Project publishing activities
Development documentation
Non-deliverable development documentation
Deliverable development documentation
Maintenance documentation / User documentation
iii. Management and Administration Tasks
– This list contains many of the most important management tasks required for
most software development projects.
– Those tasks that are mandatory for all projects are marked as such in the list.
√ 1. Planning
√ 2. Preparation or estimates
281
Software Project Management (CS615)
– Break down the work until accurate estimates of cost and resources needed to
perform the task are provided.
– Ensure that clearly defined starting and ending events are defined for the task.
This may be the production of a deliverable or the occurrence of an event.
– Verify that the lowest level tasks can be performed within a “reasonable”
period of time. Each state organization must define “reasonable.”
– If the time period to complete a task is too long, an accurate project status in
the implementation phase may not be possible.
282
Software Project Management (CS615)
– Verify that people assigned to the project are all assigned a WBS task. Have a
firm rule: if the task is not on WBS, it is not worked on.
– The work breakdown structure and any support documentation should be easy
to understand.
– The work should not be subdivided arbitrarily to the lowest possible level.
Work breakdown structure elements at the lowest control level should
typically range from 0.5% to 2.5% of total project budget.
– Furthermore, you should be aware that the work breakdown structure can be
developed to reflect the trust that you have in specific line groups, by leaving
them the autonomy over specific areas of work.
283
Software Project Management (CS615)
LECTURE # 37
8. Scheduling
i. Salient Features:
Some of these tasks lie outside the mainstream and may be completed without
worry about impact on project completion date, Other tasks lie on the
"critical" path, these "critical" tasks fall behind schedule, the completion date
of the entire project is 'put into jeopardy,
The project manager's objective is to define all project tasks build a network
that depicts their interdependencies, identify the tasks that are critical within
the network, and then track their progress to ensure that delay is recognized
"one day at a time." To accomplish this, the manager must have a schedule
that has been defined at a degree of resolution that enables the manager to
monitor Progress and control the project.
It is important to note, however, that the schedule evolves over time. During
early stages of project planning, a macroscopic schedule is developed. This
type of schedule identifies all major software engineering activities and the
product functions to which they are applied.
As the project gets under way, each entry on the macroscopic schedule is
refined into a detailed schedule. Here specific software tasks (required to
accomplish an activity) are identified and scheduled.
Scheduling for software engineering projects can be viewed from two rather
different perspectives. In the first, an end-date for release of a computer-based
system has already (and irrevocably) been established.
284
Software Project Management (CS615)
You also need to plan the order in which the activities will be performed as
well as the start and end dates for each activity. In short, you need to create a
project schedule.
The plan includes not only the scheduling of development activities, but also
the scheduling of project resources, particularly people. To accomplish this,
the manager must have a schedule that has been defined at a degree of
resolution that enables the manager to monitor Progress and control the
project. The project schedule is one of the most important parts of the project
development plan.
The project schedule reflects the start dates and end dates for each activity in
the project. It also reflects the resources required to complete the activities. To
create a schedule, you can use project management tools.
• Gantt charts
• Network-scheduling techniques
No matter how well the project schedule is prepared, that schedule is useless
unless it is adhered to. It is the project manager's responsibility to withstand
pressure and to assure that the project is developed in an orderly fashion,
according to the schedule. Whenever circumstances change, the project
schedule should then be updated to reflect the new situation.
Software project have a tendency to get out of control because of the multiple
activities that need to be monitored, tracked, and controlled. When a project
goes out of control, the original deadlines, the budget, and the effort required
overshoot the initial estimates. This not only impacts the product, but also the
credibility of the development team.
285
Software Project Management (CS615)
There are various reasons why a software project is delayed. Some of the
reasons are listed below:
• The initial estimate of the effort and resources required to complete the
software project was incorrect. (An honest underestimate of the amount of
effort and/or the number of resources that will be required to do the job).
• The initial deadline set for the project was unrealistic. (An unrealistic
deadline established by someone outside the software development group
and forced on managers and practitioners within the group).
While most of the above reasons result in project delays, unrealistic deadlines
cause the maximum damage. Unrealistic deadlines are caused either by the
client wanting a quick delivery or the management wanting a return business
nom a client.
286
Software Project Management (CS615)
However, unrealistic deadlines are the norm for software projects. You need
to resolve the conflict between an unrealistic deadline and the constraints of
the software development team.
As a project manager you need to balance the limited resources and the final
deliverable committed to the client. To do this, you can follow the points
listed below:
a) Study similar past projects for the method of dealing with similar
situations. Use the historical information to project time and effort
estimates for the current software project.
b) Use an incremental process model to create a schedule to deliver the
required functional module of the software product.
c) Present the schedule created on the basis of past projects to the client.
Explain the projected delays and the reasons for the same.
d) Present the incremental model as a strategy for developing the software
product.
All the strategies have their advantages and disadvantages. If the schedule
created using inputs from the past project does not help meet the deadline, you
can use the incremental model. In the incremental model, the strategy is to
deliver each module as and when it is completed. However, historical trends
show that clients opt for either strategy if provided reasonable time and effort
estimates.
i. Scheduling Basics
Only a small percentage of all the activities in a software project have a direct
impact on the on-time completion of the software project. Therefore, you need
to identify the activities that are critical to the completion of the project. In
addition, you ensure that all inputs are available to complete the critical
activities. This is where a software project schedule comes into the picture.
There are a few basic principles that determine how a software project
schedule is created. To create a project schedule, first you group similar
activities together. Then, you determine the dependencies of the different
activities. Next, you allocate the estimated time and resources to each activity.
Finally, you define the roles and responsibilities and the output and validation
criteria.
287
Software Project Management (CS615)
Some of the guidelines for creating a software project schedule are discussed
below:
a) Classification
b) Interdependence
c) Time and effort allocation
d) Validation criteria
e) Defined responsibilities and outputs
a) Classification
While managing a software project, you need to group similar tasks and
activities so that they are completed successfully. The primary tools used to
group similar tasks are the WBS and decomposition technique. Using these
tools, you can divide a software project into different phases. The phases can
be further subdivided into activities. The software project schedule is prepared
according to the arrangement of the phases.
b) Interdependence
As you have seen, a software project is composed of multiple phases and each
phase is composed of multiple activities. Although each activity is treated
separately, it is linked to other activities. As a project manager, you determine
the interdependence and sequence of activities. For example, some activities
can be completed without any inputs from other activities, whereas other
activities cannot start unless a preceding activity is completed.
d) Validation Criteria
You also determine the validation criteria for time and effort allocation in a
software project. Determining the validation criteria allows you to ensure that
the optimal level of resources is available for a particular activity. Suppose 5
people are assigned to an activity that requires an effort of 3.5 person days.
This means resources allocated are more than the actual requirement.
can track each person's effort and the progress of each activity towards
closure.
289
Software Project Management (CS615)
LECTURE # 38
8. Scheduling
i. GANTT CHARTS
There are various tools that help you create a schedule. One of the simplest
project management tools used to represent the timeline of activities is the Gantt
chart.
Long before the advent of computers, Henry L. Gantt lent his name to a simple
and very useful graphical representation of a project development schedule.
The Gantt chart shows almost all of the information contained in the schedule
activity list, but in a much more digestible way. The schedule information is more
easily grasped and understood, and the activities can be easily compared. The
Gantt chart enables us to see at any given time, which activities should be
occurring in the project.
You represent an activity by a horizontal bar on the Gantt chart. The position of a
horizontal bar shows the start and end time of an activity and the length of the bar
show its duration. You can have one look at the Gantt chart and make out the
progress of the project. Figure 1 displays a sample Gantt chart.
290
Software Project Management (CS615)
A
Activities
10 20 30 40 50 60
PLANNED
Time (Person days) ACTUAL
In Figure 1, activity D starts on day 1 of the project. The planned duration of this
activity is 20 days. The planned duration is shown in a lighter shade on the Gantt
chart. This is done to differentiate planned duration from the current status of the
activity. In the case of activity D, the current duration of the activity is 19 days.
Therefore, activity D is still one day short of completion. This can be discerned
from the length of the gray and black bars. Activity C, planned for completion on
day 40, is much behind schedule. This can be observed from the smaller length of
the black bar in the Gantt chart.
To understand how you can use a Gantt chart to schedule a project, consider an
example. Table 1 display a set of activities in a software project and the start and
end time for each activity.
291
Software Project Management (CS615)
Time Allocation
Tasks Planned Start Planned End
(person days)
Requirement analysis and project planning 10 01/01/2002 01/14/2002
Setting up the environment 6 01/01/2002 01/08/2002
Software construction 80 01/15/2002 05/15/2002
Unit testing 30 05/16/2002 06/28/2002
User training 5 07/22/2002 07/26/2002
System testing 15 07/01/2002 07/19/2002
User documentation 30 01/15/2002 02/28/2002
Data migration 20 01/15/2002 02/15/2002
Conducting user acceptance test 20 08/01/2002 08/31/2002
Using the data shown in the Table 1, you can create a Gantt chart. The Gantt chart
is displayed in Figure 2.
In Figure 2, the Gantt chart displays the week-wise status of a software project. A
vertical dotted line is drawn through the chart to represent the current date. This
292
Software Project Management (CS615)
line indicates the status of the project on a specific day. The left side of the line
indicates the tasks that are completed. On-going activities run across the line. The
future activities lie completely to the right of the line. After drawing the Gantt
chart you can extend the bars every week to a length proportional to the work
completed during the week. Therefore, the bars describe the status of the-project
at any point of time.
Figure 3 is another example of a Gantt chart. The symbols used in the chart are
widely accepted, though not standardized. The inverted triangle, for example, is
commonly used to represent a significant event, such as a major milestone.
The Gantt chart in Fig. 3 demonstrates the ease with which important schedule
information can be quickly perceived. We can immediately see that, except for the
maintenance phase, all phases overlap, and that from November to mid-December
1992 three high level activities overlap.
Major milestones
293
Software Project Management (CS615)
SPR
Requirements
analysis
PDR
Top level design
CDR
Detailed design
Implementation
TRR
Integration
ATP
Testing
Maintenance
1992 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Jan Feb Mar Apr
May Jun 1993
Major milestones
SRR = Software requirements review
PDR = Preliminary design review
CDR = Critical design review
TRR = Test readiness review
ATP = Acceptance test procedure
More detailed charts can also include the names of the engineers assigned to each
activity, and the equipment that will be needed for each activity. This information
can be added next to the activity time lines in the graph, or as an inserted
reference table (similar to the list of major milestones in fig 10.1). Some
variations of the Gantt chart do include this type of information on the chart, but
this can cause clutter, which is contrary to the main objective of the chart; to
enable important schedule information to be grasped quickly.
Figure 3 includes only seven activities. As more detail becomes available, lower
level activities can be included on the chart. When the chart has more activities
than it can reasonably carry (a subjective decision), additional charts may be
294
Software Project Management (CS615)
added. For example, the design activity can be presented on a separate Gantt chart
(see Fig. 4).
Figure 4 presents both high and low level activities. For example, 'Integrate phase
1 model' contains three low level activities: 'Integrate executive', 'Integrate
operating system' and 'Integrate user interface'. This provides the continuity link
between the detailed Gantt chart (Fig. 4) and the higher level chart (Fig. 3).
Set up
integration site
Integrate phase
I model
Integrate
executive
Integrate
operating
system
Integrate user
interface
Note that each period of one month in Fig. 3 has been divided into four weeks.
Though not completely accurate, this is a common approximation, used also in
estimation and apart from being convenient; it also provides some slack for minor
scheduling adjustments.
Similar detailed Gantt charts can be prepared for each of the major project
development phases. Non-development activities will also appear on the Gantt
chart, such as 'Procurement of development tools', or 'Market research'. This is
particularly useful when certain development activities are dependent on other
non-development activities, such as the procurement of development tools (e.g. a
compiler) that need to be completed before the implementation activities can
begin. In cases where such dependent relationships may have been overlooked,
they will often emerge from' a review of the Gantt chart. This type of dependence
295
Software Project Management (CS615)
• PERT and
• CPM
You can use either of these techniques to analyze a wide variety of projects. Each
technique depicts a project as a sequence of activities. This helps you perform an
analysis of individual activities or the complete project.
Despite the different approaches followed by PERT and CPM, both techniques
have some common components. These include:
a) Activities
b) Nodes
c) Network
d) Critical path
a) Activities
You need to define the steps in such a way that they are distinct, homogeneous
tasks for which you can estimate resource requirements.
each activity is placed below the activity. Figure 5 shows an activity with
expected duration of 15 days.
15 Days
Figure 5: An Activity
The different activities that are possible in a project are predecessor, successor,
and concurrent activities.
Predecessor activities need to end before the next can begin. After a predecessor
activity is completed, the successor activity becomes the predecessor for another
activity. However, unlike the predecessor arid successor activities, the concurrent
activities can be completed simultaneously with other activities.
b) Nodes
1 2
c) Network
297
Software Project Management (CS615)
2
1
5
4
3
d) Critical Path
The critical path is the longest path through a network. It consists of those
activities that cannot be completed concurrent1y. In other words, the critical path
represents the maximum duration for a project. You can determine the maximum
duration by adding the duration of each activity on the critical path. Typically, a
double line in a network schedule represents the critical path for that project.
Figure 8.6 shows the critical path for a network.
2
1 1
5 5
4
2
6
4
3
3
298
Software Project Management (CS615)
There are a few basic rules that are followed while constructing a network
schedule.
2. Each node has a distinct number. As a convention, the number that is assigned
to the head of the arrow is greater than the number that is assigned to the tail.
3. The network schedule has no loops. For example, in Figure 9, activity 1 is the
predecessor of both activity 2 and activity 3. This places activities l, 2, and 3
in a loop.
1 2
4. Each activity has a unique preceding and succeeding event associated with it.
For example, in Figure 10, activities A and B have common preceding and
succeeding events associated with them. This is not allowed in a network
schedule.
299
Software Project Management (CS615)
1 2
3
B
A C
1 2 4
300
Software Project Management (CS615)
PERT was developed in 1957 to cater to the needs of the Polaris Fleet Ballistic
Missile project of the US government. PERT uses a probabilistic approach to time
estimates. You normally apply it to projects that are characterized by uncertainty.
For example, in a complex software project where you require research to identify
activities. PERT allows you to account for the uncertainties that are common to
most software projects. PERT uses the network schedule to represent a project
schedule while taking the uncertainties into account.
• Optimistic time
• Pessimistic time
• Most likely time
The optimistic time is the shortest time period within which an activity can
end if everything goes well.
The most likely time is the estimate of the normal time that an activity takes to
complete.
From these three estimates, you derive the expected time to complete an
activity. The expected time is also referred to as the average time for the
activity.
To calculate the expected time for each activity, you use the following
equation:
T 0 + 4T m + T p
Te =
6
Where Te is the expected time, T0 is the optimistic time, Tm is the most likely
time, and Tp is the pessimistic time required to complete an activity.
301
Software Project Management (CS615)
According to this equation, you calculate the expected time for an activity as a
weighted mean of the optimistic, most likely, and pessimistic times. The
weights attached to these times are 1, 4, and 1, respectively.
Consider the example of the activities in a software project as given in Table
1. The time estimates provided in Table 1 are the estimated times for each
activity. Table 2 provides the break-up of the estimated times into the
optimistic, pessimistic, and most likely times for each activity.
Table 2: Optimistic, Most Likely Time, and Pessimistic Estimates for Activities
Using the formula for calculating estimated time for an activity, the estimated
time for requirements analysis and project planning is:
7 + 4 ( 10 ) + 13
Te = = 60 / 6 = 10 persondays
6
Similarly, you can calculate the estimated times for all the activities in Table 2
using the above formula.
Figure 12 shows the PERT network schedule created using the time estimates.
302
Software Project Management (CS615)
Software System
Construction Unit Testing Testing
Requirements
Analysis and 2 4 7 9
Project
Planning
80 30 15
10 User
Acceptance
User Training Testing
1
User
5 8 10
Documentation
5 20
6 30
3 Data
Migration
20 6
Node Activity
Number
Dummy
Activity
keeping the chart updated. For this reason, many computerized PERT utilities
have been developed.
PERT software packages have been available for many years, but it is only
during the past few years that good professional PERT packages have become
available on PCs and other small computers. These packages take much of the
tedium out of the preparation of PERT charts, and also come with additional
features such as various planning analyzers for activity assignment, what if
scenarios and resource allocation.
304
Software Project Management (CS615)
LECTURE # 39
9.1 Risk is defined as the possibility of loss. It is the inability to achieve program
objectives within defined cost, schedule, and technical constraints. Risk
management is a set of actions that helps the project manager plan an approach to
deal with uncertain occurrences.
A software project encounters two types of risks, development process risks and
product- related risks. Some of the development process risks are developer
errors, natural disasters, disgruntled employees, and poor management objectives.
Some project related risks are incomplete requirements, unclear project
deliverables and objectives, and complexity of the product.
The steps of risk management involve risk identification, risk analysis, and risk
mitigation. Risk identification involves identifying risks. Risks are identified after
discussion with team members about the requirements documents, available
technology, resources, and other project-related factors.
What is it? Risk analysis and management are a series of steps that help a
software team to understand and manage uncertainty. Many problems can plague
a software project A risk is a potential problem - it might happen, it might not But
regardless of the outcome, it's a really good idea to identify it, assess its
probability of occurrence, estimate its impact, and establish a contingency plan
should the problem actually occur.
Who does it? Everyone involved in the software process – managers, software
engineers and customers - participate in risk analysis and management
Why is it important? Think about the Boy Scout motto: "Be prepared" Software is
a difficult undertaking. Lots of things can go wrong, and frankly, many often do.
It's for this reason that being prepared, understanding the risks and taking
preventive measures to avoid or manage them is a key element of good software
project management.
What are the steps? Recognizing what can go wrong is the first step, called -
risk identification. Next, each risk is analyzed to determine the likelihood that it
will occur and the damage that it will do if it does occur. Once this information is
established, risks are ranked by probability and impact. Finally, a plan is
developed to manage those risks with high probability and high impact.
305
Software Project Management (CS615)
Ever wondered why people insure their lives, their homes, their cars, or their
valuables? Suppose your house, along with all the valuables, is burgled. You will
be definitely disheartened. However, you will suffer less if all your valuables are
insured. At times such as these, you realize the importance of planning in advance
for the uncertain events in your life. Just as you plan for unforeseen events in your
life, project managers also need to prepare for uncertainties affecting projects. All
project management skills of a project manager can fall in the face of
uncertainties and unplanned problems.
• First, risk concerns future happenings, Today and yesterday are beyond active
concern, as we are already reaping what was previously sowed by our past
actions, The question is, can we, therefore, by changing our actions today,
create an opportunity for a different and hopefully better situation for
ourselves tomorrow
• This means, second, that risk involves change, such as in changes of mind,
opinion, actions, or places
• Third risk involves choice, and the uncertainty that choice itself entails, thus
paradoxically, risk, like death and taxes, is one of the few certainties of life,
Any project can encounter uncertainties in the form of increased costs, schedule delays,
and diminished qualities. Unless tackled, these uncertainties can lead to major project
disasters. The uncertainties encountered during project execution are the potential project
risks. Every software project has to grapple with the new risks threatening information
306
Software Project Management (CS615)
security along with the conventional risks, such as hardware failure, time and cost
escalation, defects, or resource crunch. Risk can be defined as the possibility of loss. Risk
arises due to the inability to achieve objectives within defined cost, schedule, and
technical constraints. Risk has two components. The possibility of not achieving a
particular outcome is one, and the result of failing to achieve the outcome is the other.
The former is the probability of loss, and the latter is the loss. Software project
management deals with managing both these components of risk.
According to the risk management guru Barry Boehm, “Risk management focuses the
project manager’s attention on those portions of the project most likely to cause trouble
and compromise participants’ win conditions.” In other words, risk management is a set
of actions that helps the project manager plan to deal with uncertain occurrences. It is
through risk management that project managers assess risks and manage to reduce risks
to an acceptable level.
Software risk management is not about managing risks faced by a software organization.
Here, the focus is on managing risks encountered during software development process.
Therefore, the concern is about managing the future of a software project.
In this chapter, you will 1ook at the unforeseen events that might affect a software
project. You will also learn about the steps for managing and mitigating software project
risks.
Types of Risks
To be able to manage project risks, you must first understand what constitutes, a risk. All
uncertain occurrences are not risks. Only those occurrences that have an adverse impact
on the progress of a project are risks to the project. Risk is not a bad thing. Risk is bad
only when it results in loss for an organization. Unless there is a potential for loss, there
is no risk. Moreover, loss can be interpreted as either a bad outcome or a lost opportunity.
The tendency of most project managers is to jump at the statement this is a risk.
However, the desired reaction is to pre-empt all possible outcome and plan for them.
Project risks can be broadly categorized into development process risks and product risks.
Developer errors could be attributed to poor training due to budgetary constraints and
inadequate skills and software tools. Ergonomic problems, environment problems, and
interruptions or distractions at office also account for developer risks. Other risks in this
category include problems in personnel acquisition and retention.
Similarly, natural disasters such as flood, cyclone, fire, storm, and snowfall are also risks
to a project.
Disgruntled employees can also become a risk to an organization. For example, a sacked
employee can use password snuffers to gain unauthorized access. A dismissed person can
307
Software Project Management (CS615)
flood the system with senseless messages. A disgruntled employee can also try to
sabotage the project work by destroying files and programs.
Product Risks
Product risks crop up in the form of changing requirements during product development.
Incomplete and unclear requirements are a risk to the product during development.
Similarly, problems in meeting design specifications can also be categorized as risk to
product development.
Risks could arise if the project deliverables or objectives are not clearly defined or if
technical data is missing. The possibility of several alternatives at any given time during
the project is also a cause of concern. If errors are not recognized during the design
phase, they could turn into risks for the project. Similarly, risks could arise due to the size
and complexity of the product or while achieving client acceptance of the product.
Note:
The key idea in risk management is not to wait for a risk to materialize and
become a problem. The objective of risk management is to ensure that for each
perceived risk, you know well in advance how to tackle it.
The process of risk management begins during the analysis phase of software
development life cycle. However, the actual process of managing risks continues
throughout the product development phase. Risk management is a dynamic process
because it deals with the activities that are yet to happen. Risk management has a two-
fold agenda. First, deciding actions for preventing risks from happening, and second,
deciding actions for tackling risks that materialize. Therefore, risk management is all
about pre-empting a risk, coming up with a plan for resolving the risk, and finally
executing the plan.
Figure 6.1 displays the steps of the risk management process. Formally, articulated, risk
management process consists of three steps:
1. Risk identification
2. Risk analysis
308
Software Project Management (CS615)
3. Risk mitigation
Figure 6.1: Risk Management Process
Risk Management
Risk Identification
In this step, the project manager gathers information about the potential risks in the
project. The project manager plans the strategies for avoiding risks or controlling them.
The project team conducts brainstorming sessions and discussions among team members
about the requirements document. They discuss the available technology, manpower,
prevailing environment, and all project-related factors. The project manager picks up the
thread from these and creates a risk log. After the risk log is prepared, the project
manager calls a meeting within the team and technical experts to discuss the risk log and
the mitigation plans. An effective way of identifying' risks is using a questionnaire.
Yes/No/Not Applicable
SN Risk Description
(NA)
A. Product Engineering
Are requirements changing continuously during
1)
product development?
Do the changing requirements affect each of the
2)
following:
Quality
Functionality
Schedule
Integration
Design
Testing
309
Software Project Management (CS615)
The sample questionnaire in Table 6.1 includes an exhaustive list of risks that might be
encountered during the progress of a project. The answers to the questions in the risk
identification questionnaire enable the project manager to estimate the impact of risks. In
the sample questionnaire Table 6.1, the risks are categorized under product engineering,
product-design, and reusability. From this table, you obtain a list of risks that are relevant
to each category. You compare the information obtained from this table with past results
and estimate the criticality of risk. In short, during risk identification, you obtain answers
to the following queries:
Risk Analysis
After identifying the risks, the project manager needs to analyze the risks. Uncertainty
and loss are the two characteristics of risk. The uncertainty factor in risk means that the
unknown event mayor may not happen. While analyzing risks, the project manager needs
to quantify the level of uncertainty and the degree of loss. Based on this, the project
manager plans schedules and costs. During analysis, information on risk is converted into
information on decision-making. Analysis provides the basis for the project manager to
work on the “right” risks.
Table 6.2 displays a risk analysis format. There are various tasks involved in risk
analysis. First, the WBS elements are identified. One of the tasks in the risk analysis
phase is to describe the risk. The risk can be product-related, process-related,
organization-related, client-related, or infrastructure-related.
Second, the WBS elements are evaluated to determine the risk events. Then the project
manager quantifies the probability of occurrence of risk. The project manager can assign
probability values between 0 and 1. For example, a risk with a low probability of
occurrence is marked 0.2 while that with a high probability of occurrence is marked 0.8.
The reason why a particular risk has a high or low probability depends on the actual
circumstance of the project.
Third, the risks are rated depending on their probability of occurrence. Based on the
probability of risk, the project manager identifies the impact of the risk. The impact of
risk on cost, schedule, and quantity needs to be calculated and graded. The impact of risk
can be graded on a scale of 1 to 10, 1 being the lowest, and 10 being the highest.
Then the risk factor is calculated by multiplying the probability of risk and the impact of
risk. Finally, each risk is prioritized relative to other risks. The risk factor is used to
prioritize the identified risks. For example, the risk with a probability value 0.1 and an
impact value 2 will have minimal impact. While risks close to probability value 0.8 and
with an impact value 9 will have greater impact. Therefore, the project manager can
prioritize risks based on the probability and the impact of risks. A risk that has a high
impact and low probability will not absorb a significant amount of the project manager's
time. However, high-impact risks with moderate to high probability will catch the
attention of the project manager.
311
Software Project Management (CS615)
Risk Mitigation
Risk mitigation is the best possible approach adopted by the project manager to avoid
risks from occurring. The probability of the risk occurring and the potential impact of the
risk can be mitigated by dealing with the problem early in the project. Essentially, risk
mitigation involves three possibilities and the project manager needs to adopt a risk
mitigation strategy aimed at them. The three possibilities include:
• Risk avoidance
• Risk monitoring
• Contingency planning
Risk Avoidance
To avoid risks from occurring, the project team prepares the risk plan before the
commencement of the project. The project team identifies the potential risks and
prioritizes them based on their probability of occurrence and impact. Then, the team
prepares a plan for managing risks. In most software projects, this plan is popularly called
the risk management plan. Table 6.3 displays the format of a risk management plan.
Table 6.3: Risk Management Plan
Impact
Probability Risk
on
Risk of Factor Mitigation Start End
Project Responsibility
Description Occurrence (Probability Steps Date Date
(1 –
(0 – 1) x Impact)
10)
To prepare the risk management plan, the project team first identifies and assesses the
risks associated with the project. Then, the probability of occurrence of each risk is
estimated and the possible impact is calculated. In the plan, the probable cost and damage
is also quantified. The project team also identifies the contingency plans for all the
identified risks. The contingency plan for each risk is based on the project's defined
operational software process. The plan is modified throughout the software development
life cycle of the project based on the changes taking place. The contingency plan also
includes the cost, in terms of effort, in carrying out the plan. The software risks identified
are tracked, reassessed, and re-planned at the end of each phase. The project manager
revisits the plan if significant changes are introduced in the software project.
Risk Monitoring
As the project proceeds, risk-monitoring activities commence. It is not possible to
monitor closely all the risks that are identified for the project. For example, if 100 risks
are identified for a project, only top 20 risks are monitored. There are re-planning
checkpoints where the information obtained from monitoring the risks is used to refine
the risk assessments and management plan. The project manager monitors the top 20
312
Software Project Management (CS615)
percent of the factors that may indicate the status of the risks in the project. In the case of
large teams, the project manager also needs to monitor the attitude of the team members
and their problems. This helps the project manager monitor any possible team-related
risks.
Besides monitoring the top 20 percent of the risks, the project manager needs to monitor
the mitigation steps also. Consider an example. To ensure that particular software is
browser- independent, the software is created on the lowest compatible browser. Such
software will work on any browser thus making it browser-independent. Therefore,
mitigating a project risk involves working hard at reducing the possibility that the risk
will ever occur. Mitigation includes nearly all actions that a project team takes to
overcome risks. For example, choosing a more expensive but proven technology over, a
newer, less expensive technology is a step toward mitigating project risks.
Contingency Planning
The possibility of contingency planning arises when mitigation efforts fail and risk
becomes a reality. Contingency planning is used to monitor risks and invoke a
predetermined response. According to the plan, a trigger is set up. If the trigger is
reached, the contingency plan is put into effect. Contingency planning involves
maintaining an alternative plan if the original plan fails. A simple example could be the
savings people make for a rainy day. Contingency plans are a must for the top 20 percent
of the risks identified. These plans are put to use after the risks become a reality. The
importance of contingency planning can be realized from this example. Despite the
massive attack on WTC, the stock markets in the US resumed functioning within a few
days. This was possible because the finance companies had backed up their data and
information on computers elsewhere. The contingency planning of finance companies
prevented the risk of huge data loss for the stock market.
During this project, the team is expected to manage a large volume of data. The team has
never had any experience in managing such a large volume of data. The system also
needs to use this data to generate various MIS reports related to delays or adherence of
bus services.
The performance requirement is less than fifteen seconds for all popular browsers. Your
organization is anticipating numerous requirement changes during the development
process. The system needs to be implemented across several states in the country. The
data related to the system is highly confidential because it can provide an edge to the
competitors.
Now, as a project manager, you need to prepare a risk management plan for this project.
The project starts on May 15 and should be completed on November 15.
313
Software Project Management (CS615)
First, you need to identify the potential risks involved in the project. The potential risks to
the project are described in Table 6.4.
Risk Description
Inexperienced staff
Performance risk due to high volume of data to be processed
Cross-browser compatibility
Involvement of new technology
Design changes during development
After identifying the risks, you need to estimate the probability of their occurrence and
their impact on product development. Based on this, you calculate the risk factor and plan
the mitigation steps.
Table 6.5: The Risk Management Plan for Building a Schedule Adherence System
Impact
Probability Risk
on
Risk of Factor Mitigation Start End
Project Responsibility
Description Occurrence (Probability Steps Date Date
(1 –
(0 – 1) x Impact)
10)
Conducting
training
Inexperience Project sessions before May July
0.8 3 2.4
Staff Manager the need 15 15
commencement
of project
Massive tuning
of architecture
Performance Till
during the
risk due to the
design phase May
high volume 0.6 7 4.2 Architect end of
and conducting 15
of data to be the
a proof of
processed project
concepts for
the design
Cross- Using the May Till
0.6 5 3.0 Developer
browser lowest 15 the
314
Software Project Management (CS615)
In Table 6.5, the risk factors with high values are the high priority risks. Here, the high
priority risks are design changes during development, performance risk due to high
volume of data to be processed, and cross-browser compatibility. The high priority risks
need to be monitored closely and continuously. The rest of the risks can be monitored
periodically. Certain risks need contingency planning despite being low in the priority
list. For example, the risk due to involvement of new technology is a low priority risk.
However, the probability of occurrence of this risk is 0.5, which is fairly high. This calls
for contingency planning because you may not be aware of all the details of the new
technology. Suppose the system fails to respond if the number of users exceeds a certain
number. In such a situation, you need to have a contingency plan ready. You need to
discuss with the vendor regarding a workaround for such a situation. The workaround
should be ready in the case of failure of the system.
First, risk concerns future happenings, Today and yesterday are beyond active concern, as
we are already reaping what was previously sowed by our past actions, The question is,
can we, therefore, by changing our actions today, create an opportunity for a different and
hopefully better situation for ourselves tomorrow, This means, second, that risk involves
change, such as in changes of mind, opinion, actions, or places…[Third] risk involves
choice, and the uncertainty that choice itself entails, Thus paradoxically, risk, like death
and taxes, is one of the few certainties of life,
315
Software Project Management (CS615)
What is it? Risk analysis and management are a series of steps that help a software team
to understand and manage uncertainty. Many problems can plague a software project A
risk is a potential problem - it might happen, it might not But regardless of the outcome,
it's a really good idea to identify it, assess its probability of occurrence, estimate its
impact, and establish a contingency plan should the problem actually occur.
Who does it? Everyone involved in the software process – managers, software engineers
and customers - participate in risk analysis and management
Why is it important? Think about the Boy Scout motto: "Be prepared" Software is a
difficult undertaking. Lots of things can go wrong, and frankly, many often do. It's for
this reason that being prepared, understanding the risks and taking preventive measures to
avoid or manage them is a key element of good software project management.
What are the steps? Recognizing what can go wrong is the first step, called - risk
identification. Next, each risk is analyzed to determine the likelihood that it will occur
and the damage that it will do if it does occur. Once this information is established, risks
are ranked by probability and impact. Finally, a plan is developed to manage those risks
with high probability and high impact.
What is the work product? A risk mitigation monitoring and management (RMMM)
plan or a set of risk information sheets is produced.
How do I ensure that I've done it right? The risks that are analyzed and managed
should be derived from thorough study of the people, the product, the process and the
project. The RMMM should be revisited as the project proceeds to ensure that risks are
kept up to date. Contingency plans for risk management should be realistic.
Reactive strategies have been laughingly called the “Indiana Jones School of risk
management” [THO92]. In the movies that carried his name, Indiana Jones, when faced
with overwhelming difficulty, would invariably say, “Don’t worry, I’ll think of
something!” Never worrying about problems until they happened, Indy would react in
some heroic way.
Sadly, the average software project manager is not Indiana Jones and the members of the
software project team are not his trusty sidekicks. Yet, the majority of software teams
rely solely on reactive risk strategies. At best, a reactive strategy monitors the project for
likely risks. Resources are set aside to deal with them, should they become actual
problems. More commonly, the software team does nothing about risks until something
goes wrong. Then, the team flies into action in an attempt to correct the problem rapidly.
316
Software Project Management (CS615)
This is often called a fire fighting mode. When this fails, “Crisis Management” [CHA92]
takes over, and the project is in real jeopardy.
Although there has been considerable debate about the proper definition for software risk,
there is general agreement that risk always involves two characteristics [HIG 95]:
• Uncertainty - the risk may or may not happen; that is, there are no 100 % probable
risks.
• Loss - if the risk becomes a reality, unwanted consequences or losses will occur.
When risks are analyzed, it is important to quantify the level of uncertainty and the
degree of loss associated with each risk. To accomplish this, different categories of risks
are considered.
Project risks threaten the project plan. That is, if project risks become real, it is likely that
project schedule will slip and that costs will increase. Project risks identify potential
budgetary, schedule, personnel (staffing and organization), resource, customer, and
requirements problems and their impact on a software project. In Chapter 5, project
complexity, size, and the degree of structural uncertainty were also defined as project
(and estimation) risk factors.
Technical risks threaten the quality and timeliness of the software to be produced. If a
technical-risk becomes a reality, implementation may become difficult or impossible.
Technical risks identify potential design, implementation, interface, verification, and
maintenance problems. In addition, specification ambiguity, technical uncertainty,
technical obsolescence, and "leading-edge" technology are also risk factors. Technical
risks occur because the problem is harder to solve than we thought it would be.
Business risks threaten the viability of the software to be built. Business risks often
jeopardize the project or the product. Candidates for the top five business risks are (1)
building a excellent product or system that no one really wants (market risk), (2) building
a product that no longer fits into the overall business strategy for the company (strategic
risk), (3) building a product that the sales force doesn't understand how to sell, (4) losing
the support of senior management due to a change in focus or a change in people
(management risk), and (5) losing budgetary or personnel commitment (budget risks). It
is extremely important to note that simple categorization won't always work. Some risks
are simply unpredictable in advance.
317
Software Project Management (CS615)
Another general categorization of risks has been proposed by Charette [CHA89J. Known
risks are those that can be uncovered after careful evaluation of the project plan, the
business and technical environment in which the project is being developed, and other
reliable information sources (e.g., unrealistic delivery date, lack of documented
requirements or software scope, poor development environment). Predictable risks are
extrapolated from past project experience (e.g., staff turnover, poor communication with
the customer, dilution of staff effort as ongoing maintenance requests are serviced).
Unpredictable risks are the joker in the deck. They can and do occur, but they are
extremely difficult to identify in advance.
Risk identification is a systematic attempt to specify threats to the project plan (estimates,
schedule, resource loading, etc.). By identifying known and predictable risks, the project
manager takes a first step toward avoiding them when possible and con- trolling them
when necessary.
There are two distinct types of risks for each of the categories that have been presented in
Section 6.2: generic risks and product-specific risks. Generic risks are a potential threat to
every software project. Product-specific risks can be identified only by those with a clear
understanding of the technology, the people, and the environment that is specific to the
project at hand. To identify product -specific risks, the project plan and the software
statement of scope are examined and an answer to the following question is developed:
What special characteristics of this product may threaten our project plan?
One method for identifying risks is to create a risk item checklist. The checklist can be
used for risk identification and focuses on some subset of known and predictable risks in
the following generic subcategories:
• Product size-risks associated with the overall size of the software to be built or
modified.
• Business impact-risks associated with constraints imposed by management or the
marketplace.
• Customer characteristics-risks associated with the sophistication of the customer
and the developer's ability to communicate with the customer in a timely manner.
• Process definition-risks associated with the degree to which the software process
has been defined and is followed by the development organization.
• Development environment-risks associated with the availability and quality of the
tools to be used to build the product.
• Technology to be built-risks associated with the complexity of the system to be
built and the newness of the technology that is packaged by the system.
• Staff size and experience-risks associated with the overall technical and project
experience of the software engineers who will do the work.
318
Software Project Management (CS615)
The risk item checklist can be organized in different ways. Questions relevant to each of
the topics can be answered for each software project. The answers to these questions
allow the planner to estimate the impact of risk. A different risk item checklist format
simply lists characteristics that are relevant to each generic subcategory. Finally, a set of
"risk components and drivers” [AFC88] are listed along with their probability of
occurrence. Drivers for performance, support, cost, and schedule are discussed in answer
to later questions.
A number of comprehensive checklists for software project risk have been proposed in
the literature (e.g., [SEI93], [KAR96]). These provide useful insight into generic risks for
software projects and should be used whenever risk analysis and management is
instituted. However, a relatively short list of questions [KEI98] can be used to provide a
preliminary indication of whether a project is "at risk."
The following questions have derived from risk data obtained by surveying experienced
software project managers in different part of the world [KEI98]. The questions are
ordered by their relative importance to the success of a project.
1. Have top software and customer managers formally committed to support the project?
2. Are end-users enthusiastically committed to the project and the system/product to be
built?
3. Are requirements fully understood by the software engineering team and their
customers?
4. Have customers been involved fully1n the definition of requirements?
5. Do end-users have realistic expectations?
6. Is project scope stable?
7. Does the software engineering team have the right mix of skills?
8. Are project requirements stable?
9. Does the project team have experience with the technology to be implemented?
10. Is the number of people on the project team adequate to do the job?
11. Do all customer/user constituencies agree on the importance of the project and on the
requirements for the system/product to be built?
The U.S. Air Force [AFC88j has written a pamphlet that contains excellent guidelines (or
software risk 1dentification and abatement. The Air Force approach requires that the
project manager identify the risk drivers that affect software risk components-
Performance, cost, support, and schedule. In the context of this discussion, the risk
components are defined in the following manner:
319
Software Project Management (CS615)
• Performance risk - the degree of uncertainty that the product will meet its
requirements and be fit for its intended use.
• Cost risk - the degree of uncertainty that the project budget will be maintained.
• Support risk - the degree of uncertainty that the resultant software will be easy to
correct, adapt, and enhance.
• Schedule risk - the degree of uncertainty that the project schedule will be
maintained and that the product will be delivered on time.
The impact of each risk driver on the risk component is divided into one of four impacts
categories-negligible, marginal, critical, or catastrophic. Referring to Figure 6.1
[BOE89], a characterization of the potential consequences of errors (rows labeled 1) or a
failure to achieve a desired outcome (rows labeled 2) are described. The impact category
is chosen based on the characterization that best fits the description in the table.
Risk projection, also called risk estimation, attempts to rate each risk in two ways-the
likelihood or probability that the risk is real and the consequences of the problems
associated with the risk, should it occur. The project planner, along with other managers
and technical staff, performs four risk projection activities:
A risk table provides a project manager with a simple technique for risk projection. A
sample risk table is illustrated in figure 6.2.
Impact values:
l- Catastrophic
2- Critical
3- marginal
4- Negligible
A project team begins by listing all risks (no matter how remote) in the first column of
the table. This can be accomplished with the help of the risk item check-lists referenced
in Section 6.3. Each risk is categorized in the second column (e.g., PS implies a project
size risk, BU implies a business risk). The probability of occurrence of each risk is
entered in the next column of the table. The probability value for each risk can be
estimated by team members individually. Individual team members are polled in round-
robin fashion until their assessment of risk probability begins to converge.
Next, the impact of each risk is assessed. Each risk component is assessed using the
characterization presented in Figure 6.1, and an impact category is determined. The
categories for each of .the four risk components - performance, support, cost, and
schedule - are averaged to determine an overall impact value.
Very
h h
High
Impact
Disregard
risk factor
Management
concern
Very
low
Probability
Of occurrence 1.0
Once the first four columns of the risk table have been completed, the table is sorted by
probability and by impact. High-probability, high-impact risks percolate to the top of the
322
Software Project Management (CS615)
table, and low-probability risks drop to the bottom. This accomplishes first order risk
prioritization. The project manager studies the resultant sorted table and defines a cutoff
line. The cutoff line (drawn horizontally at some point in the table) implies that only risks
that lie above the line will be given further attention. Risks that fall below the line are re-
evaluated to accomplish second-order prioritization. Referring to Figure 6.3, risk impact
and probability have a distinct influence on management concern. A risk factor that has a
high impact but a very low probability of occurrence should not absorb a significant
amount of management time. However, high-impact risks with moderate to high
probability and low-impact risks with high probability should be carried forward into the
risk analysis steps that follow.
All risks that lie above the cutoff line must be managed. The column labeled RMMM
contains a pointer into Risk Mitigation, Monitoring and Management Plan or
alternatively, a collection of risk information sheets developed for all risks that lie above
the cutoff. The RMMM plan and risk information sheets are discussed in Sections 6.5 and
6.6.
Risk probability can be determined by making individual estimates and then developing a
single consensus value. Although that approach is workable, more sophisticated
techniques for determining risk probability have been developed [AFC88]. Risk drivers
can be assessed on a qualitative probability scale that has the following values:
impossible, improbable, probable, and frequent. Mathematical probability can then be
associated with each qualitative value (e.g., a probability of 0.7 to 1.0 implies a highly
probable risk).
Three factors affect the consequences that are likely if a risk does occur: its nature, its
scope, and its timing. The nature of the risk indicates the problems that are likely if it
occurs. For example, a poorly defined external interface to customer hardware (a
technical risk) will preclude early design and testing and will likely lead to system
integration problems late in a project. The scope of a risk combines the severity (just how
serious is it?) with its overall distribution (how much of the project will be affected or
how many customers are harmed?). Finally, the timing of a risk considers when and for
how long the impact will be felt. In most cases, a project manager might want the "bad
news" to occur as soon as possible, but in some cases, the longer the delay, the better.
Returning once more to the risk analysis approach proposed by the U.S. Air Force
fAFC88), the following steps are recommended to determine the overall consequences of
a risk:
1. Determine the average probability of occurrence value for each risk component.
2. Using Figure 6.1, determine the impact for each component based on the criteria
shown.
3. Complete the risk table and analyze the results as described in the preceding sections. .
323
Software Project Management (CS615)
The overall risk exposure, RE, is determined using the following relationship [HAL98]:
RE=P x C.
where P is the probability of occurrence for a risk, and C is the cost to the project should
the risk occur.
For example, assume that the software team defines a project risk in the following
manner:
Risk identification. Only 70 percent of the software components scheduled for reuse
will, in fact, be integrated into the application. The remaining functionality will have to
be custom developed.
Risk impact. 60 reusable software components were planned. If only 70 percent can be
used, 18 components would have to be developed from scratch (in addition to other
custom software that has been scheduled for development). Since the average component
is 100 LOC and local data indicate that the software engineering cost for each LOC is
$14.00, the overall cost (impact) to develop the components would be 18 x 100 x 14 =
$25,200.
At this point in the risk management process, we have established a set of triplet of the
form [CHA89]:
where rj is risk, lj is the likelihood (probability) of the risk, and xj is the impact of the risk.
During risk assessment, we further examine the accuracy of the estimates that were made
during risk projection, attempt to rank the risks that have been uncovered, and begin
thinking about ways to control and/or avert risks that are likely to occur.
324
Software Project Management (CS615)
For assessment to be useful, a risk referent level [CHA89] must be defined. For most
software projects, the risk components discussed earlier - performance, cost, support, and
schedule also represent risk referent levels: That is, there is a level for performance,
degradation, cost overrun, support difficulty, or schedule slippage (or any combination of
the four) that will cause the project to be terminated. If a combination of risks create
problems that cause one or more of these referent levels to be exceeded, work will stop.
In the context of software risk analysis, a risk referent level has a single point, called the
referent point or break point, at which the decision to proceed with the project or
terminate it (problems are just too great) are equally weighted. Figure 6.4 represents this
situation graphically.
In reality, the referent level can rarely be represented as a smooth line on a graph. In most
cases it is a region in which there are areas of uncertainty; that is, attempting to predict a
management decision based on the combination of referent values is often impossible.
Therefore, during risk assessment, we perform the following steps:
During early stages of project planning, a risk may be stated quite generally. As time
passes and more is learned about the project and the risk, it may be possible to refine the
risk into a set of more detailed risks, each somewhat easier to mitigate, monitor, and
manage.
Using the CTC format for the reuse risk noted in Section 6.4.2, we can write:
Given that all reusable software components must conform to specific design standards
and that some do not conform, then there is concern that (possibly) only 70 percent of the
planned reusable modules may actually be integrated into the as-built system, resulting in
the need to custom engineer the remaining 30 percent of components. This general
condition can be refined in the following manner:
Sub condition 1. Certain reusable components were developed by a third party with no
knowledge of internal design standards.
Sub condition 2. The design standard for component interfaces has not been solidified
and may not conform to certain existing reusable components.
Sub condition 3. Certain reusable components have been implemented in a language that
is not supported on the target environment.
The consequences associated with these refined sub conditions remains the same (i.e., 30
percent of software components must be customer engineered), but the refinement helps
to isolate the underlying risks and might lead to easier analysis and response.
To mitigate this risk, project management must develop a strategy for reducing turnover.
Among the possible steps to be taken are
326
Software Project Management (CS615)
o Meet with current staff to determine causes for turnover (e.g., poor working
conditions, low pay, and competitive job market).
o Mitigate those causes that are under our control before the project starts.
o Once the project commences, assume turnover will occur and develop techniques to
ensure continuity when people leave.
o Organize project teams so that information about each development activity is widely
dispersed.
o Define documentation standards and establish mechanisms to be sure that .documents
are developed in a timely manner.
o Conduct peer reviews of all work (so that more than one person is “up to speed").
o Assign a backup staff member for every critical technologist.
As the project proceeds, risk monitoring activities commence. The project manager
monitors factors that may provide an indication of whether the risk is becoming more or
less likely. In the case of high staff turnover, the following factors can be monitored:
In addition to monitoring these factors, the project manager should monitor the
effectiveness of risk mitigation steps. This is one mechanism for ensuring continuity,
should a critical individual leave the project. The project manager should monitor
documents carefully to ensure that each can stand on its own and that each imparts
information that would be necessary if a newcomer were forced to join the software team
somewhere in the middle of the project.
Risk management and contingency planning assumes that mitigation efforts have failed
and that the risk has become a reality. Continuing the example, the project is well
underway and a number of people announce that they will be leaving. If the mitigation
strategy has been followed, backup is available, information is documented, and
knowledge has been dispersed across the team. In addition, the project manager may
temporarily refocus resources (and readjust the project schedule) to those functions that
are fully staffed, enabling newcomers who must be added to the team to "get up to
speed." Those individuals who are leaving are asked to stop all work and spend their last
weeks in "knowledge transfer mode. This might include video-based knowledge capture,
the development of "commentary documents," and/or meeting with other team members
who will remain on the project.
It is important to note that RMMM steps incur additional project cost. For example,
spending the time to "backup" every critical technologist costs money. Part of risk
management, therefore, is to evaluate when the benefits accrued by the RMMM steps are
outweighed by the costs associated with implementing them. In essence, the project
327
Software Project Management (CS615)
planner performs a classic cost/benefit analysis. If risk aversion steps for high turnover, it
will increase both project cost and duration by an estimated 15 percent, but the
predominant cost factor is "backup," management may decide not to implement this step.
On the other hand, if the risk aversion steps are projected to' increase costs by 5 percent
and duration by only 3 percent management will likely put all into place.
For a large project, 30 or 40 risks may be identified. If between three and seven risk
management steps are identified for each, risk management may become a project in
itself! For this reason, we adapt the Pareto 80-20 rule to software risk. Experience
indicates that 80 percent of the overall project risk (i.e., 80 percent of the potential for
project failure) can be accounted for by only 20 percent of the identified risks. The work
performed during earlier risk analysis steps will help the planner to determine which of
the risks reside in that 20 percent (e.g., risks that lead to the highest risk exposure. For
this reason, some of the risks identified, assessed, and projected may not make it into the
RMMM plan - they don't fall into the critical 20 percent (the risks with highest project
priority).
Risk is not limited to the software project itself. Risks can occur after the software has
been successfully developed and delivered to the customer. These risks are typically
associated with the consequences of software failure in the field.
In the early days of computing, there was reluctance to use computers (and soft- ware) to
control safety critical processes such as nuclear reactors, aircraft flight control, weapons
systems, and large-scale industrial processes. Although the probability .of failure of a
well-engineered system was small, an undetected fault in a computer- based control or
monitoring system could result in enormous economic damage or, worse, significant
human injury or loss of life. But the cost and functional benefits of Computer-based
control and monitoring far outweigh the risk. Today, computer hardware and software are
used regularly to control safety critical systems.
When software is used as part of a control system, complexity can increase by an order of
magnitude or more. Subtle design faults induced by human error-some- thing that can be
uncovered and eliminated in hardware-based conventional control-become much more
difficult to uncover when software is used.
Software safety and hazard analysis [LEV95] are software quality assurance activities
(Chapter 8) that focus on the identification and assessment of potential hazards that may
affect software negatively and cause an entire system to fail. If hazards can be identified
early in the software engineering process, software design features can be specified that
will either eliminate or control potential hazards.
328
Software Project Management (CS615)
A risk management strategy can be included in the software project plan or the risk
management steps can be organized into a separate Risk Mitigation, Monitoring and
Management Plan. The RMMM plan documents all work performed as part of risk
analysis and are used by the project manager as part of the overall project plan.
Some software teams do not develop a formal RMMM document. Rather, each risk is
documented individually using a risk information sheet (RIS) [WIL97]. In most cases, the
RIS is maintained using a database system, so that creation and information entry,
priority ordering, searches, and other analysis may be accomplished easily. The format of
the RIS is illustrated in Figure 6.5.
Once RMMM has been documented and the project has begun, risk mitigation and
monitoring steps commence. As we have already discussed, risk mitigation is a problem
avoidance activity. Risk monitoring is a project tracking activity with three primary
objectives: (I) to assess whether predicted risks do, in fact, occur; (2) to ensure that risk
aversion steps defined for the risk are being properly applied; and (3) to collect
information that can be used for future risk analysis. In many cases, the problems that
occur during a project can be traced to more than one risk. Another job of risk monitoring
is to attempt to allocate origin (what risk(s) caused which problems throughout. the
project).
Risk management is not as well developed as are some of the more traditional project
management disciplines. Some organizations feel that risk management is too specialized
or
advanced for them. Others believe that risk management is optional. Others fear that risk
management may expose flaws in their project plans and strategies that will hurt them in
the competitive world. Certainly these organizations will not talk openly and honestly
about risk and will “shoot the messenger” that brings risk to their attention.
Risk-mature organizations overcome the barriers to practicing effective risk management
in their approach to projects.
Their organizational culture becomes “risk friendly.”
Risk management gains priority to rank along with cost, time and scope management.
Decisions are made and resources are allocated based on the results of risk analysis.
The highest quality data are used for risk analysis and resources are committed to the
efforts.
Risk management is viewed as a career path in the organization and those that practice
it are treated as professionals.
Risk analysis functions are given independence in the organization even though that
may make it hard to “control.”
Mature risk management organizations look to the best in class to benchmark their risk
management processes.
They use modern tools and are not disdainful of sophisticated and proven approaches.
They measure their effectiveness with metrics.
Project decisions are made on a “risk-adjusted” basis.
Continuous improvement is achieved through regular repetition.
329
Software Project Management (CS615)
Project risk has its origins in the uncertainty that is present in all projects. Known risks
are those that have been identified and analyzed, and it may be possible to plan for those
risks using the processes described in this chapter. Unknown risks cannot be managed
proactively, and a prudent response by the project team can be to allocate general
contingency against such risks, as well as against any known risks for which it may not
be cost-effective or possible to develop a proactive response.
Organizations perceive risk as it relates to threats to project success or to opportunities to
enhance chances of project success. Risks that are threats to the project may be accepted
if the risk is in balance with the reward that may be gained by taking the risk. For
example, adopting a fast track schedule (Section 6.4) that may be overrun is a risk taken
to achieve an earlier completion date. Risks that are opportunities, such as work
acceleration that may be gained by assigning more expert staff, may be pursued to benefit
the project’s objectives.
Individuals, and by extension organizations, have attitudes toward risk that affect both the
accuracy of the perception of risk and the way they respond. Attitudes about risk should
be made explicit wherever possible. A consistent approach to risk that meets the
organization’s requirements should be developed for each project, and communication
about risk and its handling should be open and honest. Risk responses reflect an
organization’s balance between risk-taking and risk-avoidance.
To be successful, the organization must be committed to addressing the management of
risk proactively and consistently throughout the project.
330
Software Project Management (CS615)
331
Software Project Management (CS615)
LECTURE # 40
9.1 Fundamentals
• What is it?
A core aspect of the Project Manager’s role is to manage change within the
project successfully. This is achieved by understanding the business and system
drivers requiring the change, documenting the benefits and costs of adopting the
change and formulating a structured plan for implementing the change.
Risk Management is the process by which risks to the project (e.g. to the scope,
deliverables, timescales or resources) are formally identified, quantified and
managed during the project.
A project risk may be identified at any stage of the project by completing a Risk
Form and recording the relevant risk details within the Risk Register.
First, risk concerns future happenings. Today and yesterday are beyond active
concern, as we are already reaping what was previously sowed by our past
actions. The question is; can we, therefore, by changing our actions today, create
an opportunity for a different and hopefully better situation for ourselves
tomorrow.
This means, second, that risk involves change, such as in changes of mind,
opinion, actions, or places…
[Third] risk involves choice, and the uncertainty that choice itself entails. Thus
paradoxically, risk, like death and taxes, is one of the few certainties of life.
• Why is it important?
332
Software Project Management (CS615)
Think about the Boy Scout motto: "Be prepared" Software is a difficult
undertaking. Lots of things can go wrong, and frankly, many often do. It's for this
reason that being prepared, understanding the risks and taking preventive
measures to avoid or manage them is a key element of good software project
management.
In such cases, the manager can plan for the possibility that a problem will occur
by estimating its probability, evaluating its impact, and preparing solutions in
advance. This is referred to as an effective means of combating potential
development problems.
Performing risk analysis means being prepared. It is a form of insurance, the basic
idea being that if a problem occurs, a solution is readily available. Like all
insurance, risk analysis usually comes with a price.
The cost of preparing for the occurrence of a problem is primarily the cost of
having the alternative solution at hand while the problem may or may not occur.
In some cases, the cost may be minimal, the time needed to analyze and document
the solution, and the time to track the problem.
In other cases the cost may be substantial, for example, the price of an alternative
piece of development equipment.
333
Software Project Management (CS615)
In any case, a problem that has been analyzed and resolved ahead of time is far
simpler to resolve than a problem that occurs unexpectedly.
– The future is our concern – what risks might cause the software project to go
awry?
– Change is our concern -how will changes in customer requirements,
development technologies, target computers, and all other entities connected
to the project affect timeliness and overall success?
– Last, we must grapple with choices - what methods and tools should we use,
how many people should be involved, how much emphasis on quality is
"enough"?
Risk analysis and management are a series of steps that help a software team to
understand and manage uncertainty. Many problems can plague a software project
A risk is a potential problem - it might happen, it might not But regardless of the
outcome, it's a really good idea to identify it, assess its probability of occurrence,
estimate its impact, and establish a contingency plan should the problem actually
occur.
Any project can encounter uncertainties in the form of increased costs, schedule
delays, and diminished qualities. Unless tackled, these uncertainties can lead to
major project disasters.
The uncertainties encountered during project execution are the potential project
risks. Every software project has to grapple with the new risks threatening
information security along with the conventional risks, such as hardware failure,
time and cost escalation, defects, or resource crunch.
Risk can be defined as the possibility of loss. Risk arises due to the inability to
achieve objectives within defined cost, schedule, and technical constraints.
The former is the probability of loss, and the latter is the loss. Software project
management deals with managing both these components of risk.
Risk management focuses the project manager’s attention on those portions of the
project most likely to cause trouble and compromise participants’ win conditions.
334
Software Project Management (CS615)
In other words, risk management is a set of actions that helps the project manager
plan to deal with uncertain occurrences. It is through risk management that project
managers assess risks and manage to reduce risks to an acceptable level.
To be able to manage project risks, you must first understand what constitutes, a
risk. All uncertain occurrences are not risks.
Only those occurrences that have an adverse impact on the progress of a project
are risks to the project.
Risk is not a bad thing. Risk is bad only when it results in loss for an organization.
Unless there is a potential for loss, there is no risk.
However, the desired reaction is to pre-empt all possible outcome and plan for
them. Project risks can be broadly categorized into development process risks and
product risks.
Similarly, natural disasters such as flood, cyclone, fire, storm, and snowfall
are also risks to a project.
335
Software Project Management (CS615)
disgruntled employee can also try to sabotage the project work by destroying
files and programs.
Narrowly focused and changing objectives that are not updated can also be
counted as risks.
Risks could arise if the project deliverables or objectives are not clearly
defined or if technical data is missing.
The possibility of several alternatives at any given time during the project is
also a cause of concern. If errors are not recognized during the design phase,
they could turn into risks for the project.
Similarly, risks could arise due to the size and complexity of the product or
while achieving client acceptance of the product.
Note:
The key idea in risk management is not to wait for a risk to materialize and
become a problem. The objective of risk management is to ensure that for
each perceived risk; you know well in advance how to tackle it.
336
Software Project Management (CS615)
Risk Management
337
Software Project Management (CS615)
LECTURE# 41
i. Risk Identification
• Project manager
• Project team leaders
• Project team
• Risk management team if assigned
• Subject matter experts from outside the project team
• Customers
• End users
• Other project managers
• Stakeholders
• Outside risk management experts
Risk Identification is an iterative process because new risks may become known
as the project progresses through its life cycle. The frequency of iteration and who
participates in each cycle will vary from case to case.
The project team should be involved in the process so that they can develop and
maintain a sense of ownership of and responsibility for the risks and associated
risk response actions. Persons outside the team may provide additional objective
information.
The Risk Identification process usually leads to the Qualitative Risk Analysis
process. Alternatively, it can lead directly to the Quantitative Risk Analysis
process when conducted by an experienced risk manager. On some occasions
simply the identification of a risk may suggest its response, and these should be
recorded for further analysis and implementation in the Risk Response Planning
process.
338
Software Project Management (CS615)
In this step, the project manager gathers information about the potential risks in
the project. The project manager plans the strategies for avoiding risks or
controlling them.
The project team conducts brainstorming sessions and discussions among team
members about the requirements document. They discuss the available
technology, manpower, prevailing environment, and all project-related factors.
The project manager picks up the thread from these and creates a risk log.
After the risk log is prepared, the project manager calls a meeting within the team
and technical experts to discuss the risk log and the mitigation plans. An effective
way of identifying' risks is using a questionnaire.
One method for identifying risks is to create a risk item checklist. The checklist
can be used for risk identification and focuses on some subset of known and
predictable risks in the following generic subcategories:
g) Staff size and experience-risks associated with the overall technical and
project experience of the software engineers who will do the work.
The risk item checklist can be organized in different ways. Questions relevant to
each of the topics can be answered for each software project.
339
Software Project Management (CS615)
The answers to these questions allow the planner to estimate the impact of risk. A
different risk item checklist format simply lists characteristics that are relevant to
each generic subcategory.
Finally, a set of "risk components and drivers” are listed along with their
probability of occurrence.
A number of comprehensive checklists for software project risk have been pro-
posed in the literature (e.g., [SEI93], [KAR96]). These provide useful insight into
generic risks for software projects and should be used whenever risk analysis and
management is instituted. However, a relatively short list of questions [KEI98]
can be used to provide a preliminary indication of whether a project is "at risk."
Yes/No/Not Applicable
SN
(NA)
A. Risk Description
Are requirements changing continuously during
1)
product development?
Do the changing requirements affect each of the
2)
following:
Quality
Functionality
Schedule
Integration
Design
Testing
3) Are the external interfaces changing?
Are the requirements missing or incompletely
4)
specified?
5) Are there any missing requirements?
Can these requirements be incorporated into the
6)
system?
Does the client have unwritten requirements or
7)
expectations?
340
Software Project Management (CS615)
The sample questionnaire in Table 1 includes an exhaustive list of risks that might
be encountered during the progress of a project.
The answers to the questions in the risk identification questionnaire enable the
project manager to estimate the impact of risks.
In the sample questionnaire Table 1, the risks are categorized under product
engineering, product-design, and reusability.
From this table, you obtain a list of risks that are relevant to each category. You
compare the information obtained from this table with past results and estimate
the criticality of risk.
By identifying known and predictable risks, the project manager takes a first step
toward avoiding them when possible and controlling them when necessary.
There are two distinct types of risks for each of the categories that have been
presented in Section 6.2: generic risks and product-specific risks. Generic risks
are a potential threat to every software project. Product-specific risks can be
341
Software Project Management (CS615)
identified only by those with a clear understanding of the technology, the people,
and the environment that is specific to the project at hand. To identify product -
specific risks, the project plan and the software statement of scope are examined
and an answer to the following question is developed: What special characteristics
of this product may threaten our project plan?
After identifying the risks, the project manager needs to analyze the risks.
Uncertainty and loss are the two characteristics of risk.
The uncertainty factor in risk means that the unknown event mayor may not
happen. While analyzing risks, the project manager needs to quantify the level of
uncertainty and the degree of loss.
Based on this, the project manager plans schedules and costs. During analysis,
information on risk is converted into information on decision-making. Analysis
provides the basis for the project manager to work on the “right” risks.
Table 2 displays a risk analysis format. There are various tasks involved in risk
analysis.
First, the WBS elements are identified. One of the tasks in the risk analysis phase
is to describe the risk. The risk can be product-related, process-related,
organization-related, client-related, or infrastructure-related.
Second, the WBS elements are evaluated to determine the risk events.
Then the project manager quantifies the probability of occurrence of risk. The
project manager can assign probability values between 0 and 1. For example, a
risk with a low probability of occurrence is marked 0.2 while that with a high
342
Software Project Management (CS615)
probability of occurrence is marked 0.8. The reason why a particular risk has a
high or low probability depends on the actual circumstance of the project.
Third, the risks are rated depending on their probability of occurrence. Based on
the probability of risk, the project manager identifies the impact of the risk. The
impact of risk on cost, schedule, and quantity needs to be calculated and graded.
The impact of risk can be graded on a scale of 1 to 10, 1 being the lowest, and 10
being the highest.
Then the risk factor is calculated by multiplying the probability of risk and the
impact of risk. Finally, each risk is prioritized relative to other risks. The risk
factor is used to prioritize the identified risks. For example, the risk with a
probability value 0.1 and an impact value 2 will have minimal impact. While risks
close to probability value 0.8 and with an impact value 9 will have greater impact.
Therefore, the project manager can prioritize risks based on the probability and
the impact of risks. A risk that has a high impact and low probability will not
absorb a significant amount of the project manager's time. However, high-impact
risks with moderate to high probability will catch the attention of the project
manager.
1. Risk Avoidance
To avoid risks from occurring, the project team prepares the risk plan before the
commencement of the project. The project team identifies the potential risks and
prioritizes them based on their probability of occurrence and impact. Then, the
team prepares a plan for managing risks. In most software projects, this plan is
popularly called the risk management plan. Table 3 displays the format of a risk
management plan.
Impact
Probability Risk
on
Risk of Factor Mitigation Start End
Project Responsibility
Description Occurrence (Probability Steps Date Date
(1 –
(0 – 1) x Impact)
10)
343
Software Project Management (CS615)
To prepare the risk management plan, the project team first identifies and assesses
the risks associated with the project.
Then, the probability of occurrence of each risk is estimated and the possible
impact is calculated.
The project team also identifies the contingency plans for all the identified risks.
The contingency plan for each risk is based on the project's defined operational
software process. The plan is modified throughout the software development life
cycle of the project based on the changes taking place.
The contingency plan also includes the cost, in terms of effort, in carrying out the
plan. The software risks identified are tracked, reassessed, and re-planned at the
end of each phase.
The project manager revisits the plan if significant changes are introduced in the
software project.
2. Risk Monitoring
The project manager monitors the top 20 percent of the factors that may indicate
the status of the risks in the project.
In the case of large teams, the project manager also needs to monitor the attitude
of the team members and their problems. This helps the project manager monitor
any possible team-related risks.
Besides monitoring the top 20 percent of the risks, the project manager needs to
monitor the mitigation steps also.
344
Software Project Management (CS615)
Mitigation includes nearly all actions that a project team takes to overcome risks.
For example, choosing a more expensive but proven technology over, a newer,
less expensive technology is a step toward mitigating project risks.
3. Contingency Planning
The possibility of contingency planning arises when mitigation efforts fail and
risk becomes a reality.
During this project, the team is expected to manage a large volume of data. The
team has never had any experience in managing such a large volume of data. The
system also needs to use this data to generate various MIS reports related to
delays or adherence of bus services.
The performance requirement is less than fifteen seconds for all popular browsers.
Your organization is anticipating numerous requirement changes during the
345
Software Project Management (CS615)
Now, as a project manager, you need to prepare a risk management plan for this
project. The project starts on May 15 and should be completed on November 15.
First, you need to identify the potential risks involved in the project. The potential
risks to the project are described in Table 4.
Risk Description
Inexperienced staff
Performance risk due to high volume of data to be processed
Cross-browser compatibility
Involvement of new technology
Design changes during development
After identifying the risks, you need to estimate the probability of their
occurrence and their impact on product development. Based on this, you calculate
the risk factor and plan the mitigation steps. Your risk management plan is
displayed in Table 5.
Table 5: The Risk Management Plan for Building a Schedule Adherence System
Impact
Probability Risk
on
Risk of Factor Mitigation Start End
Project Responsibility
Description Occurrence (Probability Steps Date Date
(1 –
(0 – 1) x Impact)
10)
Conducting
training
Inexperience Project sessions before May July
0.8 3 2.4
Staff Manager the need 15 15
commencement
of project
Performance Massive tuning Till
risk due to of architecture the
May
high volume 0.6 7 4.2 Architect during the end of
15
of data to be design phase the
processed and conducting project
346
Software Project Management (CS615)
a proof of
concepts for
the design
Using the Till
Cross- lowest the
May
browser 0.6 5 3.0 Developer compatible end of
15
compatibility browser for the
development project
Ensuring all
details
pertaining to
Till
the technology
Involvement the
Project is available and
of new 0.5 5 2.5 May end of
Manager keeping in
technology the
close touch
project
with the
technology
vendor
Designing a
flexible
Till
Design architecture
the
changes that can May
0.6 8 4.8 Architect end of
during accommodate 15
the
development future changes
project
and
enhancement
In Table 5, the risk factors with high values are the high priority risks. Here, the
high priority risks are design changes during development, performance risk due
to high volume of data to be processed, and cross-browser compatibility.
The high priority risks need to be monitored closely and continuously. The rest of
the risks can be monitored periodically.
Certain risks need contingency planning despite being low in the priority list. For
example, the risk due to involvement of new technology is a low priority risk.
However, the probability of occurrence of this risk is 0.5, which is fairly high.
This calls for contingency planning because you may not be aware of all the
details of the new technology. Suppose the system fails to respond if the number
of users exceeds a certain number. In such a situation, you need to have a
contingency plan ready. You need to discuss with the vendor regarding a
workaround for such a situation. The workaround should be ready in the case of
failure of the system.
The U.S. Air Force [AFC88j has written a pamphlet that contains excellent
guidelines (or software risk 1dentification and abatement. The Air Force approach
requires that the project manager identify the risk drivers that affect software risk
components- Performance, cost, support, and schedule. In the context of this
discussion, the risk components are defined in the following manner:
a) Performance risk - the degree of uncertainty that the product will meet its
requirements and be fit for its intended use.
b) Cost risk - the degree of uncertainty that the project budget will be
maintained.
c) Support risk - the degree of uncertainty that the resultant software will be
easy to correct, adapt, and enhance.
d) Schedule risk - the degree of uncertainty that the project schedule will be
maintained and that the product will be delivered on time.
The impact of each risk driver on the risk component is divided into one of four
impacts categories-negligible, marginal, critical, or catastrophic.
348
Software Project Management (CS615)
Note:
(3) The potential consequence of undetected software errors or faults.
(4) The potential consequence if the desired outcome is not achieved.
9.6 Developing a Risk Table
A risk table provides a project manager with a simple technique for risk
projection. A sample risk table is illustrated below.
349
Software Project Management (CS615)
Impact values:
l- Catastrophic
2- Critical
3- marginal
4- Negligible
A project team begins by listing all risks (no matter how remote) in the first
column of the table. This can be accomplished with the help of the risk item
check-lists given earlier.
Each risk is categorized in the second column (e.g., PS implies a project size risk,
BU implies a business risk). The probability of occurrence of each risk is entered
in the next column of the table. The probability value for each risk can be
estimated by team members individually. Individual team members are polled in
round-robin fashion until their assessment of risk probability begins to converge.
Next, the impact of each risk is assessed. Each risk component is assessed using
the characterization presented in the sample risk table, and an impact category is
determined. The categories for each of the four risk components - performance,
support, cost, and schedule - are averaged to determine an overall impact value.
Very
high
High
Impact
Disregard
risk factor Management
concern
Very low
Probability
Of
occurrence 1.0
Once the first four columns of the risk table have been completed, the table is
sorted by probability and by impact. High-probability, high-impact risks percolate
to the top of the table, and low-probability risks drop to the bottom. This
accomplishes first order risk prioritization. The project manager studies the
350
Software Project Management (CS615)
resultant sorted table and defines a cutoff line. The cutoff line (drawn horizontally
at some point in the table) implies that only risks that lie above the line will be
given further attention. Risks that fall below the line are re-evaluated to
accomplish second-order prioritization.
All risks that lie above the cutoff line must be managed. The column labeled
RMMM contains a pointer into Risk Mitigation, Monitoring and Management
Plan or alternatively, a collection of risk information sheets developed for all risks
that lie above the cutoff.
Reactive strategies have been laughingly called the “Indiana Jones School of risk
management” [THO92]. In the movies that carried his name, Indiana Jones, when
faced with overwhelming difficulty, would invariably say, “Don’t worry, I’ll
think of something!” Never worrying about problems until they happened, Indy
would react in some heroic way.
Sadly, the average software project manager is not Indiana Jones and the
members of the software project team are not his trusty sidekicks. Yet, the
majority of software teams rely solely on reactive risk strategies. At best, a
reactive strategy monitors the project for likely risks. Resources are set aside to
deal with them, should they become actual problems. More commonly, the
software team does nothing about risks until something goes wrong. Then, the
team flies into action in an attempt to correct the problem rapidly. This is often
called a fire fighting mode. When this fails, “Crisis Management” [CHA92] takes
over, and the project is in real jeopardy.
351
Software Project Management (CS615)
All of the risk analysis activities presented to this point have a single goal to assist
the project team in developing a strategy for dealing with risk. An effective
strategy must consider three issues:
• risk avoidance
• risk monitoring
• risk management and contingency planning
To mitigate this risk, project management must develop a strategy for reducing
turnover. Among the possible steps to be taken are
• Meet with current staff to determine causes for turnover (e.g., poor working
conditions, low pay, and competitive job market).
• Mitigate those causes that are under our control before the project starts.
• Once the project commences, assume turnover will occur and develop
techniques to ensure continuity when people leave.
• Organize project teams so that information about each development activity is
widely dispersed.
• Define documentation standards and establish mechanisms to be sure that
documents are developed in a timely manner.
• Conduct peer reviews of all work (so that more than one person is “up to
speed").
• Assign a backup staff member for every critical technologist.
In addition to monitoring these factors, the project manager should monitor the
effectiveness of risk mitigation steps. This is one mechanism for ensuring
continuity, should a critical individual leave the project. The project manager
352
Software Project Management (CS615)
should monitor documents carefully to ensure that each can stand on its own and
that each imparts information that would be necessary if a newcomer were forced
to join the software team somewhere in the middle of the project.
Risk management and contingency planning assumes that mitigation efforts have
failed and that the risk has become a reality. Continuing the example, the project
is well underway and a number of people announce that they will be leaving. If
the mitigation strategy has been followed, backup is available, information is
documented, and knowledge has been dispersed across the team. In addition, the
project manager may temporarily refocus resources (and readjust the project
schedule) to those functions that are fully staffed, enabling newcomers who must
be added to the team to "get up to speed." Those individuals who are leaving are
asked to stop all work and spend their last weeks in "knowledge transfer mode.
This might include video-based knowledge capture, the development of
"commentary documents," and/or meeting with other team members who will
remain on the project.
It is important to note that RMMM steps incur additional project cost. For
example, spending the time to "backup" every critical technologist costs money.
Part of risk management, therefore, is to evaluate when the benefits accrued by
the RMMM steps are outweighed by the costs associated with implementing
them. In essence, the project planner performs a classic cost/benefit analysis. If
risk aversion steps for high turnover, it will increase both project cost and
duration by an estimated 15 percent, but the predominant cost factor is "backup,"
management may decide not to implement this step. On the other hand, if the risk
aversion steps are projected to' increase costs by 5 percent and duration by only 3
percent management will likely put all into place.
For a large project, 30 or 40 risks may be identified. If between three and seven
risk management steps are identified for each, risk management may become a
project in itself! For this reason, we adapt the Pareto 80-20 rule to software risk.
Experience indicates that 80 percent of the overall project risk (i.e., 80 percent of
the potential for project failure) can be accounted for by only 20 percent of the
identified risks. The work performed during earlier risk analysis steps will help
the planner to determine which of the risks reside in that 20 percent (e.g., risks
that lead to the highest risk exposure. For this reason, some of the risks identified,
assessed, and projected may not make it into the RMMM plan - they don't fall
into the critical 20 percent (the risks with highest project priority).
Risk is not limited to the software project itself. Risks can occur after the software
has been successfully developed and delivered to the customer. These risks are
typically associated with the consequences of software failure in the field.
353
Software Project Management (CS615)
In the early days of computing, there was reluctance to use computers (and soft-
ware) to control safety critical processes such as nuclear reactors, aircraft flight
control, weapons systems, and large-scale industrial processes. Although the
probability .of failure of a well-engineered system was small, an undetected fault
in a computer- based control or monitoring system could result in enormous
economic damage or, worse, significant human injury or loss of life. But the cost
and functional benefits of Computer-based control and monitoring far outweigh
the risk. Today, computer hardware and software are used regularly to control
safety critical systems.
Software safety and hazard analysis [LEV95] are software quality assurance
activities that focus on the identification and assessment of potential hazards that
may affect software negatively and cause an entire system to fail. If hazards can
be identified early in the software engineering process, software design features
can be specified that will either eliminate or control potential hazards.
A risk management strategy can be included in the software project plan or the
risk management steps can be organized into a separate Risk Mitigation,
Monitoring and Management Plan. The RMMM plan documents all work
performed as part of risk analysis and are used by the project manager as part of
the overall project plan.
Some software teams do not develop a formal RMMM document. Rather, each
risk is documented individually using a risk information sheet (RIS) [WIL97]. In
most cases, the RIS is maintained using a database system, so that creation and
information entry, priority ordering, searches, and other analysis may be
accomplished easily. The format of the RIS is illustrated in Figure 6.5.
Once RMMM has been documented and the project has begun, risk mitigation
and monitoring steps commence. As we have already discussed, risk mitigation is
a problem avoidance activity. Risk monitoring is a project tracking activity with
three primary objectives:
354
Software Project Management (CS615)
In many cases, the problems that occur during a project can be traced to more than
one risk. Another job of risk monitoring is to attempt to allocate origin (what
risk(s) caused which problems throughout. the project).
355
Software Project Management (CS615)
LECTURE # 42
10. Quality
What is it? It's not enough to talk the talk by saying that soft ware quality is
important, you have to (1) explicitly define what is meant when you say 'software
quality, (2) create a set of activities that will help ensure that every software
engineering Work product exhibits high quality, (3) perform quality assurance
activities on every software project, (4) use metrics to develop strategies to
improving your software process and as a consequence the quality of. the end
product.
What are the steps? Before software quality assurance activities can be initiated,
it is important to define 'software quality' at a number of different levels of
abstraction, Once you understand what quality is, a software team must identify a
set of SQA activities that will filter errors out of work products before they are
passed on.
How do I ensure that I've done it right? Find errors before they become
defects! That is, work to improve your defect removal efficiency, thereby
reducing the amount of rework that your software team has to perform.
SQA encompasses:
Testing is an important element of SQA activity. There are various testing tools to
automate testing process. The SQA plan is used as the template for all SQA
activities planned for a software project and includes details of the SQA activities
to be performed during project execution.
SCM is used to establish and maintain integrity of software items and ensure that
they can be traced easily. SCM helps define a library structure for storage and
retrieval of software items. SCM helps assess the impact of a recommended
change and make decisions depending on the costs and benefits. SCM needs to be
performed at all phases in the DLC of a software project.
As we have seen, one of the main problems in producing quality software is the
difficulty in determining the degree of quality within the software. As there is no
single widely accepted definition for quality, and because different people
perceive quality in different ways, both the developer and the customer must
reach agreement on metrics for quality' (this is discussed in more detail later). The
method of measuring quality may differ for different projects.
357
Software Project Management (CS615)
Wesselius and Ververs suggest that, for the quality of a software product to be
assessable, as many characteristics as possible should be moved from the
subjective and non-assessable components to the assessable component.
Essentially, this means that the requirements specification must describe as many
measurable characteristics of the product as possible.
Quality control includes a feedback loop to the process that created the work
product. The combination of measurement and feedback allows us to tune the
358
Software Project Management (CS615)
process when the work products created fail to meet their specifications. This
approach views quality control as part of the manufacturing process.
Myth: Quality costs money. This is one of the most common myths (not only in
software development). In fact, quality in software usually saves money. Poor
quality breeds failure. There is a positive correlation between failures and cost in
that it is more expensive to remove execution failures designed into software than
to design software to exclude execution failures.
Myth: Software failures are unavoidable. This is one of the worst myths
because the statement is partly true, and is therefore often used as an excuse to
justify poor quality software. The claim that ‘there is always another bug' should
never be a parameter in the design or implementation of software.
When the SQA mandate includes configuration control activities, the required
resources will also include those required for configuration control. Merging SQA
and configuration control is not uncommon, and can eliminate some duplication
of assignments and activities. Two alternative organizational charts are shown in
359
Software Project Management (CS615)
Fig. 8.5. Note that for small projects, merging the two groups may mean simply
assigning both responsibilities to the same person.
Though many tools are common to quality control and configuration control, few
tools are specifically designed for quality control. The following are some of the
general support tools that can be useful in supporting SQA activities:
• Documentation utilities
• Software design tools
• Debugging aids
• Structured preprocessors
• File comparators
• Structure analyzers
• Standards auditors
• Simulators
• Execution analyzers
• Performance monitors
• Statistical analysis packages
• Integrated CASE tools
• Test drivers
• Test case generators
All SQA tools to be used during software development should be identified and
described in the SQA plan. This plan includes a description of all required quality
assurance resources and details of how they will be applied. Thus, at the start of
the project SQA resources can be budgeted and procured as part of the required
project development resources.
360
Software Project Management (CS615)
(a)
Project manager
(b)
Project manager
Software quality
assurance SQA
Even the most jaded software developers will agree that high-quality software is
an important goal. But how do we define quality? A wag once said, 'Every
program does something right, it just may not be the thing that we want it to do.'
361
Software Project Management (CS615)
Many definitions of software quality have been proposed in the literature. For our
purposes, software quality is defined as:
There is little question that this definition could be modified or extended. In fact,
a definitive definition of software quality could be debated endlessly. For the
purposes of this book, the definition serves to emphasize three important points:
2. Specified standards define a set of development criteria that guide the manner
in which software is engineered. If the criteria are not followed, lack of
quality will almost surely result.
3. A set of implicit requirements often goes unmentioned (e.g., the desire for
ease of use and good maintainability). If software conforms to its explicit
requirements but fails to meet implicit requirements, software quality is
suspect.
Background Issues
Quality assurance is an essential activity for any business that produces products
to be used by others. Prior to the twentieth century, quality assurance was the sole
responsibility of the craftsperson who built a product. The first formal quality
assurance and control function was introduced at Bell Labs in 1916 and spread
rapidly throughout the manufacturing world. During the 1940s, more formal
approaches to quality control were suggested. These relied on measurement and
continuous process improvement as key elements of quality management.
Today, every company has mechanisms to ensure quality in its products. In fact,
explicit statements of a company's concern for quality have become a marketing
ploy during the past few decades.
362
Software Project Management (CS615)
Quality is Job # 1'. The implication for software is that many different
constituencies have software quality assurance responsibility-software engineers,
project managers, customers, salespeople, and the individuals who serve within an
SQA group.
The SQA group serves as the customer's in-house representative. That is, the
people who perform SQA must look at the software from the customer's point of
view. Has software development been conducted according to pre-established
standards? Have the technical disciplines properly performed their roles as part of
the SQA activity? The SQA group attempts to answer these and other questions to
ensure that software quality is maintained.
SQA Activities
The charter of the SQA group is to assist the software team in achieving a high-
quality end product. The Software Engineering Institute [PAU93] recommends a
set of SQA activities that address quality assurance planning, oversight, record
keeping, analysis, and reporting.
These activities are performed (or facilitated) by an independent SQA group that:
• evaluations to be performed
• audits and reviews to be performed
• standards that are applicable to the project
363
Software Project Management (CS615)
The software team selects a process for the work to be performed. The SQA
group reviews the process description for compliance with organizational
policy, internal software standards, externally imposed standards (e.g., ISO-
900 I), and other parts of the software project plan.
In addition to these activities, the SQA group coordinates the control and
management of change and helps to collect and analyze software metrics.
The SQA plan serves as the template for SQA activities planned for each software
project. The SQA group and the project team develop the SQA plan. The initial
two sections of the plan describe the purpose and references of the SQA plan. The
next section records details of the roles and responsibilities for maintaining
software product quality.
The Documentation section of the SQA plan describes each of the work products
produced during the software process. This section defines the minimum set of
work products that are acceptable to achieve high quality. The Documentation
section consists of:
364
Software Project Management (CS615)
– Project document such as project plan, requirements document, test cases, test
reports, user manual, and administrative manuals
– Models such as ERDs, class hierarchies
– Technical document such as specifications, test plans
– User document such as help files
All applicable standards to be used in the project are listed in the Standards and
Guidelines section of the SQA plan. The standards and practices applied are the
document standards, coding standards, and review guidelines.
Much attention has been devoted to questions associated with the measurement of
quality. How do we determine the extent to which a software product contains this
vague attribute called quality? When is the quality of a software product high and
when is it low?
One of the more recent developments in quality assurance (not only for software)
is the realization that quality is not a binary attribute that either exists or does not
exist. Kaposi and Myers (1990), in a paper on measurement-based quality
assurance, have stated their belief that 'the quality assurance of products and
processes of software engineering must be based on measurement 7. The earlier
the measurement of quality begins, the earlier problems will be located. Cohen et
al. (1986), in addressing the cost of removing errors during the early phases of
software development, proclaim the existence of the famous exponential law8.
366
Software Project Management (CS615)
The set of measurable values associated with the quality of a product is referred to
as the product's quality metrics. Software quality metrics can be used to determine
the extent to which a software product meets its requirements. The use of quality
metrics increases the objectivity of the evaluation of product quality. Human
evaluation of quality is subjective, and is therefore a possible source of
disagreement, particularly between customer and developer.
A number of methods for establishing software quality metrics are currently being
developed, though no generally accepted standard has yet emerged. For example,
an initial draft of IEEE Std-1061 (1990) includes a detailed discussion of software
quality metrics in general, including a suggested methodology for applying
metrics, and many examples and guidelines. Quality metrics, once defined, do
indeed increase objectivity, but the definition itself is not necessarily objective
and greatly depends upon the needs of the organization that produces the
definition.
A set of many values can be used to determine the overall quality of a software
product. However, a single measure can be created to represent the overall quality
of the software product. This requires:
Recoverability: The amount of time it takes for the system to recover after failure
(e.g. 1hour to reload from backups and 30 minutes to reinitialize the system)
367
Software Project Management (CS615)
The measurement of software quality should not be performed only at the end of a
project. The degree of quality should be measured at regular intervals during
development. Thus, any major reduction in the overall measure of quality should
act as a warning for the project manager that collective action is required. High
quality at the end of the project is achieved by assuring high quality throughout
the development of the project.
The basic software quality assurance activities cover the review and approval of
the development methodology, the software and documentation, and the
supervision and approval of testing. Other SQA activities, such as the supervision
of reviews, the selection and approval of development tools, or the administration
of configuration control, depend on the way SQA is adapted to a specific project.
The size of the project is usually the determining factor. The following guidelines
discuss some of the parameters to be considered for different types of project
when planning SQA.
• Test procedures and testing are always best when conducted by a separate
independent team (discussed later). The decision on whether supervision of
testing activities can be assigned to SQA depends on many factors, including
the independence of the SQA team, the size of the project and the 'complexity
of the project.
368
Software Project Management (CS615)
• The ability to control software quality is directly linked to the quality of the
software requirements specification. Quality control requires the unambiguous
specification of as many of the required characteristics of the software product
as possible.
369
Software Project Management (CS615)
Lecture # 43
Microsoft Project 2000 is a popular project management tool that also enables you
to schedule and track your project plan. In Microsoft Project, every unit of work,
which consumes effort, time, and money, is called a task. You use Microsoft
Project to specify tasks and the expected duration of each task. Using the task-
related information, Microsoft Project prepares a project schedule. The schedule
displays a plan consisting of the start and end dates of each task.
In addition, it plots a pictorial Gantt chart. The Gantt chart view depicts the
extension of tasks across days along with the corresponding resources.
For example, XYZ Inc. has to develop an ERP project. They plan to complete the
project in five phases: analysis, design, development, testing, and implementation.
During the analysis phase, the WBS exercise is performed and a list of tasks is
defined for each of the subsequent phases. Using Microsoft Project, you can
create tasks for each phase, specify their duration, and assign resources to them.
You can also set relationships between tasks to identify the successor and
predecessor tasks.
• General
• Milestone
• Recurring
General Tasks
General tasks are the usual tasks that are independent and have no special
characteristics related to their duration or time. For example, Analysis is a general
task that XYZ Inc. plans to conduct. To create the Analysis task, you can use the
Project menu on the Microsoft Project worksheet. The steps to create the Analysis
task are as follows.
This displays the Project menu that contains all the task-related commands. Figure
371
Software Project Management (CS615)
This displays the Task Information dialog box where you specify the
details of the task being created.
As shown in Figure 11.2, the Task Information dialog box contains five
tabs: General, Predecessors, Resources, Advanced, and Notes. You use
the General tab of the Task Information dialog box because you need to
create a general task. The other tabs have specific purposes for each task.
For example, you can specify the details for a task by using the Advanced
tab. For the same task, you can use the Notes tab to add notes.
Tip: In addition to the access key I, you can display the Task Information dialog
box by using the Shift and F2 shortcut key combination.
The duration of a task signifies the period for which the task lasts in a project
schedule. The start date is preset as the current date unless you enter a specific
date. The finish date for the task is displayed as five days after the current date
in the Gantt chart view. Duration can be specified in minutes, hours, days,
weeks, months, or years.
372
Software Project Management (CS615)
If you are not sure of a confirmed duration, you can specify an estimated
duration of a task.
Figure 11.3 displays the Task Information dialog box where task details
are specified.
Tip: To specify an estimated duration for a particular task, you can precede or
succeed the duration with a question mark. Alternately, you can select the
Estimated check box next to the Duration text box.
After a task is created, you; can specify the subtasks below it. For example,
Project scope determination is a subtask of the Analysis task. To specify the
subtask, you first create the Project scope determination subtask by using the
Task information dialog box. Next, you specify a summary designation for the
Analysis task. A summary designation indicates that the task represents a
parent task for a group of related tasks below it. The start date of a summary
task is the start date of the first subtask. Similarly, the finish date of the
summary task is the finish date of the last subtask under the summary task.
373
Software Project Management (CS615)
The Indent icon is the green arrow pointing towards right. Clicking this icon
indents the selected task to the right. Notice in Figure 11.4 that Microsoft
Project formats the summary task in bold. Alternatively, you can use the left
indent icon to make the Analysis task as a summary task.
Similarly, you create the rest of the tasks listed in the project plan of XYZ Inc.
and specify subtasks below them. You store the list of tasks and their details in a
file with an extension .mpp in Microsoft Project.
Milestone Tasks
Milestone tasks are the second type of tasks that you can create using Microsoft
Project. These tasks have no duration. They serve as markers or reference nodes
for significant accomplishments in a project. Examples of a milestone task are
project startup, project end, pilot implemented, and SRS document sign off.
Creating a milestone task is similar to creating any other task. The only difference
is that after the task is created, you select an additional option named Mark task as
milestone in the Task Information dialog box.
374
Software Project Management (CS615)
For example, in the analysis phase, XYZ Inc. has a milestone task named
Analysis Complete. To indicate that Analysis Complete is a milestone task,
perform the following steps.
Figure 11.5 displays the Mark task as milestone check box selected.
Recurring Tasks
Recurring tasks, as the name suggests, occur repeatedly at regular intervals. For
example, a weekly project meeting with all the team members is a recurring task.
You can schedule a recurring task in a project plan cycle as daily, weekly
monthly, or yearly. You make this selection after deciding the seriousness of the
375
Software Project Management (CS615)
nature of the task. The seriousness of the nature of the task determines how often
the task needs to recur.
For example, if it is a simple meeting to take stock of the situation, you can select
the weekly option. Similarly, you can annually schedule a high level meeting of
the board of directors. However, if an ongoing project is faltering due to frequent
slippages, you need to closely monitor the activities of the project. To monitor the
project activities effectively, you can convene a meeting every day.
You can also schedule the start and end dates of a recurring task. For example, for
XYZ Ltd. you need to create the recurring task Project Meeting under the
Analysis task. The Project Meeting task recurs every Friday until March 14,
which is the project end date. You can create this task by using the Insert menu,
and then specify the details in the Recurring Task Information dialog box. To
create the recurring task you perform the following steps.
1. Select the task row where you want the task to appear.
2. Click the Insert menu.
3. Click the Recurring Task command to display the Recurring Task Information
dialog box.
4. Type Project meeting in the Name text box.
5. Select the Friday check box in the Recurrence pattern group box. This step
specifies that the task should recur every Friday. Note that the Weekly option
button is selected by default.
6. Click the End by option button.
This ensures that the weekly task should continue only until February 14. Figure
11.6 displays this step.
376
Software Project Management (CS615)
A recurring task appears with a special circular arrow symbol in the indicator
field. In the Gantt chart view, it appears at intervals on all the days it is scheduled
until the last date specified.
Constraints are defined as1illitations that negatively affect the schedule and
quality of a project. Some of the typical project constraints are mentioned below:
Duration of a project
Resources of a Project
Performance goals of a project
A constraint also affects other constraints. For example, you may need more
resources if you reduce the project duration. You may also have to forgo some of
the goals and features of the project if you decide to reduce the project duration.
Therefore, it is important that you decide the tradeoff judiciously.
In Microsoft Project, you can specify constraints as limitations that are enforced
on a task. For example, you can specify that a task must start on a particular date
or not finish later than a particular date. Therefore, schedule-related constraints
are available in Microsoft Project.
ASAP
When you use this constraint, Microsoft Project schedules a specific task as early
as possible. For this reason you do not mention a specific date for such a task.
Microsoft Project automatically assigns this constraint when you schedule a new
task from the start date of a project. To change this constraint to a specific
constraint, you can assign a specific start date to it.
ALAP
When you use this constraint, Microsoft Project schedules a specific task as late
as possible. This is the reason why no specific date is mentioned for such a task.
377
Software Project Management (CS615)
Microsoft Project automatically assigns this constraint when you schedule a new
task from the finish date of a project. To change this constraint to a specific
constraint, you can assign a specific finish date to it.
SNLT
You select this constraint to specify the latest possible start date of a task. For
example, you want to conduct a training program on quality standards for the
development team. You want to conduct the training program before the
development phase begins so that you have enough time on hand. Therefore, you
select the SNLT constraint and specify the start date that is before the start of the
development phase. This means the training begins on or before the specified
date. You also keep in mind the duration of the training. Suppose it is a two-day
training program and the project development start date is February 15. Therefore,
after selecting the SNLT constraint, you will enter the start date of the training as
February 13.
FNLT
You select this constraint to specify the latest possible date by which a task can be
completed. For example, you want the project proposal task to be completed on or
before the analysis phase, which is scheduled to start from February 20.
Consequently, by enforcing this constraint on the project proposal task, you
ensure that the finish date for this task is the same as the start date for the analysis
phase.
SNET
This constraint enables you to schedule the start date of a task as early as possible.
This is different from the ASAP constraint because the ASAP is a vague
constraint with no specific start dates for a task. However, by choosing the SNET
constraint, you can specify an early start date for a task. For example, the task to
create test cases is dependent upon the construction and the unit testing phases.
Therefore, the task to create test cases cannot begin unless the earlier two tasks
are over. In this case, you would enforce the SNET constraint on the creation of
test cases and specify a start date. This start date cannot be before the end date of
the preceding tasks. Consequently, you can create test cases any time on or after
this start date but not before.
FNET
You select this constraint when you do not want a task to be complete before a
scheduled finish date. For example, during the unit-testing task you discover there
were many bugs that were addressed by the developers. This makes you skeptical
about the quality of the product. Therefore, you want to extend the finish date of
unit testing and enforce the constraint FNET on it. Consequently, you will not be
able to finish the unit-testing task before the specified date.
378
Software Project Management (CS615)
MSO
This constraint indicates that you must begin a task only on the specified start date
and not later or before that. This is an inflexible constraint. It is usually enforced
during a short cycle duration project when you are unsure whether each task
mayor may not start on time. This may disturb the planned schedule of the entire
project. You can enforce the MSO constraint for critical projects depending upon
client requirements.
MFO
If you use the MSO constraint, it is most likely that you would use the MFO
constraint also. Using the MFO constraint enables you to focus on completing a
particular task. It is useless if you enforce a strict start date with no strict finish
date for completing a task. You can again enforce this constraint for critical
projects depending upon client requirements.
You enforce or use a constraint on a task by specifying the details in the advanced
page of the Task Information dialog box. In that dialog box, you can also specify
the start and the end dates of a constraint depending upon the type of constraint
that you choose.
For example, for XYZ Inc. you need to add a constraint to the Develop test plans
task. This task is a subtask of the Testing task. After creating both the tasks, you
specify the duration of the Develop test plans task. You want that the task should
not carry on for more than two days. You also need to impose a constraint that the
task should not finish later than August 10. However, the management would
appreciate if the task finishes before that.
To add the constraint to the Develop test plans task, you use the constraints
feature in the Task Information dialog box. To access the constraints feature, you
perform the following steps:
379
Software Project Management (CS615)
Tip:
After specifying a constraint type and its date, it is a good idea to specify the
details of choosing a particular constraint type and its date. Subsequently, you
may want to share this information with your colleagues in meetings. This can be
done by clicking the Notes tab in the Task Information dialog box and entering
your comments.
Deadlines are strict finish dates for a particular task. Microsoft Project considers a
deadline to be a target date to complete a task. You add a deadline to a specific
task if you track the progress of that task. Setting realistic deadlines to tasks also
enables you to schedule the subsequent tasks.
Deadlines are important because they depict the finish date of a task. Therefore,
you can track whether a task has exceeded the planned time or is completed
before time. If the task is taking longer than expected, you can take remedial
measures such as adding resources. Adding deadlines does not affect project
schedule nor does it enforce a date constraint. However, it marks a task that has
crossed its deadline with an indication mark next to it.
380
Software Project Management (CS615)
In the .mpp file that you are creating for XYZ Inc., you need to set July 15 as the
deadline for the task Assign development staff; which is a subtask of the
Development task. To set the deadline, you perform the following steps:
1. Create the task Assign development staff by using the Project menu.
2. Select the Assign development staff task.
This is the task for which you need to set a deadline.
3. Click the Advanced tab in the Task Information dialog box.
4. Click the Deadline list box in the Advanced page.
This is done to specify the deadline for the Assign development staff task.
5. Select July 15 in the calendar to specify the deadline date.
6. Click OK to close the Task Information dialog box.
Similarly, you can add deadlines for the other tasks for the XYZ Inc. project.
There is dependency between tasks when a particular task cannot begin until its
preceding task is completed. For example, the creation of the high-level design of
a project cannot start until the client signs off the SRS document. The SRS
document serves as a prerequisite for the immediate subsequent phase.
• Finish-to-Start (FS)
• Start-to-Start (SS)
• Finish-to-Finish (FF)
• Start-to-Finish (SF)
FS
In dependency relationships of tasks, the name of the relationship consists of the
start or finish dates of the predecessor task and the start or finish date of the
successor task. For example, the relationship between the task to finish the SRS
document and the task to begin the high level design is FS. This is because you
link the finish status of the predecessor task to the start status of the successor
task. FS is the default relationship when you link any two tasks.
SS
In addition to FS, you can also begin two tasks at the same time. For example,
you can begin the task to do functional testing and integration testing of the
testing phase simultaneously. The dependency in a SS relationship occurs when
both the predecessor and the successor tasks start at the same time. This is
because these tasks do not share any common component nor are they dependent
on each other. Therefore, the link between them is SS.
381
Software Project Management (CS615)
FF
You can also begin two tasks that finish simultaneously. In such a case, the
dependency relationship between the two tasks is called an FF relationship. For
example, the task to prepare a checklist for implementing a software product
cannot end unless implementation testing for that software product is complete.
SF
Finally, you can have a SF relationship between tasks. This relationship indicates
that a task cannot end until its preceding task starts. This relationship usually
takes place when a project is scheduled from the project finish date. This
relationship helps to minimize the risk of delay of a predecessor task if the
successor task is dependent on the start of the predecessor task. For example, the
testing phase can only start after the coding phase is complete.
You specify the lag time for a task as a positive value in the Lag field cell of the
Predecessors page. This page exists in the Task Information dialog box.
Lead time is defined as the overlap that exists between two dependent tasks. For
example, you could decide to start testing units when developers have partially
completed creating the applications for a project. Therefore, you move ahead of
the schedule of a successor task before time.
You specify the lead time for a task as a negative value in the same Lag field cell
of the Predecessors page. This page exists in the Task Information dialog box.
Consider an example to link two tasks, procuring resources and drafting a project
plan. According to the plan, securing resources is a predecessor task while drifting
a project plan is a successor task. You need to link the two tasks using the start-to-
finish relationship because it is anticipated that the task to draft a plan cannot start
before the resources are procured and incorporated in the project plan. During the
course of the project, you feel that the successor task cannot begin as planned
because procuring resources is too time-consuming. You analyze and deduce that
the project plan can only be drafted four days after resources are procured.
You link the two tasks by using the Edit menu. After linking the two tasks, you
set the type of relationship as start-to finish. Assume that for the XYZ Inc:
382
Software Project Management (CS615)
project, you need to link the Develop code and Developer primary testing tasks.
You have created the Development summary task before. Now, you create these
two tasks under the Development summary task. Then, you set a relationship
between the tasks. Finally, you set a four-day lag time between the two tasks. To
link tasks and set the lag time between them, perform the following steps:
The two tasks are displayed as linked to each other in the Gantt chart view as you
see in Figure 11.8.
383
Software Project Management (CS615)
This information displays the Task Information dialog box wherein you can
establish a defined relationship between the two tasks by using the
Predecessors tab.
11. Type 4d in the Lag field cell to specify four days lag time between the
two tasks. This step is displayed in Figure 11.9.
The tasks Develop code and Developer primary testing appear linked to each
other with the symbol of Start-to-Finish relationship in the Gantt chart view.
For example, at XYZ Inc., both the tasks to train developers and to test a software
module require a Windows 2000 Server. However, depending upon the criticality
of the tasks, you can split one of the non critical tasks. In this case, you decide to
stop testing the software module and continue training the developers. To specify
the task using Microsoft Project, you first create a Testing task as the summary
task. After creating the Testing task, you create the Unit testing task under the
Testing task. Next, you split the Unit testing task.
To split the Unit testing task, you perform the following steps:
1. Create a task named Unit testing below the Testing summary task.
2. Select the Unit testing task.
3. Click the Edit menu.
The Edit menu contains the command that enables you to split a task.
4. Click the Split Task command on the Edit menu.
Upon clicking the Split Task command, the shape of the cursor changes. In
addition, a small yellow box with a tool tip suggesting how to split a task
hovers on the task view of the Microsoft Project window.
5. Drag the changed mouse cursor over the task in the Gantt chart view.
385
Software Project Management (CS615)
In Figure 11.10, you can see the task being split into the required number of days.
To split a task for a specified number of days, you drag the mouse pointer to a
particular date. For example, a task is scheduled to start from May 5. You want a
part of the task to start again from May 15. Therefore, there is a gap between May
5 and May 15. To start the task again from May 15, you drag the last end of the
task and release the mouse pointer on May 15 in the Gant Chart view.
Resources are means that help convert input to a task into output for the task.
Resources are assigned to tasks for the following reasons:
There are two types of resources, work and material. Work resources refer, to the
people and equipment. At the end of a project, these resources are not consumed.
Unlike work resources, material resources are used completely by the end of the
project. For example, to complete the task of writing the code for a module, you
need human and material resources. You need material resources such as
hardware, software, and electricity.
386
Software Project Management (CS615)
Assigning resources to a task is a two-step process. First, you add the available
resources to a project. You can do this by adding resources by using the View
menu and then clicking the Resource Sheet command on the View menu. When
you click the Resource Sheet command, Microsoft Project changes the default
Gantt chart view to the Resource Sheet view. Figure 11.11 displays the Resource
Sheet view.
Suppose for the XYZ Inc. project, you want to add a hardware resource in the
Develop prototype task. The steps to add the resource are as follows:
1. Create a task named Develop prototype below the Analysis summary task.
2. Select the Develop prototype task.
3. Click the Tools menu.
4. The Tools menu contains the command to add a resource.
5. Point to the Resources command.
6. When you point to the Resources command, the Assign Resources command
of the Resources command of the Resources submenu is displayed.
7. Click the Assign Resources command. Figure 11.12 displays the Assign
Resources dialog box.
387
Software Project Management (CS615)
The Assign Resources dialog box contains two fields, Name and Units. The Name
field indicates the name of the available resources in the resource pool or a
project. The Units field indicates the number of resources that can be used for a
particular resource.
You can use the Assign Resources dialog box to assign units for both work and
material resources. The unit for work resources is specified in terms of
percentage. However, the unit for material is specified as a numeric value.
For example, you may select three computers or five workstations for the
development team of a project. These values are not more than the predetermined
value set for a resource in the Max.Units field of every resource in the Resource
Sheet view.
Select the hardware resource for the Develop prototype task. You close the
Assign Resources dialog box by clicking the Close button. The hardware resource
is added next to the Develop prototype task.
388
Software Project Management (CS615)
You can assign two rates for any type of a resource. The rate for work resources
are calculated on an hourly basis. However, the rate at which the materia1
resources are calculated can be:
For example, for the XYZ Inc. project, you need to specify the standard and the
overtime rates for a work resource named Tester. To do this, you first assign the
work resource Tester to the Unit Testing task that you created earlier. After
assigning the resource to the Unit Testing task, perform the following steps to
assign rates to the resource:
The rates can also be entered as negative values to denote the decrease in rate as
compared, to previous rates or as positive values to denote a comparative increase
in rate, such as +20% or -20%.
389
Software Project Management (CS615)
While calculating costs for work resources; Microsoft Project calculates the resource cost
by the hourly rates that you specify and the time required for completing a task.
However, when you assign a material resource to a task, Microsoft Project automatically
calculates the total cost of the resource by using the material resource rate specified by
you and the quantity of material required for completing the task.
Progress Lines
To track a project plan, you first view the progress of a project. You can view the
progress of a project by applying progress lines to the tasks in the project. You
can display progress lines in three ways,
390
Software Project Management (CS615)
You can choose to display progress lines always at the current status of a project.
To do this, you need to select the Always display current progress lines check box
in the Progress Lines dialog box. Selecting this option displays progress lines
every time based on the current status of a project.
The second way to display project lines is to display them on selected dates of a
project plan. For example, you use this option when you need to know the
progress status of a project on the jay development is completed. In this case, you
select the Display selected progress lines check box to display progress lines on
that day. Similarly, you can use this option to display progress lines on the day
when testing is completed or the project-end date.
Finally, you can display progress lines at regular intervals such as daily, weekly,
or monthly.1f you choose daily, you can further define its preciseness by choosing
everyday, every second, or every third day, and so on. Alternatively, if you
choose monthly, you can refine your choice by selecting the month and day when
a progress line is displayed. To display progress lines for all the tasks listed in the
Sample-Project.mpp file every third day, you perform the following steps:
391
© Copyright Virtual University of Pakistan
Software Project Management (CS615)
Project Baselines
Project baselines are another way of depicting the progress of a project. Baselines
are indicators that help you compare the actual start date with the planned start
date of a project. They also help compare the actual cost incurred with the
planned cost for a project. After preparing a project plan for tasks, you can save
the plan as a baseline. This serves as an ideal plan for you to compare the actual
performance of the project with the baseline that you save.
5. In the Project Information dialog box, click the Statistics button to view the
project statistics for the Sample-Project.mpp dialog box. This dialog box is
displayed in Fig 11.16.
The dialog box displays critical and summarized information about the variance
values of the start and finish dates of a project, work completed in hours, cost, and
duration in days. Higher the variance of a column, higher is the degree to which a
project does not conform to the baseline plan. The actual values are displayed in
the dialog box.
You can compare the baseline values for all these factors with the actual values of
a task to conduct project plan analysis.
One way of tracking a project schedule is by determining the actual work done by
a resource. After doing that, you compare it against the total work to be done
initially. Using these factors, you can calculate the remaining work that needs to
be done in the rest of the project cycle.
393
Software Project Management (CS615)
For example, you need to check the status of the Test component modules task in
the XYZ Inc. project .This task exists under the Testing summary task. You use
the Task Sheet view to record the actual work done by a resource and calculate
the work that remains to be done. To do that, perform the following steps:
1. Select the task Unit testing for which you want to view the task completion status.
This task exists under the Testing summary task.
After doing this, four fields appear: Work, Baseline, Actual, and Remaining.
You update the Actual field value with the current amount of work done.
Microsoft Project automatically updates the Remaining value after comparing the
Actual value with the value in the Work field. Alternatively, you can update the
value of the remaining field to a number that you feel is correct. Consequently,
Microsoft Project updates the Tota1figure in the Work field. It also displays the
difference in the previous Work and the current Work, values in the Variance
field.
For example, the Work field in Figure 17 displays the value 20. You update the
Actual field with the value 13. Consequently, the remaining field would
automatically show 7. However, you can modify the Remaining field to display
the value 10 if seven days are not adequate. Notice that the Work field displays
the value 27, and the value in the Variance field is 3.
394
Software Project Management (CS615)
Using Microsoft Project, you can reschedule the tasks of a project. Rescheduling
involves modifying the start or finish dates of a task. For example, you need to
reschedule the start date of the Create user manuals task. This task exists below
the Development summary task. To reschedule an incomplete task, perform the
following steps:
1. Create a task named Create user manuals under the Development task.
2. Make the Development task a summary task by using the left indent Icon.
3. Select the Create user manuals task.
4. Click the Tracking command on the Tools menu.
5. Click the Update Project command on the Tracking submenu, to display the
Update Project dialog box. Figure 11.18 displays this dialog box.
395
Software Project Management (CS615)
During the course of a project, schedule, cost, and effort slippages are quite
common. Therefore, you sometimes need to modify the project start and end
dates. Normally the start date is modified for short cycle projects that need an
early head start. Finish date is modified when you are unable to meet the project
end date due to slippages. Assume that the project starts on February 15 and you
change its finish date from June 10 to June 15. To do this, perform the following
steps:
396
Software Project Management (CS615)
5. Click the Finish date box, and select June 15 from the calendar of the month
June. This step is shown in Figure 11.19.
6. Click OK.
You have modified the project finish date from June 10 to June 15. You can view the
change in the Gantt chart view of the project.
397
Software Project Management (CS615)
• Standard task report: You create standard task reports to display information
regarding tasks and the duration to complete each task in a project.
Figure 11.20: Displaying the Custom Icon in the Reports Dialog Box
This way, you create a new type of a resource report that is not part of the list of
reports displayed. The Define New Report dialog box is displayed as shown in
Fig 11.21.
398
Software Project Management (CS615)
399
Software Project Management (CS615)
Similarly, you can also view a report on tasks. To view the report on tasks, repeat
the procedure for creating a report on resources in the Gantt chart view of
Microsoft Project.
400
Software Project Management (CS615)
You can modify an existing standard task or a resource report by clicking the Edit
button on the Custom Reports dialog box. This displays the relevant reports
dialog box.
For example, to modify an existing report to display only summary tasks and add
gridlines to each task for the XYZ Inc. project, perform the following steps:
1. Click the Definition tab in the Task Report dialog box. The Task Report dialog
box is displayed in Figure 11.24.
This check box is used to display only the summary tasks in a project. For
example, in the current project file, selecting this check box would display only
the broad-level tasks, Analysis, Design, Development, Testing, and
Implementation and not the subtasks below each one of them.
401
Software Project Management (CS615)
Figure 1126 displays the Define New Report dialog box. Clicking the Print button
in the Custom Reports dialog box, displays the Print dialog box.
402
Software Project Management (CS615)
403
Software Project Management (CS615)
Finally, you can see the Sample-Project.mpp file that you are creating for XYZ
Inc. complete with all the components that you have added.
After the software product is developed, the challenge lies in seeing the system
work successfully at the user-end. Product implementation is the crucial activity
of actually handing over the product to the users. The product moves from the
theoretical environment of the development team to the practical environment of
the user. Implementation begins with the preparatory activities of planning,
training the user staff, and testing the system. After the preparatory activities are
complete, the new system is installed and configured at the user end.
Implementation marks the end of product development. After this, the product is
handed over to the maintenance team.
Implementation Prerequisites
The purpose of implementation is to organize and implement the new or updated
system. Most of the time, implementation is a contract-based activity. The
contract provides details of the implementation activity. Implementation
procedure includes details such as the scope, method, and duration of
implementation. There are some prerequisites of implementation. They are
finalizing the number of licenses, procedures for error logging, scheduling system
changeover, and procedure for maintaining data backups. However, the primary
task is to organize a team to monitor implementation.
a. Implementation Plan
404
Software Project Management (CS615)
2) Resource List
Resource Contact Pager or Key Resource
Serial No. E-mail ID
Name Name Mobile No. (Y/N)
3.2) Client
Software Space
Serial No. Version Location
Name Required
4) Data Migration
Data to be Location of Data Mode of
Serial No. Batch or Script
Migrated Server Migration Migration
405
Software Project Management (CS615)
b. Training Plan
Preparing a training plan is one of the tasks of implementation. The training
plan contains details of the participants to be trained. It also mentions the
focus area arid .the audience for die training session. Training schedule
containing the training venue, training name, start date and end date is a part
of the training plan. The plan conveys budgetary details and the roles and
responsibilities of participants as well as the faculty. A training plan is
displayed in Table 12.2. The plan has details of the focus areas of training,
courses identified for training, and training schedules. Roles and
responsibilities of trainer are also included in the training plan.
Training Plan
1) Focus Areas for Training
Serial No. Focus Area
2) Training Courses
Course Number of
Serial No. Duration Category Faculty Details
Title participants
3) Training Schedule
Course
Serial No. Code Start Date End Date Venue
Title
406
Software Project Management (CS615)
c. Acceptance Plan
The purpose of an acceptance plan is to determine the details of acceptance
testing. The plan contains details such as the order of testing of functions,
location, date, and duration of testing. Details of participating members,
coordinators, and users are also mentioned in the plan. The acceptance plan
lists the procedure for bug fixing, version control, and verification and
validation details. Procedure for the creation of acceptance test cases and
setting up software and hardware environment is also mentioned in the plan.
The acceptance plan in Table 12.3 contains details of the acceptance schedule,
acceptance criteria, list of resources, and a bug report form.
2) Acceptance Criteria
Serial Item
Acceptance Criterion
No. Name
3) Resource List
Serial Resource
E-mail Telephone/Pager Key Resource (Y/N)
No. Name
Implementation Activities
After the prerequisites are in place, implementation activities begin in right
earnest. Now, all the plans created for implementation are put into practice.
Implementation activities include acceptance testing, user and operator training,
407
Software Project Management (CS615)
UAT is the final testing performed by the end user after using the product over
a limited period me. As part of the implementation process, the project
manager prepares the User Acceptance Test plan. The UAT plan is the last
stage of the testing process where the user tests the product. The user tests the
product and identifies whether it is acceptable or not.
Ideally, UAT is conducted in the same environment as the one in which the
product is designed. UAT plan consists of the activities to be conducted,
functions to be tested, the time, and environment in which software will be
tested. Often test cases are attached with the plan. The user validates the
software based on the test cases.
The executable product is installed in the test environment and configured for
use. Then the user executes the test supplied. r the user tests the software
product, the implementation team takes care of the bugs or items identified by
the user. The bug fixing and closing of issues continue iteratively until all
problems are solved. The software product is then ready for use. The user
representative uses a signoff on the prescribed format to indicate satisfaction
with the product. This marks end of the development activity. The final bug-
free version is delivered to the user.
ii. Training
To familiarize the users with the new system, you need to train them. Apart
from the users, there are the operators who also need to be trained to handle
the system. Training for both the users and operators has separate goals.
Training sessions aim at providing the participants with specific skills
required in handling the new system. Training aids used are documents, icons,
on1ine helps, and demonstrations or classroom sessions. The user training
focuses on major m functions and the users' need to gain access to them. Some
of the activities that a user might need to perform are simulating activities,
analyzing data, drawing graphs, and searching for information. The user is
trained on navigation skills, information searching skills, and security
functions. The users are trained on the differences between the old and new
activities to familiarize them with the differences.
408
Software Project Management (CS615)
The operator training focuses on the support functions of the system. The
support functions include granting user access, granting file access, recovering
damaged files, installing new devices and software, and making backups.
Therefore, the operators' training focuses on two function areas. First, the
operators learn to run the system, and second they learn to support the users.
At times, the project manager might need to outsource the installation activity.
Then great care needs to be taken to ensure that correct versions are installed.
At times, Web-based automatic installation facilities are used to simplify the
process further. At times, the implementation team might need to install the
409
Software Project Management (CS615)
v. Product Sign-Off
At the end of acceptance testing, the user-representative gives the sign-off in
the form of an acceptance letter. This marks the formal end of the
implementation phase. This means that all issues raised during the acceptance
testing are solved and closed. As a project manager, you need to ensure that
the contractual obligations with the user are fulfilled. You need to verify that
the client accepts all documents and deliverables as mentioned in the contract.
You also ensure that the sign-off is according to defined guidelines and is in
the form of an acceptance letter.
• Monitoring deliverables
• Monitoring progress
• Controlling change requests
• Monitoring work yet to be done
During project wind up, the project manager also plans for the allocation of
the project staff. The deliverables list is checked to ensure that all
requirements are met. The project manager also verifies the financial
completion of the project. A contract is also drawn to deal with the problems
later for a defined period under a warranty. The project is evaluated for
adherence to schedule, budget, technical goals, and client and project team
satisfaction.
410
Software Project Management (CS615)
The performance of the project team is also evaluated at the end of the project.
The team members are evaluated in terms of their ability to accomplish
project tasks. The time taken, the quality achieved, and the adherence to cost
and schedule is also noted. The team members are also evaluated based on
their innovative approach to accomplishing a task. The ability of the team
member to work as a team, communicate, and support each other is also
judged. The team members are also asked to evaluate themselves in terms of
their strengths and weaknesses.
Finally, the project manager prepares a project closedown report. This report
contains suggestions on what should be done to improve software quality in
the next project. This report contains details of what the team has failed to
deliver and the lessons learned from the project. This report will help detect
and eliminate long-term problems. The project closedown report contains the
following details:
• Corrective
• Adaptive
• Perfective
• Preventive
412
Software Project Management (CS615)
During adaptive maintenance, the existing code is changed to adapt the new
features and functionality. These new features are usually part of a new release of
a code. This change normally takes 18 percent of the maintenance time.
Perfective maintenance improves the maintainability of the code. During this
activity, the code is restructured to make it easily understood and to remove
ambiguities. The enhancement of code occupies 60 percent of the maintenance
time.
In the above list of maintenance activities, you can see that out of total
maintenance effort, only 20 percent is spent on corrective maintenance and 80
percent on the rest. This refutes the popular belief that maintenance activities is all
about fixing mistakes.
Maintenance Activities
To perform maintenance activities, the maintenance team needs to acquire the
business and technical knowledge of the client systems. The maintenance process
is usually divided into three phases.
• Initiation Phase
• Preparation Phase
• Execution Phase
Initiation Phase
The initiation phase starts with the commencement of maintenance activities. It is
primarily a knowledge acquisition phase. During this phase, the maintenance team
takes over the system from the development team. The maintenance team
familiarizes itself with the ways and functioning of the system. This is essentially
a phase of knowledge transfer from the development team to the maintenance
team. The major activities of the initiation phase are baseline assessment and
operating procedures. During baseline assessment, the interfacing and
communication methods between the development and maintenance teams are
defined. The user-coordinator from the user side and the information technology
help from the maintenance team are identified. During this phase, the plan for
acquiring the systems knowledge is also finalized.
During the operating procedures activities, the maintenance team understands the
application and the functionality involved in the maintenance task. The
413
Software Project Management (CS615)
maintenance team reviews the current operating procedures of the system. The
team also obtains details about the environment set up, deployment of software,
the resource allocation process, and priority settings. Other' activities such as root
cause analysis, work assignment to the development teams, and updating of
documentation procedures is also done. The maintenance team refers to the
problem management procedures, on-call or escalation procedures; and
operational process for handling: faults. It also makes decisions based on the
severity of the faults, application criticality, and infrastructure issues.
The maintenance team finalizes procedures for transferring support work from the
development team. The maintenance team members are initiated to hands-on
exposure of the systems. The maintenance team finalizes the quality systems and
standards and guidelines to be followed.
Preparation Phase
The preparation phase begins after the initiation phase. During this phase, the
maintenance team sets up the administrative and support procedures needed for
maintenance activities. In this phase, the environment is set up and hardware,
software, and network are made ready for operation. All the procedures decided
and finalized during the initiation phase are put into practice in this phase.
According to the documentation procedures finalized in the initiation phase, the
latest documentation is kept in the library. During this phase, bug reporting,
problem solving, and other support methodologies are established. The security
measures are also put in place and practiced during this phase.
Execution Phase
The execution phase follows the preparation phase. In this phase, the maintenance
team starts executing the maintenance activities after the preparation in the earlier
phase. During this phase, the maintenance team is in close touch with the
development team for a small period of time. Such communication is
recommended to ensure better coordination.
Maintenance Curve
Maintenance activity begins after product implementation. The effort spent on
maintenance varies over a period of time. Normally, maintenance effort is very
high immediately after implementation. The system faces numerous changes
during this time. The changes could be in the form of bugs, changes in network
environment, or problems caused by user mishandling. During this time, the effort
spent on maintenance activities is very high. With time, the system stabilizes and
maintenance activities also slowdown. During this period, the users are more or
less satisfied with the system. The system also runs smoothly without requiring
any major changes. Therefore, maintenance activity is at its lowest during this
phase.
414
Software Project Management (CS615)
However, over a period of time, business processes change and the system also
depreciates. During this period, major changes start coming in. The changes are in
the form of enhancements and additions of new systems or modules.
These changes take place continuously to keep the system up-to-date with the
changing needs and requirements. Maintenance activities are also at a maximum
during this phase.
However, soon the system becomes obsolete and is phased out. Along with the
system phase- out, maintenance activities also come to an end.
Figure 12.1 shows the variation of maintenance activity with time. In the curve,
maintenance effort is very high during the initial phase. Then the maintenance
effort stabilize during the maturity phase. Finally, the maintenance effort
increases sharply just before system phase out. The system is phased out to pave
the way for new systems.
Maintenance Process
There are certain prerequisites that you need to follow before beginning with the
maintenance process. All documentation needs to be complete and up-to-date. All
existing items need to be configured, and the latest copy of the code should be
available. The hardware, software, and network environment for testing and
maintenance should be made available. Before beginning with the maintenance
process, the maintenance team is identified. The user representative from the user
side is identified and the maintenance team is constituted. The maintenance team
415
Software Project Management (CS615)
consists of the head of IT, the project coordinator, and team members. The
maintenance project 1anager is the single point contact between the user
representative and the maintenance team. The project manager categorizes the
type of maintenance activity to be performed based on specifications. The project
manager ensures proper communication between all the entities 1volved in
maintenance activity. To ensure that the maintenance process runs smoothly, there
is a thorough checking of all deliverables. Maintenance activity is the most
critical because the system is running and already in place. Therefore, the project
manager needs to ensure that no error arises during the maintenance process.
416
Software Project Management (CS615)
After tracking-the changes, an impact analysis is done and a detail plan is made to
carry out the changes. Based on the amount of changes, a dedicated member or a
team works on the changes. The testing is done in the testing environment- and
changes are implemented in the system based on the deployment strategy.
The maintenance process begins when the user initiates a request for a change.
The process ends when the system changes are tested and the change is released
for operation. In between, there are many activities that are coordinated and
planned using change management.
Reengineering
Reengineering is a process of abstraction of a new system from an old system.
Reengineering is the modification and evolution of software product to meet the
constantly changing business requirements. Failure to reengineer can prevent an
organization from remaining competitive and persistent. This is because every
system faces the risk of being phased out sooner than they were earlier. Therefore,
you need to develop systems that support multiple platforms and are open to
modifications and changes. Here, the role of reengineering comes into play.
Reengineering comprises reverse engineering and forward engineering.
Reverse Engineering
Reverse engineering is a process of recovering the design of the running system
from the source code. Reverse engineering involves analyzing a software system
to achieve two objectives. First, reverse engineering helps to identify the system
components and their Interactions. Second, it helps make representations of the
system on a different, higher level of abstraction.
417
Software Project Management (CS615)
Suppose, you want to retrieve the design or a product whose design document is
not available. You can recover the design by working backwards on the product
from the source code to the design requirements. At times, you might need to
reengineer programs developed many years back. The specifications of such
programs are either unclear or was not developed at all. In such a situation, you
use reverse engineering to analyze the program at a higher level of abstraction.
Therefore, you perform reverse engineering to add a significant functionality to
the old program. You can also use it to make the system cost-effective and to
adopt new technologies.
Certain prerequisites are necessary for reverse engineering. The existing system
should be in a running condition. The latest source code should be available.
During reverse engineering, the reverse engineering team gathers information
about the source code and the design and specifications documents. They also
obtain information about the knowledge and experience of the developer. Then
the team studies the existing code and the existing documents. Then they create a
draft document from the existing code. The team discusses with the users and
modifies the draft document based on the discussions.
During design reengineering, the team studies the existing data model and the
new requirements. Then they map the requirements with the existing data model
and conduct gap analysis. After this, they modify the data model based on the gap
analysis. The team studies the behavior of the existing programs and prepares
program specifications based on the behavior and the existing code. Then the
unwanted functionality is removed from the program specifications. The program
is then modified based on the new requirements.
418
Software Project Management (CS615)
Forward Engineering
Forward engineering is the process of building a new program from the
requirements and design specifications of an old program. During forward
engineering, old design information is recovered from existing software and is
used to reconstitute the existing system. In the process, the quality of the existing
system is enhanced and new functions are added. Therefore, forward engineering
moves from a high-level abstraction and design to a low-level implementation.
Forward engineering is used to improve the overall performance of the system.
Abstraction
419