Desenvolvimento Colaborativo de Software

7
Desenvolvimento Colaborativo de Software Cleidson de Souza Departamento de Informática Universidade Federal do Pará [email protected] 2 Roteiro !Desenvolvimento Colaborativo de Software !Colaboração em Engenharia de Software !A Importância da Arquitetura de Software !O Estudo de Caso MCW e BSC !Desenvolvimento Global de Software !Definição !Motivação !Problemas !Soluções 3 Desenvolvimento de Software !Desenvolvimento de software é uma tarefa “inerentemente” colaborativa !Diferentes habilidades são necessárias !Analistas tem de compreender o cliente, projetistas precisam verificar diferentes aspectos (tolerância a falhas, segurança, escalabilidade, flexibilidade, etc) e assim por diante; !Diferentes reuniões para a coordenação das atividades; !Integração com outros sistemas (sociais, culturais, e organizacionais; 4 Desenvolvimento de Software !Comunicação formal e informal formal exige mais de 50% do tempo dos engenheiros de software (Perry et. al, 1994) !Atividades colaborativas de uma maneira geral correspondem a 70% do tempo dos desenvolvedores de software (Vessey and Sravanapudi, 1995) !Problemas de comunicação e coordenação são um dos 3 principais problemas em desenvolvimento de software(Curtis et al. 1988).

Transcript of Desenvolvimento Colaborativo de Software

Page 1: Desenvolvimento Colaborativo de Software

DesenvolvimentoColaborativo de

Software

Cleidson de SouzaDepartamento de Informática

Universidade Federal do Pará

[email protected]

2

Roteiro

!Desenvolvimento Colaborativo de Software!Colaboração em Engenharia de Software!A Importância da Arquitetura de Software!O Estudo de Caso MCW e BSC!Desenvolvimento Global de Software

!Definição!Motivação!Problemas!Soluções

3

Desenvolvimento de Software

!Desenvolvimento de software é uma tarefa“inerentemente” colaborativa!Diferentes habilidades são necessárias

!Analistas tem de compreender o cliente, projetistasprecisam verificar diferentes aspectos (tolerância afalhas, segurança, escalabilidade, flexibilidade, etc) eassim por diante;

!Diferentes reuniões para a coordenação dasatividades;

!Integração com outros sistemas (sociais, culturais, eorganizacionais;

4

Desenvolvimento de Software

!Comunicação formal e informal formal exige maisde 50% do tempo dos engenheiros de software(Perry et. al, 1994)

!Atividades colaborativas de uma maneira geralcorrespondem a 70% do tempo dosdesenvolvedores de software (Vessey andSravanapudi, 1995)

!Problemas de comunicação e coordenação são umdos 3 principais problemas em desenvolvimento desoftware(Curtis et al. 1988).

Page 2: Desenvolvimento Colaborativo de Software

5

Estudos Empíricos

!Utilização de ferramentas de GCS para coordenação(1995);

!Reuso de software (1999):!Reuso de arquiteturas de software

!Utilização de PowerPoint pelos arquitetos de software!Necessidade de convencer times de desenvolvimento, clientes e

outros a implementar uma arquitetura

!Necessidade de disponibilizar arquiteturas através da Web

!Programação Extrema;

!Colocação de desenvolvedores;

!Etc etc etc

6Jazz (IBM) e também Microsoft

7

Palantír

8

Desenvolvimento de Software -A Importância da Arquitetura

!Dependências!Entre os artefatos produzidos durante o processo

de desenvolvimento; e

!Entre as atividades do processo dedesenvolvimento;

!Coordenação pode ser definida como agerência de dependências (Malone eCrowston, 1995).

Page 3: Desenvolvimento Colaborativo de Software

9

Desenvolvimento de Software -A Importância da Arquitetura

!Modularidade: a divisão de um sistema em partespara que possamos tratar estas partesisoladamente. Um mecanismo para lidar com acomplexidade no desenvolvimento de produtos,não apenas software.!Um sistema deve ser dividido em módulos para facilitar

sua construção

!Parnas propôs o princípio de ocultamento dainformação como um critério indicando como osmódulos devem ser separados.

10

Desenvolvimento de Software -A Importância da Arquitetura

!Módulos não devem expor as suas partes quepodem mudar (seus detalhes de implementação)para que eles não afetem seus clientes;

!O princípio de Parnas quando aplicado tambémfacilita a coordenação do desenvolvimento desoftware, porque minimiza a necessidade decomunicação entre os desenvolvedores desoftware;

11

Desenvolvimento de Software -A Importância da Arquitetura

!A arquitetura do software define então, nãosomente os aspectos técnicos do software, mastambém define como a coordenação do softwareserá feita!Se um componente interage com diversos outros

componentes isto significa que o time que implementaeste componente terá de interagir com diversos outrostimes;

!Times que interagem com frequência ou que estãocolocados deveriam implementar módulos que estãoconectados.

12

Desenvolvimento de Software -O caso MCW da BSC

!Um projeto MCW!5 sub-times: arquitetos, testes, cliente, servidor

e infra-estrutura;!A separação entre os times era feita através de

APIs (interfaces);!O time servidor implementava as APIs necessárias

ao time cliente;!O time de infra-estrutura implementava serviços

comuns à todos

Page 4: Desenvolvimento Colaborativo de Software

13

Desenvolvimento de Software -O caso MCW da BSC

!Ferramentas!Sistema de gerência de configuração (Grinter,

1995)!Quem está alterando que partes do código;!Quem alterou que partes do código;

!Lista de emails!Notificação de modificações nas interfaces (APIs);!Procura de experts em determinados componentes;

14

Desenvolvimento de Software -O caso MCW da BSC

!A organização adotou um modelo de reuso decomponentes, portanto os vários subtimes do projetoMCW tinham de re-utilizar componentes daorganização

!Como conseqüência, diversas problemas decomunicação!Times que não estavam cientes de seus “clientes”, dos times

que iriam utilizar suas APIs;!Time que não estavam cientes de seus “servidores, do times

que iriam implementar as APIs que eles precisavam;

15

Desenvolvimento de Software -O caso MCW da BSC

!Lição:!Interação entre os aspectos técnicos (APIs,

modularidade, arquiteturas de software, etc) eos aspectos não-técnicos (organizacionais,sociais, etc) necessários a qualquer sistemacomputacional

16

Desenvolvimento Global deSoftware - Definição

!Significa que o desenvolvimento de software estádistribuído em diversos sites localizados em paísesdiferentes e até mesmo diferentes continentes.

!Exemplo!Lucent tem desenvolvimento nos EUA, Alemanha,

Inglaterra e Índia!IBM desenvolve nos EUA, testa na China;!Motorola desenvolve nos EUA e testa no Brasil;!Etc.

Page 5: Desenvolvimento Colaborativo de Software

17

Desenvolvimento Global deSoftware - Motivação

!Compra de empresas e união (“merge”) deempresas para complementar produtosdesenvolvidos por companhias;!TIM é italiana e tem serviços no Brasil;

!Para a participação em determinados mercados,certas leis requerem o desenvolvimento de certasoperações localmente;

!Partes da organização devem estar perto de ondeo mercado para elas existe;

!Competição por profissionais competentes;

18

Desenvolvimento Global deSoftware - Motivação

!A maioria das organizações acredita que adistribuição geográfica possa levar adesenvolvimento de software em tempo integral“round-the-clock development”, o que levaria aredução de custos por aumentar o tempodedicado ao desenvolvimento de software;

!Quando alguém para de desenvolver na California,outra pessoa começa a desenvolver na Índia;!Chamado de “siga o sol” (follow-the-sun);! Em teoria diminui o tempo de desenvolvimento em

50%;

19

Desenvolvimento Global deSoftware - Problemas

!Diferença em Fusos Horários!Comunicação

!Informal!Linguagem

!Coordenação!Cultura!Confiança!Encontrar pessoas (experts)

20

Desenvolvimento Global deSoftware - Problemas

Page 6: Desenvolvimento Colaborativo de Software

21

Efeitos da Distância

!Perda da comunicação informal, que éessencial para a coordenação do projeto;

!Dificuldade de saber quando contactar umadeterminada pessoa;

!Dificuldade de saber quem é responsávelpor um determinado componente (quemprojetou ou implementou) para resolver umproblema.

22

Desenvolvimento Global deSoftware - Problemas de Cultura

!Culturas diferentes geralmente temcomportamento diferente!Alemães ligam para um desenvolvedor e dizem:

“Tem um problema no seu código”.!Os ingleses esperam uma abordagem mais

“educada” onde uma pessoa sugere problemasno código da outra;

!Diferenças no idioma e na forma deutilização do idioma;

23

Desenvolvimento Global deSoftware - Problemas

!Resumo!Desenvolvimento de software distribuído é mais

lento que desenvolvimento quando colocado(Herbsleb e colegas, 2000);

!Implicação?!Colocar todos os desenvolvedores na mesma

sala simplifica a coordenação de atividade, atémesmo dobrando a produtividade dos times(Teasley, 2000)

24

Desenvolvimento Global deSoftware - Soluções (Carmel)

!Tecnologias Colaborativas!Infra-Estrutura de Comunicações;!Dinâmicas de Grupo para Motivação de Times

(team building);!Pessoas que viajam para outros sites com certa

frequência para servem como “ponte” para a facilitar acolaboração entre os sites;

!Ajuda a estabelecer confiança entre os times;

!Lideranças;!Arquitetura do Software e Alocação de Tarefas;!Metodologias de Desenvolvimento de Software;

Page 7: Desenvolvimento Colaborativo de Software

25Desenvolvimento Global de Software

- Soluções

26

Desenvolvimento Global deSoftware

!Para saber mais:!IEEE Software, vol. 18, Issue 2, March/April 2001, Special

Issue in Global Software Development.

![Car, 1999] Carmel, Erran. The explosion of global softwareteams. Computerworld magazine, Dec 08, 1997.

![Car, 2001] Carmel, E. Global Software Teams: a frameworkfor managerial problems and solutions. To appear as chapterfor the book: Global Information Technology And ElectronicCommerce: Issues for the New Millenium. Edited by P.Palvia, S. Palvia and E. Roche. To be published by IvyLeague Publishing.

!Primeira conferência sobre o assunto.