Use este identificador para citar ou linkar para este item: http://hdl.handle.net/1843/ESBF-BA8NXT
Tipo: Dissertação de Mestrado
Título: On The Investigation of Software Development and Evolution Practices
Autor(es): Markos Viggiato de Almeida
Primeiro Orientador: Eduardo Magno Lages Figueiredo
Primeiro membro da banca : Marco Tulio de Oliveira Valente
Segundo membro da banca: Alessandro Fabrício Garcia
Resumo: A engenharia de software é um campo diverso composto por diferentes plataformas e domínios, com uma grande variedade de pessoas envolvidas em todas as etapas do desenvolvimento. Plataforma de software refere-se à estrutura subjacente em que o software é construído (por exemplo, mobile) e domínios de software referem-se a sistemas desenvolvidos para segmentos específicos (por exemplo, para a área saúde). Sabe-se que diferentes plataformas podem ter diferentes práticas de evolução para atender suas necessidades específicas de mercado e devido a suas características intrínsecas. Por exemplo, os usuários do Android estão acostumados a rápidas correções de bugs, diferentemente de usuários de software desktop ou até mesmo de aplicações Web. Também é amplamente sabido que diferentes domínios podem ter diferentes políticas e valores, o que afeta a maneira como os desenvolvedores adotam as práticas de desenvolvimento. Apesar da relevância de compreender as práticas de desenvolvimento e evolução, pouco se sabe sobre como os softwares mobile e não-mobile evoluem. Por exemplo, diferentes tipos de mudanças podem co-evoluir em uma plataforma e não em outras. Além disso, pouca pesquisa investigou quais e como as práticas de desenvolvimento são adotadas em diferentes domínios de software e se essas práticas são características intrínsecas dos domínios. Nesta Dissertação de Mestrado, propomos uma pesquisa de método misto visando compreender as diferenças e semelhanças de diferentes plataformas e domínios a partir de perspectivas quantitativas e qualitativas em diferentes granularidades. Primeiro, projetamos e conduzimos um estudo quantitativo no qual analisamos o histórico de commit de centenas de repositórios Java hospedados no GitHub para identificar como as alterações do código ocorrem. Mais especificamente, investigamos a frequência de commits, o espalhamento e a profundidade das mudanças de código e a co-evolução de três tipos de mudanças: alterações no código-fonte, alterações em arquivos de build e alterações em arquivos de testes. Para o último item, contamos com o algoritmo de mineração Frequent Itemset para obter regras de associação relativas a tipos de alterações de código. Nossos resultados sugerem algumas diferenças relacionadas às plataformas (mobile e não-mobile). Por exemplo, em relação às freqüências de commits, a plataforma móvel possui diferentes padrões de mudanças ao longo do ano em comparação com sistemas desktop e Web. Também realizamos um estudo qualitativo no qual realizamos entrevistas semiestruturadas com desenvolvedores de vários domínios da indústria, ou seja, desenvolvedores com experiência em mais de um domínio. Em seguida, desenvolvemos uma Web survey para confirmar ou não os resultados de domínios nos quais atingimos a saturação teórica de acordo com a Grounded Theory. Nosso objetivo é entender como as práticas de desenvolvimento são aplicadas a partir da perspectiva dos profissionais. Nossos resultados revelam que, na verdade, desenvolvedores de diferentes domínios aplicam práticas de desenvolvimento de diferentes maneiras. Por exemplo, domínios relacionados a finanças podem interromper práticas de integração contínua em períodos em que as transações financeiras aumentam, como no Natal e no Ano Novo.
Abstract: Software engineering is a diverse field composed of different platforms and domains with a large variety of people involved in all stages of the development. Software platform refers to the underlying structure where the software is built on (e.g., Android) and software domains refer to systems developed for specific segments (e.g., healthcare). Understanding patterns of evolution of mobile and non-mobile software may support developers and companies within the open source software context. Revealing how development practices are adopted across domains may give new research directions and insights for industry professionals. In this Master Thesis, we investigate development and evolution practices using a mixed-method. Initially, we rely on the Frequent Itemset mining algorithm to analyze the co-evolution of code changes. We then interview cross-domain developers from the industry. Our findings show that different platforms and domains require practices to be applied in different ways.
Assunto: Engenharia de Software
Algoritmo de mineração
Computação
Domínio de software
Plataforma de software
Idioma: Português
Editor: Universidade Federal de Minas Gerais
Sigla da Instituição: UFMG
Tipo de Acesso: Acesso Aberto
URI: http://hdl.handle.net/1843/ESBF-BA8NXT
Data do documento: 17-Dez-2018
Aparece nas coleções:Dissertações de Mestrado

Arquivos associados a este item:
Arquivo Descrição TamanhoFormato 
markosviggiatodealmeida.pdf1.18 MBAdobe PDFVisualizar/Abrir


Os itens no repositório estão protegidos por copyright, com todos os direitos reservados, salvo quando é indicado o contrário.