Organizing a Software Project - Universidad Politécnica de Valencia

advertisement
Organizing a
Software Project
José Onofre Montesa Andrés
Universidad Politécnica de Valencia
Escuela Superior de Informática
Aplicada
2003-2004
Table of contents
• Introduction
• Team Structures
• Communication in the software project
GpiI-3A Organizing a Software Project
1
Introduction
• Ones the project is approves, the
management of it concentrate on two
themes:
– Creating a working team.
– Tracking what was planed.
• In this chapter we’ll focus on: How to
organize a working team?”
GpiI-3A Organizing a Software Project
2
A global vision of the
development.
Clients and
Users
Developers
People, teams, Organizations
software
Ideas …specification… Design… Code
GpiI-3A Organizing a Software Project
3
Context of the enterprise
structure and the project team
• There are two kinds or people in the
team:
– The ones coming from the client enterprise.
– The technicians whose job is building the
software.
GpiI-3A Organizing a Software Project
4
Context of the enterprise
structure and the project team
• The team can use an organization
structure different from the user’s
enterprise one.
• Both organizations have to be connected
in order to avoid conflicts between
them.
GpiI-3A Organizing a Software Project
5
Why do we need to create a
project organization?
• The activities have been split up when
planning so that the achievement and
control of each task would be easer.
• Now we have to create de conditions for:
• coordinating easily: starting of tasks; taking
decisions; tracking; and ending of tasks.
• Providing communications between people in
charge of each task and people in the same or
other tasks.
GpiI-3A Organizing a Software Project
6
Different situations about the
project team and client
• The project team belong to the user’s
enterprise division.
• The project team belong to the user’s
enterprise, but to other division (big
organizations).
• The project team is extern to the user’s
enterprise.
GpiI-3A Organizing a Software Project
7
Different situations
• The project team belong to the user’s
enterprise division.
• The project team belong to the user’s
enterprise, but to other division
• The project team is extern to the user’s
enterprise
GpiI-3A Organizing a Software Project
8
The project team belong to
the user’s enterprise division.
• We’ll have few liberty in order to set
the team (The available people).
• If the division’s management support
the project:
– All the concerned people about the
project arrive easily to commitments.
– The team goal and the client enterprise is
exactly the same.
GpiI-3A Organizing a Software Project
9
The project team belong to the user’s
enterprise, but to other division.
• As the project team is a part of the DPC
it can include specialist, due to the size
of the DPC and it’s specialization.
• It’s possible that the goals don’t be the
same.
GpiI-3A Organizing a Software Project
10
The project team is extern to
the user’s enterprise.
• The project team is build with external
people.
– There is freedom to select the people in
the team.
– It depends on the supplier enterprise size.
• Goals are shared in a Client-Supplier
fashion.
GpiI-3A Organizing a Software Project
11
Organization structure
• Client and future user, as enterprises have
their own organization. And we will have
problems with them. It's interesting for us
identify the organization structure and
understand their authority and knowledge
distribution.
• Typical structures are:
– Functional organization
– Project organization
– Matrix organization
GpiI-3A Organizing a Software Project
12
Organization assigns:
• Tasks and activities to people groups.
• Objectives to each group.
• Responsibilities to groups and
coordinators
• Authorities between groups and their
member's.
• Formal communication channels.
GpiI-3A Organizing a Software Project
13
Functional organization (I)
• Is the more known structure (military,
church,...)
• Is the typical pyramidal structure. Each
new level introduces a type of
specialization. It can be:
–
–
–
–
type of work (functional),
geographic localization (Territorial),
Size of clients (Clients oriented),
product (Product oriented).
GpiI-3A Organizing a Software Project
14
Functional organization (II)
• Communication is allowed between:
– People at under the same boss (same level).
– Boss and subordinate.
• Formal communication between two
people in different areas must follow a
long trip.
– Worker to boss,… boss to boss until a pint in
the pyramid were starts to down until boss
to worker.
GpiI-3A Organizing a Software Project
15
Functional organization (III)
Example:
Dirección general
Secretaría General
Dirección
Compras
Alicante
Castellon
Dirección
Ventas
Valencia
Alicante
Castellon
Almacén
Valencia
Alicante
Castellon
A-1
C-1
V-1
A-3
C-3
V-4
A-5
A-2
C-2
V-2
A-4
C-4
V-5
A-6
V-3
Valencia
C-5
V-6
A-7
GpiI-3A Organizing a Software Project
16
Advantages of functional
organization
• Centralización de recursos similares.
– Specialists in the same area close.
• Better professional carriers
• Cooperation between specialists in the same area
– Less need of technical experts.
– Maximum flexibility in the use of staff.
• Higher standardization level.
GpiI-3A Organizing a Software Project
17
Disadvantages of Functional
Organization
• Cracks in the inter-functional areas,
generating conflicts as:
– Responsibility: “this isn't of my incumbency”
– Power: several boss want to take decisions,
in the same subject.
– Communication, “I finish mi task”, “Nobody
tell me about …”, ...
• Deferent functions can have opposite
objectives.
GpiI-3A Organizing a Software Project
18
Project organization (I)
• Objectives attainment in a quick manner.
• Enterprise organization depends on the actual
projects
• Each project has their own team and all the
necessary resources.
• The project manager has decision capacity.
• Team duration depends on the project
duration.
GpiI-3A Organizing a Software Project
19
Project organization (II),
Example:
Dirección General
Secretaría General
Proyecto A
Director A
Ingeniería
Ventas
Proyecto B
Director B
Producción
Ingeniería
Ventas
Proyecto C
Director C
Producción
Ingeniería
GpiI-3A Organizing a Software Project
Ventas
Producción
20
Advantages of Project
Organization.
• objectives unity (clear objective)
• Control unity. Every body depends on the
same boss.
• Easy communication.
• Clear responsibilities.
GpiI-3A Organizing a Software Project
21
Disadvantages of Project
Organization
• Changing enterprise organization.
• Duplication of resources and inefficiency.
• Difficult to share individuals/expertise across
projects
• Complex staff management
– What's the mater when de project is finished?
– What about staff curricula?
– Dead time…
GpiI-3A Organizing a Software Project
22
Matrix organization (I)
• It's a multidimensional structure.
• Try to take the best of both.
• First we create functional structure and
over this we put a project structure.
GpiI-3A Organizing a Software Project
23
Matrix organization (II)
Dirección General
Director General
de Proyectos
Director de
Ventas
Director de
Producción
Director de
Finanazas
Director de
Ingeniería
Director
Projecto A
Director
Projecto B
Director
Projecto C
GpiI-3A Organizing a Software Project
24
Matrix organization:
Advantages
• Equilibrate project objectives and
departments.
• Staff has better professional stability
• Specialists belong to the same
department and consults are easy.
• Easy professional carriers.
GpiI-3A Organizing a Software Project
25
Matrix organization :
disadvantages
• Staff has two or more managers when
they are in different projects.
• Project managers fell few authority.
GpiI-3A Organizing a Software Project
26
Teams Structure
• The development of software projects
usually requires:
– Small teams.
• Classical structures aren’t an appropriate
reference
– Specialists in different areas:
• Software technical knowledge
• Knowledge about the implied area.
– (Multifunctional teams).
GpiI-3A Organizing a Software Project
27
Team Structure in software
projects
• Three team structures are popular in
this field:
– Egoless programming team (Weinberg)
– Chief programming team.
– Controlled decentralized team structure.
» Marilyn Mantei (1981)
GpiI-3A Organizing a Software Project
28
Egoless programming team
(Weinberg)
• Ten or fewer programmers
• Exchange their code with other team
members for error examination.
• Goals are set by group consensus.
• Group leadership is a rotating function,
becoming the responsibility of the
individual with the abilities that are
currently needed.
GpiI-3A Organizing a Software Project
29
Egoless team: Management
Structure.
• People are in different knowledge areas
and experience levels.
GpiI-3A Organizing a Software Project
30
Egoless team: Communication
exchanges that occur.
• Everybody can communicate with
everybody.
GpiI-3A Organizing a Software Project
31
Chief programming team.
• Use to be little teams.
• It have a chief programmer who:
– manages all technical aspects.
– Takes problem solutions and and goal
decisions.
– Assign well defined (but large and complex)
to the team members.
GpiI-3A Organizing a Software Project
32
Chief programming team.
Management Structure.
• Is a centralized autocratic structure.
Chief programmer
Programmer
Data Bases
Specialist
GpiI-3A Organizing a Software Project
33
Chief programming team:
Communication exchanges that occur.
• All the communications past throw the
chief.
GpiI-3A Organizing a Software Project
34
Controlled Decentralized
Team.
• Teams can be large teams.
• Has a project leader who governs a
group of senior programmers.
• Each senior programmer in turn,
manages a group of junior programmers.
• The objective is to maintain other teams
the best characteristics.
GpiI-3A Organizing a Software Project
35
Controlled Decentralized Team:
Management Structure.
• Responsibility is shared by the project
leader and the seniors programmers.
Project Leader
Senior
Programmer
Junior
Programmers
GpiI-3A Organizing a Software Project
36
Controlled Decentralized Team:
Communication exchanges.
• People at he same
level and their boss
is decentralized.
GpiI-3A Organizing a Software Project
37
Relations between team
structures:
Diff Size Dur Mod Reli Time Soci
icult
atio ulari abili requir abili
y
n
ty
ty
ed
ty
Group structures
HL L S S
i o a mh
g w r a o
h
g ll r
e
t
L
o
n
g
Democratic
decentralized
X
X
X
HL HL S L HL
i o i o tr a i o
g w g w ic x g w
h
h
t
h
X X
Controlled
decentralized
X X
X
X
Controlled centralized
X X
X
X
X X
X
X
X X
GpiI-3A Organizing a Software Project
X
X
38
Communication in the software
project.
• Communicating in harmony
• In software development projects, the
inability of people to communicate
effectively with one another represents
one of the more common obstacles to
the achievement of:
– High product quality, and
– High productivity.
GpiI-3A Organizing a Software Project
39
Improving communications
among project players
offers substantial morale,
productivity,quality, and,
cost benefits to a project.
GpiI-3A Organizing a Software Project
40
Ones communications problems
surfaces, the process to follow...:
• Understand the cause of the problems.
• Put corrective action into place.
• Enforce an ongoing communicative work
environment.
GpiI-3A Organizing a Software Project
41
Actions to improve
communication.
•
•
•
•
•
•
When you are wrong, admit it.
Exercise tolerance.
Meet people.
Be quick to assist.
Ask others for assistance.
Use tact - put your comments in the
correct perspective.
GpiI-3A Organizing a Software Project
42
Actions to improve
communication.
•
•
•
•
•
•
Keep others informed - do not surprises.
Close problems.
Show appreciation.
Be a good listener.
Greet people - remember their names.
Consider compromise.
GpiI-3A Organizing a Software Project
43
Actions to improve
communication.
• Be willing to break with tradition.
• Know what to expect from others.
• Respect people.
GpiI-3A Organizing a Software Project
44
Bibliography
– Mantei, M. “The effect of Programming
Team Structures on Programming Task”.
CACM March 1981. Reprinted en “Tutorial:
Software Engineering Project Management
de R. Thayer, IEEE Computer Society Prees,
1988.
– Whitten, N., Managing Software
Development Projects - 2nd de.. John
Whiley & Sons Inc. 1995.
GpiI-3A Organizing a Software Project
45
Download