Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

TCC - Cleo Quintiliano Fernandes de Brito, Teses (TCC) de Informática

Trabalho de Conclusão de Curso - SISTEMAS COLABORATIVOS COMO FERRAMENTA PARA MELHORIA E PRODUTIVIDADE NO DESENVOLVIMENTO DE SOFTWARE

Tipologia: Teses (TCC)

2016

Compartilhado em 10/05/2016

cleo-quintiliano-fernandes-de-brito
cleo-quintiliano-fernandes-de-brito 🇧🇷

2 documentos

1 / 57

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Cléo Quintiliano Fernandes de Brito
SISTEMAS COLABORATIVOS COMO FERRAMENTA PARA MELHORIA E
PRODUTIVIDADE NO DESENVOLVIMENTO DE SOFTWARE
Londrina
2013
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39

Pré-visualização parcial do texto

Baixe TCC - Cleo Quintiliano Fernandes de Brito e outras Teses (TCC) em PDF para Informática, somente na Docsity!

Cléo Quintiliano Fernandes de Brito

SISTEMAS COLABORATIVOS COMO FERRAMENTA PARA MELHORIA E

PRODUTIVIDADE NO DESENVOLVIMENTO DE SOFTWARE

Londrina 2013

CLÉO QUINTILIANO FERNANDES DE BRITO

SISTEMAS COLABORATIVOS COMO FERRAMENTA PARA MELHORIA E

PRODUTIVIDADE NO DESENVOLVIMENTO DE SOFTWARE

Trabalho de Conclusão de Curso apresentado à Banca Examinadora do Curso de Ciência da Computação do Centro Universitário Filadélfia de Londrina – UniFil, como requisito parcial para obtenção do Grau de Bacharel em Ciência da Computação sob a orientação do Professor MSc. Sergio Akio Tanaka.

LONDRINA

SISTEMAS COLABORATIVOS COMO FERRAMENTA PARA MELHORIA E

PRODUTIVIDADE NO DESENVOLVIMENTO DE SOFTWARE

Trabalho de Conclusão de Curso apresentado à Banca Examinadora do Curso Ciência da Computação Centro Universitário Filadélfia de Londrina - UniFil em cumprimento a requisito parcial para obtenção do título de bacharel em Ciência da Computação.

APROVADA PELA COMISSÃO EXAMINADORA

EM LONDRINA, 24 DE OUTUBRO DE 2013

Prof. Moisés Fernando Lima, MSc., (UniFil) – Coordenador de TCC

Prof. Sergio Akio Tanaka, MSc., (UniFil) - Orientador

Prof. Mario Henrique Adaniya, MSc., (UniFil) – Examinador

AGRADECIMENTOS

Agradeço a Deus, minha família, amigos, professores, colegas e a todos que me apoiaram na realização deste trabalho.

BRITO, C. Q. F. de. Sistemas Colaborativos como Ferramenta para Melhoria e Produtividade no Desenvolvimento de Software. Londrina, 2013. 57 f. Trabalho de Conclusão de Curso (Bacharelado em Ciência da Computação) – Curso de Ciência da Computação. Centro Universitário Filadélfia de Londrina - UniFil, Londrina, 2013.

RESUMO

Com a popularização da colaboração pela web, que passou a ser denominada web social, cresceu a importância de estudos sobre os Sistemas Colaborativos, discutir sobre eles e as técnicas para apoiar a colaboração entre as pessoas, lançando um olhar para alguns aspectos humanos e culturais sobre a tecnologia. O software se tornou vital para os negócios de todos os tipos de organizações e o desenvolvimento de software passou a ser uma atividade essencial no mundo atual. Raramente o desenvolvimento de software é uma atividade individual. Os membros de uma equipe precisam coordenar suas atividades, planejar novas ações, tomar decisões, realizar as atividades previstas e também se comunicar para desenvolver um software. Esta pesquisa visa discutir o desenvolvimento de software enquanto atividade colaborativa apresentando sistemas computacionais que promovem e apóiam a colaboração durante o desenvolvimento de software.

Palavras-chave: Engenharia de Software; Desenvolvimento Colaborativo de Software; Desenvolvimento Distribuído de Software; Gerência de Configuração.

BRITO, C. Q. F. de. Sistemas Colaborativos como Ferramenta para Melhoria e Produtividade no Desenvolvimento de Software. Londrina, 2013. 57 f. Trabalho de Conclusão de Curso (Bacharelado em Ciência da Computação) – Curso de Ciência da Computação. Centro Universitário Filadélfia de Londrina - UniFil, Londrina, 2013.

ABSTRACT

With the popularization of the web collaboration, which became called social web, increased the importance of studies on the Collaborative Systems, discuss them and the techniques to support collaboration between people, with a glance at some human and cultural aspects of technology. The software itself has become vital to all types of business organizations, and the software development has become an essential activity in actual world. Rarely software development is an individual activity. The members of a team must coordinate their activities, plan new actions, make decisions, fulfill the predicted activities and also communicate to develop software. This research aims to discuss the software development as a collaborative activity, showing computational systems that promote and support collaboration during the software development.

Key words: Software Engineering, Software Development Collaborative, Distributed Software Development; Manages Configuration.

LISTA DE QUADROS

Quadro 1 - Desafios no desenvolvimento de software agrupados por categoria ...... 18

Quadro 2 - Resumo das operações básicas dos controles de versão centralizado e distribuído .................................................................................................................. 31

Quadro 3 - Comparação entre o Team Foundation Server 2010 e o Rational Team Concert 4.0 ................................................................................................................ 51

LISTA DE ABREVIATURAS E SIGLAS

ALM – Application Lifecycle Management (Gerenciamento de Ciclo de Vida de Aplicativos)

DCS – Desenvolvimento Colaborativo de Software

DDS – Desenvolvimento Distribuído de Software

DS – Desenvolvimento de Software

ES – Engenharia de Software

OSLC – Open Services for Lifecycle Collaboration (Serviços Abertos para o Ciclo de Vida Colaborativo)

RTC – Rational Team Concert

TA – Technical Assistant (Assistente Técnico)

  • Figura 1 - Categorias de desafios no desenvolvimento de software
  • Figura 2 - Custos da colaboração
  • Figura 3 - Benefícios da sinergia.
  • Figura 4 - Controle de versão centralizado
  • Figura 5 - Controle de versão distribuído
  • Figura 6 - A coordenação de pessoas, processos e ferramentas no ALM
  • Figura 7 - O fluxo do JazzHub
  • Figura 8 - Página inicial do JazzHub
  • Figura 9 - Conexão com o repositório JazzHub
  • Figura 10 - Gerenciando áreas de projeto conectado
  • Figura 11 - A linha do tempo do projeto
  • Figura 12 - Configuração de membros em uma área privada
  • Figura 13 - Carregando o espaço de trabalho
  • Figura 14 - Widgets para o JazzHub
  • Figura 15 - Compartilhando o projeto pelo Jazz Source Control
  • Figura 16 - Atribuição em andamento
  • 1 INTRODUÇÃO
  • 1.1 JUSTIFICATIVA
  • 1.2 OBJETIVOS
  • 1.2.1 Objetivo Geral
  • 1.2.1.1 Objetivos Específicos
  • 1.3 PROCEDIMENTOS METODOLÓGICOS
  • 2 FUNDAMENTAÇÃO TEÓRICA
  • 2.1 DESAFIOS DO DESENVOLVIMENTO DE SOFTWARE
  • 2.2 DESENVOLVIMENTO COLABORATIVO DE SOFTWARE (DCS)
  • 2.3 COLABORAÇÃO
  • 2.3.1 Custos e benefícios da colaboração
  • 2.4 SINERGIA
  • 2.5 DESENVOLVIMENTO DISTRIBUÍDO DE SOFTWARE
  • 2.5.1 Times Virtuais
  • 2.6 PRÁTICAS COLABORATIVAS NO DESENVOLVIMENTO DE SOFTWARE
  • 2.6.1 Processo de software
  • 2.7 SISTEMAS COLABORATIVOS TRADICIONAIS DE DESENVOLVIMENTO......
  • 2.7.1 Sistemas de controle de versão
  • 2.7.1.2 Como funciona o controle de versão
  • 2.8 SISTEMAS COLABORATIVOS MODERNOS DE DS
  • 2.8.1 Gerenciamento do Ciclo de Vida de Aplicativos
  • 2.8.1.1 Application Lifecycle Management (ALM)
  • 2.8.2 IBM Rational Team Concert (RTC)
  • 2.8.3 Microsoft Visual Studio Team Foundation Server
  • 3 ESTUDO DE CASO: UM PROCESSO ACADÊMICO NO JAZZHUB
  • 3.1 APRESENTAÇÃO DO ESTUDO DE CASO........................................................
  • 3.1.1 O Processo Acadêmico ( Academic Process )
  • 3.1.2 Visão Geral do Fluxo de Trabalho.................................................................
  • 3.3 CRIANDO UM PROJETO NO JAZZHUB
  • 3.4 CONECTANDO O JAZZHUBAO CLIENTE RTC PARA ECLIPSE IDE
  • 3.5 O CRONOGRAMA DO PROJETO
  • 3.7 ÁREAS PRIVADAS E COMPONENTES DE CONTROLE DE CÓDIGO.............
  • 3.8 A ÁREA DE TRABALHO DO REPOSITÓRIO
  • 3.9 ÁREA DE EQUIPE PARA ESTUDANTES
  • 3.10 CUSTOMIZANDO O PROJETO
  • 3.11 ATRIBUIÇÕES
  • 3.11.1 Trabalhando com as Atribuições
  • 3.11.2 Itens de Trabalho, Implementações e Entregas
  • 3.12 COMPARATIVO ENTRE O RTC E O TEAM FOUNDATION SERVER
  • 4 CONCLUSÃO E TRABALHOS FUTUROS
  • REFERÊNCIAS
  • GLOSSÁRIO

1 INTRODUÇÃO

O desenvolvimento de software passou a ser uma atividade essencial no mundo atual. “O software tornou-se vital para os negócios de todos os tipos de organizações. O sucesso de uma organização depende cada vez mais da utilização de software como um diferencial competitivo” (PIMENTEL; FUKZ, 2011, p. 123). O aumento do uso de sistemas em contextos mais abrangentes de negócio torna a construção de software uma atividade cada dia mais complexa. O trabalho em conjunto de diversos especialistas é necessário para o sucesso no desenvolvimento de software. Cumprimentos de prazos, dos custos, da qualidade, estão entre os itens exigidos pelos clientes.

Em raros casos o desenvolvimento de software é uma atividade individual, em sua maioria é uma atividade colaborativa onde vários profissionais atuam projetando soluções e produzindo código de qualidade. Os participantes de uma equipe de desenvolvimento de software precisam coordenar suas atividades, planejar ações, tomar decisões, realizar as tarefas estipuladas e também se comunicar para desenvolver um software. A coordenação envolve vários profissionais, como analistas de requisitos, programadores, gerentes, arquitetos de software, membros da equipe de qualidade, projetistas de interface gráfica, dentre outros. Outras áreas como marketing, vendas, finanças também precisam ter suas atividades alinhadas com os desenvolvedores de software.

Atualmente existem várias ferramentas que dão suporte a colaboração no desenvolvimento de software, que vão desde a especificação de requisitos até a confecção de diagramas, englobando também editores cooperativos que tornam possível a escriva de código por vários programadores ao mesmo tempo e sistemas que coordenam o acesso compartilhado aos artefatos.

1.1 JUSTIFICATIVA

O desenvolvimento de software tradicional já possui diversas dificuldades. Quando realizado de forma distribuída, novas dificuldades são acrescentadas que

1.3 PROCEDIMENTOS METODOLÓGICOS

A metodologia para a construção deste trabalho foi uma pesquisa qualitativa com viés positivista e finalidade descritiva com a realização de um estudo de caso pela observação direta estruturada que demostra como um sistema colaborativo de desenvolvimento de software é utilizado.

A divisão das estruturas deste Trabalho de Conclusão de Curso é feita da seguinte maneira:

Capítulo 1 – Apresenta uma introdução ao tema do trabalho; Capítulo 2 – Apresenta os desafios no desenvolvimento de software, a colaboração e sistemas computacionais que apoiam atividades colaborativas;

Capítulo 3 – Um estudo de caso sobre o sistema colaborativo JazzHub - Rational Team Concert (RTC);

Capítulo 4 – Conclusão e trabalhos futuros.

2 FUNDAMENTAÇÃO TEÓRICA

Neste capítulo é apresentado o desenvolvimento de software como prática colaborativa. Inicialmente vamos olhar para alguns desafios atuais do desenvolvimento de software como avanços da tecnologia, equipes distribuídas, colaboração e processos de software. Também são apresentadas ferramentas que fomentam e favorecem a colaboração durante o desenvolvimento de software.

2.1 DESAFIOS DO DESENVOLVIMENTO DE SOFTWARE

Com décadas de avanço no desenvolvimento e na engenharia de software (ES), aprendemos técnicas e métodos para melhorar a produtividade de software e a satisfação do cliente. Porém, a cada dia surge um novo desafio, um novo limite, com isso as organizações de desenvolvimento de software são confrontadas com o desafio de recuperar o atraso com as crescentes expectativas dos clientes.

Os softwares crescem em complexidade dia após dia e em contraste a isso o custo de hardware está em constante declínio. Os fornecedores de software, com o crescimento das restrições sobre os recursos, prazos e custos, sentem a necessidade de identificar as áreas que devem ser aperfeiçoadas para melhorar a produtividade, preenchendo espaços e adotando processos, métodos e ferramentas mais eficientes. Surgem então questões voltadas para a melhoria no processo de desenvolvimento de software. Atualmente, equipes de desenvolvimento, principalmente as focadas no desenvolvimento distribuído e colaborativo, enfrentam desafios deste gênero. Para Krishna e Fenstermaker (2011) as principais categorias dos desafios incluem, mas não estão limitados aos seguintes:

 equipes geograficamente distribuídas;  diferenças culturais dificultam a comunicação;  dificuldade da coordenação de times geograficamente distribuídos;  equipes com práticas customizadas de desenvolvimento.

CATEGORIAS DESAFIOS Trabalho em equipe

Processo

Análise de custo/benefício Especificação de requisitos Desenvolvimento Distribuído de Software Gerência de projeto Gerência de risco Gestão de conhecimento Manutenção de software Melhoria de processos de software Padrões de desenvolvimento de software Planejamento organizacional Planejamento de projetos Processo de estimativa Qualidade e teste de software Reutilização

Tecnologia (^) InfraFerramentas de apoioestrutura de comunicação

Fonte: AUDY; PRIKLADNICKI, 2008, p. 32.

2.2 DESENVOLVIMENTO COLABORATIVO DE SOFTWARE (DCS)

O desenvolvimento de software tornou-se um esporte coletivo onde as equipes de desenvolvedores, muitas vezes distribuídas geograficamente, desenvolvem um programa em conjunto. Na mesma localização ou geograficamente distribuídos, surge a necessidade de um novo conjunto de princípios e ferramentas para o desenvolvimento colaborativo.

A principal capacidade do desenvolvimento colaborativo é abrir informações para colaboradores externos. Proprietários do produto, analistas, desenvolvedores e outras partes interessadas precisam de fácil acesso as informações do projeto para fornecer a entrada oportuna. Tais equipes precisam de uma central de repositório do código-fonte que apoie a sua dispersão geográfica, e o gerenciamento dos itens de

trabalho para o planejamento da iteração são características importantes do DCS. Os membros precisam ter conhecimento sobre o status do projeto para que possam responder as mudanças e acompanhar a saúde do mesmo (KRISHNA; FENSTERMAKER, 2011).

Hoje em dia o desenvolvimento de software tem uma proporção tal que dificilmente uma pessoa desenvolva sozinha. Sendo assim, o mesmo precisa ser dividido em porções que pessoas possam trabalhar individualmente e então sincronizar, em algum momento, suas contribuições com a dos demais colegas. Mas como em geral uma parte é dependente da outra, não é possível que se desenvolva isoladamente. Integrantes de uma equipe precisam conversar com os colegas para identificar como seu trabalho afeta os demais, se alguma mudança ocorreu que afeta sua parte, para esclarecer dúvidas ou mesmo para pedir ajuda em algo que o mesmo não sabe como realizar. Desta forma, naturalmente, o desenvolvimento de software tornou-se uma atividade colaborativa.

Quanto se trata de projetos de software a colaboração pode vir de diversas maneiras, compartilhando um processo com os membros da equipe, códigos, testes, entre outros artefatos produzidos. Colaboração é sinergia, e quando realizada com sucesso o nível é mais elevado do que em caso contrário. A otimização de interações interpessoais, podem reduzir as barreiras para a obtenção de trabalho realizado (POLLICE, 2007).

2.3 COLABORAÇÃO

“Para lidar com a grande quantidade de informação e a multiplicidade de domínios, as pessoas se tornam cada vez mais especialistas. Resolver um problema complexo muitas vezes requer uma combinação de habilidades” (PIMENTEL; FUKZ, 2011, p. 35).

A colaboração é o ato de trabalhar juntos. A capacidade de colaborar com os outros é uma das habilidades mais importantes que uma pessoa pode possuir. Não importa como inventivo, criativo ou produtivo você possa ser, sozinho, você pode conseguir muita coisa. Ela está presente em quase toda a nossa vida.