Baixe o app para aproveitar ainda mais
Prévia do material em texto
LUCAS SAMUEL ASSIS DE PAULA ANÁLISE COMPARATIVA DE MODELOS DE PROCESSOS DE SOFTWARE ÁGIL: SCRUM E EXTREME PROGRAMMING (XP) PARANAVAÍ 2018 LUCAS SAMUEL ASSIS DE PAULA ANÁLISE COMPARATIVA DE MODELOS DE PROCESSOS DE SOFTWARE ÁGIL: SCRUM E EXTREME PROGRAMMING (XP) Trabalho de Conclusão de Curso apresentado à banca examinadora do curso de Sistemas de Informação da Universidade Paranaense - UNIPAR, como exigência parcial para ob- tenção do grau de Bacharel em Sistemas de Informação. UNIVERSIDADE PARANAENSE CURSO DE SISTEMAS DE INFORMAÇÃO Orientador: Jaime William Dias PARANAVAÍ 2018 FOLHA DE APROVAÇÃO LUCAS SAMUEL ASSIS DE PAULA ANÁLISE COMPARATIVA DE MODELOS DE PROCESSOS DE SOFTWARE ÁGIL: SCRUM E EXTREME PROGRAMMING (XP) Trabalho de conclusão aprovado como requisito parcial para a obtenção do grau de Bacharel em Sistemas de Informação da Universidade Paranaense – UNIPAR, pela seguinte banca examinadora: _____________________________________ Profa. Ma. Claudete Werner Mestre em Ciência da Computação _____________________________________ Prof. Me. Jaime William Dias Mestre em Ciência da Computação _____________________________________ Prof. Me. Wyllian Fressatti Mestre em Sistemas de Computação PARANAVAÍ 2018 LUCAS SAMUEL ASSIS DE PAULA ANÁLISE COMPARATIVA DE MODELOS DE PROCESSOS DE SOFTWARE ÁGIL: SCRUM E EXTREME PROGRAMMING (XP) Trabalho de conclusão aprovado como requisito parcial para obtenção de grau de Bacharel em Sistemas de Informação da Universidade Paranaense – UNIPAR, pela seguinte banca examinadora: Prof. Me. Jaime William Dias Mestre em Ciência da Computação Profa. Ma. Claudete Werner Mestre em Ciência da Computação Prof. Me. Wyllian Fressati Mestre em Sistemas de Computação PARANAVAÍ 2018 DEDICATÓRIA Dedico esse trabalho primeiramente a Deus, por ser essencial na minha vida, autor do meu destino, meu guia, meu socorro presente na hora da angústia, ao meu pai Leonel, minha mãe Tainir, minha irmã Thaisa, minha namorada Gabriele e a todos meus amigos em especial Alex Sousa, Bruno Franco, Guilherme Lopes, Alexandre José e Matheus Bianchi. AGRADECIMENTOS À Instituição pelo ambiente criativo e amigável que proporciona. A Universidade Unipar pela oportunidade de fazer o curso. A esta universidade, seu corpo docente, direção e administração. “O homem se torna muitas vezes o que ele próprio acredita que é. Se insisto em repetir para mim mesmo que não posso fazer uma determinada coisa, é possível que acabe me tornando realmente incapaz de fazê-la. Ao contrário, se tenho a convicção de que posso fazê-la, certamente adquirirei a capacidade de realizá-la, mesmo que não a tenha no começo." (Mahatma Gandhi)) RESUMO O aumento na procura do software e a grande demanda em que as indústrias precisam projetar, acarretam em problemas relacionados ao processo de desenvolvimento de siste- mas, tais como: alto custo, alta complexidade, dificuldade de manutenção e uma grande diferença entre os requisitos solicitados pelos usuários e o produto final entregue. O de- senvolvimento de um software deve ser feito de acordo com as regras da engenharia de software, uma possível solução para que o desenvolvimento do mesmo saia de acordo com o planejado, é utilizar um método de desenvolvimento de software adequado ao negócio, afim de ganhar em qualidade e poder mensurar de forma mais precisa o tamanho e o custo do projeto, propiciando uma maior satisfação por parte do cliente e ainda ter a possibilidade de maximizar o lucro da empresa. Essa investigação científica explana uma breve descrição sobre a ciência Engenharia de Software, enfatizando dois modelos de processos ágeis o Scrum e o Extreme Programming, explicando seus principais conceitos, métodos adotados, análise comparativa entre as me- todologias e um experimento afim de aferir as mesmas. Como um resultado preliminar, não existe o melhor modelo de processo de software ágil para o desenvolvimento de pro- duto computacional. A forma deve ser escolhida de acordo com as necessidades da área de aplicação da empresa, pois cada um atende uma necessidade diferente, a equipe de desen- volvimento que escolherá o que se adequará ao processo de desenvolvimento. Mediante o experimento científico foi possível observar uma evolução no processo de desenvolvimento de software, no qual 93,8% dos voluntários notaram após a implantação das metodologias ágeis. Palavras-chaves: Engenharia de Software, Sofware, Scrum, Extreme Programming ABSTRACT The increase in the demand for software and the high demand in which the need to design, lead to problems related to the process of systems development, such as: high cost, high complexity, maintenance and a great difference between the requirements requested by users and the final product delivered. The development of software should be done in accordance with the rules of software engineering, a possible solution for the development of the same skirt according to the plan, is to use a method of development of software suitable for the business, in order to gain in quality and to be able to more precise the size and cost of the project, providing greater satisfaction for part of the customer and still have the possibility to maximize the company’s profit. This scientific research explores a brief description of science, emphasizing two models of agile processes Scrum and Extreme Programming, explaining its main concepts, methods adopted, comparative analysis between the methodologies and an experiment in order to verify them. As a preliminary result, there is no best agile software process model for computational product development. THE should be chosen according to the needs of the area of application of the because each one meets a different need, the that will fit the development process. Through the scientific experiment it was possible to observe an evolution in the software development process, in which 93.8 % of the volunteers noticed after the implementation of the agile methodologies. Key-words: Software Engineering, Software, Scrum, Extreme Programming LISTA DE ILUSTRAÇÕES Figura 1 – Representa modelo tecnologia em camadas . . . . . . . . . . . . . . . . 21 Figura 2 – Representa o modelo sequencial linear (Clássico ou Cascata . . . . . . 26 Figura 3 – Representa o modelo de prototipação . . . . . . . . . . . . . . . . . . 27 Figura 4 – Representa o modelo espiral . . . . . . . . . . . . . . . . . . . . . . . . 28 Figura 5 – Representa o modelo incremental . . . . . . . . . . . . . . . . . . . . . 29 Figura 6 – Fluxo do Processo Scrum . . . . . . . . . . . . . . . . . . . . . . . . . 31 Figura 7 – Fluxo do Processo XP . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Figura 8 – Primeira Pergunta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Figura 9 – Segunda Pergunta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Figura 10 – Terceira Pergunta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Figura 11 – Quarta Pergunta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Figura 12 – Experimento - Gráfico 1 - Titulação dos Voluntários . . . . . . . . . . . 46 Figura 13 – Quinta Pergunta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Figura 14 – Experimento - Gráfico 2 - Utilização da Metodologia Ágil . . . . . . . . 48 Figura 15 – Sexta Pergunta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Figura 16 – Experimento - Gráfico 3 - Qual é Metodologia Mais Utilizada . . . . . 49 Figura 17 – Sétima Pergunta (Scrum) . . . . . . . . . . . . . . . . . . . . . . . . . 49 Figura 18 – Experimento - Gráfico 4 - Nível de Conhecimento na Metodologia Scrum 50 Figura 19 – Sétima Pergunta (XP) . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Figura 20 – Experimento - Gráfico 5 - Nível de Conhecimento na Metodologia XP . 51 Figura 21 – Oitava Pergunta . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . 52 Figura 22 – Experimento - Gráfico 6 - Dificuldades Encontradas na Implementação da Metodologia Ágil . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Figura 23 – Nona Pergunta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Figura 24 – Experimento - Gráfico 7 - Palavras Chaves Quando se Refere ao De- senvolvimento Ágil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Figura 25 – Decima Pergunta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Figura 26 – Experimento - Gráfico 8 - Evolução no Processo de Desenvolvimento após Implementação de Metodologia Ágil . . . . . . . . . . . . . . . . 55 Figura 27 – Decima Primeira Pergunta . . . . . . . . . . . . . . . . . . . . . . . . . 55 Figura 28 – Experimento - Gráfico 9 - Vantagens Alcançadas com a Utilização das Metodologias Ágeis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Figura 29 – Decima Segunda Pergunta . . . . . . . . . . . . . . . . . . . . . . . . . 57 Figura 30 – Experimento - Gráfico 10 - Evolução na Produtividade da Equipe após Implementação de Metodologia Ágil . . . . . . . . . . . . . . . . . . . 58 Figura 31 – Decima Terceira Pergunta . . . . . . . . . . . . . . . . . . . . . . . . . 58 Figura 32 – Experimento - Gráfico 11 - Avaliação do Uso da Metodologia Ágil no Desenvolvimento de Software . . . . . . . . . . . . . . . . . . . . . . . 59 Figura 33 – Decima Quarta Pergunta . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Figura 34 – Experimento - Gráfico 12 - Identificar se o Processo de Desenvolvimento é Seguido Corretamente . . . . . . . . . . . . . . . . . . . . . . . . . . 60 LISTA DE TABELAS Tabela 1 – Experimento - Análise Comparativa . . . . . . . . . . . . . . . . . . . 36 Tabela 2 – Experimento - Lista geral das respostas das questões 1,2,3 e 4 . . . . . 47 SUMÁRIO 1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.1 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.2 Justificativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.3 Enunciado do Problema . . . . . . . . . . . . . . . . . . . . . . . . 15 1.4 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.5 Organização do Trabalho . . . . . . . . . . . . . . . . . . . . . . . 16 2 O ESTADO DA ARTE . . . . . . . . . . . . . . . . . . . . . . . 17 2.1 SCRUM E XP: Um comparativo no processo de desenvolvi- mento de software . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.2 Analise Comparativa das Metodologias Ágeis: Scrum, XP e FDD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.3 Análise das Metodologias Ágeis XP e Scrum no Desenvolvi- mento de um Software de Gerenciamento de Abastecimento . 18 2.4 Métodos Ágeis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.5 Comparação Entre os Processos dos Métodos Ágeis XP, Scrum e FDD e ASD em Relação ao Desenvolvimento Iterativo In- cremental . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.6 Considerações finais . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3 ENGENHARIA DE SOFTWARE . . . . . . . . . . . . . . . . . 20 3.1 Conceito de Software . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.2 Conceito de Engenharia de Software . . . . . . . . . . . . . . . . 20 3.3 Campos de aplicação do software . . . . . . . . . . . . . . . . . . 21 3.3.1 Software de sistema . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.3.2 Software de aplicação . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.3.3 Software científico/engenharia . . . . . . . . . . . . . . . . . . . . 22 3.3.4 Software embutido . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.3.5 Software para linha de produtos . . . . . . . . . . . . . . . . . . . 22 3.3.6 Aplicações para a Web/Aplicações Móveis . . . . . . . . . . . . 23 3.3.7 Software de inteligência artificial . . . . . . . . . . . . . . . . . . 23 3.4 Processo de software . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.5 Modelos de processo . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.5.1 Modelos Tradicionais . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.5.1.1 Modelo de Processo Sequencial Linear (Clássico ou Cascata) . . . 26 3.5.1.2 Modelo Protótipo / Prototipação . . . . . . . . . . . . . . . . . . . 27 3.5.1.3 Modelo Espiral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.5.1.4 Modelo de Processo Incremental . . . . . . . . . . . . . . . . . . . . 28 3.5.2 Modelos Ágeis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.5.2.1 Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.5.2.2 Extreme Programming . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.6 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4 ANALISE COMPARATIVA . . . . . . . . . . . . . . . . . . . . 36 4.1 Comparação Scrum e Extreme Programming (XP) . . . . . . . 36 4.2 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . 37 5 ENGENHARIA EXPERIMENTAL . . . . . . . . . . . . . . . . 38 5.1 Conceito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 5.2 Objetivos da Experimentação . . . . . . . . . . . . . . . . . . . . 39 5.3 Tipos de Experimentos . . . . . . . . . . . . . . . . . . . . . . . . 39 5.3.1 Survey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 5.3.2 Estudo de Caso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.3.3 Experimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.4 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . 42 6 EXPERIMENTO . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 6.1 Descrição do contexto e objetivos do experimento . . . . . . . 43 6.2 Resultados do Experimento . . . . . . . . . . . . . . . . . . . . . 43 6.2.1 Caraterização e Nível de Escolaridade do Grupo . . . . . . . . 44 6.2.2 Primeira Pergunta . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 6.2.3 Segunda Pergunta . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 6.2.4 Terceira Pergunta . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 6.2.5 Quarta Pergunta . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 6.2.6 Identificação de Compreensão e Usabilidade em Modelos de Processos Ágeis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 6.2.7 Quinta Pergunta . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 6.2.8 Sexta Pergunta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 6.2.9 Sétima Pergunta - Scrum . . . . . . . . . . . . . . . . . . . . . . . 49 6.2.10 Sétima Pergunta - Extreme Programming (XP) . . . . . . . . . 50 6.2.11 Identificação dos Benefícios, Malefícios e Caraterísticas Espe- cificas Com o Uso das Metodologias Ágeis . . . . . . . . . . . . 51 6.2.12 Oitava Pergunta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 6.2.13 Nona Pergunta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 6.2.14 Decima Pergunta . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 6.2.15 Decima Primeira Pergunta . . . . . . . . . . . . . . . . . . . . . . 55 6.2.16 Decima Segunda Pergunta . . . . . . . . . . . . . . . . . . . . . . 57 6.2.17 Decima Terceira Pergunta . . . . . . . . . . . . . . . . . . . . . . 58 6.2.18 Decima Quarta Pergunta . . . . . . . . . . . . . . . . . . . . . . . 59 6.3 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . 60 7 CONCLUSÕES . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 14 1 INTRODUÇÃO Desde os primórdios da humanidade onde o homem passa a viver em sociedade a população tende a buscar evolução com o objetivo de melhorar a vida em coletividade. A tecnologia tem um papel fundamental na história da sociedade, desde o princí- pio esta acompanhouo homem em sua evolução. A tecnologia não se baseia apenas na informática, esta, inventada pelos primatas auxiliaram na sobrevivência da sociedade da época fazendo com que o homem se tornasse dependente da sua criação. Nos dias atuais o homem se tornou completamente dependente da tecnologia, a mesma evoluiu tomando níveis extremamente altíssimos de desenvolvimento. No meio de toda tecnologia pode se voltar a atenção para o software, o qual está presente no cotidiano das pessoas sendo um instrumento indispensável para o ser humano. O software está presente nas necessidades básicas do cotidiano e nas operações científicas complexas. Segundo Pressman (2011), Softwares são instruções (programas de com- putadores) que, quando executadas, fornecem as características, funções e desempenho desejados; definem-se ainda como uma estrutura de da- dos que permite aos programas manipular adequadamente a informação e documentos que descrevem as operações e o uso dos programas. Os softwares se tornaram gradativamente mais complexos, sendo responsáveis por atividades que não há margem de erro, sendo assim se faz necessário o estudo da ciência da engenharia de software. Segundo Pressman (2011), "Engenharia de software é o estabelecimento e o em- prego de sólidos princípios de engenharia de modo a obter software de maneira econômica, que seja confiável e funcione de forma eficiente em máquinas reais". Dentro da Engenharia de Software há áreas de estudos que auxiliam no processo de obtenção do mesmo, o modelo de processos de software é uma das áreas principais na Engenharia de Software também sendo o tema principal desta pesquisa científica. Segundo Pressman (2011), "processo de software é definido como uma metodo- logia para atividades ações e tarefas necessárias para desenvolver um software de alta qualidade". O modelo de software é o roteiro que deve ser seguido para elaboração do mesmo, este modelo bem definido, seguindo os padrões da metadologia e as regras da Engenharia de Software são os passos necessários para alcançar um software de alta qualidade. Capítulo 1. Introdução 15 1.1 Objetivos I – Realizar uma breve revisão bibliográfica sobre Engenharia de Software com ênfase em Modelos de Processos de Software ágil e tradicional; II - Fazer uma investigação científica sobre Modelos de Processos de Software Ágil: Scrum e Extreme Programming (XP); III – Realizar uma análise comparativa entre os modelos de processos levantados no item II; IV – Expor um questionário para empresas de desenvolvimento de software sobre os modelos de processos levantados no item II; V – Expor um questionário para desenvolvedores de software sobre os modelos de processos levantados no item II; VI - Projetar os resultados das avaliações. 1.2 Justificativa Cada vez mais os setores da economia (primário, secundário e terciá- rio) tem feito uso (e se tornado dependente) das facilidades providas pelos avanços e descobertas da tecnologia da informação. Tecnologias de previsão do tempo e de localização via satélite, por exemplo, são utiliza- das no campo para aumentar a produtividade da lavoura e a eficiência de maquinas colheitadeiras. Softwares que gerenciam toda a cadeia de produção e que controlam máquinas e robôs são cada vez mais comuns nas fábricas. Sistemas de venda e controle de estoque são diferenciais estratégicos indispensáveis ao comércio. Diante deste cenário, produzir e manter software dentro de custos, prazos e critérios de qualidade ade- quados torna-se requisito obrigatório (PRESSMAN, 2011). O modelo de processo é de grande relevância no processo de desenvolvimento de software, com o grande avanço da tecnologia a sociedade atual se tornou dependente de produtos computacionais que tem por objetivo facilitar o dia a dia. Um software desenvolvido sem padrões de engenharia, pode se tornar um grande problema para os seus utilizadores e também para seus desenvolvedores tornando-o de difícil manutenção. 1.3 Enunciado do Problema O produto computacional no cenário presente tem trazido facilidades à sociedade, o software propiciou redução de gastos, redução de mão de obra, agilidade, melhora na tomada de decisões, segurança na informação, automatizações de processos dentre outros benefícios. Um software desenvolvido sem padrões de engenharia impacta diretamente na sociedade. O modelo de processos de software é um dos padrões de engenharia, escolher o processo correto para o desenvolvimento de software é de grande importância. Logo a Capítulo 1. Introdução 16 análise comparativa de dois modelos de processo de software ágil proporcionará uma visão mais ampla sobre a importância deste no processo. 1.4 Metodologia Revisão de literatura: Apresentar referências teóricas de grandes intelectuais da área de engenharia de software com ênfase em modelos de processos ágil. Pesquisa de campo: Observar, analisar e coletar dados de empresas de desenvol- vimento de software através de um questionário referente ao modelos de processos de software ágil. Levantamento de dados: Divulgar um questionário com perguntas sobre modelos de processos de software ágil para desenvolvedores de software. 1.5 Organização do Trabalho O capítulo 2 demonstrará os trabalhos correlatos, os quais têm estreita relação com o tema geral deste trabalho, com o objetivo de enriquecer cientificamente a monografia. O capítulo 3 refere-se a ciência da Engenharia de Software a qual compreende o conteúdo responsável pela qualidade do produto computacional. Nesse contexto destaca- se o conceito do software, as suas áreas de aplicação, os processo de software, bem como as metodologias tradicionais e ágeis. O capítulo 4 apresentará uma análise comparativa entre as metodologias ágeis Scrum e Extreme Programming (XP), a mesma foi feita através de critérios de autores referenciados no capítulo. O capítulo 5 abordará conceitos de Engenharia Experimental, bem como os ob- jetivos do experimento para o crescimento científico e os tipos de experimentos mais utilizados. O capítulo 6 apresentará os resultados obtidos mediante coleta de dados, através de um questionário, foi possível aferir sobre a utilização das metodologias ágeis Scrum e Extreme Programming tanto como seus benefícios, malefícios e caraterísticas específicas que o grupo obteve sobre as metodologias ágeis. O capítulo 7 abordará as conclusões que foram obtidas com a realização da mo- nografia. O capítulo 8 apresentará as referências bibliográficas que serviram de base para realização deste trabalho científico. 17 2 O ESTADO DA ARTE Neste capítulo serão exposto alguns trabalhos correlatos os quais têm estreita relação com a presente investigação cientifíca. 2.1 SCRUM E XP: Um comparativo no processo de desenvolvimento de software A revisão bibliográfica produzida por Fernandes (2011), foi realizada em relação aos conceitos da Engenharia de Software, o presente trabalho apresenta um estudo sobre diversos métodos tradicionais e duas metodologias ágeis, explicando seus principais con- ceitos e processos adotados e realizando uma análise comparativa do Scrum e do Extreme Programming na fase de implementação. Como resultado da revisão bibliográfica estudos comprovam que é possível com- binar praticas dessas metodologias ágeis e obter sucesso, Fernandes (2011) destaca que o uso das metodologias devem ser escolhidas de acordo com o projeto que será implemen- tado e que ambas as metodologias ágeis estudadas tendem a eliminar antigas práticas provenientes das metodologias tradicionais. O trabalho do Fernandes (2011), relaciona-se a este trabalho por ter abordado o mesmo tema central, no caso, uma analise comparativa de modelos de processo de software ágil Scrum e Extreme Programming. Assim o que os diferem é que o presente trabalho tem como objetivo realizar uma análise comparativa de modelos de processos de software na fase de implementação, com o objetivo de destacar a importância dessa etapa, cuja revisão do autor é a fase a qual demanda mais tempo no processo e considerada de suma importância.2.2 Analise Comparativa das Metodologias Ágeis: Scrum, XP e FDD O artigo científico escrito por Paz, Duarte e Bigao (2017), foi realizado com o objetivo de avaliar e comparar as similaridades assim como as diferenças nas metodolo- gias ágeis Extreme Programming (XP), Scrum e Feature Driven Developent (FDD) para auxiliar na escolha do método que melhor se adapte a realidade do desenvolvedor e sua equipe. Para alcançar os resultados foi realizada uma pesquisa exploratória, descritiva, comparativa e qualitativa. Como resultado do artigo científico o autor não tem a intenção de dizer qual o melhor método e sim apenas demonstrar através de um estudo científico a comparação entre os mesmos. Segundo Paz, Duarte e Bigao (2017), as diferenças mais acentuadas entre as metodologias são as inspeções de código em FDD, além desta possuir um foco maior em documentação, a XP apresenta a escrita dos testes antes da implementação Capítulo 2. O Estado da Arte 18 e a programação em pares demonstrando uma ênfase maior com a etapa de testes, no entanto não existe a preocupação formal em fazer a análise dos riscos, já a Scrum com suas reuniões diárias e revisões demonstram uma ênfase na agilidade. O trabalho do Paz, Duarte e Bigao (2017), relaciona-se a este por ter abordado o mesmo tema central, sendo uma análise comparativa de modelos de processo de software ágil Scrum e XP. Entretanto, o que os difere é que o presente trabalho tem como objetivo realizar uma análise comparativa entre três modelos de processos de software, acrescen- tando outra metodologia na análise comparativa, a Feature Driven Developent (FDD), a qual destaca e auxilia o desenvolvedor e a sua equipe na escolha do método que mais se adapta para alcançar os objetivos no projeto. 2.3 Análise das Metodologias Ágeis XP e Scrum no Desenvolvimento de um Software de Gerenciamento de Abastecimento O artigo científico escrito por Vidor, Oliveira e Barbosa (2013), buscou analisar como as metodologias ágeis XP e Scrum podem contribuir para o desenvolvimento de um software que gerencie o abastecimento. O presente trabalho teve como objetivo específico descrever a visão dos funcionários da empresa pesquisada sobre a adoção de um novo método para o desenvolvimento do software. Para alcançar os resultados adotou-se uma abordagem qualitativa dos dados, com pesquisa descritiva e pesquisa de campo. O artigo científico demonstrou que os entrevistados tiveram uma boa adaptação com o método implantado, alcançando assim os objetivos propostos. Os resultados apon- taram que as metodologias ágeis contribuíram para o aumento do desempenho, produti- vidade e redução de custo, além de aumentar a confiabilidade do cliente e o empenho dos profissionais envolvidos no desenvolvimento. O trabalho do Vidor, Oliveira e Barbosa (2013), relaciona-se a este trabalho por ter abordado o mesmo tema central, sendo uma análise comparativa de modelos de processo de software ágil Scrum e XP. Esse trabalho foi escolhido como referência de estudo, pois o mesmo apresenta um estudo de campo com os funcionários da empresa, responsável pelo desenvolvimento do software, sobre as metodologias ágeis utilizadas. O trabalho destaca como os desenvolvedores lidaram com a metodologia implantada e como conseguiram chegar nos objetivos propostos. 2.4 Métodos Ágeis A revisão bibliográfica produzida por Libardi e Barbosa (2010) apresenta um es- tudo sobre as metodologias ágeis de desenvolvimento, o presente trabalho é um breve estudo das metodologias ágeis em geral e uma especificação detalhada dos papéis, regras e práticas da metodologia Scrum e XP. Capítulo 2. O Estado da Arte 19 Os estudos da revisão bibliográfica comprovaram que a metodologia ágil mostra uma maneira de trabalhar bem organizada e interativa, podendo inclusive contribuir para um ambiente de trabalho mais amigável, portanto é uma opção para se obter os diferencias desejados. Ainda segundo Libardi e Barbosa (2010), no que diz respeito a análise compa- rativa de métodos ágeis, pode-se concluir que há várias semelhanças entre si, entretanto, algumas particularidades foram notadas pela dupla de programadores, com os user sto- ries e a escrita dos testes antes da implementação no XP, com reuniões de planejamento diárias e de revisão no SCRUM. 2.5 Comparação Entre os Processos dos Métodos Ágeis XP, Scrum e FDD e ASD em Relação ao Desenvolvimento Iterativo Incremental O artigo científico produzido por Fagundes, Deters e Santos (2008), apresenta uma comparação entre os processos propostos pelos métodos ágeis XP, Scrum, FDD e ASD, em que auxilia a equipe de desenvolvimento na escolha do método que melhor se adapta a suas expectativas. Como resultado do artigo científico os autores Fagundes, Deters e Santos (2008), concluem que os métodos ágeis selecionados para fazerem parte deste estudo apresentam atividades bastantes semelhantes em relação aos seus processos de desenvolvimento. Po- rém algumas atividades apresentam particularidades, como por exemplo: a programação em dupla, as user stories escritas pelos clientes e a escrita dos testes antes da implementa- ção do XP; as reuniões de planejamento diárias e de revisão adotadas são peculiaridades do Scrum. O trabalho dos autores Fagundes, Deters e Santos (2008), relaciona- se a este por ter abordado o mesmo tema central, no qual é feito uma análise comparativa de modelos de processos de software ágil Scrum e XP. Já o que os difere é que o artigo científico acrescenta duas metodologias FDD e ASD na análise comparativa, tendo como objetivo auxiliar a equipe de desenvolvimento no melhor método que se adeque ao projeto. 2.6 Considerações finais As investigações científicas citadas acima abordaram as diversas áreas da ciência de Engenharia de Software, tendo como ênfase as metodologias de software ágeis. Através dos autores citados acima, foi possível proporcionar uma visão atual das metodologias. Através do estudo nas revisões bibliográficas, foi possível analisar que mesmo as metodologias de processo de software ágil terem suas peculiaridades e diferenças, todas elas destacam-se por criar software de qualidade e por eliminar antigas práticas provenientes das metologias tradicionais. 20 3 ENGENHARIA DE SOFTWARE Breve revisão bibliográfica sobre Engenharia de Software com ênfase em modelos de processos de software ágil e tradicional 3.1 Conceito de Software Segundo Pressman (2011), software consiste em instruções (programas de computador) que, quando executadas, fornecem características, fun- ções e desempenho desejados, estrutura de dados que possibilitam aos programas manipular informações adequadamente e informação descri- tiva, tanto na forma impressora como na virtual, descrevendo a operação e o uso dos programas. Para Sommerville (2011), o software não se trata apenas da parte lógica (programas de computadores), mas de toda a documentação associada e as configurações necessárias para que o sistema funcione corretamente. Segundo Sommerville (2011), o mundo moderno não poderia existir sem o soft- ware. As infraestruturas, serviços nacionais, manufaturas e distribuições industrias são totalmente informatizadas e controladas por sistemas computacionais. Os software estão presentes intensivamente nas várias áreas da sociedade, podendo citar também a área de entretenimento, desde jogos, cinemas, televisão entre outros. Conforme analisado, verificou-se o conceito de software e a importância do mesmo na vida das pessoas. Portanto, o estudo da ciência de Engenharia de Software se torna essencial para produzir softwares de qualidade. Os conceitos da ciência de Engenharia de Software serão expostos no tópico a seguir. 3.2 Conceito de Engenharia de Software Segundo Pressman (2011), "A engenharia de software é uma tecnologia em cama- das". Conforme apresentado na Figura 1. De acordo analisado na Figura 1 para que se desenvolva um software de qualidade é preciso estar fundamentado em um comprometimento organizacional com particulari- dades. Segundo Pressman (2011), "A pedra fundamentalque sustenta a engenharia de software é o foco na qualidade". O alicerce da Engenharia de Software é a camada de processos. Segundo Pressman (2011), Os processos têm a função de manter as camadas de tecnologia consistentes, possibilitando o desenvolvimento de forma organizada e dentro da meta. Para que o software tenha qualidade são aplicados uma série de atividades no desenvolvimento. Capítulo 3. Engenharia de Software 21 Figura 1 – Representa modelo tecnologia em camadas Fonte:Pressman (2011, p.39) Os métodos da Engenharia de Software são uma sequência de atividades e pas- sos para obter um software de qualidade. A aplicação do mesmo é fundamental nesta engenharia para atingir a qualidade do produto computacional, sendo este o seu foco principal. Segundo Pressman (2011), "a definição de métodos da Engenharia de Software é uma ampla gama de tarefas, que incluem: comunicação, análise de requisitos, modelagem de projeto, construção de programa, testes e suporte". A camada de ferramentas de software fornecem suporte automatizado ou semiautomizado para o processo e para os métodos. Quando as fer- ramentas são integradas, de modo que as informações criadas por uma ferramenta possam ser usadas por outra, é estabelecido um sistema para o suporte ao desenvolvimento de software, denominado engenharia de software com auxílio do computador. (PRESSMAN, 2011). A camada de ferramentas tem o papel de auxiliar no cumprimento da ampla gama de tarefas na construção de um software, auxiliando as equipes de suporte e desenvolvi- mento na solução de problemas e obtenção de melhorias. São ferramentas que facilitam o uso dos conceitos de Engenharia de Software. 3.3 Campos de aplicação do software O fator mais significante em determinar quais técnicas e métodos de Engenharia de Software são mais importantes é o tipo de aplicação a ser desenvolvida. Existem variados tipos de aplicações. 3.3.1 Software de sistema "Conjunto de programas feito para atender a outros programas"(PRESSMAN, 2011). Capítulo 3. Engenharia de Software 22 São exemplos de sistemas operacionais (Microsoft Windows e Linux), exemplos de softwares de sistema (compiladores, editores e utilitários de gerenciamento de arquivos), IDE’s entre outros. 3.3.2 Software de aplicação "Programas sob medida que solucionam uma necessidade específica de negócio"(PRESSMAN, 2011) . Esses softwares servem para facilitar as diversas operações no ramo do negócio, facilitando o cotidiano do usuário. São exemplos de sistemas desse campo de aplicação: os softwares de gerenciamento hospitalar, sistemas de gerenciamento de hotelaria, sistemas contábeis entre outros. Pode- se notar que esse tipo de sistema atende apenas o ramo proposto, não servindo para outros tipos de negócios. 3.3.3 Software científico/engenharia "Tem sido caracterizado por algoritmos ’number crunching’ (para processamento numérico pesado)"(PRESSMAN, 2011). São softwares voltados para processamento de complexos cálculos numéricos . Exemplos de áreas onde são aplicados estes softwares: astronomia, biologia, física e outras áreas científicas. 3.3.4 Software embutido "Residente num produto ou sistema e utilizado para implementar e controlar carac- terísticas e funções para o usuário final e para o próprio sistema"(PRESSMAN, 2011). Os sistemas embarcados servem para controlar as funções do hardware de um equipamento. São exemplos destes softwares: fornos micro-ondas, roteadores, impressoras entre outros. 3.3.5 Software para linha de produtos "Projetado para prover capacidade específica de utilização por muitos clientes diferentes"(PRESSMAN, 2011). São softwares que fornecem funções genéricas que servem para diferentes regras de negócio. Um software de gestão empresarial que possui módulos básicos pode servir vários nichos de mercado, um dos maiores exemplos que se adequa a essa área de aplicação é o ERP (Enterprise Resource Program). Capítulo 3. Engenharia de Software 23 3.3.6 Aplicações para a Web/Aplicações Móveis "Chamadas de ’WebApps’, essa categoria de software centralizada em redes abarca uma vasta gama de aplicações"(PRESSMAN, 2011). De acordo com a definição de Pres- sman, estes são softwares com a finalidade de funcionamento em rede. As aplicações são utilizadas tanto em navegadores quanto em dispositivos móveis. São exemplos deste aplicativos: redes sociais, sites de notícias, whatsapp, twitter entre outros. 3.3.7 Software de inteligência artificial "Faz uso de algoritmos não numéricos para solucionar problemas complexos que não são passíveis de computação ou de análise direta"(PRESSMAN, 2011). São softwares similares a espécie humana exibida por mecanismo ou software, alguns exemplos são: a robótica, sistemas especialistas, reconhecimento de padrões de imagem e de voz, redes neurais artificiais, prova de teoremas e jogos. 3.4 Processo de software Processo é um conjunto de atividades, ações e tarefas realizadas por pessoas, que tem como objetivo em comum desenvolver um produto computacional e sua documenta- ção. (PRESSMAN, 2011). Segundo Jalote (2008), Projeto é um conjunto de atividades, ligadas por padrões de relacionamento entre ela, pelas quais se as atividades operarem corretamente e de acordo com os padrões requeridos, o resul- tado desejado é produzido. O resultado desejado é um software de alta qualidade e baixo custo. Obviamente , um processo que não aumenta a produção (não suporta projetos de software grandes) ou não pode produzir software com boa qualidade não é um processo adequado. Segundo Pressman (2011), dentro dos projetos existem metodologias (framework) que são responsáveis por estabelecer o alicerce para um processo de Engenharia de Soft- ware. O alicerce é estabelecido através de atividades metodológicas aplicáveis a todos os projetos de software, sendo elas: comunicação, planejamento, modelagem, construção e entrega. 1. Comunicação: comunicação com os envolvidos na construção do projeto e com o cliente. A intenção da comunicação é levantar os requisitos para construção de um software que atenda o cliente com todos os recursos e funções necessárias. 2. Planejamento: a construção de um projeto de software é uma jornada complexa, sabendo disso cria se um plano de projeto de software que tem por objetivo definir o trabalho de Engenharia de Software, descrevendo as tarefas técnicas a serem conduzidas, Capítulo 3. Engenharia de Software 24 os riscos prováveis, os recursos necessários, os produtos resultantes a serem produzidos e um cronograma de trabalho. 3. Modelagem: cria se um modelo para entender melhor as necessidades do soft- ware, os aspectos em termos de arquitetura, as caraterísticas do mesmo entre outros. O objetivo é saber o plano de projeto que deve ser seguido para obtenção do software. 4. Construção: a codificação do projeto de software e testes no produto computa- cional com a finalidade de revelar erros na codificação. 5. Entrega: o produto computacional é entregue completo ou parcialmente ao cli- ente, o mesmo avalia o que foi entregue e fornece o feedback, baseado na avaliação. As atividades de apoio servem para complementar as atividades metodológicas do processo de Engenharia de Software, o papel das atividades de apoio é ajudar a equipe de desenvolvimento a gerenciar e controlar o andamento do projeto (PRESSMAN, 2011). 1. Controle e acompanhamento do projeto: gerencia o progresso em relação ao plano de projeto. Esta atividade tem como objetivo avaliar os resultados parciais do pro- jeto, tomar medidas necessárias para cumprir o cronograma e resolver eventuais problemas que podem ocorrer. 2. Administração de riscos: todo projeto está sujeito a falhas desde problemas técnicos a recursos humanos. O objetivo da avaliação de riscos é criar rotinas que possam amenizar possíveis problemas durante o projeto. 3. Garantia de qualidade de software: conduz o processo de construção de projeto de software para se obter um produto de qualidade. As atividades são de verificação do andamento do projeto e auditoria de qualidade domesmo. 4. Revisões técnicas: avaliam arterfatos de Engenharia de Software. O objetivo é verificar erros nas atividades do projeto e eliminar antes que se propague para atividades seguintes. 5. Medição: define e coleta medidas (do processo, do projeto e do produto). O objetivo é avaliar a medição do andamento dos artefatos de Engenharia de Software e com isso auxiliar na entrega do produto. 6. Gerenciamento da configuração do software: gerencia os efeitos das mudanças ao longo do processo de um projeto de software. Qualquer alteração em um escopo de um projeto deve ser avaliada e julgada verificando as vantagens e desvantagens da mudança. 7. Gerenciamento da capacidade de reutilização: define critérios para reutilização de artefatos do projeto e estabelece formas para obtenção de componentes reutilizáveis 8. Preparo e produção de artefatos de software: define as atividades necessárias para criar artefatos como, por exemplo, modelos, documentos, logs, formulários e listas. Capítulo 3. Engenharia de Software 25 No processo de criação de um software os métodos que serão utilizados para criar artefatos de qualidade é de suma importância. Isto é, o projeto de software é muito importante dentro da ciência Engenharia de Software, pois defini as ações e atividades a serem tomadas pela equipe responsável pelo desenvolvimento do software com a finalidade de obter um produto de qualidade. No processo de software utilizam se modelos destes, que são roteiros a serem seguidos na elaboração de um produto computacional. Cada modelo de processo se encaixa em uma regra de negócio distinto, os conceitos de modelos de processos serão expostos no tópico a seguir. 3.5 Modelos de processo O modelo de processo é o passo necessário para elaboração de um produto com- putacional. Segundo Sommerville (2011), "modelo de processo de software é uma repre- sentação simplificada de um processo de software". Segundo Pressman (2011), "um modelo de processo fornece um guia específico para o trabalho de Engenharia de Software. Ele define o fluxo de todas as atividades, ações e tarefas, o grau de iteração, os artefatos e a organização do trabalho a ser feito". Cada modelo de processo é uma representação de um processo de software para atender as exigências da obtenção do produto computacional. Ou seja, cada processo de software se aloca dentro de uma metodologia ou modelo. O modelo de processo é de grande importância na ciência Engenharia de Software, contribuindo para obtenção de desenvolvimento de software de qualidade. Pode-se obser- var dois tipos de abordagens em relação aos modelos de processo: Tradicional e Ágeis, os quais serão tratados no tópico a seguir. 3.5.1 Modelos Tradicionais "Concentra-se em estruturar e ordenar o desenvolvimento de software. As ativida- des e tarefas ocorrem sequencialmente, com diretrizes de progresso definidas"(PRESSMAN, 2011). Segundo Soares (2004), "as metodologias tradicionais são conhecidas como ori- entadas a documentação. Possuem como característica principal dividir os processos de desenvolvimento em fases ou etapas definidas". Os modelos tradicionais são caracterizados por serem realizados sequencialmente, isto é, as etapas do desenvolvimento do produto computacional devem ser concluídas integralmente para que possa migrar para outra tarefa. Em processos de softwares que possuem requisitos bem definidos e estáveis, a Capítulo 3. Engenharia de Software 26 utilização do modelo tradicional pode ser aplicada. Observa-se que o modelo tradicional tem aplicabilidade no desenvolvimento de software, no tópico a seguir serão explanados os modelos de processos tradicionais mais conhecidos. 3.5.1.1 Modelo de Processo Sequencial Linear (Clássico ou Cascata) Segundo Pressman (2011), O modelo cascata, algumas vezes chamado ci- clo de vida clássico, sugere uma abordagem sequencial e sistemática para o desenvolvimento de software, começando com o levantamento de ne- cessidades por parte do cliente, avançando pelas fases do planejamento, modelagem, construção, emprego e culminando no suporte contínuo do software concluído. Representado na Figura 2 Figura 2 – Representa o modelo sequencial linear (Clássico ou Cascata Fonte: Pressman (2011, p. 60) O modelo cascata é o modelo mais antigo da Engenharia de Software e ainda possui aplicabilidade na indústria, porém esse processo recebe muitas críticas que geraram questionamentos sobre a sua eficácia. Por ser um modelo linear as etapas do processo de software precisam estar bem de- finidas, no modelo cascata as etapas do desenvolvimento do software devem ser concluídas integralmente para que possam migrar para outra tarefa. Uma vez feito o levantamento de requisitos no projeto inicial, não é permitido voltar o fluxo do processo para fazer alterações. O produto computacional só pode ser implantado para o cliente quando o software estiver pronto integralmente, não permitindo uma versão parcial do sistema. Devido o ritmo acelerado de trabalho e as mudanças constantes nos projetos, o modelo cascata frequentemente se torna inadequado nestes casos. Entretanto, podem servir em projetos nos quais os requisitos são fixos e bem definidos e a equipe de desen- volvimento tem a possibilidade de finalizar uma tarefa integralmente e continuar para a próxima (PRESSMAN, 2011). Capítulo 3. Engenharia de Software 27 3.5.1.2 Modelo Protótipo / Prototipação "Um protótipo é uma versão inicial de um sistema de software, usado para de- monstrar conceitos, experimentar opções de projeto e descobrir mais sobre o problema e suas possíveis soluções"(SOMMERVILLE, 2011). Figura 3 – Representa o modelo de prototipação Fonte: Sommerville (2011, p. 30) O modelo de prototipação tem uma grande aplicabilidade para auxiliar usuários quanto aos requisitos do sistema. Ao avaliar os requisitos junto ao cliente é criado um projeto rápido que contém os requisitos solicitados pelo cliente. O mesmo avalia o pro- tótipo e realiza um feedback sobre a avaliação. O ciclo é repetido até todos os requisitos serem identificados. Não tendo mais requisitos a serem identificados o protótipo poderá ser transformado no produto final, ou ser iniciado a construção do zero de um produto final. "Para reduzir os custos de prototipação e acelerar o cronograma de entrega, pode- se deixar alguma funcionalidade fora do protótipo"(SOMMERVILLE, 2011). Por se tratar de um protótipo, o gerenciamento e tratamentos de erros podem ser ignorados, o que pode ser insuficiente para que o usuário teste um protótipo que atenda os requisitos propostos. Outro grande problema com a prototipação é que o usuário pode utilizá-lo como se fosse uma versão final do sistema. Sendo assim tende a solicitar alterações e ajustes no funcionamento do mesmo para corrigir bugs e problemas de desempenho. Por se tratar de um protótipo, o gerenciamento e tratamento de erros não foram feitos adequadamente, o que ocasiona uma contradição entre a equipe de desenvolvimento e o usuário teste. 3.5.1.3 Modelo Espiral "Modelo espiral é um modelo de processo de software evolucionário que une a natureza interativa da prototipação com os aspectos sistemáticos e controlados do modelo cascata"(PRESSMAN, 2011). Capítulo 3. Engenharia de Software 28 Figura 4 – Representa o modelo espiral Fonte: Pressman (2011, p. 65) O modelo espiral se baseia em um ciclo espiral que é executado e interado até a finalização da versão final do produto. A grande diferença da prototipação é que o modelo espiral consiste em uma estratégia que tem como objetivo de forma incremental ampliar o grau de definição e a implementação de um sistema, enquanto diminui os risco do mesmo. O primeiro circuito em volta da espiral é para determinar os objetivos da interação, do planejamento e do cronograma que será desenvolvido no processo. A modelagem é o segundo circuito do modelo espiral, no qual é avaliado os riscos da interação e corrigidos os problemas. A definição dos riscos depende de um profissional com uma grande capacidade técnica, um risco não descobertopode causar problemas no andamento do projeto. O terceiro circuito é definido como a construção do código do produto computacional. A entrega e o feedback do cliente é feito no quarto circuito em volta do espiral, ao recebê-lo é planejado tudo que será feito na próxima interação. 3.5.1.4 Modelo de Processo Incremental "O desenvolvimento incremental é baseado na ideia de desenvolver uma imple- mentação inicial, é necessário expor a mesma aos comentários dos usuários e conti- nuar por meio da criação de várias versões até que um sistema adequado seja desen- volvido"(SOMMERVILLE, 2011). Cada incremento entregue ao cliente incorpora alguma funcionalidade de valor. Os incrementos inicias são os que possuem as funcionalidades mais importantes ou ur- gentes. Quando se entrega ao cliente, o mesmo pode avaliar e verificar se foi apresentado o requisitado, diante disto, o processo é repetido até a finalização integral do sistema. (SOMMERVILLE, 2011). Capítulo 3. Engenharia de Software 29 Figura 5 – Representa o modelo incremental Fonte: Sommerville (2011, p. 22) Observa-se que o modelo de processo incremental surgiu como uma evolução do modelo sequencial linear, afim de fornecer melhores práticas de desenvolvimento de soft- ware de qualidade e com menor quantidade de tempo. Contudo, as práticas de desenvol- vimento de software evoluíram, tornando-se o método obsoleto deixando de atender aos requisitos de velocidade de desenvolvimento. O surgimento da metodologia de processos ágeis tem como objetivo sanar esse problema. O conceito e exemplo serão expostos no tópico a seguir. 3.5.2 Modelos Ágeis Métodos ágeis, universalmente, baseiam-se em uma abordagem incre- mental para a especificação, o desenvolvimento e a entrega do software. Eles são mais adequados ao desenvolvimento de aplicativos nos quais os requisitos de sistema mudam rapidamente durante o processo de desen- volvimento. Destinam-se a entregar o software rapidamente aos clientes, em funcionamento, e estes podem, em seguida, propor alterações e novos requisitos a serem incluıdos nas iterações posteriores do sistema. Tem como objetivo reduzira burocracia do processo, evitando qualquer tra- balho de valor duvidoso de longo prazo e qualquer documentação que provavelmente nunca sera usada (PRESSMAN, 2011). "As técnicas de metodologias ágeis para desenvolvimento de sistemas são uma resposta as metodologias tradicionais, também conhecidas como metodologias pesadas ou orientadas a documentação"(BEEDLE, 2001). Mesmo com a evolução das técnicas, ferramentas e dos computadores nos últimos anos, ainda era muito difícil entregar um sistema de software de qualidade dentro dos prazos e custos estimados. Segundo Sommerville (2011), o surgimento da metodologia ágil se idealizou através da insatisfação com as abordagens das metodologias tracionais e com abordagens pesadas, que tem como foco principal as documentações e regulamentações. Os requisitos cada vez mais complexos e as constantes alterações nos projetos aumentaram o trabalho das equipes Capítulo 3. Engenharia de Software 30 de desenvolvimento, contudo na década de 1990 foram propostos novos métodos ágeis de desenvolvimento de software. A seguir serão apresentados os modelos de processos ágeis utilizados para a com- paração 3.5.2.1 Scrum Segundo Schwaber e Sutherland (2013), scrum é um framework estrutu- ral que está sendo usado para gerenciar o desenvolvimento de produtos complexos desde o início de 1990. Scrum não é um processo ou uma téc- nica para construir produtos; em vez disso, é um framework dentro do qual você pode empregar vários processos ou técnicas. O Scrum deixa claro a eficácia relativa das práticas de gerenciamento e desenvolvimento de produtos, de modo que você possa melhorá-las. Ainda segundo o mesmo autor, o principal objetivo do scrum é o desenvolvimento de sistemas de software envolvendo uma porção de variáveis técnicas e de ambiente como: requisitos, tecnologia e recursos, que podem mudar durante o processo. O foco desse método é encontrar uma maneira dos membros da equipe trabalharem para produzir o sistema de software de forma flexível e em um ambiente passível de sofrer constante mudança. O resultado desse trabalho deve ser um sistema de software que será realmente útil para o contratante. Conforme apresentado por Schwaber (2004), o scrum é um modelo de desenvolvi- mento ágil de sistema de software que permite manter o foco na entrega de maior valor de negócio e no menor tempo possível. Com isso, permite-se a rápida e contínua inspeção do sistema em produção em intervalos de duas a quatro semanas conhecidos como sprints. Esse método é dividido sucintamente em três papéis: a) Product Owner: dono do produto, é o representante de todos os envolvidos no projeto, é o responsável por listar as prioridades e os requisitos. Juntamente com outros envolvidos, ele é o responsável por revisar e aprovar as entregas ao final de cada sprint; b) Scrum Master: é o gerente do projeto, responsável por garantir a aplicação das práticas e valores do scrum, assim como repassar os ensinamentos do método aos outros membros do projeto. As suas principais responsabilidades são remover os obstáculos, conduzir o daily scrum, revisar cada sprint, intermediar a comunicação entre o time e o product owner, entre outras; c) Scrum Team: : correspondem aos membros encarregados de realizar as atividades do projeto. Suas principais atividades são: organizar e gerenciar suas próprias atividades e geralmente são dedicados integralmente ao projeto. Segundo Pressman (2011), os princípios do scrum são consistentes com o ma- nifesto ágil e são usados para orientar as atividades de desenvolvimento dentro de um Capítulo 3. Engenharia de Software 31 processo que incorpora as seguintes atividades estruturais: requisitos, análise, projeto, evolução e entrega. Em cada atividade metodológico ocorrem tarefas a serem realizadas dentro de um padrão de processo chamado sprint. Backlog: uma lista com prioridades dos requisitos ou funcionalidades do projeto que fornecem um valor comercial ao cliente. Sprints: unidades de trabalho solicitadas para atingir um requisito estabelecido do backlog e que precisa ser ajustando dentro de uma janela de tempo (prazo) tipicamente 30 dias. Backlog work itens: permite que os membros de uma equipe trabalhem em um ambiente de curto prazo, porém estável. Reuniões Scrum: são reuniões curtas, realizadas diariamente pela equipe scrum. Demos: entrega do incremento de software ao cliente para que a funcionalidade implementada possa ser demonstrada e avaliada pelo mesmo. Figura 6 – Fluxo do Processo Scrum Fonte: Pressman (2011, p. 96) 3.5.2.2 Extreme Programming De acordo com Beck (2004), Extreme Programming foca no desenvol- vimento rápido do sistema de software e procura garantir a satisfação do contratante, além de ainda favorecer o cumprimento das estimativas. Capítulo 3. Engenharia de Software 32 As práticas, valores e regras desse método proporcionam um ambiente agradável de desenvolvimento de sistemas. Os princípios chaves e as prá- ticas que compõem essa metodologia, não possuem nada de novo, quando analisadas individualmente. Nesse método, essas típicas práticas das me- todologias ágeis foram reunidas e alinhadas de tal forma que se criasse uma independência entre elas e, assim, surgiu uma nova metodologia de desenvolvimento de software. Os quatro valores que estabelecem as ba- ses para todo trabalho realizado da XP são comunicação, simplicidade, feedback e coragem. Segundo Fernandes (2011) as definições são as listadas em seguir. a) Comunicação: muitos problemas que ocorrem no decorrer do desenvolvimento do sistema de software podem ser relacionados como falhas de comunicação entre a equipe de desenvolvimento e o contratante ou entre a própria equipe de desenvolvimento. Um indivíduo pode deixar de comunicar um fato importante a outra pessoa, um desenvolvedor pode deixar de levantar uma questão importante à equipe ou ao próprio cliente. O Extreme programmingmantém o fluxo de comunicação através da utilização de algumas práticas que não podem ser desenvolvidas sem comunicação; b) Simplicidade: selecionar a alternativa mais simples que tem a probabilidade de funcionar. O Extreme programing baseia-se no fato de que é melhor fazer algo mais simples e alterá-lo conforme as necessidades forem surgindo, do que tentar prever as possíveis alterações futuras, trazendo uma complexidade que não será necessária no futuro; c) Feedback: todos os problemas devem ser evidenciados o quanto antes, a fim de serem corrigidos o mais rápido possível, para que possam ser incorporados de forma rápida ao sistema de software que está sendo construído. Todas as necessidades são descobertas o quanto antes; d) Coragem: para apontar um problema no sistema de software, para simplificar um código que já foi testado e aprovado, para solicitar ajuda quando for necessário, para comunicar ao cliente possíveis alterações nos prazos estimados para entrega de versões e também para realizar alterações no processo de desenvolvimento do sistema. Junto desses quatro valores, segundo Sommerville (2011) também apresenta-se um conjunto de regras e práticas constantes de quatro atividades metodologias sendo elas: planejamento, projeto, codificação e testes. Planejamento: atividade de levantamento de requisitos que capacita os membros da equipe XP a entender o ambiente de negócios do software e possibilita ter uma com- preensão ampla sobre os resultados solicitados. Projeto: segue rigorosamente o princípio KIS (keep it simple, ou seja, preserve a simplicidade). É melhor um projeto simples do que uma representação mais complexa. O projeto oferece um guia de implementação para uma história de acordo com o crescimento do projeto. Capítulo 3. Engenharia de Software 33 Codificação: antes da codificação, a abordagem do XP desenvolverá uma série de testes de unidades que exercitarão cada uma das histórias a serem inclusas na versão (in- cremento de software). Se o código estiver completo poderá ser testado em unidade, a fim de promover o feedback para os desenvolvedores. Um conceito importante na codificação é a programação em par. A XP recomenda que duas pessoas trabalhem juntas para criar um código para uma história. Isso fornece um mecanismo de resolução de problemas em tempo real. Testes: os testes de unidade devem ser criados e implementados usando-se uma me- todologia que os capacitem de serem automatizados. Toda vez que o código for modificado o mesmo será testado. Figura 7 – Fluxo do Processo XP Fonte: Pressman (2011, p. 88) Segundo Fernandes (2011) Os papéis e responsabilidades do Extreme Programming são os descritos a seguir: a) Gestor: responsável pela tomada de decisões. O objetivo do gestor é manter a comunicação com a equipe para ajustar as dificuldades ou problemas no projeto, além de determinar qual a situação atual do mesmo. b) Consultor: é um colaborador externo a equipe e possui conhecimento técnico específico necessário ao projeto em questão. c) Desenvolvedor:codifica programas, aplica testes e mantém o código o mais sim- ples possível. d) Cliente: é responsável por escrever as histórias e os testes dos requisitos funcio- Capítulo 3. Engenharia de Software 34 nais, além de selecionar e validar os requisitos do sistema. É ele o responsável por definir a prioridade de implementação para cada requisito. e) Testador: é o pessoa responsável por auxiliar o cliente a escrever os testes dos requisitos funcionais. Ele também executa os testes dos requisitos periodicamente e co- munica o resultado dos mesmo para o restante da equipe. f) Monitor: o monitor é responsável por acompanhar o progresso de cada interação e é responsável por avaliar se o objetivo é viável de acordo com as limitações de recursos e tempo. O monitor também é responsável pelas estimativas realizadas pela equipe de desenvolvimento, além de verificar se alguma mudança pode ser necessária no processo. g) Treinador: é o elemento responsável por garantir a integridade do processo extreme programming como um todo. Segundo Fernandes (2011) As doze práticas do Extreme Programming são as lis- tadas a seguir a) Padrão na codificação: os desenvolvedores devem escrever todo o código fonte alinhado às regras que enfatizam a comunicação durante a codificação. Esse padrão é definido antes de iniciar o projeto e deve ser seguido por toda a equipe de desenvolvimento. b) Semanas de quarenta horas: o extreme programming possui uma regra que limita em quarenta horas o tempo total de trabalho referente a semana e por colaborador. c) Cliente no mesmo local da equipe: usuário que responde pelo cliente deve integrar-se a equipe de desenvolvedores, com a finalidade de responder as dúvidas re- ferentes ao projeto. d) Integração contínua: são geradas versões internas e o sistema é integrado quantas vezes forem preciso ao dia, após uma história ser finalizada. e) Propriedade coletiva: os desenvolvedores da equipe possuem a permissão de alterar qualquer parte do código fonte do projeto. f) Programação em pares: dois desenvolvedores codificam o sistema em um mesmo computador, com o objetivo de solucionar problemas com maior eficiência e aumentar a qualidade do código fonte. g) Jogo de planejamento: os desenvolvedores do sistema e o cliente definem juntos o esforço para implementar as histórias e o tempo das interações. h) Incrementos curtos: um incremento funcional e simples gerado com duração máxima de dois meses. i) Metáfora: nessa prática é elabora uma descrição que permite todos os envolvidos no projeto explicarem como o sistema funciona. j) Projeto simples: essa prática admite que o sistema deve ser projetado da forma Capítulo 3. Engenharia de Software 35 mais simples possível, respeitando as necessidades atuais do mesmo. As complexidades irrelevantes devem ser removidas quando descobertas. k) Testes: os testes funcionais são escritos pelo cliente, enquanto que os testes de unidade são escritos pela equipe do projeto e executados continuamente. l) Reestruturação: consiste na melhoria contínua do sistema. São realizadas ativida- des como remoção de códigos fontes duplicados, melhorias na comunicação, simplificações no processo, aplicando práticas de clean code entre outras. 3.6 Considerações Finais O capítulo apresentou os conceitos relativos a ciência, Engenharia de Software. Foram abordados os conceitos de software, conceitos da Engenharia de Software, campos de aplicação, processos de software e as metodologias de desenvolvimento tradicionais e ágeis. Mediante o estudo da ciência, Engenharia de Software, pode-se notar a importância da mesma para alcançar um nível de qualidade no processo de desenvolvimento. Nesse contexto de desenvolvimento de software, no qual os sistemas estão cada vez mais presentes na sociedade, e com grandes capacidades de processamento, a utilização das técnicas da Engenharia de Software proporcionaram maior qualidade nos produtos computacionais e auxílio para amenizar os problemas referentes ao projeto. Pode-se ob- servar que a Engenharia de Software auxilia desde a escolha do campo de aplicação do software quanto aos processos do mesmo que serão definidos junto a metodologia. Com a utilização desses conceitos, consegue-se desenvolver um produto de qualidade. No capítulo seguinte serão apresentados uma analise comparativa entre as meto- dologias ágeis Scrum e Extreme Programming (XP). 36 4 ANALISE COMPARATIVA Este capítulo apresenta a comparação das duas metodologias ágeis que foram es- colhidas : Scrum e Extreme Programming (XP) estas foram comparados por meio de critérios referenciados nos autores Pressman (2011) e Sommerville (2011). 4.1 Comparação Scrum e Extreme Programming (XP) Na tabela 1 podemos observar uma análise comparativa entre os modelos Scrum e Extreme Programming (XP). Conforme apresentado na tabela , o modelo Scrum é o modelo que atende 62,5 % dos critérios identificados para comparação. O modelo que segue uma metodologia onde o seu planejamento é realizadode forma interativa entre desenvolvedores e cliente. Todos os requisitos identificados ao desenvolvimento do software são planejados em um quadro de tarefas que deverão ser realizadas no tempo de ciclo do desenvolvimento. Todos os dias são realizadas reuniões, nas quais são discutido o que foi desenvolvido no dia anterior e o que será desenvolvido no dia seguinte. O modelo Extreme Programming – XP atende 62,5 % dos critérios identificados para a comparação. Este modelo segue como metodologia um planejamento interativo entre desenvolvedores e cliente, também são realizados testes de unidade sempre antes do desenvolvimento do software, junto com os testes, há também a programação em par, a xp recomenda que duas pessoas trabalhem juntos na codificação, isso fornece um mecanismo para resolução de problemas. O modelo tem um conjunto de valores para ser seguido, a finalidade de trazer bem estar para equipe, sendo um diferencial desse modelo. Tabela 1 – Experimento - Análise Comparativa Tabela Análise Comparativa Modelos de Processos Ágeis Critérios Scrum XP Conjunto de Valores X Reuniões Diárias X Planejamento Interativo X X Quadro de tarefa X Programação em Par X Templo de Ciclo X Teste Unitário X Participação do Cliente X X Fonte: Do autor Capítulo 4. Analise Comparativa 37 4.2 Considerações Finais Por meio dos resultados obtidos na análise comparativa entre os modelos de pro- cessos de software ágeis, conclui-se que os dois resultam em um produto de software de qualidade, a escolha de um ou de outro irá depender inteiramente de qual se adequará melhor ao projeto. Apesar das peculiaridades citadas em ambas as metodologias ágeis estudadas, as duas tendem a eliminar antigas práticas, provenientes das metodologias tradicionais. 38 5 ENGENHARIA EXPERIMENTAL O capítulo apresenta uma introdução a Engenharia Experimental, tendo como finalidade expor os objetivos da experimentação e os tipos mais utilizados. 5.1 Conceito Travassos, Gurov e Amaral (2002) "experimentação é o centro do processo cientí- fico, somente experimentos verificam as teorias". Através dos experimentos os elementos são explorados com a finalidade de formular novas teorias ou corrigir as existentes. No entendimento do autor as atividades de Engenharia de Experimentação ofe- recem um modo sistemático, disciplinado, computável e controlado para avaliação da atividade humana em uma área do conhecimento. Ao abordar a Engenharia de Software o autor considera tanto como ciência ou engenharia. A Engenharia de Software está voltada a produção deste, tendo como base caraterísticas de produção ou engenharia. Em contrapartida os aspectos de definições e conceitos para a produção de um novo produto e a competição no mercado, exigem melhoria continua de qualidade, tanto no processo quanto no produto. É neste contexto que a parte científica da Engenharia de Software se apresenta. Para proceder a experimentação existem quatro métodos relevantes para condução do mesmo em engenharia de software, sendo eles: científico, engenharia, experimental e analítico. As metodologias são necessárias para estabelecerem uma base de engenharia e ciência na Engenharia de Software, em seguida pode-se verificar a definição dos autores para cada método. ∙ Travassos, Gurov e Amaral (2002) "Método científico observa o mundo, sugere o modelo ou a teoria de comportamento, mede e analisa, verifica as hipóteses do modelo ou da teoria." ∙ Travassos, Gurov e Amaral (2002) "Método de engenharia observa as soluções exis- tentes, sugere as soluções mais adequadas, desenvolve, mede e analisa, e repete até que nenhuma melhoria adicional seja possível". ∙ Travassos, Gurov e Amaral (2002) "Método experimental sugere o modelo, desen- volve o método qualitativo e/ou quantitativo, aplica um experimento, mede e ana- lisa, avalia o modelo e repete o processo". Capítulo 5. Engenharia Experimental 39 ∙ Travassos, Gurov e Amaral (2002) "Método analítico (ou matemático) sugere uma teoria formal, desenvolve a teoria, deriva os resultados e se possível, comparar com as observações empíricas". Assim sendo, a Engenharia de Software por estabelecer uma base de engenharia e ciência, utiliza métodos de experimentação, com o objetivo de formular novas teorias ou corrigir as existentes. 5.2 Objetivos da Experimentação Segundo Travassos, Gurov e Amaral (2002) "os objetivos relacionados à execu- ção de experimentos em Engenharia de Software são a caraterização, avaliação, previsão, controle e melhoria a respeito de produtos, processos, recursos, modelos, teorias entre outros". Pode-se notar que Conradi (2001) tem algumas definições de objetivos da experi- mentação em Engenharia de Software ∙ Observar o fenômeno, encontrar explicação, formular teorias são passos que pesqui- sadores devem fazer para compreender a informação; ∙ Auxiliar no conhecimento confiável e reduzir incerteza sobre quais teorias são ade- quadas; ∙ Mediante a experimentação pode-se eliminar abordagens inadequadas e suposições erradas; ∙ As dúvidas podem ser rejeitadas mais rapidamente com o crescimento dos traba- lhos científicos e com uma validação empírica, com isso pesquisadores poderão se concentrar nas abordagens promissoras; ∙ Antecipar as mudanças nas suposições e aplicar experimentos para explorar as con- sequências dessas mudanças. Assim sendo, constata-se que os objetivos da experimentação é encontrar as me- lhores técnicas para serem aplicadas na Engenharia de Software. No tópico a seguir serão expostos alguns tipos de experimentos conhecidos. 5.3 Tipos de Experimentos Segundo Conradi (2001) "O tipo de experimento mais apropriado em uma situação concreta vai depender, por exemplo, dos objetivos do estudo, das propriedades do processo de softwares usado durante a experimentação, ou dos resultados finais esperados". Capítulo 5. Engenharia Experimental 40 A classificação dos experimentos está relacionada aos conceitos das estratégias empíricas, sendo: survey, estudo de caso e experimento. 5.3.1 Survey Freitas et al. (1998) "A pesquisa survey pode ser descrita como a obtenção de dados ou informações sobre características, ações ou opiniões de determinado grupo de pessoas, indicado como representante de uma população alvo, por meio de um instrumento de pesquisa, normalmente um questionário." Isto é, o modelo de experimento é utilizado para analisar fatos, hipóteses e teorias através de determinado grupo. A pesquisa survey tem capacidade de levantar grande número de variáveis para serem avaliadas, entretanto não oferece controle ou medição das mesmas, não tendo respostas prontas, apenas dados que expressam a realidade do objeto de estudo. Pinsonneault e Kraemer (1993) classificam a pesquisa survey com três propósitos principais ∙ Explanatória: O objetivo é aferir uma teoria e as relações casuais. ∙ Exploratória: O objetivo é familiarizar com o tópico ou identificar conceitos inicias sobre ele. ∙ Descritiva: O objetivo é identificar situações, eventos, atitudes ou opiniões de um determinado grupo. Em relação ao tempo que os dados são coletados Sampieri (1991) cita que a pes- quisa pode ser classificada como longitudinal ou cortetransversal. ∙ Longitudinal - a coleta dos dados ocorre durante um percurso de tempo ou em períodos específicos. O objetivo é estudar as mudanças e evoluções de determinadas variáveis ou a relação entre elas. ∙ Cortetransversal - a coleta de dados ocorre em apenas um momento, com a finalidade de analisar e descrever o estado de uma variável em um determinado tempo. Isto é, a pesquisa de survey é um método que pode ser aplicado em diversos expe- rimentos, o qual tem como objetivo avaliar uma teoria ou as causas de um determinado grupo de pessoas. A utilização das técnicas se torna um importante instrumento para a análise em Engenharia de Software. Capítulo 5. Engenharia Experimental 41 5.3.2 Estudo de Caso Segundo Travassos, Gurov e Amaral (2002), "estudo de caso é utilizado para mo- nitor os projetos, atividades e atribuições. Os estudos de caso visamobservar um atributo específico e estabelecer o relacionamento entre atributos diferentes." Para Freitas e Jabbour (2001), o estudo de caso deve ser iniciado com a definição do objetivo e da abordagem, no qual o autor cita três, sendo estas: as abordagens qualitativas, quantitativas ou a combinação destas. Definido as abordagens e o objetivo de estudo de caso é feito a classificação da pesquisa social as quais são dividas em três grupos de estudos: estudos exploratórios, estudos descritivos e estudos explicativos. ∙ Estudos exploratórios - são estudos que busca descobrir ideias e soluções, para que tenha uma compreensão melhor do fenômeno de estudo. ∙ Estudos descritivos - são estudos que expõe caraterísticas de determinada população ou de determino fenômeno de estudo. ∙ Estudo Explicativos - são estudos que buscam explicar a razão dos acontecimentos, identificar os fatores que contribuem para ocorrência do fenômeno de estudo. Sabendo a definição dos grupos de estudos da pesquisa, é necessário adotar o tipo de abordagem mais favorável para atingir os objetivos da investigação. Ao se tratar de uma investigação descritiva é utilizado uma abordagem de estudo de caso quantitativa, quando a finalidade é descritiva ou explicativa se utiliza da abordagem qualitativa. Conforme Freitas e Jabbour (2001), o propósito de um estudo de caso é reunir informações detalhadas e sistemáticas sobre um fenômeno de estudo. Para K.Yin (2001), o estudo de caso é apenas uma das muitas maneiras de se fazer uma pesquisa em ciências sociais. Portanto, os estudos de caso representam uma estratégia preferida em que o pesqui- sador tem pouco controle sobre as variáveis, e o foco está em fenômenos que se encontram em algum contexto da vida real. 5.3.3 Experimento Segundo Travassos, Gurov e Amaral (2002) "experimento geralmente é realizado em laboratório e oferece o maior nível de controle". Ainda segundo o autor, o objetivo dos experimentos é manipular variáveis e manter outras fixas medindo o efeito do resultado. São utilizados para confirmar teorias, explorar relacionamentos, avaliar a previsão dos modelos ou validar medidas. Capítulo 5. Engenharia Experimental 42 De acordo o Travassos, Gurov e Amaral (2002) os experimentos podem ser feitos invitro sob condições de laboratório ou invivo sob condições normais. Portanto, por ser um dos conceitos que utilizam um maior nível de controle so- bre o processo e variáveis, os cientistas têm um melhor resultado e uma pesquisa mais estruturada e organizada. 5.4 Considerações Finais Por meio do estudo realizado sobre Engenharia de Experimentação foi possível analisar a grande relevância que tem esse campo de estudo nas pesquisas científicas. Uma pesquisa cientifica é formada por hipóteses e teorias. Ao definir uma abordagem de pesquisa científica os pesquisadores tem a eficácia de formular novas teorias ou corrigir as existentes. No que tange esse trabalho pode-se destacar as seguintes abordagens, sendo elas: (1) Método Científico, (2) Método de Engenharia e (3) Método Experimental. A abordagem sendo definida é preciso escolher o tipo de experimento que mais se adequa a este trabalho, pode-se destacar três: (1) Survey, (2) Estudo de Caso e (3) Experimento. Através do estudo foi possível identificar que a abordagem utilizada para a con- dução desta pesquisa cientifica foi o método experimental, e o tipo de experimento que mais se enquadra nessa pesquisa é Survey, em que obtém dados ou informações sobre caraterísticas de um determinado grupo sobre alguns assuntos. 43 6 EXPERIMENTO Este capítulo descreve o experimento científico que foi desenvolvido com a finali- dade de realizar uma análise quantitativa e qualitativa sobre as metodologias de software ágil Scrum e Extreme Programming (XP) propostas nesta monografia. Através da análise foram obtidos os dados os quais serão expostos no decorrer do capítulo. 6.1 Descrição do contexto e objetivos do experimento Para a condução do experimento científico foi desenvolvido um questionário e enviado para desenvolvedores de software, para serem avaliadas as informações sobre os atributos analisados. As questões enviadas para os desenvolvedores estão organizadas abaixo: Para a condução do experimento foram elaboradas quatorze (14) questões relaci- onadas aos Modelos de Processos Ágeis descrito no capítulo 3.4.3, 3.4.3.1 e 3.4.3.2. ∙ As questões 1,2,3 e 4 avaliam os voluntários que responderão o questionário, para conhecer as características dos mesmos. ∙ As questões 5,6 e 7 avaliam e compreendem a utilização e o conhecimento dos voluntários em modelos de processos de software ágil expostos no capítulo 3.4.3, 3.4.3.1 e 3.4.3.2. ∙ As questões 8,9,10,11,12 e 13 buscam identificar os benefícios, malefícios e carate- rísticas específicas que o grupo obteve com o uso das metodologias. O questionário foi conduzido através da plataforma Google Forms, que consiste em uma ferramenta de pesquisa a qual fornece, dentre outros, mecanismos para coletas das respostas e gráficos estatísticos. Para o envio do questionário foi utilizada a plataforma Linkedin, com uma mensa- gem de apresentação padrão, em que as respostas foram recebidas entre os dias 02/10/2018 e 09/10/2018. Os resultados obtidos através do experimento estão expostos no tópico a seguir. 6.2 Resultados do Experimento O subcapítulo apresenta os resultados do experimento que foram obtidos através do questionário enviado aos voluntários. Capítulo 6. Experimento 44 6.2.1 Caraterização e Nível de Escolaridade do Grupo Para a realização do experimento foram encaminhadas 112 mensagens via plata- forma Linkedin. 6.2.2 Primeira Pergunta A figura 8 representa a primeira pergunta do questionário, o asterisco simboliza o preenchimento obrigatório. Figura 8 – Primeira Pergunta Fonte: Do autor A pergunta serviu para identificar os voluntários participantes do questionário. Todos os voluntários foram essenciais para os resultados obtidos na pesquisa. 6.2.3 Segunda Pergunta A figura 9 representa a segunda pergunta do questionário, o asterisco simboliza o preenchimento obrigatório. Figura 9 – Segunda Pergunta Fonte: Do autor Esta pergunta serviu para identificar a empresa que o voluntário trabalha. 6.2.4 Terceira Pergunta A figura 10 representa a terceira pergunta do questionário, o asterisco simboliza o preenchimento obrigatório. Identificado a locação profissional, esta pergunta tem como objetivo saber o cargo ocupado pelo voluntário na empresa. Capítulo 6. Experimento 45 Figura 10 – Terceira Pergunta Fonte: Do autor 6.2.5 Quarta Pergunta A figura 11 representa a quarta pergunta do questionário, o asterisco simboliza o preenchimento obrigatório. Figura 11 – Quarta Pergunta Fonte: Do autor Esta pergunta tem como objetivo saber o grau de escolaridade dos voluntários da pesquisa. Dos 48 avaliados, 12,5% são graduandos, 47,9% são graduados, 35,4% são especia- listas, 4,2% são mestres. Por se tratar de um questionário proposto para desenvolvedores de software, em que a formação é designada para o mercado de trabalho, não foram ob- tidas respostas de mestrandos, doutorandos e doutores que são titulações voltados para área acadêmica. Estes dados estão dispostos na forma de gráfico na figura 12. Capítulo 6. Experimento 46 Figura 12 – Experimento - Gráfico 1 - Titulação dos Voluntários Fonte: Do autor Nas perguntas de avaliação existe uma descrição referente aos dados obtidos das respostas dos voluntários. Na tabela 2 pode-se observar de forma geral os dados referentes as questões 1,2,3 e 4. Após expostas as respostas das perguntas referentes a avaliação dos voluntários, serão apresentadas as perguntas específicas pertinentes a utilização e compreensão do grupo em modelos de processos de software ágeis. 6.2.6 Identificação de Compreensão e Usabilidade em Modelos de Processos Ágeis 6.2.7 Quinta Pergunta A figura 13 representa a quinta pergunta do questionário, o asterisco simboliza o preenchimento obrigatório. Figura 13 – Quinta Pergunta Fonte: Do autor
Compartilhar