SPM Unit 1
SPM Unit 1
Management
MANAGING SOFTWARE
PROJECTS
THE MANAGEMENT SPECTRUM:-
The People
Effective software project management focuses on
the four P’s: people, product, process, and project.
“people factor” is so important that the Software
Engineering Institute has developed a People
Capability Maturity Model (People-CMM).
“every organization needs to continually improve
its ability to attract, develop, motivate, organize,
and retain the workforce needed to accomplish its
strategic business objectives”.
MANAGING SOFTWARE
PROJECTS
The people capability maturity model defines the
following key practice areas for software people:
staffing, communication and coordination, work
environment, performance management, training,
compensation, competency analysis and
development, career development, workgroup
development, team/culture development, and
others.
Organizations that achieve high levels of People-
CMM maturity have a higher likelihood of
implementing effective software project
management practices.
MANAGING SOFTWARE
PROJECTS
The People-CMM is a companion to the Software
Capability Maturity Model–Integration that
guides organizations in the creation of a mature
software process.
MANAGING SOFTWARE
PROJECTS
The Product:-
Before a project can be planned, product
objectives and scope should be established,
alternative solutions should be considered, and
technical and management constraints should be
identified
Without this information, it is impossible to define
reasonable (and accurate) estimates of the cost, an
effective assessment of risk, a realistic breakdown
of project tasks, or a manageable project schedule
that provides a meaningful indication of progress.
MANAGING SOFTWARE
PROJECTS
As a software developer, you and other stakeholders
must meet to define product objectives and scope.
In many cases, this activity begins as part of the
system engineering or business process engineering
and continues as the first step in software
requirements engineering
Once the product objectives and scope are
understood, alternative solutions are considered.
It enable managers and practitioners to select a
“best” approach, given the constraints imposed by
delivery deadlines, budgetary restrictions, personnel
availability, technical interfaces, and other factors.
MANAGING SOFTWARE
PROJECTS
The Process :-
software process provides the framework from which a
comprehensive plan for software development can be
established.
A number of different task sets—tasks, milestones, work
products, and quality assurance points—enable the
framework activities to be adapted to the characteristics of
the software project and the requirements of the project
team.
Finally, activities—such as software quality assurance,
software configuration management, and measurement—
overlay the process model and These activities are
independent of any one framework activity and occur
throughout the process.
MANAGING SOFTWARE
PROJECTS
The Project:-
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
commonsense approach for planning, monitoring,
and controlling the project
MANAGING SOFTWARE
PROJECTS
PEOPLE:-
In a study published by the IEEE, the engineering
vice presidents of three major technology
companies were asked what was the most
important contributor to a successful software
project. They answered in the following way:
It’s not the tools that we use, it’s the people.
The most important ingredient that was successful on
this project was having smart people
The only rule I have in management is to ensure I have
good people—real good people
MANAGING SOFTWARE
PROJECTS
The Stakeholders:-
Senior managers who define the business issues that often
have a significant influence on the project.
Project (technical) managers who must plan, motivate,
organize, and control the practitioners who do software
work.
Practitioners who deliver the technical skills that are
necessary to engineer a product or application.
Customers who specify the requirements for the software
to be engineered and other stakeholders who have a
peripheral interest in the outcome.
End users who interact with the software once it is
released for production use.
MANAGING SOFTWARE
PROJECTS
Team Leaders
In an excellent book of technical leadership, Jerry
Weinberg suggests an MOI model of leadership:
Motivation : The ability to encourage technical
people to produce to their best ability.
Organization : The ability to mold existing processes
(or invent new ones) that will enable the initial
concept to be translated into a final product.
Ideas or innovation : The ability to encourage
people to create and feel creative even when they
must work within bounds established for a particular
software product or application.
MANAGING SOFTWARE
PROJECTS
Another view of the characteristics that define an effective
project manager emphasizes four key traits:
Problem solving: An effective software project manager
can diagnose the technical and organizational issues that
are most relevant, systematically structure a solution or
properly motivate other practitioners to develop the
solution, apply lessons learned from past projects to new
situations, and remain flexible enough to change
directions if initial attempts at problem solution are
fruitless.
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: A competent manager must
reward initiative and accomplishment to
optimize the productivity of a project team. She
must demonstrate through her own actions
that controlled risk taking will not be punished.
Influence and team building: An effective
project manager must be able to “read” people;
she must be able to understand verbal and
nonverbal signals and react to the needs of the
needs of the people sending these signals. The
manager must remain under control in high-
stress situations.
MANAGING SOFTWARE
PROJECTS
The Software Team:
The “best” team structure depends on the
management style of your organization, the
number of people who will populate the team and
their skill levels, and the overall problem
difficulty.
MANAGING SOFTWARE
PROJECTS
Seven project factors that should be considered when
planning the structure of software engineering teams:
Difficulty of the problem to be solved
“Size” of the resultant program(s) or lines of code
Time that the team will stay together (team
lifetime)
Degree to which the problem can be modularized
Required quality and reliability of the system to be
built
Rigidity of the delivery date
Degree of sociability (communication) required for
the project
MANAGING SOFTWARE
PROJECTS
Constantine suggests four “organizational paradigms”
for software engineering teams:
1. A closed paradigm structures a team along a
traditional hierarchy of authority. Such teams can work
well when producing software that is quite similar to
past efforts, but they will be less likely to be innovative
when working within the closed paradigm.
2. A random paradigm structures a team loosely and
depends on individual initiative of the team members.
When innovation or technological breakthrough is
required, teams following the random paradigm will
excel. But such teams may struggle when “orderly
performance” is required.
MANAGING SOFTWARE
PROJECTS
3. An open paradigm attempts to structure a team in a manner
that achieves some of the controls associated with the closed
paradigm but also much of the innovation that occurs when
using the random paradigm.
Work is performed collaboratively, with heavy communication
and consensus-based decision making the trademarks of open
paradigm teams. Open paradigm team structures are well
suited to the solution of complex problems but may not
perform as efficiently as other teams.
MANAGING SOFTWARE
PROJECTS
4. A synchronous paradigm relies on the natural
compartmentalization of a problem and organizes
team members to work on pieces of the problem
with little active communication among
themselves.
MANAGING SOFTWARE
PROJECTS
One of the earliest software team organizations
was a paradigm structure originally called the
chief programmer team. This structure was first
proposed by Harlan Mills.
The nucleus of the team was composed of a
senior engineer (the chief programmer), who
plans, coordinates, and reviews all technical
activities of the team.
Technical staff (normally two to five people), who
conduct analysis and development activities; and
a backup engineer, who supports the senior
engineer in his or her activities and can replace
the senior engineer with minimum loss in project
MANAGING SOFTWARE
PROJECTS
The chief programmer may be served by one or
more specialists (e.g., telecommunications
expert, database designer), support staff (e.g.,
technical writers, clerical personnel), and a
software librarian.
MANAGING SOFTWARE
PROJECTS
To achieve a high-performance team:
Team members must have trust in one another.
The distribution of skills must be appropriate to
the problem.
Mavericks may have to be excluded from the
team, if team cohesiveness is to be maintained.