

















































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
Trabalho de Conclusão de Curso - SISTEMAS COLABORATIVOS COMO FERRAMENTA PARA MELHORIA E PRODUTIVIDADE NO DESENVOLVIMENTO DE SOFTWARE
Tipologia: Teses (TCC)
1 / 57
Esta página não é visível na pré-visualização
Não perca as partes importantes!
Cléo Quintiliano Fernandes de Brito
Londrina 2013
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.
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.
Prof. Moisés Fernando Lima, MSc., (UniFil) – Coordenador de TCC
Prof. Sergio Akio Tanaka, MSc., (UniFil) - Orientador
Prof. Mario Henrique Adaniya, MSc., (UniFil) – Examinador
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.
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.
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.
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
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)
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.
O desenvolvimento de software tradicional já possui diversas dificuldades. Quando realizado de forma distribuída, novas dificuldades são acrescentadas que
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.
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.
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.
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).
“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.