organizing a software project

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

Upload: honey

Post on 14-Feb-2016

38 views

Category:

Documents


0 download

DESCRIPTION

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. Introduction. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Organizing a Software Project

Organizing a Software Project

José Onofre Montesa AndrésUniversidad Politécnica de

ValenciaEscuela Superior de Informática

Aplicada2003-2004

Page 2: Organizing a Software Project

GpiI-3A Organizing a Software Project 2

Table of contents• Introduction• Team Structures• Communication in the software

project

Page 3: Organizing a 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?”

Page 4: Organizing a Software Project

GpiI-3A Organizing a Software Project 4

A global vision of the development.

Clients and Users

Developers

softwarePeople, teams, Organizations

Ideas …specification… Design… Code

Page 5: Organizing a Software Project

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.

Page 6: Organizing a Software Project

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.

Page 7: Organizing a Software Project

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.

Page 8: Organizing a Software Project

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.

Page 9: Organizing a Software Project

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

Page 10: Organizing a Software Project

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.

Page 11: Organizing a Software Project

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.

Page 12: Organizing a Software Project

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.

Page 13: Organizing a Software Project

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

Page 14: Organizing a Software Project

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.

Page 15: Organizing a Software Project

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).

Page 16: Organizing a Software Project

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.

Page 17: Organizing a Software Project

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

Page 18: Organizing a Software Project

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.

Page 19: Organizing a Software Project

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.

Page 20: Organizing a Software Project

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.

Page 21: Organizing a Software Project

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 ntas P rod ucción

P roye cto AD ire c to r A

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

P roye cto BD ire c to r B

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

P roye cto CD ire cto r C

D irecció n G e n era l

Page 22: Organizing a Software Project

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.

Page 23: Organizing a Software Project

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…

Page 24: Organizing a Software Project

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.

Page 25: Organizing a Software Project

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

Page 26: Organizing a Software Project

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.

Page 27: Organizing a Software Project

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.

Page 28: Organizing a Software Project

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).

Page 29: Organizing a Software Project

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)

Page 30: Organizing a Software Project

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.

Page 31: Organizing a Software Project

GpiI-3A Organizing a Software Project 31

Egoless team: Management Structure.

• People are in different knowledge areas and experience levels.

Page 32: Organizing a Software Project

GpiI-3A Organizing a Software Project 32

Egoless team: Communication exchanges

that occur.• Everybody can communicate with everybody.

Page 33: Organizing a Software Project

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.

Page 34: Organizing a Software Project

GpiI-3A Organizing a Software Project 34

Chief programmer

Programmer Data Bases Specialist

Chief programming team. Management Structure.

• Is a centralized autocratic structure.

Page 35: Organizing a Software Project

GpiI-3A Organizing a Software Project 35

Chief programming team: Communication exchanges that

occur.• All the communications past throw

the chief.

Page 36: Organizing a Software Project

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.

Page 37: Organizing a Software Project

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.

Page 38: Organizing a Software Project

GpiI-3A Organizing a Software Project 38

Controlled Decentralized Team: Communication exchanges.

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

Page 39: Organizing a Software Project

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

Page 40: Organizing a Software Project

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.

Page 41: Organizing a Software Project

GpiI-3A Organizing a Software Project 41

Improving communications among

project players offers substantial morale,

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

Page 42: Organizing a Software 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.

Page 43: Organizing a Software Project

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.

Page 44: Organizing a Software Project

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.

Page 45: Organizing a Software Project

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.

Page 46: Organizing a Software Project

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.