Docsity
Docsity

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

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


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Uma abordagem usando features BDD, Esquemas de Metodologias de Desenvolvimento de Software

O Behavior-Driven Development (BDD) centra-se na colaboração e descoberta do com- portamento do sistema incorporando a definição de funcionalidades por meio de features baseadas em especificação por exemplos, o denominado Specification by Example.

Tipologia: Esquemas

2021

Compartilhado em 05/04/2021

AmadoBB
AmadoBB 🇧🇷

4 documentos

1 / 97

Toggle sidebar

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

Não perca as partes importantes!

bg1
Universidade de Brasília
Instituto de Ciências Exatas
Departamento de Ciência da Computação
Uma abordagem usando features BDD e Modelo de
Objetivos para o desenvolvimento ágil de software.
Fábio Barros Leal
Dissertação apresentada como requisito parcial para conclusão do
Mestrado Profissional em Computação Aplicada
Orientador
Prof. Dr. Genaina Nunes Rodrigues
Brasília
2019
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61

Pré-visualização parcial do texto

Baixe Uma abordagem usando features BDD e outras Esquemas em PDF para Metodologias de Desenvolvimento de Software, somente na Docsity!

Universidade de Brasília

Instituto de Ciências Exatas Departamento de Ciência da Computação

Uma abordagem usando features BDD e Modelo de

Objetivos para o desenvolvimento ágil de software.

Fábio Barros Leal

Dissertação apresentada como requisito parcial para conclusão do Mestrado Profissional em Computação Aplicada

Orientador Prof. Dr. Genaina Nunes Rodrigues

Brasília

Ficha catalográfica elaborada automaticamente, com os dados fornecidos pelo(a) autor(a)

Ba Barros Leal, Fábio paraUma o^ abordagemdesenvolvimento^ usando ágilfeatures de software^ BDD^ e^ Modelo / Fábio^ de BarrosObjetivos Leal; orientador Genaina Nunes Rodrigues. -- Brasília, 2019. 84 p. Dissertação (Mestrado - Mestrado Profissional em Computação Aplicada) -- Universidade de Brasília, 2019.

por1. Comportamento.^ Engenharia^ de 3.Requisitos. Engenharia^ 2. de^ Desenvolvimento Requisitos Orientada^ Guiado porÁgeis. Objetivos. I. Nunes 4. Rodrigues, Projetos Ágeis.Genaina, 5. orient.Gestão deII. Projetos Título.

Dedicatória

À minha esposa, que esteve ao meu lado na consecução desse trabalho, me dando forças e fôlego para não esmorecer. Seu auxílio foi contumaz importante, motivando e despertando a vontade de vencer. Sua dedicação e atenção nos momentos mais críticos me inspirou os pensamentos de uma forma bem especial, levando-me a novos horizontes no despertar do caminho do saber.

iv

Agradecimentos

Em primeiro lugar a Deus, que é o princípio de tudo e causa primária de todas as coisas. À minha esposa, que suportou a minha ausência, fruto de horas e meses na elaboração desta obra. Aos meus professores de mestrado que me fizeram uma nova pessoa, em especial a minha orientadora, com a sua paciência, sendo educadora, compreensiva, e às vezes rígida nos momentos em que houve a necessidade, me conduzindo ao caminho certo da apren- dizagem. Agradeço também a todos os meus amigos que me deram uma força para que eu pudesse levar a cabo este projeto, pelos incentivos e pela credibilidade.

v

Abstract

Behavior-Driven Development (BDD) focuses on the collaboration and discovery of sys- tem behavior incorporating the definition of functionalities through features based on Specification by Example. On the other hand, the Goal-Oriented Requirements Engi- neering (GORE) uses goals to capture the intentionalities of the system in different levels of abstraction, in order to specify, structure, analyze, negotiate, document and modify requirements to be effectively achieved. Therefore, GORE aims to use the concept of objective to support the initial phases of requirements engineering. Thus, taking advantage of the benefit of both approaches, the proposed work aims to propose a method to support the management of agile projects based on the BDD and GORE techniques. This method proposes the combination of BDD techniques and the use of GORE models to contribute to the management of requirements and how they achieve their respective business objectives. Additionally, we propose an algorithm to analyze qualitatively and quantitatively the feasibility of the objectives of the objectives model in the presence of tasks following the concept of living documentation of the BDD approach, and allowing traceability between requirements and business objectives and their achievement in a dynamic way. In this way, our modeling approach based on the association of BDD features with tasks can open the way to contribute to agile project management. The proposed method was implemented in the piStar tool and analyzed in the System of Bulletins and Changes (SISBOL) in order to assess the feasibility of the proposal in supporting the management of agile software projects. In this context, a method was used to collect data from the requirements specifications of the PROMISE-EB project. Through the data collection of the 16 sprints of the project it was possible to monitor percentually the degree of acceptance of the features, as well as the respective achievement of the business objectives.

Keywords: Requirements, Behavior-Driven Development (BDD), Goal-Oriented Require- ments Engineering (GORE), Agile Project, Agile Project Management

vii

Sumário

E Simulação de Evolução do Projeto 77

F Programa R: Scripts de plotagens 81

x

Lista de Figuras

  • 1 Introdução
    • 1.1 Contextualização
    • 1.2 Problema
    • 1.3 Pergunta de Pesquisa
    • 1.4 Objetivo Geral
    • 1.5 Objetivo Específicos
    • 1.6 Contribuições da pesquisa
    • 1.7 Organização do Trabalho
  • 2 Referencial Teórico
    • 2.1 Desenvolvimento Ágil de Software
      • 2.1.1 Conceito
      • 2.1.2 Desenvolvimento Ágil e a Qualidade
    • 2.2 Requisitos Ágeis
    • 2.3 Behavior-Driven Development (BDD)
    • 2.4 Goal-Oriented Requirements Engineering (GORE)
    • 2.5 Framework iStar
      • 2.5.1 Modelo SD
      • 2.5.2 Modelo SR
  • 3 Abordagem BDD-GORE
    • 3.1 As Atividades da Abordagem BDD-GORE
      • 3.1.1 Mapeamento Features BDD e o Modelo de Objetivos
      • 3.1.2 Medição do Grau de Satisfação
      • 3.1.3 Gestão da Satisfação dos Requisitos
      • 3.1.4 Acompanhamento do Grau de Satisfação
    • 3.2 A Ferramenta BDD2Goal
    • 3.3 Verificação da realização do objetivo
    • 3.4 Análise Detalhada da Estrutura de Verificação
      • 3.4.1 Configuração do experimento
      • 3.4.2 Resultados
  • 4 Estudo de Caso
    • 4.1 Descrição do Estudo de Caso
      • 4.1.1 Características Técnicas
    • 4.2 Coleta de Dados
    • 4.3 Aplicação no projeto SISBOL
    • 4.4 Análise dos Resultados
      • 4.4.1 Análise dos Dados Simulados no SISBOL
      • 4.4.2 Análise dos Dados Reais do SISBOL
    • 4.5 Ameaças à Validade
  • 5 Trabalhos Relacionados
  • 6 Conclusão
    • 6.1 Contribuições
    • 6.2 Trabalhos Futuros
  • Referências
  • Apêndice
  • A Features SISBOL
  • B Instalação bdd2Goal
    • B.1 Instalação
      • B.1.1 Passo a passo de instalação
      • B.1.2 Instalação do Apache HTTP Server
      • B.1.3 Clonando o Repositório do Github
      • B.1.4 Estrutura de Funcionamento
      • B.1.5 Alternativa de carregamento dos arquivos json
      • B.1.6 Identificação do Resultado Através de Cores
    • B.2 Como funciona o plugin?
      • B.2.1 Sobrescrevendo o código original do piStar
  • C Evolução da Árvore de Objetivos
  • D Evolução da Árvore de Objetivos no Projeto Mal-Sucedido
  • 2.1 Evolução das Metodologias Ágeis entre Dybå, Melo e Mazuco, segundo [34].
  • 2.2 Ciclo de desenvolvimento TDD [26].
  • 2.3 Exemplo de Feature BDD. [25].
  • 2.4 Representação da notação do modelo SD. Retirado de Silva [48].
  • 2.5 Representação da notação do modelo SR. Retirado de Silva [48].
  • 3.1 Visão geral da abordagem.
  • 3.2 Relacionamento semântico entre BDD e Goal Model.
  • 3.3 Modelo de Objetivos com refinamentos AND/OR.
  • 3.4 Comparação entre hipotéticos processos de desenvolvimento.
  • 3.5 Atividades para o mapeamento das features para o modelo de objetivos.
  • 3.6 Passo 1 - Leitura dos jsons que representam as features BDD.
  • 3.7 Passo 2 - Leitura do Modelo de Objetivos do projeto.
  • 3.8 Passo 3 - Seleção da task no Modelo de Objetivos
  • 3.9 Passo 4 - Associação da feature a task no Modelo de Objetivos.
  • 3.10 Passo 5 - Associação da complexidade a task no Modelo de Objetivos.
  • 4.1 Árvore de Objetivos SISBOL
  • 4.2 Exemplo de arquivo exportado pelo serenity.
    • nos meses mencionados. 4.3 Gráfico relativo à evolução da satisfação de requisitos do projeto SISBOL
    • al. [22]. 4.4 Fluxo cumulativo de commits da equipe SISBOL conforme Fazzolino et
  • B.1 Adicionando um novo atributo.
  • B.2 Lista de tarefas.
  • B.3 Lista de tarefas expandida.
  • B.4 Lista de complexidade.
  • B.5 Novo botão para upload dos arquivos JSON manualmente.
  • B.6 Pop-up contendo formulário para upload dos arquivos.

Lista de Tabelas

2.1 Comparação entre abordagens tradicional e ágil em relação ao processo de Engenharia de Requisitos [42].......................... 10

3.1 Exemplo de sucesso SISBOL (primeiras 2 sprints)............... 25 3.2 Processo com algumas falhas e skippeds..................... 25

4.1 Dados das entregas do SISBOL......................... 38

5.1 Comparação entre trabalhos relacionados.................... 45

A.1 Features do SISBOL............................... 53

xiii

Capítulo 1

Introdução

1.1 Contextualização

O processo de desenvolvimento de software seguindo metodologias ágeis pode envolver algumas peculiaridades que devem ser levadas em consideração, ao debater a escassez de documentação de requisitos em metologias ágeis, conforme Mendes et al. [36]. Entretanto, apesar dos problemas levantados, o padrão de documentação ágil agrega diversos benefí- cios ao processo de desenvolvimento [11], principalmente em relação a aproximação entre os stakeholders do projeto e a evolução dos requisitos ao longo do tempo, de maneira dinâmica [29]. Ainda segundo Ernst [20], dados os requisitos G , e as suposições de domínio D , en- contramos a especificação S , de tal forma que, juntos, D e S satisfazem os requisitos G. Os requisitos G são representados como objetivos ( goals ), que capturam as propriedades desejadas do sistema, incluindo se a satisfação de um objetivo é obrigatória ou opcional com relação a outros objetivos. Os objetivos capturam o que o cliente considera valioso. Os objetivos podem ser satisfeitos pelas especificações S , representadas por conjuntos de Tarefas S referentes aos comportamentos do futuro sistema. Convêm frisar que as especi- ficidades de S são deliberadamente vagas: um conjunto de tarefas pode assumir a forma de delegações, compromissos, serviços, ou código, entre outros. Finalmente, os pressu- postos do domínio D são condições que se acredita que se mantêm no mundo, bem como afirmações que descrevem como o próprio problema está estruturado. Neste sentido, quando nos referimos a evolução dos requisitos de maneira dinâmica, nos deparamos com o conceito de living documentation , ou documentação viva , geralmente detalhada a partir de exemplos, como mostra [2]. Sabe-se que requisitos ágeis são baseados em histórias de usuário, definindo os comportamentos do sistema de maneira simples e sucinta [33], como apresenta a Listagem 1.1.

Apoiado nas vantagens de se descrever requisitos utilizando o modelo i, além de basear-se nas vantagens da especificação dos requisitos usando a técnica BDD no con- texto da metodologia ágil e essas carências elencadas ao representar os requisitos do um sistema, torna-se interessante desenvolver uma abordagem capaz de unir um modelo muito eficiente, porém, com limitações de informação, que é a utilização de features BDD, para um modelo mais completo, que nos forneça uma visão hierárquica das features BDD, demonstrando como suas respectivas tarefas ( tasks ) são capazes de representar os requi- sitos, por meio do mapeamento das features BDD, o modelo i. E apoiado nesta união nos possibilitar realização do cálculo da satisf acao^1 de requisitos.

1.2 Problema

Apesar das várias propostas de gestão de requisitos no processo de desenvolvimento de software, ainda carecem propostas para contornar problemas ainda presentes na gestão de requisitos. Dentre eles temos o estudo de Abad e Ruhe [1] que indicam a aplicação da análise de opções reais para gerenciamento em situações de incerteza, quanto ao contexto do projeto, custo e cronograma. Porém, a forma de gerenciamento proposta não foi testada em um ambiente real de desenvolvimento de software, necessitando assim, de confiabilidade quanto aos seus resultados. Além disso, conforme Soares et al. [51], dentre as dificuldades no uso de requisitos ágeis encontra-se a falta de informação. Embora o uso de requisitos ágeis possa pro- porcionar um ganho inicial em termos de tempo durante as atividades de especificação de requisitos, dificuldades como a falta de um requisito detalhado podem causar o de- senvolvimento de funcionalidades que não estão alinhadas com as esperadas pelo cliente. Consequentemente, vários indicadores podem emergir: (1) documentação dos requisitos inexistente (ou incompleta), (2) documentação desatualizada por falta de informação ou por volatilidade dos requisitos e (3) documentação de testes carecendo de uma relação com e entre os requisitos. Uma vez que a documentação viva proposta pela abordagem BDD pode explicitar as questões relativas aos três problemas acima, ela ainda carece de prover uma visão global da relação entre os requisitos. Em particular, ao descrever os requisitos a partir features BDD, percebe-se a carência com que essas features representam às funcionalidades do sistema, pois não é possível compreender as dependências entre as features , além de não ser possível dizer qual o contexto na qual elas estão inseridas dentro de um sistema. Desta forma, faz-se necessário a combinação da abordagem BDD com outra técnica para suprir esta lacuna. (^1) Conceito definido no âmbito deste trabalho como o grau de aceitação dos requisitos expressos por meio das features BDD

Por outro lado, a Engenharia de Requisitos Orientada por Objetivos [55] (GORE) provê uma abordagem mais estratégica do processo de desenvolvimento de software em uma perspetiva mais abrangente a partir dos objetivos principais do sistema e seus refina- mentos AND/OR. No entanto, abordagens como por exemplo o RE-KOMBINE [20], que tratam a evolução dos requisitos, não provêm uma maneira pragmática de conectar os requisitos técnicos (objetivos) e suas representações mais concretas para uma abordagem ágil.

1.3 Pergunta de Pesquisa

As features BDD são bastante fragmentadas e não tem nenhuma relação direta entre si. Assim, torna-se necessário prover uma visão em que seja possível perceber se os objetivos de um sistema de software estão adequadamente atendidos/satisfeitos a partir do conjunto de requisitos especificados nessas features. Dessa forma, acreditamos que as abordagens BDD e GORE têm informações suficien- tes para prover uma metodologia de mensuração de evolução dos requisitos. Além disso, postulamos, também, que é possível propor uma abordagem para medir o grau de aceita- ção dos requisitos sem adicionar um alto custo adicional ao processo de desenvolvimento de software, em particular ao processo ágil. Uma vez que tanto a abordagem BDD, baseada no conceito de documentação viva a partir de histórias de usuário, quanto a abordagem GORE tem como cerne os objetivos do software como requisitos principais, surge então a seguinte pergunta de pesquisa:

RQ1: É possível saber se o conjunto de features BDD que representam o sistema é amplo o suficiente para atender aos seus objetivos de negócio? Se for possível, podemos rastrear diretamente os objetivos do sistema a partir dos seus artefatos de software? Caso essa rastreabilidade seja alcançada, é possível ter uma visão dinâmica e sempre atual dos requisitos alcançáveis por meio de suas features BDD e o grau de realização das mesmas?

Assumimos neste trabalho que os requisitos são especificados como features no formato Gherkin segundo a abordagem BDD. Aliado a isso utilizamos a abordagem de modelagem de objetivos iStar. Logo unindo essas duas abordagens investigaremos a possibilidade de propor uma abordagem para a gestão do grau de aceitação de requisitos ágeis.

do repositório de código do projeto. Os dados referem-se as features implementadas ao longo de 16 sprints no período de Outubro de 2016 a Abril de 2018. Como terceira contribuição deste trabalho, implementamos uma ferramenta que in- corpora a metodologia proposta nesta pesquisa. A implementação foi feita a partir da extensão da ferramenta piStar e está disponível em um repositório de código aberto no GitHub^2.

1.7 Organização do Trabalho

Este trabalho está organizado de acordo com o apresentado a seguir, além de conter alguns anexos e apêndices que devem ser consultados para compreensão adequada da pesquisa.

  • Capítulo 2: Apresenta o referencial teórico sobre requisitos e as abordagens BDD e GORE. Dessa forma, neste Capítulo são apresentados os conceitos chave para compreensão da pesquisa.
  • Capítulo 4: Apresenta a avaliação da proposta levantada nesta pesquisa. Como avaliação, destaca-se a a apresentação da viabilidade da abordagem proposta a partir de análises em diversas configurações de sprints do processo de desenvolvimento do SISBOL.
  • Capítulo 4: Apresenta a abordagem proposta neste trabalho e as etapas do processo proposto para o gerenciamento da satisf acao de requisitos.
  • Capítulo 5: São apresentados os principais trabalhos relacionados a esta pesquisa, situando este trabalho em relação ao estado da arte.
  • Capítulo 6: Finalmente, apresentamos as conclusões do nosso trabalho e levantamos os próximos passos vislumbrados para trabalhos futuros.

(^2) https://github.com/lealfb/bdd2Goal/

6

Capítulo 2

Referencial Teórico

Os engenheiros de software, em seus trabalhos, devem procurar a alta qualidade e, ao mesmo tempo, o menor custo possível e o menor prazo para a entrega dos produtos, mesmo que a entrega seja subdividida em fases. Entretanto, o desenvolvimento de soft- ware nem sempre segue um caminho suave, pois a condução dos processos tornam-se imprevisíveis, ora por imposição dos recursos de tecnologia disponíveis, treinamento ou mudanças frequentes dos requisitos, ora por imposição do cliente, face às inúmeras frentes que se descortinam durante a construção e a lapidação do software futuro. Nesse contexto, os engenheiros de software estão cientes de que algumas questões técnicas e sócio-técnicas podem comprometer o software e sua evolução. Este capítulo providencia um referencial teórico sobre essa questão no viés das Metodologias Ágeis e suas implicações durante o processo de maturação, assunto relevante para a Engenharia de Software e suas nuances, mostrando o que pensam alguns autores sobre o assunto.

2.1 Desenvolvimento Ágil de Software

Os primeiros movimentos em direção ao Desenvolvimento Ágil ocorreram no ano de 2000, em Oregon, quando alguns engenheiros se reuniram para debater a temática. Mas foi so- mente em 2001 que, em uma segunda reunião em Utah, é que foi oficializado o movimento, com a publicação do Manifesto Ágil [7]. Com o tempo, os processos foram amadurecendo, surgindo várias metodologias de emprego, como o XP de Kent Beck [5] e o Scrum de Schwaber [47], entre outras.

2.1.1 Conceito

Uma definição para Metodologia Ágil, em toda a sua complexidade e essência, poderia ser resumida em Ericksson et al. [19]: