46
Organizing a Software Project José Onofre Montesa Andrés Universidad Politécnica de Valencia Escuela Superior de Informática Aplicada 2003-2004

Organizing a Software Project José Onofre Montesa Andrés Universidad Politécnica de Valencia Escuela Superior de Informática Aplicada 2003-2004

  • View
    216

  • Download
    1

Embed Size (px)

Citation preview

Organizing a Software Project

José Onofre Montesa AndrésUniversidad Politécnica de

ValenciaEscuela Superior de Informática

Aplicada2003-2004

GpiI-3A Organizing a Software Project 2

Table of contents

• Introduction• Team Structures• Communication in the software

project

GpiI-3A Organizing a Software Project 3

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 4

A global vision of the development.

Clients and

UsersDevelopers

softwarePeople, teams, Organizations

Ideas …specification… Design… Code

GpiI-3A Organizing a Software Project 5

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 6

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 7

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 8

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 9

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 10

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 11

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 12

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 13

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 14

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 15

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 16

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 17

Functional organization (III) Example:

Dirección general

Secretaría General

DirecciónCompras

DirecciónVentas

Almacén

Alicante Castellon Valencia

A-1

A-2

C-1

C-2

V-1

V-2

V-3

Alicante Castellon Valencia

A-3

A-4

C-3

C-4

V-4

V-5

Alicante Castellon Valencia

A-5

A-6

A-7

C-5 V-6

GpiI-3A Organizing a Software Project 18

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 19

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 20

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 21

Project organization (II), Example:

S e cre ta r ía G e n era l

In ge n ie r ía V e n tas P rod ucción

P roye cto AD ire c to r A

In ge n ie r ía V e n tas P rod ucción

P roye cto BD ire c to r B

In ge n ie r ía V e n tas P rod ucción

P roye cto CD ire cto r C

D irec ció n G e n era l

GpiI-3A Organizing a Software Project 22

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 23

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 24

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 25

Matrix organization (II)

D ire c to rP ro jec to A

D ire c to rP ro jec to B

D ire c to rP ro je c to C

D ire c to r G e n e ra ld e P ro yec tos

D ire c to r deV e ntas

D ire c to r deP ro d ucc ión

D ire c to r deF in a na zas

D ire c to r deIn ge n ie ría

D ire cc ió n G e n e ra l

GpiI-3A Organizing a Software Project 26

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 27

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 28

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 29

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 30

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 31

Egoless team: Management Structure.

• People are in different knowledge areas and experience levels.

GpiI-3A Organizing a Software Project 32

Egoless team: Communication exchanges

that occur.• Everybody can communicate with

everybody.

GpiI-3A Organizing a Software Project 33

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 34

Chief programmer

Programmer Data Bases Specialist

Chief programming team. Management Structure.

• Is a centralized autocratic structure.

GpiI-3A Organizing a Software Project 35

Chief programming team: Communication exchanges that

occur.• All the communications past throw

the chief.

GpiI-3A Organizing a Software Project 36

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 37

Project Leader

Senior Programmer

Junior Programmers

Controlled Decentralized Team: Management Structure.

• Responsibility is shared by the project leader and the seniors programmers.

GpiI-3A Organizing a Software Project 38

Controlled Decentralized Team: Communication exchanges.

• People at he same level and their boss is decentralized.

GpiI-3A Organizing a Software Project 39

Relations between team structures:

Difficulty

Size Duration

Modularity

Reliability

Timerequired

Sociability

Group structures High

Low

Large

Small

Short

Long

High

Low

High

Low

Strict

Lax

High

Low

Democraticdecentralized

X X X X X X X

Controlleddecentralized

X X X X X X X

Controlled centralized X X X X X X X

GpiI-3A Organizing a Software Project 40

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 41

Improving communications among

project players offers substantial morale,

productivity,quality, and, cost benefits to a project.

GpiI-3A Organizing a Software Project 42

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 43

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 44

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 45

Actions to improve communication.

• Be willing to break with tradition.• Know what to expect from others.

• Respect people.

GpiI-3A Organizing a Software Project 46

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.