Avaliação do Uso de Linguagem Ubíqua no
Transcrição
Avaliação do Uso de Linguagem Ubíqua no
UNIVERSIDADE FEDERAL DO ESTADO DO RIO DE JANEIRO CENTRO DE CIÊNCIAS EXATAS E TECNOLOGIA ESCOLA DE INFORMÁTICA APLICADA Avaliação do Uso de Linguagem Ubíqua no Detalhamento de Requisitos Utilizando Gherkin Rafaela da Fonseca Sampaio Orientador Gleison dos Santos Souza RIO DE JANEIRO, RJ – BRASIL DEZEMBRO DE 2014 Avaliação do Uso de Linguagem Ubíqua no Detalhamento de Requisitos Utilizando Gherkin Rafaela da Fonseca Sampaio Projeto de Graduação apresentado à Escola de Informática Aplicada da Universidade Federal do Estado do Rio de Janeiro (UNIRIO) para obtenção do título de Bacharel em Sistemas de Informação. Aprovada por: __________________________________________________ Prof. Gleison dos Santos Souza, D.Sc. (UNIRIO) __________________________________________________ Prof. Alexandre Luis Corrêa, D.Sc. (UNIRIO) __________________________________________________ Rafael Targino dos Santos , M.Sc. (Laboratório de Engenharia de Software da PUC-Rio) RIO DE JANEIRO, RJ – BRASIL. DEZEMBRO DE 2014 Agradecimentos Agradeço à minha família por toda a dedicação e apoio: aos meus pais, Cosme e Maria Helena por me incentivarem, ajudarem e acreditarem em mim em todos os momentos. Vocês são a razão de tudo que eu sou e de tudo que eu já conquistei. Ao Professor Gleison Santos, pelo apoio, auxílio, paciência e dedicação ao longo de todo este trabalho. Tenho certeza de que não poderia ter acertado mais na escolha de um orientador. Aos meus amigos, em especial à Marena e ao Targino, agradeço por toda a motivação. Ao Pedro Fernandes por todo o apoio, compreensão e positividade durante este período. Agradeço também a todos aqueles que contribuíram para o meu crescimento pessoal e profissional, a todos os professores, colegas de trabalho e amigos que me serviram de inspiração e me ajudaram a conquistar este sonho. À todos vocês, meu muito obrigada! Rafaela da Fonseca Sampaio RESUMO Esta monografia tem como objetivo avaliar de forma comparativa o detalhamento de requisitos através do uso de casos de uso e de documentação em linguagem ubíqua com o uso de Gherkin. Como base teórica para o trabalho, foram apresentados conceitos de desenvolvimento de software tradicional e ágil, TDD e BDD, linguagem ubíqua, Cucumber e Gherkin. Foi realizada uma pesquisa que abordou a comparação entre as duas formas de detalhamento e com a avaliação dos resultados desta pesquisa constatamos ser viável a utilização de features para o detalhamento de requisitos Palavras-chave: detalhamento de requisitos, requisitos, casos de uso, Gherkin, linguagem ubíqua. ABSTRACT This work aims to evaluate comparatively the detailed requirements by using use cases and documentation in ubiquitous language using Gherkin. As a theoretical basis for the work were presented traditional software development concepts and agile, TDD and BDD, ubiquitous language, Cucumber and Gherkin. A survey was conducted that addressed the comparison between the two forms of detailing and evaluating the results of this study found to be feasible to use features for detailing requirements. Keywords: detailing requirements, requirements, use cases, Gherkin, ubiquitous language. Índice 1 Introdução ................................................................................................................... 10 1.1 Contexto ................................................................................................................ 10 1.2 Motivação .............................................................................................................. 11 1.3 Objetivos ............................................................................................................... 12 1.4 Organização do texto............................................................................................. 12 2 Revisão Bibliográfica.................................................................................................. 14 2.1 Processos Tradicionais de Desenvolvimento de Software .................................... 14 2.2 Métodos Ágeis de Desenvolvimento de Software ................................................ 17 2.3 Desenvolvimento Ágil de Requisitos utilizando o Gherkin .................................. 20 2.3.1 Testes de Aceitação Automatizados e Desenvolvimento Orientado por Comportamento ....................................................................................................... 21 2.3.2 Cucumber ....................................................................................................... 22 2.3.3 Gherkin .......................................................................................................... 24 2.4 Considerações Finais ............................................................................................. 26 3 Avaliação do Detalhamento de Requisitos Através de Features e de Casos de Uso .. 27 3.1 Método de Pesquisa .............................................................................................. 27 3.1.1 Identificação da organização onde a avaliação seria feita e o escopo dos requisitos a serem utilizados ................................................................................... 28 3.1.2 Análise do perfil profissional dos participantes ............................................. 28 3.1.3 Preparação da documentação ......................................................................... 30 3.1.4 Aplicação da Pesquisa .................................................................................... 36 3.2 Avaliação dos Resultados ..................................................................................... 38 3.2.1 Compreensão do Requisito ............................................................................ 38 3.2.2 Facilidade de Entendimento ........................................................................... 39 3.2.3 Preferência ..................................................................................................... 40 3.2.4 Capacidade de Identificação de Defeitos ....................................................... 47 3.3 Considerações Finais ............................................................................................. 47 4 Conclusão .................................................................................................................... 49 4.1 Considerações finais.............................................................................................. 49 4.2 Limitações do Trabalho......................................................................................... 49 4.3 Trabalhos Futuros ................................................................................................. 50 Referências Bibliográficas .............................................................................................. 51 Índice de Tabelas Tabela 1 - Divisão dos Participantes Por Grupos ........................................................... 29 Tabela 2 - Defeitos Introduzidos na Documentação ...................................................... 31 Tabela 3 - Distribuição de Defeitos ................................................................................ 34 Tabela 4 - Características dos Participantes da Pesquisa ............................................... 36 Tabela 5 - Conjuntos de Requisitos Detalhados ............................................................. 37 Índice de Figuras Figura 1 - Modelo “cascata” simplificado. ..................................................................... 15 Figura 2 - Modelo RUP .................................................................................................. 16 Figura 3 - Pilha de teste do Cucumber ........................................................................... 23 Figura 4 - Exemplo de Feature Fonte: Wynne e Hellesoy (2012) ................................. 26 Figura 5 - Exemplo de Caso de Uso Utilizado ............................................................... 33 Figura 6 - Exemplo de Feature Utilizada........................................................................ 34 Figura 7 - Partes do Questionário de Avaliação ............................................................. 35 Figura 8 - Facilidade de Entendimento dos Casos de Uso ............................................. 39 Figura 9 - Facilidade de Entendimento das Features ...................................................... 40 Figura 10 - Preferência de Programador para Implementar o Código ........................... 40 Figura 11 - Preferência de Programador para Implementar os Testes ........................... 41 Figura 12 - Preferência de Programador para Entender o Objetivo do Requisito .......... 41 Figura 13 - Preferência de Membro da Equipe de Testes para Definir Casos de Teste . 42 Figura 14 - Preferência de Membro da Equipe de Testes para Executar Casos de Teste42 Figura 15 - Preferência de Membro da Equipe de Testes para Entender o Objetivo do Requisito ......................................................................................................................... 43 Figura 16 - Preferência de Analista para Entender o Objetivo do Requisito ................. 43 Figura 17 - Preferência de Analista para Descrever o Objetivo do Requisito ................ 44 Figura 18 - Preferência de Analista para Documentar o Requisito ................................ 44 Figura 19 - Preferência de Analista para Passar os Detalhes do Requisito à Equipe ..... 45 Figura 20 - Preferência de Analista para Descrever as Regras de Negócio ................... 45 Figura 21 - Preferência de Analista para Descrever o que Deve Ser Garantido para que a Funcionalidade Seja Executada ...................................................................................... 46 Figura 22 - Preferência Geral ......................................................................................... 46 Figura 23 - Identificação de Defeitos na Documentação ............................................... 47 1 Introdução 1.1 Contexto De acordo com Leffingwell (1997), os requisitos estão associados aos principais problemas do desenvolvimento de software e 40 a 60% dos problemas encontrados nos projetos são consequências de falhas no levantamento de requisitos. No detalhamento de requisitos, muitas vezes é necessário entender que o cliente precisa de algo que nem ele mesmo sabe ou entende que precisa, outras vezes um requisito identificado no início de um projeto torna-se descartável ao longo do desenvolvimento (Kotonya e Sommervile, 1998). Standish (1994) aponta, no relatório intitulado “Chaos”, as seguintes estatísticas sobre os projetos de desenvolvimento de software: 31% dos projetos serão cancelados antes de estarem completos; 53% dos projetos irão custar mais que 189% de suas estimativas; Apenas 16,2% dos projetos são finalizados a tempo e dentro do orçamento; Em grandes empresas apenas 9% dos projetos são finalizados a tempo e dentro do orçamento; De acordo com Blackburn et al. (2001), estudos mostram que 50% dos problemas identificados durante testes apontam para falhas nos requisitos. Estas falhas custam caro, mas é possível preveni-las. Boehm e Basili (2001) afirmam que 40 a 50% do retrabalho realizado nos projetos de software são evitáveis, e, além disso, o conserto de um problema em fases avançadas do desenvolvimento pode custar 100 vezes mais do que encontrá-lo e resolvê-lo nas fases de requisitos ou de projeto. 10 1.2 Motivação As Organizações sofrem com problemas da engenharia de requisitos há muito tempo, independente do método utilizado no desenvolvimento de software, ainda existem casos em que são entregues sistemas que muitas vezes não refletem a realidade e não atendem às expectativas dos usuários e clientes. Requisitos que não refletem reais necessidades dos usuários, incompletos, e/ou inconsistentes, mudanças em requisitos já acordados e a dificuldade para conseguir um entendimento comum entre usuários e desenvolvedores são as principais dificuldades relatadas, provocando retrabalho, atrasos no cronograma, custos ultrapassados e a insatisfação das partes interessadas no projeto. Isso se deve ao fato de ser complexo identificar, entender e detalhar os requisitos (Kotonya e Sommervile, 1998). A insatisfação com a abordagem tradicional de desenvolvimento de software, segundo Sommerville (2011), levou alguns desenvolvedores a buscar métodos “ágeis”. Os métodos ágeis baseiam-se no desenvolvimento incremental de software e são mais adequados para casos em que os requisitos mudam frequentemente durante o desenvolvimento. Estes métodos visam diminuir burocracias no processo evitando trabalho que tem valor a longo prazo apenas e eliminando documentações que provavelmente nunca serão utilizadas. Algumas técnicas que foram propostas originalmente em cenários ágeis, como o Desenvolvimento Orientado por Comportamento (Behaviour-Drivem Development – BDD), que foi baseado no Desenvolvimento Orientado a Testes (Test-Driven Development – TDD) (Wynne e Hellesoy, 2012), também podem ser aplicadas em contextos tradicionais. Sommerville (2011) aponta que a documentação dos requisitos tem um conjunto diversificado de interessados, dentre eles estão clientes, usuários e especialistas de domínio, gerentes, analistas, programadores e testadores. Tendo em vista a importância da documentação de requisitos e o fato de que muitos dos problemas encontrados nos requisitos podem ser amenizados através de uma boa comunicação entre os interessados e uma documentação adequada, este trabalho é motivado a avaliar um formato de documentação de requisitos alternativo à tradicional utilização de casos de uso. 11 1.3 Objetivos Este trabalho tem como objetivo estudar a aplicação de práticas ágeis para apoiar a engenharia de requisitos, de forma que seja possível introduzir o uso de princípios ágeis dentro de métodos tradicionais de desenvolvimento de software a fim de facilitar o detalhamento dos requisitos e melhorar a comunicação entre a equipe de desenvolvimento e o cliente. Acreditamos que com algumas mudanças, aplicadas no detalhamento dos requisitos, seja possível minimizar os problemas causados por falhas comuns da engenharia de requisitos tradicional. Desta forma, a proposta desta monografia é avaliar duas abordagens de detalhamento de requisitos de forma comparativa: Casos de Uso, que são documentos tradicionais da engenharia de requisitos, e Features, que são documentações utilizadas normalmente para documentar testes de aceitação automatizados e quando se desenvolve utilizando BDD. Acreditamos que os requisitos podem ser documentados através de Features e que essa prática pode ajudar no detalhamento de requisitos em projetos de desenvolvimento de software, independentemente de utilizarem processos de software ágeis ou tradicionais. 1.4 Organização do texto O presente trabalho está estruturado em capítulos e, além desta introdução, será desenvolvido da seguinte forma: Capítulo II: Este capítulo contém a Revisão Bibliográfica do trabalho, que apresenta os principais conceitos abordados para o desenvolvimento deste trabalho. Inicialmente são abordados os modelos Cascata e RUP, que são modelos tradicionais de desenvolvimento de software. Em seguida falamos de metodologias ágeis e do Scrum e por fim é abordado o desenvolvimento de requisitos com Gherkin, onde são apresentados os conceitos de linguagem ubíqua, Gherkin, testes de aceitação automatizados, Cucumber e desenvolvimento orientado por comportamento. 12 Capítulo III: Este capítulo trata da avaliação do detalhamento de requisitos através de features e de casos de uso e descreve os detalhes de cada etapa do estudo realizado. Capítulo IV: Este capítulo apresenta as conclusões deste trabalho. Reúne as considerações finais, assinala as contribuições da pesquisa e sugere possibilidades de aprofundamento posterior. 13 2 Revisão Bibliográfica Neste capítulo são apresentados os principais conceitos que embasam este trabalho. São abordados os modelos Cascata e RUP, metodologias ágeis e Scrum, além de conceitos de linguagem ubíqua, Gherkin, testes de aceitação automatizados, Cucumber e desenvolvimento orientado por comportamento 2.1 Processos Tradicionais de Desenvolvimento de Software O método mais tradicional de desenvolvimento de software é o modelo Cascata, também chamado de modelo Clássico. O modelo cascata é definido, segundo Leffingwell (2010), como uma sequencia de estágios ordenados, como exemplificado na Figura 1. Os requisitos são acordados primeiro, o projeto é criado, a codificação é feita em seguida e ao final o software é testado para verificar se está conforme os requisitos e o projeto. Leffingwell (2010) aponta que a criação do modelo Cascata foi consequência da necessidade de melhores previsões e controles sobre os projetos de software de larga escala. Tal necessidade surgiu depois do avanço da indústria de software nas décadas de 1950 e 1960. Winston Royce é apontado como o criador do modelo cascata, mas ironicamente ele o descreve como um modelo que não é recomendado para softwares de grande escala (Leffingwell, 2010). 14 Figura 1 - Modelo “cascata” simplificado. Fonte: Adaptado de (Leffingwell, 2010) Falhas apresentadas pelo modelo Cascata, juntamente com as pressões do mercado e avanços nas ferramentas e tecnologias de desenvolvimento de software incentivaram a necessidade de modelos mais inovadores, baseados em descoberta, os quais nos levaram aos processos iterativos das décadas de 1980 e 1990 (Leffingwell, 2010). Ainda segundo Leffingwell (2010), o modelo RUP (Rational Unified Process) foi baseado no modelo Espiral e no RAD (Rapid Application Development), com o objetivo de construir aplicações de larga escala nas quais a robustez, a escalabilidade e a extensibilidade eram obrigatórias. O RUP foi lançado em no final da década de 1990 e é um método iterativo e incremental amplamente adotado, atualmente comercializado e suportado pela IBM. Leffingwell (2010) afirma ainda que o RUP tem provado ser um framework eficaz para a prática e o gerenciamento de desenvolvimento de software em larga escala. Este framework tem sido amplamente difundido na indústria e já foi utilizado em milhares de projetos de sucesso de vários tipos. O RUP foi o primeiro processo de software amplamente adotado que reconhecia a necessidade de sobrepor várias atividades que ocorrem durante as fases de iniciação, elaboração, construção e transição do o ciclo de vida do software (Leffingwell, 2010). De acordo com Sommerville (2011), o RUP (ver Figura 2) é normalmente descrito a partir de três perspectivas diferentes. São elas: Perspectiva dinâmica: mostra as fases do modelo durante do tempo. O RUP é um modelo baseado em fases que distingue quatro fases no processo de software, porém é diferente do modelo cascata, onde as fases são atividades do 15 processo. No RUP as fases estão mais relacionadas ao negócio do que a preocupações técnicas. As interações no RUP podem funcionar de duas maneiras, cada fase pode ser propagada através do modelo e assim os resultados são desenvolvidos incrementalmente. Além disso um conjunto inteiro de fases pode ser propagado incrementalmente. Perspectiva estática: mostra as atividades do processo que são propagadas pelo modelo. Tem o foco direcionado às atividades de desenvolvimento de software. Essas atividades são chamadas de fluxos de trabalho. O RUP foi desenvolvido em conjunto com a UML (Unified Process Language) e cada fluxo de trabalho está ligado a modelos da UML. Perspectiva prática: sugere boas práticas para serem utilizadas ao longo do processo. São definidas 6 práticas principais para o desenvolvimento de software: desenvolver software iterativamente, gerenciar os requisitos, utilizar arquiteturas baseadas em componentes, utilizar modelos visuais para o software e verificar a qualidade do software. Figura 2 - Modelo RUP Fonte: Wikipedia (2014) Sommervile (2011) afirma que as inovações mais importantes do RUP são as separações de fases e fluxos de trabalho, e o reconhecimento de que a implantação do sistema no ambiente do cliente faz parte do processo. As fases são dinâmicas e possuem objetivos. Os workflows são estáticos e são atividades técnicas que não estão associadas 16 a um única fase, mas podem ser utilizados ao longo do desenvolvimento para que cada fase possa atingir seus objetivos. Uma característica importante do RUP, derivada do seu uso extensivo da UML, está no fato de os requisitos serem modelados na forma de Casos de Uso. Segundo Bezerra (2007), casos de uso (do inglês use case) é a especificação de uma sequencia completa de interações entre um sistema e um ou mais agentes externos a esse sistema, representando um relato de uso de certa funcionalidade do sistema em questão, sem revelar a estrutura e o comportamento internos desse sistema. 2.2 Métodos Ágeis de Desenvolvimento de Software Segundo Sommerville (2011), nas décadas de 80 e 90 acreditava-se que a melhor maneira de construir software era através de planejamentos cuidadosos, garantia de qualidade formalizada, o uso de ferramentas CASE para análise e design e processos controladores e rigorosos. Esta crença era derivada da engenharia de software utilizada para construir grandes sistemas com logos ciclos de vida. Ainda de acordo com Sommerville (2011), este tipo de trabalho envolve grande esforço de planejamento, design e documentação. Este esforço é justificável quando envolve a coordenação de grandes equipes de desenvolvimento, quando o sistema é crítico e quando a quantidade de pessoas envolvida na manutenção do software será muito grande. Porém, quando este tipo de método é aplicado ao desenvolvimento de softwares pequenos e médios, todo o esforço de planejamento e documentação acaba dominando o processo de desenvolvimento do software, fazendo com que mais tempo seja gasto na especificação do sistema do que no desenvolvimento e nos testes. A insatisfação com essa abordagem tradicional de desenvolvimento de software, segundo Sommerville (2011), levou alguns desenvolvedores a buscar métodos “ágeis”. Os métodos ágeis baseiam-se no desenvolvimento incremental de software e são mais adequados para casos em que os requisitos mudam frequentemente durante o desenvolvimento. Estes métodos visam diminuir burocracias no processo evitando trabalho que tem valor a longo prazo apenas e eliminando documentações que provavelmente nunca serão utilizadas. Segundo Sabbagh (2013), uma definição comum para ágil pode ser: “que se movimenta com facilidade, ligeiro, leve”. Este nome, ágil, foi escolhido para representar um movimento que surgiu em meados da década de 90 em resposta aos métodos tradicionais que eram predominantes na época. Os métodos 17 tradicionais são fortemente prescritivos e focados em planos detalhados que são elaborados no início do projeto que definem custo, escopo e tempo, em micro gerenciamento e na centralização do poder, além de processos complexos e extensa documentação. Segundo Sutherland (2010), em menos de uma década o Scrum tornouse um dos frameworks de desenvolvimento de software mais utilizados e conhecidos no mundo. O Scrum é ágil porque, assim como outros métodos, metodologias e frameworks, ele deve seguir as premissas e princípios do Manifesto Ágil (Beck et al., 2001). O Scrum, de acordo com Sabbagh (2013), é um framework para gestão de processos, ou seja, é uma estrutura básica que serve de suporte à gestão de projetos e que deve ser expandida através do uso prático desta própria estrutura. O Scrum não define práticas específicas e detalhadas para serem seguidas, ele acredita que existem práticas específicas para cada contexto de projeto e por isso não existe um conjunto de práticas que seja adequado a todos os casos. Por ser um framework, o Scrum pode ser combinado com diferentes métodos e práticas que podem ser experimentados e adaptados pelo time de acordo com cada contexto. Leffingwell (2010) lista as seguintes práticas como sendo as principais práticas do Scrum: O trabalho é realizado em “sprints”, que são iterações limitadas por tempo, elas têm 30 dias ou menos de duração. O trabalho dentro de uma sprint é fixo. Uma vez que o escopo da Sprint foi definido, nenhuma funcionalidade adicional pode ser introduzida, a não ser pelo time de desenvolvimento. Todo o trabalho a ser feito é chamado de product backlog, o qual possui os novos requisitos a serem entregues, os defeitos a serem corrigidos e as atividades de infraestrutura e projeto. O Scrum Master é o mentor dos times responsáveis pela entrega de resultados bem-sucedidos em cada sprint. O Product Owner faz o papel de representante do cliente. Uma reunião diária, com todos de pé, é o principal método de comunicação. Um grande foco é dado às limitações de tempo (timeboxing). Sprints, reuniões em pé, reuniões de revisão de entregas, entre outros, são todos concluídos em tempos prescritos. 18 A orientação típica do Scrum é de sprints fixas de 30 dias, com aproximadamente 3 sprints por release, suportando assim releases de mercado incrementais em prazos de 90 dias O Scrum não prescreve nenhuma forma de descrição de requisitos. No entanto, uma forma de descrição de requisitos muito comum quando se fala em desenvolvimento ágil é o uso de histórias (Teles, 2005), porém também podem ser utilizados Casos de Uso para compor o backlog do produto e do sprint. Não existe uma formalização para a documentação de histórias e é comum que seu registro seja descartado depois de sua implementação, porém, a prática de BDD tem alcançado grande popularidade entre os times ágeis, e realizando os testes de aceitação de maneira automatizada as histórias acabam sendo documentadas de uma forma em que seu registro é mantido. Segundo Wynne e Hellesoy (2012), a maioria dos projetos de software envolve times de várias pessoas trabalhando juntas de maneira colaborativa, então uma comunicação de alta qualidade é fundamental para o seu sucesso. Uma boa comunicação não significa apenas comunicar suas ideias eloquentemente para outros; também é preciso ter feedback para garantir que a compreensão foi correta. Essa é uma das razões para que times ágeis trabalhem em pequenos incrementos, utilizando o software construído de forma incremental como feedback que diz aos stakeholders: “É isso o que você disse?”. Porém, mesmo a utilização de metodologias ágeis para aproximar o cliente da equipe de desenvolvimento muitas vezes não é suficiente. Se os desenvolvedores passarem uma iteração de duas semanas implementando um mal-entendido, não somente desperdiçaram duas semanas de esforço, mas eles corromperam o código fonte com conceitos e funcionalidades que não refletem a ideia original, ou seja, mesmo com a proximidade que os princípios ágeis introduzem no processo de desenvolvimento de software, ainda assim desenvolvedor e cliente continuam falando línguas diferentes e enfrentando problemas de comunicação (Wynne e Hellesoy, 2012). Um dos mecanismos que podem ser utilizados para instituir uma linguagem comum entre os times de desenvolvimento e seus clientes, fazendo assim com que a comunicação entre ambos melhore, é o uso do Gherkin (GitHub, 2013). A próxima seção apresenta o uso do Gherkin para o desenvolvimento ágil de requisitos e os demais conceitos por trás da sua definição. 19 2.3 Desenvolvimento Ágil de Requisitos utilizando o Gherkin Segundo Eric Evans (2003) um projeto encara sérios problemas quando sua linguagem é dividida. Experts do domínio usam seu jargão enquanto os membros técnicos do time tem sua própria linguagem para discutir o domínio em termos de design. Por essa divisão linguística, os experts do domínio descrevem o que querem vagamente e os desenvolvedores, lutando para entender um domínio novo para eles, entendem vagamente. De acordo com Prikladnick et al. (2014) é comum que os times de desenvolvimento tentem impor seus termos aos especialistas no domínio. São muitos os casos de clientes falando sobre banco de dados, índices, tabelas, servidores, etc. Isso acontece devido à falhas na comunicação. Com isso, os especialistas no domínio podem tentar sobrepor-se aos desenvolvedores, definindo como fazer tecnicamente, em vez de explicar o domínio. O ideal é que os desenvolvedores façam uma ponte inicial que abstraia os especialistas no domínio a parte técnica. Para isso é preciso que eles determinem uma terminologia, e consequentemente uma linguagem apropriada e baseada no domínio. Segundo Evans (2003), uma linguagem ubíqua é uma linguagem baseada no domínio e que é utilizada para representar modelos e documentações, de forma que estes sejam compreendidos pelo cliente, analista, projetista, desenhista, testador, gerente, etc. Além disso esta linguagem deve ser utilizada na comunicação entre a equipe de desenvolvimento e os especialistas no domínio, ou seja, é a linguagem utilizada no dia-a-dia por todos os envolvidos no projeto. De acordo com Prikladnick et al. (2014), para que desenvolvedores e especialistas no domínio falem a mesma língua, é preciso que ambos utilizem os termos em sua rotina diária. Para os especialistas no domínio isso é natural e já acontece, já para os desenvolvedores isso pode ser um desafio. Para que a linguagem torne-se uma linguagem ubíqua é preciso utilizá-la e tudo o que é produzido: documentação, diagramas e principalmente no código. A linguagem ubíqua está presente em todas as partes do desenvolvimento e é utilizada por todos os envolvidos com o objetivo de eliminar a necessidade de traduções. As traduções fazem com que termos e detalhes sejam perdidos, utilizando a 20 mesma linguagem isso não acontece, porém, para a utilização da mesma linguagem por todos, muitas vezes é necessário aprendizado (Prikladnick et al., 2014). 2.3.1 Testes de Aceitação Automatizados e Desenvolvimento Orientado por Comportamento Uma linguagem ubíqua no desenvolvimento de software não é utilizada apenas para descrever os requisitos em si. Pode ser utilizada também para a descrição de testes de aceitação automatizados quando se trabalha com Desenvolvimento Orientado a Testes (Test-Driven Development – TDD) (Wynne e Hellesoy, 2012). De acordo com Aniche (2014), o TDD é uma técnica de desenvolvimento de software que segue a seguinte mecânica: escrever um teste que falha, fazê-lo passar da maneira mais simples possível e, por fim, refatorar o código. Esse ciclo é conhecido como Ciclo Vermelho-Verde-Refatora. Ao iniciar o desenvolvimento de uma funcionalidade, o desenvolvedor a divide em pequenas tarefas. Essas tarefas exigem a escrita de código. Ao praticar TDD, o desenvolvedor antes de começar a realizar a codificação de uma funcionalidade, explicita os objetivos da funcionalidade. Isto é realizado por meio de testes automatizados. O teste nada mais é do que um trecho de código que deixa claro o que outro determinado trecho de código deve fazer. Ao formalizar esse objetivo na forma de um teste automatizado, esse teste falha, claro; afinal, a funcionalidade ainda não foi implementada. O desenvolvedor então trabalha para fazer esse teste passar através da implementação da funcionalidade. Quando o teste passa, é iniciada próxima etapa no ciclo, a refatoração. Refatorar consiste na atividade de melhorar o código que já está escrito. Segundo Wynne e Hellesoy (2012), os testes de aceitação automatizados são chamados assim porque eles expressam o que o software deve fazer para que o cliente o ache aceitável. Ao invés de passar os requisitos para o time de desenvolvimento sem muita oportunidade de feedback, o desenvolvedor e o cliente colaboram para escrever testes automatizados que expressam os resultados que o cliente deseja. Na primeira vez que o teste é escrito ele falha ao ser executado, porque não há codificação ainda. No entanto, ele já captura as necessidades do cliente e dá a todos um sinal claro do que deve ser codificado. Ainda segundo Wynne e Hellesoy (2012), esses testes são diferentes de testes unitários, que são feitos para os desenvolvedores e os ajudam a checar e corrigir o projeto (design) de software. Algumas vezes é dito que testes unitários garantem que 21 você está construindo a coisa corretamente, enquanto testes de aceitação garantem que você está construindo a coisa correta. North (2012) afirma que o BDD (Behavior-Driven Development) é o mesmo que TDD, porém voltado para uma audiência maior: testadores, analistas, gerentes de projeto. O BDD se aplicado em equipes formadas exclusivamente por programadores será exatamente igual ao TDD, porém se isto não é verdade, então o BDD se torna uma coisa diferente, maior: tona-se a comunicação entre todas essas partes interessadas para criar uma única visão coerente e para a qual as entregas são voltadas. North (2006) explica que o BDD foi criado porque sempre eram encontrados mal entendidos quando se aplicava ou ensinava TDD e a maior parte destes problemas de entendimento era derivada do uso da palavra “teste”. Dessa forma, uma nova visão sobre o TDD foi introduzida, focando no comportamento do sistema através de testes e não nos testes em si. O Desenvolvimento Orientado por Comportamento (Behaviour-Drivem Development – BDD), de acordo com Wynne e Hellesoy (2012), baseia-se no Desenvolvimento Orientado a Testes (Test-Driven Development – TDD) por meio da formalização dos bons hábitos dos melhores praticantes de TDD. Os melhores praticantes de TDD, segundo os autores, trabalham de fora para dentro, começando com uma falha de testes de aceitação do cliente que descreve o comportamento do sistema de acordo com o ponto de vista do cliente. Praticantes de BDD tomam o cuidado de escrever testes de aceitação como exemplos que qualquer um do time possa ler. 2.3.2 Cucumber Segundo Wynne e Hellesoy (2012), Cucumber é uma ferramenta de linha de comando utilizada em desenvolvimento orientado a comportamento, que quando executada, lê as especificações de documentos de texto chamados features, examina-os para cenários de teste, e roda os cenários contra o seu sistema. Cada cenário é uma lista de passos para o Cucumber trabalhar. Para que o Cucumber possa entender esses arquivos de features, eles devem seguir algumas regras básicas de sintaxe. O nome desse conjunto de regras é Gherkin (que será detalhado na subseção seguinte). Os testes de aceitação automatizados através do Cucumber possuem o benefício de documentos de especificação tradicionais, os quais podem ser escritos e lidos por stakeholders do negócio, mas eles têm a vantagem distinta de que podem ser interpretados 22 computacionalmente. Na prática, isso quer dizer que a sua documentação, ao invés de ser escrita uma vez e gradualmente ficar obsoleta, torna-se uma coisa viva que reflete o estado verdadeiro do projeto. Para muitos times, os testes Cucumber passam a ser uma “fonte de verdade” definitiva do que o sistema faz. Ter um único lugar para procurar essa documentação economiza tempo que usualmente é desperdiçado tentando manter documentos de requisitos, testes e código sincronizados. Isso também ajuda a construir confiança no time, porque diferentes partes do time não tem mais sua própria versão da verdade. Juntamente com as features, também é necessário fornecer ao Cucumber um conjunto de definição dos passos (step definitions), os quais mapeiam a linguagem legível do negócio de cada passo para código a fim de carregar qualquer ação descrita pelo passo. Em um conjunto de testes maduro, as definições dos passos serão apenas uma ou duas linhas de código que direcionam a execução para uma biblioteca de código de suporte, especificamente para o domínio da sua aplicação, que sabem como realizar tarefas comuns no sistema. Normalmente, isso envolverá uma biblioteca de automação para interagir com o sistema em si. Essa hierarquia pode ser vista na imagem a seguir: Figura 3 - Pilha de teste do Cucumber 23 Fonte: Adaptado de (Wynne e Hellesoy, 2012) Se o código da definição do passo executa sem erros, então o Cucumber passa ao próximo passo do cenário. Se ele chegar ao fim do cenário sem que nenhum passo falhe, então o cenário é marcado como tendo passado. Caso algum dos passos falhe, o cenário é marcado como tendo falhado, e então passa ao cenário seguinte. Conforme os cenários são executados, o Cucumber imprime os resultados mostrando exatamente o que está funcionando e o que está falhando (Wynne e Hellesoy, 2012). Ainda segundo Wynne e Hellesoy (2012), existem muitas vantagens que fazem do Cucumber uma excelente escolha: é possível escrever especificações em mais de quarenta línguas diferentes, usar etiquetas – tags – para organizar e agrupar os cenários e você integrar com uma série de bibliotecas de automação para executar quase qualquer tipo de aplicação. 2.3.3 Gherkin De acordo com a Comunidade Open Source de Cucumber no GitHub (2013) o Gherkin é uma Linguagem de Domínio Específico que permite a descrição do comportamento do software sem o detalhamento de como este comportamento deve ser implementado. O Gherkin serve para dois propósitos: documentação e automação de testes. O site Cukes.Info (2014) diz que o Gherkin é uma pequena linguagem de computação com uma sintaxe bem definida, mas que é tão simples que não é preciso saber programar para que se possa utilizá-la. Wynne e Hellesoy (2012) afirmam que o Gherkin é uma linguagem que pode ser utilizada para escrever especificações de software que servem tanto para os clientes como para testes utilizando Cucumber. A seguir serão discutidas os principais elementos utilizadas no Gherkin de acordo com Wynne e Hellesoy (2012). Feature: cada arquivo Gherkin começa com a palavra chave Feature. O texto imediatamente após a palavra feature, na mesma linha, é o nome da funcionalidade e as linhas subsequentes são a descrição da mesma. É possível utilizar qualquer palavra na descrição desde que não se use no início de nenhuma linha as palavras Scenario, Background ou Scenario Outline. A descrição pode ter múltiplas linhas. É um ótimo lugar para colocar detalhes 24 sobre quem vai utilizar a funcionalidade, e porque, ou para colocar links para suportar a documentação como wireframes ou user research surveys. É comum nomear o arquivo da feature convertendo o nome da feature para caracteres minúsculos e trocando os espaços por underscores. Então, por exemplo, uma feature chamada User logs teria o arquivo user_logs.feature. Em Gherkin, uma feature deve ser seguida por um dos seguintes termos: Scenario, Background ou Scenario Outline. Scenario: Para expressar realmente o comportamento desejado, cada feature contém vários cenários. Cada cenário é um exemplo concreto de como o sistema deve comportar-se em determinada situação. Somando o comportamento definido por todos os cenários temos o comportamento esperado da feature. Ao escrever um cenário devemos ter em mente que cada cenário deve ter sentido e poder ser executado de forma independente de outros cenários. Todo cenário segue o padrão: obter o sistema a um estado particular; estimular o sistema; examinar o novo estado. No Gherkin são utilizadas as seguintes palavras chave para identificar esse comportamento dos cenários: Given, Then, When, And, e But. Comentários: além das descrições de cada feature, dos cenários e dos passos, também podem ser colocados comentários em qualquer parte do documento, desde que iniciem com “#” e sejam a única coisa presente na linha onde foram colocados. As descrições devem ser utilizadas para colocar informações diretamente relevantes para os clientes e os comentários para informações técnicas direcionadas ao time de desenvolvimento. É possível colocar os detalhes técnicos nas descrições, porém, para tal, deve ser certificado de que o cliente se sente confortável com essas informações. Background: é uma sessão da feature destinada a colocar informações necessárias a todos os cenários. É utilizada para evitar a repetição de informações nos cenários. Scenario Outline: é utilizado para quando existem cenários que têm a mesma estrutura e o mesmo propósito, porém possuem entradas e saídas diferentes. Dessa forma é criado um cenário genérico e colocado entre os símbolos “< >” 25 palavras que identifiquem as entradas e saídas e em seguida é colocada a seção “Examples” onde são colocadas em formato de tabela as entradas e saídas que devem ser testadas e as colunas são identificadas de acordo com as palavras entre “< >” apresentadas no Scenario Outline. A Figura 4 apresenta um exemplo de Feature descrita utilizando-se o Gherkin. Figura 4 - Exemplo de Feature Fonte: Wynne e Hellesoy (2012) 2.4 Considerações Finais Neste capítulo foi apresentada uma visão geral sobre o desenvolvimento de software tradicional e ágil, em seguida foram abordados os conceitos de TDD e BDD e linguagem ubíqua. Por fim foram introduzidos conceitos sobre a ferramenta Cucumber e a linguagem Gherkin. A fundamentação teórica apresentada neste capítulo serviu de base para todo o desenvolvimento deste trabalho. 26 3 Avaliação do Detalhamento de Requisitos Através de Features e de Casos de Uso Este capítulo tem como objetivo elucidar os detalhes da pesquisa realizada, o material utilizado, o método de pesquisa, o público alvo e os resultados. O objetivo do deste trabalho foi realizar uma avaliação comparativa entre o detalhamento de requisitos utilizando Casos de Uso e utilizando Features escritas de acordo com o padrão definido pela linguagem Gherkin. A expectativa é que esta abordagem possa ser utilizada em diferentes metodologias de desenvolvimento de software e que quando aplicada em times ágeis ela também fornece uma opção para o registro formal de histórias. Através da avaliação é possível verificar se o uso de features como documentação de requisitos é uma abordagem válida e sabendo que sim é possível utilizá-la como opção alternativa ao uso de casos de uso e com a intenção de melhorar a comunicação entre a equipe de desenvolvimento e os clientes. 3.1 Método de Pesquisa Para que a avaliação proposta neste trabalho pudesse ser feita, foram seguidas as seguintes etapas: 1. Identificação da organização onde a avaliação seria feita e o escopo dos requisitos a serem utilizados; 2. Análise do perfil profissional dos participantes; 3. Preparação da documentação; 4. Aplicação da pesquisa; 27 5. Análise dos resultados. A seguir cada uma destas etapas será detalhada. 3.1.1 Identificação da organização onde a avaliação seria feita e o escopo dos requisitos a serem utilizados A documentação utilizada foi baseada em casos de uso de uma organização pública do ramo de energia. A organização utiliza atualmente um processo de desenvolvimento de software baseado no RUP, a documentação dos requisitos é realizada através de casos de uso e documentos complementares como os documentos de regras de negócio, glossário e especificação complementar, por exemplo. O sistema escolhido foi o Sistema de Controle de Permissões, que é identificado na organização pela sigla ZIS1 (sigla esta que é proveniente de políticas internas de administração da organização). Este sistema foi escolhido porque entre os possíveis participantes existiam indivíduos que conhecem ou não o domínio do sistema, que participaram ou não do seu desenvolvimento e que trabalham ou não na organização, permitindo assim diferentes percepções sobre a documentação a ser analisada. Através do envolvimento da equipe de desenvolvimento do sistema ZIS1 foi possível utilizar uma linguagem ubíqua, uma vez que todos os participantes da pesquisa que estavam familiarizados com o sistema conheciam já os termos utilizados, uma vez que o desenvolvimento estava em estágio avançado já quando a pesquisa foi executada, o que foi comprovado pela ausência de problemas no entendimento dos requisitos por parte destes participantes. Entretanto, como o estudo não alcançou os usuários do ZIS1, a ubiquidade da linguagem não pode ser garantida para toda a equipe envolvida, apenas para os indivíduos que participaram da pesquisa. No total foram utilizados quatro casos de uso escolhidos de acordo com a sua complexidade: dois de complexidade simples, um de média e um de alta complexidade. 3.1.2 Análise do perfil profissional dos participantes Inicialmente foram identificados 28 possíveis participantes da pesquisa. Para analisar o perfil profissional de cada um dos participantes em potencial foi aplicado um questionário de perfil profissional (ver Anexo I) para coletar dados da função exercida atualmente, experiência profissional, escolaridade, conhecimento sobre casos de uso, BDD e Gherkin, e conhecimento sobre o domínio do sistema do qual os casos de uso foram adaptados. 28 Em seguida foram analisadas as informações de perfil profissional que seriam relevantes para definir os grupos de participantes do estudo. Os grupos foram definidos de forma a ficarem com homogeneidade de funções desempenhadas atualmente, conhecimento de casos de uso e conhecimento do domínio (ver Tabela 1). Para a divisão foram consideradas as funções: analista, programador/testador, gerente e arquiteto. Algumas pessoas não responderam qual a ocupação atual, apenas as ocupações passadas, mas estas não foram levadas em consideração durante as análises. Tabela 1 - Divisão dos Participantes Por Grupos Participante Grupo Analista Programador X X Gerente Arquiteto X X Possível Participante 1 G1 Possível Participante 2 G2 Possível Participante 3 G1 Possível Participante 4 G1 X Possível Participante 5 G2 X Possível Participante 6 G1 X Possível Participante 7 G1 X X X Possível Participante 8 G2 X X X Possível Participante 9 G1 X X X Possível Participante 10 G2 Possível Participante 11 G2 Possível Participante 12 G2 X Possível Participante 13 G2 X Possível Participante 14 G2 X Possível Participante 15 G1 X Possível Participante 16 G1 Possível Participante 17 G1 Possível Participante 18 G1 Possível Participante 19 G1 X Possível Participante 20 G2 X Possível Participante 21 G1 Possível Participante 22 G2 X X X X X conheço/já usei conheço muito/domino conheço/já usei conheço/já usei conheço/já usei conheço muito/domino conheço/já usei conheço/já usei conheço muito/domino conheço/já usei conheço muito/domino conheço muito/domino conheço/já usei conheço/já usei conheço muito/domino conheço muito/domino já ouvi falar X X X X X Caso Uso conheço/já usei conheço muito/domino conheço muito/domino conheço/já usei conheço muito/domino Domínio do ZIS1 conheço não conheço não conheço conheço conheço não conheço não conheço não conheço conheço não conheço conheço parcialmente conheço parcialmente conheço parcialmente não conheço conheço parcialmente não conheço conheço parcialmente conheço parcialmente não conheço não conheço não conheço não conheço 29 Participante Grupo Analista Programador Possível Participante 23 G1 Possível Participante 24 G2 Possível Participante 25 G2 Possível Participante 26 G1 Possível Participante 27 G2 Possível Participante 28 G2 X Gerente Arquiteto X X X X X X X X X X X X X X Caso Uso conheço muito/domino conheço/já usei conheço muito/domino conheço/já usei conheço muito/domino conheço/já usei Domínio do ZIS1 não conheço não conheço conheço parcialmente não conheço conheço conheço 3.1.3 Preparação da documentação Com o objetivo de avaliar o uso das features no detalhamento dos requisitos a pesquisa foi composta pela seguinte documentação: Descrições de Casos de Uso; Features; Documentação complementar para a leitura dos casos de uso; Glossário; Termo de Consentimento; Questionário de avaliação da documentação. Os documentos de casos de uso, regras de negócio e especificação complementar foram adaptados para a pesquisa através das seguintes ações: Logotipos e textos que identificavam a organização que forneceu a documentação foram removidos; O caso de uso Administrar Cadastro de Grupo inicialmente era o caso de uso Administrar Cadastro de Órgão, como Grupo é um subitem de órgão o caso de uso teve os fluxos relativos a órgão removidos e deixados apenas os relativos a grupo, isto foi feito para enxugar o caso de uso que antes era muito extenso. O conceito de grupo não foi alterado, apenas foi adaptada a abordagem em que o objeto grupo é tratado no sistema, porém ele continuou sendo dependente de órgão; As ações executadas em relação a grupo inicialmente não continham consulta e detalhamento de grupo, pois isto era realizado nos fluxos de órgão, então foram inseridas estas ações no caso de uso; 30 Foi mantido o padrão utilizado pela organização nos casos de uso, este padrão possui algumas peculiaridades que foram mantidas e explicadas aos participantes da pesquisa que não estavam familiarizados com ele: Os fluxos de exceção não possuem este nome nos casos de uso, são chamados de fluxos alternativos assim como os fluxos alternativos do caso de uso. O que são chamadas “Mini-estruturas de Dados” são os campos que devem ser exibidos na tela e suas propriedades. Em seguida foram escritas as features para os casos de uso, utilizando os padrões da linguagem Gherkin e com base nos seguintes critérios: Cada passo de cada fluxo do caso de uso é um passo em um scenario de uma feature; Informações técnicas como comportamentos, mensagens de log e miniestruturas de dados e requisitos não funcionais dos casos de uso foram colocadas como comentários nas features; Regras de negócio e mensagens simples foram colocadas nas descrições das features ou de scenarios ou passos nas features. Foram inseridos defeitos na documentação a ser aplicada aos participantes, a Tabela 2 mostra os defeitos introduzidos e a qual dupla de caso de uso e features correspondentes ao caso de uso cada defeito é aplicável. Tabela 2 - Defeitos Introduzidos na Documentação Controle de Defeitos Aplicável à Defeito Descrição do Defeito Falta de referência para a mensagem M007 no primeiro passo do fluxo ou Caso de Uso 03 D1 scenario que trata de "Campos Obrigátórios Não Preenchidos" e Features Correspondentes D2 Requisito não funcional ambíguo: "A interface deve ser amigável." Regra de Negócio incorreta no segundo passo do fluxo ou scenario que trata de "Solicitar Validação da Lista de Usuários". A regra colocada é: "Ao excluir um órgão: se ele não possuir nenhuma validação seu registro é D3 excluído do sistema. Caso contrário, o seu status é alterado para Caso de Uso 04 “desativado”.", porém a regra correta seria: "Não poderá haver mais de uma e Features validação pendente por órgão. Uma nova validação suspende todas as Correspondentes validações pendentes.". Atores que não executam nada no caso de uso: Administrador e Usuário D4 Especial (Gerente e substituto) A mini-estrutura de dados "Informação – Filtros da pesquisa de Grupo" foi D5 colocada. Ela não pertence a este requisito. Caso de Uso 06 No segundo passo do fluxo ou scenario "Enviar Lembrete de Validação" a e Features mensagem está para "Órgão cadastrado com sucesso." ao invés de "Gerente, Correspondentes D6 existe uma lista de usuários pendente para validação. Acesse o link para realizar a validação.[Colocar um link redirecionando para a lista de usuários dos grupos do órgão]". Caso de Uso 07 O comportamento CO005 foi alterado para iniciar com "A tela deve ser D7 e Features carregada rapidamente" 31 Controle de Defeitos Aplicável à Defeito Descrição do Defeito Correspondentes Retirados todos os passos do fluxo ou scenario: Remover Usuário D8 Caso de Uso 03 D9 Features Correspondentes ao Caso de Uso 03 D10 Defeitos Fixos do Maior Caso de Uso Ao final do Fluxo A1 existe o passo: "O caso de uso retorna ao passo 6 do Fluxo Alternativo A2.", que é inconsistente com o caso de uso. A feature "Apagar Grupo" apresenta o scenario "Editar Grupo". Os defeitos foram distribuídos de acordo com a Tabela 2, porém, no caso do maior dos casos de uso, que é o “Administrar Cadastro de Grupo” foram inseridos também dois defeitos fixos, um no caso de uso e um em uma de suas features. Isto foi feito porque como se trata de uma documentação mais extensa os defeitos poderiam passar sem serem percebidos mais facilmente e então optamos por colocar alguns defeitos a mais. A Figura 5 e a Figura 6 mostram um exemplo de caso de uso e um exemplo de feature utilizados, respectivamente. Em ambas as figuras os erros introduzidos estão destacados em vermelho. 32 Figura 5 - Exemplo de Caso de Uso Utilizado A decisão de qual defeito seria aplicado a qual participante foi realizada de modo que os defeitos fossem aplicados aos dois grupos e que cada participante recebesse defeitos diferentes nos casos de uso e nas features. Os defeitos fixos foram aplicados ao caso de uso 03 e a uma de suas features, portanto todos os participantes do grupo G2 receberam estes defeitos. 33 Figura 6 - Exemplo de Feature Utilizada A Tabela 3 apresenta a distribuição de defeitos por participante e por grupo. Tabela 3 - Distribuição de Defeitos Participante Participante 1 Participante 2 Participante 3 Participante 4 Participante 5 Participante 6 Participante 7 Participante 8 Participante 9 Participante 10 Participante 11 Participante 12 Participante 13 Participante 14 Participante 15 Grupo G1 G2 G2 G1 G2 G2 G2 G1 G1 G1 G2 G1 G1 G2 G2 Caso de Uso D3 e D5 D2 e D8 D2 e D8 D3 e D5 D2 e D8 D1 e D7 D1 e D7 D4 e D6 D4 e D6 D3 e D5 D1 e D7 D4 e D6 D4 e D6 D2 e D8 D1 e D7 Features D4 e D6 D1 e D7 D1 e D7 D4 e D6 D1 e D7 D2 e D8 D2 e D8 D3 e D5 D3 e D5 D4 e D6 D2 e D8 D3 e D5 D3 e D5 D1 e D7 D2 e D8 34 Além dos casos de uso e das features foi elaborado um formulário de avaliação da qualidade do material (Figura 7). Figura 7 - Partes do Questionário de Avaliação 35 O formulário foi dividido em três partes, cada uma com um objetivo de avaliação: a Parte 1 possuía o objetivo de verificar se o participante teve diferença de entendimento sobre o requisito documentado em caso de uso para o requisito documentado em feature, na Parte 2 as perguntas foram direcionadas a entender a facilidade de compreensão de cada documentação e a preferência de documentação de acordo com papéis e atividades comuns em processos de desenvolvimento de software, por fim, na Parte 3 o objetivo foi analisar em qual documentação os participantes teriam maior facilidade em encontrar discrepâncias. 3.1.4 Aplicação da Pesquisa A pesquisa foi aplicada em 15 participantes dos 28 que responderam ao questionário de perfil profissional, isto aconteceu devido à falta de disponibilidade de algumas pessoas para a pesquisa e também porque as dificuldades de aplicar a pesquisa remotamente impediram que alguns indivíduos participassem por estarem geograficamente afastados. A Tabela 4 mostra os indivíduos que de fato participaram da pesquisa, suas características e divisão por grupos. Tabela 4 - Características dos Participantes da Pesquisa Participante Grupo Analista Participante 1 G1 X Participante 2 G2 X Participante 3 G2 X X Programador X X Casos de Uso Domínio do ZIS1 conheço/usei conheço conheço/usei conheço X conheço/usei não conheço X conheço muito/domino conheço Gerente Arquiteto X Participante 4 G1 Participante 5 G2 conheço/usei não conheço Participante 6 G2 X conheço muito/domino Participante 7 G2 X conheço/usei Participante 8 G1 Participante 9 G1 conheço parcialmente conheço parcialmente conheço parcialmente conheço parcialmente Participante 10 G1 X Participante 11 G2 X Participante 12 G1 Participante 13 G1 Participante 14 G2 Participante 15 G2 conheço muito/domino X X conheço/usei conheço muito/domino conheço muito/domino X X X não conheço X conheço/usei não conheço X conheço muito/domino não conheço conheço/usei não conheço conheço muito/domino conheço X X não conheço X X 36 Para a realização da pesquisa cada participante recebeu dois conjuntos de detalhamento de requisitos, identificados como “Conjunto A” e “Conjunto B”. Cada conjunto possuindo um caso de uso e uma ou mais features que representava(m) o mesmo requisito, a Tabela 5 apresenta a distribuição dos conjuntos. Além disso, o participante também recebeu o Termo de Consentimento (Anexo XIX), o Glossário (Anexo IX), o documento de Regras de Negócio (Anexo VIII), o documento de Especificação Complementar (Anexo VII) e o questionário de avaliação (Anexo II). Tabela 5 - Conjuntos de Requisitos Detalhados Grupo G1 G2 Conjunto A CSU 04 e as features correspondentes CSU 03 e as features correspondentes Conjunto B CSU 06 e as features correspondentes CSU 07 e as features correspondentes Em seguida, cada participante foi orientado sobre a documentação. As orientações fornecidas foram as seguintes: “Você está participando de uma pesquisa sobre detalhamento de requisitos, para tal, você está recebendo dois conjuntos de detalhamento de requisitos, o Conjunto A e o Conjunto B. Cada conjunto possui a sua identificação escrita na primeira página. O Conjunto é composto pelo detalhamento de requisito em formato de Caso de Uso e em formato de Features. Os casos de uso foram adaptados de um sistema real, porém, não refletem o domínio real deste sistema. Os casos de uso possuem algumas peculiaridades que foram mantidas, como o fato de que fluxos de exceção são tratados como fluxos alternativos, isto não deve ser considerado um erro, foi mantido do template original. As features são representações de funcionalidades e em alguns casos um caso de uso pode estar relacionado a várias features. As features são compostas por palavras chave que estão destacadas em roxo e em negrito, estas palavras estão em inglês, caso possua alguma dúvida em relação à tradução informe. As partes em verde, e que iniciam com “#” são comentários, assim como é utilizado em linguagens de programação. A feature possui uma descrição inicial, uma parte em seguida que tem informações adicionais e é iniciada pela palavra Background e um ou mais Scenarios. Um Scenario é um conjunto de passos que leva o sistema de um estado a outro. A documentação de regras de negócio e especificação complementar deve ser utilizada em auxílio na leitura dos casos de uso, pois estes possuem referências que remetem a estes documentos. O documento de Glossário serve tanto para Features como para Casos de Uso, nele você pode tirar dúvidas sobre elementos do domínio. É necessário que você leia a documentação e responda ao 37 questionário. Não se preocupe com respostas certas ou erradas. É possível que a documentação contenha erros, caso encontre algum, reporte nas questões específicas do questionário. Caso tenha alguma dúvida, pergunte, porém, só poderemos responder caso a informação solicitada não influencia na pesquisa. Por favor marque no horário de início no questionário o horário em que começar a ler a documentação e no horário de fim o momento em que terminar de responder às questões. Ao final do questionário existe um espaço para que você faça quaisquer considerações, sugestões e/ou críticas sobre a documentação e sobre a pesquisa que achar relevantes. Obrigada pela participação.” Uma vez orientados sobre a pesquisa, os participantes possuíam tempo livre para executá-la e tinham a liberdade de fazê-lo na presença do aplicador da pesquisa ou não. Todos ficaram livres para tirar dúvidas sobre a pesquisa e pelo menos metade solicitou maiores orientações em relação às perguntas do questionário, principalmente da Parte 1. Alguns participantes apresentaram dúvidas em relação ao domínio da aplicação, por conhecerem o domínio total ou parcialmente, apresentaram dificuldades de absorver as alterações realizadas no caso de uso 03. A receptividade dos participantes em relação à pesquisa foi boa, porém, a maioria indicou insatisfação com o volume de documentação a ser analisado. Na próxima seção será apresentada a avaliação dos resultados obtidos. 3.2 Avaliação dos Resultados De acordo com as respostas obtidas no questionário as seguintes avaliações foram feitas, comparando o uso de casos de uso e de features, e serão descritas a seguir: Compreensão do Requisito; Facilidade de Entendimento; Preferência; Capacidade de Identificação de Defeitos. 3.2.1 Compreensão do Requisito Esta avaliação buscou verificar se houve diferença de entendimento entre o requisito quando descrito em caso de uso e quando descrito em feature. Dos 15 participantes, apenas 1 afirmou ter detectado entendimento diferente entre uma feature e um caso de uso. 38 O participante relatou que o caso de uso 06 não citava validação de usuário pendente. Ao avaliar esta observação do participante, chegou-se à conclusão de que esta confusão foi causada porque neste caso de uso foi introduzida uma discrepância que fazia rastreabilidade de mensagem errada, fazendo com que a mensagem “Órgão cadastrado com sucesso.” fosse referenciada no lugar onde deveria estar a referência para a mensagem “Gerente, existe uma lista de usuários pendente para validação. Acesse o link para realizar a validação.[Colocar um link redirecionando para a lista de usuários dos grupos do órgão]”, ou seja, o participante ao ler o caso de uso não encontrou mensagem que informasse ao gerente a validação pendente. Ao identificar esta discrepância da documentação o participante a reportou como uma discrepância de inconsistência e também reportou como diferença de entendimento do requisito. 3.2.2 Facilidade de Entendimento Quando indagados sobre a facilidade de entendimento da documentação, 27% dos participantes afirmou achar os casos de uso um pouco difíceis, ao passo que apenas 7% achou as features um pouco difíceis. Dessa maneira, mesmo sendo o primeiro contato de todos os participantes com a documentação em formato de features, poucos a apontaram dificuldades na compreensão. A Figura 8 e a Figura 9 mostram a distribuição percentual da opinião dos participantes sobre a facilidade de entendimento de cada documentação. Casos de Uso 27% Um pouco difícil 53% 20% Nem fácil, nem difícil Fácil Figura 8 - Facilidade de Entendimento dos Casos de Uso 39 Features 7% 47% 33% Um pouco difícil Nem fácil, nem difícil Um pouco fácil 13% Fácil Figura 9 - Facilidade de Entendimento das Features 3.2.3 Preferência Os participantes foram indagados sobre qual documentação é melhor de acordo com diferentes cenários. As perguntas foram feitas sob o ponto de vista dos papéis de programador, analista e membro da equipe de testes e foram abordadas atividades que são comuns em diferentes processos de desenvolvimento de software. Quando perguntados sobre a preferência de documentação para a implementação do código, 47% disse preferir as features, 17% disse que é indiferente e 36% preferiu casos de uso. A maior popularidade das features de acordo com essa pergunta era esperada porque elas são muito mais próximas de linguagem de programação do que os casos de uso. A Figura 10 mostra o percentual de preferência para a implementação do código. Pensando como um programador, qual das duas opções você considera melhor para utilizar na hora da implementação do código? 47% 36% Casos de Uso Indiferente 17% Features Figura 10 - Preferência de Programador para Implementar o Código 40 Quando perguntados sobre o ponto de vista de um programador para implementar os testes, a preferência ainda foi pelas features, com 43%, 17% foi apontou indiferença e 40% preferiu casos de uso, como mostrado na Figura 11. Pensando como um programador, qual das duas opções você considera melhor para utilizar na hora da implementar os testes? 40% 43% Casos de Uso Indiferente 17% Features Figura 11 - Preferência de Programador para Implementar os Testes Ainda do ponto de vista de um programador, a Figura 12 mostra que os participantes foram questionados sobre a preferência para entender o objetivo do requisito. Nesta questão, o percentual de indiferentes foi de 27%, enquanto casos de uso e features ficaram quase empatados, com 36 e 37% respectivamente. Encaramos isto como um resultado altamente positivo porque mostra que ambas as documentações conseguem expor o objetivo do requisito, sendo assim adequadas para o detalhamento de requisitos. Pensando como um programador, qual das duas opções você considera melhor para entender o objetivo do requisito? 37% 36% Casos de Uso Indiferente 27% Features Figura 12 - Preferência de Programador para Entender o Objetivo do Requisito Do ponto de vista de um membro da equipe de testes, para realizar a tarefa de definir os casos de teste da aplicação, em 43% dos casos foi preferido o uso de casos de uso (ver Figura 13). Esta informação é interessante porque, apesar de features terem sua 41 origem voltada para automação de testes de aceitação, elas se mostram menos adequadas, na opinião de muitos dos participantes, para outros tipos de testes. Pensando como um membro da equipe de testes, qual das duas opções você considera melhor para utilizar na hora de definir os casos de testes? 39% 43% Casos de Uso Indiferente Features 18% Figura 13 - Preferência de Membro da Equipe de Testes para Definir Casos de Teste Apesar da preferência dos casos de uso para a elaboração dos casos de teste, na execução dos casos de teste as features foram apontadas como melhor opção em 46% dos casos, conforme podemos ver na Figura 14. Pensando como um membro da equipe de testes, qual das duas opções você considera melhor para utilizar na hora de executar os casos de testes? 46% 29% Casos de Uso Indiferente 25% Features Figura 14 - Preferência de Membro da Equipe de Testes para Executar Casos de Teste Pensando como membro da equipe de testes a maioria dos participantes achou as features melhores para entender o objetivo do requisito, a Figura 15 mostra os percentuais. Observou-se que 37% foi indiferente, reforçando a ideia de que ambos expressam o objetivo do requisito de forma adequada. 42 Pensando como um membro da equipe de testes, qual das duas opções você considera melhor para entender o objetivo do requisito? 23% 40% Casos de Uso Indiferente 37% Features Figura 15 - Preferência de Membro da Equipe de Testes para Entender o Objetivo do Requisito A mesma pergunta quando feita a partir do ponto de vista de um analista apresentou o maior percentual de preferência indicando indiferença, que foi de 53% conforme é mostrado na Figura 16. Pensando como um analista, qual das duas opções você considera melhor para entender o objetivo do requisito? 17% 30% Casos de Uso Indiferente 53% Features Figura 16 - Preferência de Analista para Entender o Objetivo do Requisito A Figura 17 e a Figura 18 mostram que já para descrever o objetivo do requisito e documentá-lo, assumindo o papel de analista, a grande maioria acredita ser melhor a utilização dos casos de uso. 43 Pensando como um analista, qual das duas opções você considera melhor para descrever o objetivo do requisito? 21% Casos de Uso 18% 61% Indiferente Features Figura 17 - Preferência de Analista para Descrever o Objetivo do Requisito Pensando como um analista, qual das duas opções você considera melhor para documentar o requisito? 14% 14% Casos de Uso 72% Indiferente Features Figura 18 - Preferência de Analista para Documentar o Requisito Quando indagados sobre a atividade do analista de passar os requisitos à equipe, os participantes expressaram opiniões mais dividas novamente, 43% ainda preferiu os casos de uso, mas 21% indicou indiferença entre as duas abordagens e ainda 36% preferiu as features, como mostrado na Figura 19. Isto mais uma vez reafirma a ideia de que as duas formas de documentação são válidas para o entendimento dos requisitos. 44 Pensando como um analista, qual das duas opções você considera melhor para passar os detalhes do requisito à equipe? 36% 43% Casos de Uso Indiferente Features 21% Figura 19 - Preferência de Analista para Passar os Detalhes do Requisito à Equipe Um fator que fez falta nas features foi a rastreabilidade, pois quando indagados sobre a melhor maneira de descrever as regras de negócio, a preferência foi claramente dos casos de uso, uma vez que estes deixam as regras de negócio em um documento consolidado. A Figura 20 mostra que em nenhum dos casos foi indicada indiferença. Pensando como um analista, qual das duas opções você considera melhor para descrever as regras de negócio? 0% 21% Casos de Uso Indiferente 79% Features Figura 20 - Preferência de Analista para Descrever as Regras de Negócio Para avaliar a opinião dos participantes sobre a representação de pré-condições sem influenciá-los utilizando este termo, que é comum nos casos de uso, foi apresentada a questão “Pensando como um analista, qual das duas opções você considera melhor para descrever o que deve ser garantido para que a funcionalidade representada pelo requisito possa ser executada?”. Na maior parte dos casos foi preferido o uso de casos de uso, porém o percentual de preferência de features e de indiferença também foi alto, 45 mostrando que as features também são adequadas para a representação desta informação. Os percentuais são mostrados na Figura 21. Pensando como um analista, qual das duas opções você considera melhor para descrever o que deve ser garantido para que a funcionalidade representada pelo requisito possa ser executada? 36% 43% Casos de Uso Indiferente Features 21% Figura 21 - Preferência de Analista para Descrever o que Deve Ser Garantido para que a Funcionalidade Seja Executada Por fim, olhando a preferência de forma geral, mostrada na Figura 22, podemos observar que ela ficou bem dividida. Preferência Geral 33% 44% Casos de Uso Indiferente 23% Features Figura 22 - Preferência Geral Os casos de uso foram mais apontados como preferidos, o que era esperado visto que todos os participantes possuíam contato anterior com casos de uso e nenhum com features, mas o percentual de indiferença e de preferência das features mostra que essa abordagem teve boa aceitação entre os entrevistados. 46 3.2.4 Capacidade de Identificação de Defeitos De acordo com a distribuição de defeitos realizada, cada participante recebeu no mínimo um defeito por caso de uso e um defeito nas features do caso de uso correspondente, sendo estes defeitos diferentes uns dos outros. A Figura 23 mostra a quantidade de defeitos identificados e o total de defeitos. A dificuldade de identificação dos defeitos foi quase a mesma nos dois casos, então pode-se dizer que há indícios que as features possuem aproximadamente a mesma adequação para inspeção que os casos de uso, ao menos para a equipe que participou do estudo. Identificação de Defeitos na Documentação 40 30 Casos de Uso 20 Features 10 0 Defeitos identificados Total de defeitos aplicados Figura 23 - Identificação de Defeitos na Documentação Como a quantidade de defeitos identificados foi muito baixa, não foi possível realizar uma avaliação sobre quais defeitos foram identificados mais facilmente. 3.3 Considerações Finais A pesquisa mostrou indícios, em sua avaliação, que as features apresentadas cumpriram o papel de documentar os requisitos de forma satisfatória. Alguns pontos negativos do uso de features levantados pelos participantes foram: a falta de rastreabilidade de regras de negócio e mensagens, a repetição de scenarios que são comuns a mais de uma feature e a dificuldade de elaborar casos de teste a partir das features. Por outro lado, muitos pontos positivos também foram indicados, como: a estruturação mais próxima de linguagem de programação, a consolidação das informações em um único documento para o desenvolvedor, entre outras. Como exemplo de observações temos um participante que escreveu: “Como programador, 47 achei interessante a descrição das features. O modo de apresentação me parece mais amigável, principalmente para entender o objetivo do requisito. [...] Como testador, confesso que fiquei em dúvida sobre qual alternativa seria melhor para utilizar na definição de casos de teste. Neste caso, os casos de uso parecem organizar e agrupar melhor as informações necessárias.”. Além do exemplo supracitado, foi colocado por outro participante que “A feature sem os comentários não serve para descrever o requisito.[...]”, indicando que é necessária a presença de informações técnicas nas features para que estas possam ser utilizadas no detalhamento de requisitos. A pesquisa mostrou-se promissora e passível de aplicação em outros conjuntos de participantes, organizações e para outros sistemas, porém, como feedback da pesquisa muitos apontaram a quantidade de documentação a ser analisada como um problema, o que nos leva a refletir sobre uma abordagem de pesquisa utilizando maior quantidade de participantes para que cada um receba menores quantidades de informações para processar durante a pesquisa. 48 4 Conclusão 4.1 Considerações finais Este trabalho teve como objetivo avaliar de forma comparativa o detalhamento de requisitos através do uso de casos de uso e de documentação em linguagem ubíqua com Gherkin. Como base teórica para o trabalho foram apresentados conceitos de desenvolvimento de software tradicional e ágil, TDD e BDD, linguagem ubíqua, Cucumber e Gherkin. O trabalho realizou uma pesquisa que avaliou a compreensão do requisito, a facilidade de entendimento da documentação, a preferência pela forma de documentar e a capacidade de identificação de defeitos. Através da pesquisa constatamos ser viável a utilização de features para o detalhamento de requisitos, porém, a pesquisa possui limitações que devem ser analisadas a fim de realizar trabalhos futuros para dar continuidade ao estudo. 4.2 Limitações do Trabalho O trabalho realizado têm limitações que devem ser levadas em consideração para avaliá-lo e para dar continuidade a este estudo, são estas: O número de participantes foi pequeno, apenas 15 participaram até o final da pesquisa; Nenhum dos participantes estava familiarizado com o estilo de documentação apresentado pelas features, nem com a escrita em Gherkin; Não foi possível avaliar a identificação de defeitos de forma relevante para afirmar qual das documentações seria mais adequada a este propósito; Não foi considerado se os participantes trabalham ou já trabalharam com metodologias ágeis; A pesquisa não foi aplicada aos usuários do sistema ZIS1; 49 Tendo em mente que a pesquisa não envolveu os usuários do sistema, não podemos garantir que a linguagem utilizada é ubíqua para toda a equipe envolvida no desenvolvimento do ZIS1, mas apenas para aqueles que participaram da pesquisa, pois estes não apresentaram dificuldades quanto aos termos e o vocabulário utilizado na documentação e apresentaram entendimento dos requisitos documentados. A fim de continuar o trabalho realizado em futuras pesquisas é preciso levar as limitações em consideração e traçar planos para superar as que forem julgadas mais relevantes. 4.3 Trabalhos Futuros Durante o desenvolvimento do trabalho foram identificadas possibilidades de evoluir o estudo e expandir a aplicação da pesquisa para outros contextos e organizações. Além disso, uma vez que as features não foram inicialmente criadas com o intuito de documentar requisitos e sim para a realização de testes de aceitação automatizados, e tendo em vista que a aceitação da documentação em formato de features foi boa, é possível considerar o desenvolvimento de um framework ou metodologia para fornecer diretrizes para criação e manutenção destas documentações. A continuação da pesquisa deve envolver a equipe completa de desenvolvimento para garantir a ubiquidade da linguagem e avaliar o entendimento das features principalmente pelos usuários, pois representam um papel fundamental na engenharia de requisitos e não foi possível alcança-los neste estudo. É preciso também avaliar com maior cautela o uso de features na geração de casos de teste e o impacto da redução de rastreabilidade, visto que estas foram as principais críticas apresentadas pelos participantes da pesquisa. 50 Referências Bibliográficas Aniche, M. (2014) “Test-Driven Development”, http://tdd.caelum.com.br/. Acessado em 09 de Dezembro de 2014. Beck, K. et al. (2001) “Manifesto for Agile Software Development”, http://www.agilemanifesto.org/. Acessado em 20 de Outubro de 2014. Bezerra, E. (2007), Princípios de Análise e Projeto de Sistemas com UML, Campus, 2ª edição. Blackburn, M., Busser, R., Nauman, A. (2001) “Removing Requirement Defects and Automating Test”, Software Productivity Consortium NFP, https://www.cmcrossroads.com/sites/default/files/article/file/2013/3988360.pdf. Acessado em 10 de Novembro de 2014. Boehm, B. W., Basili, V.R. (2001), “Software Defect Reduction Top 10 List.”, IEEE Computer 34 (1): 135-137. Cukes.Info (2014) “Background and Credits”, http://cukes.info. Acessado em 09 de Dezembro de 2014. Cukes.Info (2014) “Gherkin”, http://cukes.info/gherkin.html. Acessado em 09 de Dezembro de 2014. Evans, E. (2003), “Domain-Driven Design: Tackling Complexity in the Heart of Software”. http://www-public.intevry.fr/~gibson/Teaching/CSC7322/ReadingMaterial/Evans03.pdf. Acessado em 15 de Novembro de 2014. GitHub (2013) “Gherkin”, https://github.com/cucumber/cucumber/wiki/Gherkin. Acessado em 09 de Dezembro de 2014. Kotonya, G., Sommerville, I. (1998), Requirements Engineering: Process and Techniques; John Wiley & Sons. Leffingwell, D. (2010), Agile Software Requirements: Lean Requirements Practices for Teams, Addison Wesley, 1st edition. Leffinwell, D. (1997), Calculating the Return on Investment from More Effective Requirements Management; American Programmer 10(4); p.13-16. North, D. (2006) “Introducing BDD”, http://dannorth.net/introducing-bdd/. Acessado em 02 de Novembro de 2014. North, D. (2012) “BDD is like TDD if...”, http://dannorth.net/2012/05/31/bdd-is-liketdd-if/. Acessado em 02 de Novembro de 2014. 51 Prikladnicki, R., Willi, R., Milani, F. (2014), Métodos Ágeis para Desenvolvimento de Software, Bookman, 1ª edição. Programming”, Dissertação de Mestrado em Informática da Universidade Federal do Rio de Janeiro – UFRJ. Sabbagh, R. (2013), Scrum: Gestão Ágil para Projetos de Sucesso, Casa do Código, 1ª edição. Sommerville, Ian (2011), Software Engineering, Pearson Education, 9th edition. Sutherland, Jeff (2010), Jeff Sutherland’s Scrum Handbook, Scrum Training Institute Press. Teles, V. M. (2005) “Um Estudo de Caso da Adoção das Práticas e Valores do Extreme The Standish Group (1995), https://net.educause.edu/ir/library/pdf/NCP08083B.pdf. Dezembro de 2014. “Chaos Acessado em Report”, 05 de Wikipedia (2014), http://pt.wikipedia.org/wiki/IBM_Rational_Unified_Process, Acessado em 28 de Novembro de 2014. Wynne, M., Hellesoy, A. (2012), The Cucumber Book, LLC, 1st edition. Ye, W. (2013), Instant Cucumber BDD How-to, Packt Publishing, 1st edition. 52 ANEXO I – Questionário de Perfil Profissional Esse questionário é parte do Trabalho de Conclusão de Curso do Bacharelado em Sistemas de Informação da UNIRIO, com foco em processos de software. Seu objetivo é avaliar a forma de descrição de requisitos por meio de Casos de Uso e de Features. Em um primeiro momento é necessário coletar informações sobre o perfil dos profissionais que participarão da avaliação. Solicitamos sua colaboração, respondendo a algumas questões. Os dados de identificação não serão mencionados no relatório da pesquisa, o que preservará o anonimato e sigilo dos respondentes. Se houver necessidade de maiores esclarecimentos, por favor envie um e-mail para os responsáveis: Rafaela Sampaio – [email protected] Gleison Santos - [email protected] Obrigado pela sua participação. PARTE 1 - Caracterização de Perfil Nome: __________________________________________________________ 1 - Qual o seu nível de escolaridade? ( ) Ensino Médio ( ) Superior ( ) Mestrado ( ) Doutorado ( ) Pós Graduado 2 - Que papéis você já desempenhou em equipes de desenvolvimento de software: Analista de Sistemas ( ) Atuo no momento ( ) Já atuei em projetos passados Programador ( ) Atuo no momento ( ) Já atuei em projetos passados Membro da Equipe de Testes ( ) Atuo no momento ( ) Já atuei em projetos passados Gerente /Líder de Projetos ( ) Atuo no momento ( ) Já atuei em projetos passados Arquiteto/Líder Técnico ( ) Atuo no momento ( ) Já atuei em projetos passados Outro: __________________ ( ) Atuo no momento ( ) Já atuei em projetos passados 3 - Há quanto tempo você trabalha em desenvolvimento de software? ( ) nunca trabalhei ( ) menos de 1 ano ( ) de 1 a 3 anos ( ) de 3 a 5 anos ( ) mais de 5 anos 4 - Em quantos projetos de desenvolvimento de software aproximadamente você participou? ( ) nenhum projeto ( ) de 1 a 3 projetos ( ) de 3 a 5 projetos ( ) mais de 5 projetos 53 5 – Qual o seu conhecimento sobre as seguintes tecnologias? UML / Casos de Uso ( ) Não ( ) Já ouvi ( ) Conheço e Já ( ) Tenho muito conhecimento / conheço falar usei Domino BDD (Behavior Driven Development) ( ) Não ( ) Já ouvi ( ) Conheço e Já conheço falar usei ( ) Tenho muito conhecimento / Domino Gherkin ( ) Não conheço ( ) Conheço e Já usei ( ) Tenho muito conhecimento / Domino Outros: __________________________ ( ) Não ( ) Já ouvi ( ) Conheço e Já conheço falar usei ( ) Tenho muito conhecimento / Domino ( ) Já ouvi falar 6 – Qual o seu conhecimento sobre o domínio do Sistema de Controle de Permissões (ZIS1)? ( ) Não conheço ( ) Conheço Parcialmente ( ) Conheço 7 – Você é membro da equipe responsável pelo desenvolvimento do Sistema de Controle de Permissões (ZIS1)? ( ) Sim ( ) Não 54 ANEXO II – Questionário de Avaliação da Documentação Esse questionário é parte do Trabalho de Conclusão de Curso do Bacharelado em Sistemas de Informação da UNIRIO, com foco em processos de software. Seu objetivo é avaliar a forma de descrição de requisitos por meio de Casos de Uso e de Features. Solicitamos sua colaboração, respondendo a algumas questões. Não há respostas certas ou erradas em relação a quaisquer dos itens. Os dados de identificação não serão mencionados no relatório da pesquisa, o que preservará o anonimato e sigilo dos respondentes. Se houver necessidade de maiores esclarecimentos, por favor envie um e-mail para os responsáveis: Rafaela Sampaio – [email protected] Gleison Santos - [email protected] Obrigado pela sua participação. Você está recebendo 2 conjuntos de requisitos. Cada conjunto é composto por 1 Caso de Uso e 1 ou mais Features. Leia-os e responda conforme solicitado. Por favor, marque o tempo gasto. Nome: __________________________________________________________ Hora de Início: _______________ _______________ Hora Fim: _______________ Total: PARTE 1 – Objetivo Geral dos Requisitos – Responda às questões abaixo. 1 - Qual é o objetivo de cada conjunto requisitos apresentado? Houve diferença de entendimento entre o Caso de Uso e a(s) Feature(s) correspondente(s)? Explique. Conjunto A | Conjunto B | | | | | | | 2 - Quais os caminhos alternativos estão presentes em cada conjunto de requisitos? Houve diferença de entendimento entre o Caso de Uso e a(s) Feature(s) correspondente(s)? Explique. Conjunto A | Conjunto B | | | | | | | 55 PARTE 2 - Em relação à forma de escrita de requisitos como Casos de Uso e como Features, responda às questões abaixo. Algumas perguntas são referentes à sua perspectiva de acordo com diferentes papeis. 1 - Qual a facilidade de compreensão do objetivo do requisito? Casos de Uso: Features: ( ) Difícil ( ) Difícil ( ) Um Pouco Difícil ( ) Um Pouco Difícil ( ) Nem fácil, Nem Difícil ( ) Nem fácil, Nem Difícil ( ) Um Pouco Fácil ( ) Um Pouco Fácil ( ) Fácil ( ) Fácil ( ) Não Sei Responder ( ) Não Sei Responder 2 - Pensando como um programador, qual das duas opções você considera melhor para utilizar na hora da implementação do código? Conjunto A ( ) Casos de Uso ( ) Indiferente ( ) Features Conjunto B ( ) Casos de Uso ( ) Indiferente ( ) Features 3 - Pensando como um programador, qual das duas opções você considera melhor para utilizar na hora da implementar os testes? Conjunto A ( ) Casos de Uso ( ) Indiferente ( ) Features Conjunto B ( ) Casos de Uso ( ) Indiferente ( ) Features 4 - Pensando como um programador, qual das duas opções você considera melhor para entender o objetivo do requisito? Conjunto A ( ) Casos de Uso ( ) Indiferente ( ) Features Conjunto B ( ) Casos de Uso ( ) Indiferente ( ) Features 5 - Pensando como um membro da equipe de testes, qual das duas opções você considera melhor para utilizar na hora de definir os casos de testes? Conjunto A ( ) Casos de Uso ( ) Indiferente ( ) Features Conjunto B ( ) Casos de Uso ( ) Indiferente ( ) Features 6 - Pensando como um membro da equipe de testes, qual das duas opções você considera melhor para utilizar na hora de executar os casos de testes? Conjunto A ( ) Casos de Uso ( ) Indiferente ( ) Features Conjunto B ( ) Casos de Uso ( ) Indiferente ( ) Features 7 - Pensando como um membro da equipe de testes, qual das duas opções você considera melhor para entender o objetivo do requisito? Conjunto A ( ) Casos de Uso ( ) Indiferente ( ) Features Conjunto B ( ) Casos de Uso ( ) Indiferente ( ) Features 8 - Pensando como um analista, qual das duas opções você considera melhor para entender o objetivo do requisito? Conjunto A ( ) Casos de Uso ( ) Indiferente ( ) Features Conjunto B ( ) Casos de Uso ( ) Indiferente ( ) Features 56 9 - Pensando como um analista, qual das duas opções você considera melhor para descrever o objetivo do requisito? Conjunto A ( ) Casos de Uso ( ) Indiferente ( ) Features Conjunto B ( ) Casos de Uso ( ) Indiferente ( ) Features 10 - Pensando como um analista, qual das duas opções você considera melhor para documentar o requisito? Conjunto A ( ) Casos de Uso ( ) Indiferente ( ) Features Conjunto B ( ) Casos de Uso ( ) Indiferente ( ) Features 11 - Pensando como um analista, qual das duas opções você considera melhor para passar os detalhes do requisito à equipe? Conjunto A ( ) Casos de Uso ( ) Indiferente ( ) Features Conjunto B ( ) Casos de Uso ( ) Indiferente ( ) Features 12 - Pensando como um analista, qual das duas opções você considera melhor para descrever as regras de negócio? Conjunto A ( ) Casos de Uso ( ) Indiferente ( ) Features Conjunto B ( ) Casos de Uso ( ) Indiferente ( ) Features 13 - Pensando como um analista, qual das duas opções você considera melhor para descrever o que deve ser garantido para que a funcionalidade representada pelo requisito possa ser executada? Conjunto A ( ) Casos de Uso ( ) Indiferente ( ) Features Conjunto B ( ) Casos de Uso ( ) Indiferente ( ) Features PARTE 3 - Em relação ao conteúdo dos Casos de Uso e das Features, responda às questões abaixo. 1 - Caso você considere que algum requisito apresente uma informação desnecessária, identifique-o abaixo e explique o problema reportado. Caso de Uso ( )A ( )B Feature ( )A ( )B 2 - Você considera que há alguma informação inconsistente no requisito? Caso de Uso ( )A ( )B Feature ( )A ( )B 3 - Você considera que há alguma informação ambígua no requisito? Caso de Uso ( )A ( )B Feature ( )A ( )B 4 - Você considera que há alguma informação omissa no requisito? Caso de Uso ( )A ( )B Feature ( )A ( )B 5 - Você considera que há alguma informação estranha no requisito? Caso de Uso ( )A ( )B Feature ( )A ( )B 57 Considerações Gerais: Neste espaço informe quaisquer considerações sobre o material, a pesquisa e o questionário que julgar serem relevantes. 58 ANEXO III – Caso de Uso 03 - Administrar Cadastro de Grupo Sistema de Controle de Permissões Caso de uso 03: Administrar Cadastro de Grupos de Permissões Descrição Este caso de uso permite que um Administrador do Sistema gerencie os grupos de permissões de cada órgão. Atores Administrador Fluxo Básico: Consultar Grupo [CO002] Este caso de uso inicia-se quando o usuário indica a intenção de pesquisar grupo. 1. O sistema apresenta os Filtros de pesquisa de Grupo e a opção: Incluir Grupo [A1] 2. O usuário preenche e submete a pesquisa; 3. O sistema processa a pesquisa; 4. O sistema apresenta todos os itens do Resultado da consulta de Grupo conforme o filtro selecionado e as opções: Detalhar Grupo Incluir Grupo [A1] Editar Grupo [A2] Apagar Grupo [A3] 5. O usuário seleciona a opção Detalhar Grupo. 6. O sistema apresenta a Lista de atributos de detalhes da consulta de grupo; 7. O caso de uso se encerra. Fluxo Alternativo A1: Incluir Grupo [CO002] Este fluxo inicia-se quando o usuário indica a intenção de incluir grupo no passo 6 do Fluxo Alternativo A2; 1. O sistema solicita ao usuário o preenchimento dos dados da Lista de atributos de detalhes da inclusão de Grupo. 2. O usuário preenche os dados e solicita a inclusão; 3. O sistema valida e realiza a inclusão dos dados informados;[RN 7.1.1] [A4][A5] 4. O sistema exibe uma mensagem informando que a inclusão foi realizada com sucesso. [M009] 5. O caso de uso retorna ao passo 6 do Fluxo Alternativo A2. Fluxo Alternativo A2: Editar Grupo [CO001] Este fluxo inicia-se quando o usuário indica a intenção de Editar Grupo no passo 6do Fluxo Alternativo A2; 1. O sistema apresenta a Lista de atributos de detalhes da alteração de Grupo; 2. O usuário altera os dados desejados e solicita a alteração; 3. O sistema valida os dados informados; [RN 7.1.1][A4] [A5] 4. O sistema registra as alterações; 5. O sistema exibe uma mensagem de confirmação informando que a alteração foi realizada com sucesso; [M012] 6. O caso de uso se encerra. Fluxo Alternativo A3: Apagar Grupo Este fluxo inicia-se quando o usuário seleciona a opção Apagar um Grupo no passo 6 do Fluxo Alternativo A2; 1. O sistema solicita a confirmação para a exclusão; 59 2. 3. 4. 5. O usuário confirma a exclusão;[M014] O sistema valida e remove o Grupo confirmado; O sistema exibe uma mensagem informando que a exclusão do Grupo foi realizada com sucesso; [M011] O caso de uso se encerra. Fluxo Alternativo A4: Campos obrigatórios não preenchidos Este fluxo inicia-se quando o sistema detecta que o usuário não informou algum campo obrigatório na inclusão ou edição de grupo; 1. O sistema exibe uma mensagem de erro; 2. O caso de uso retorna ao passo anterior do fluxo chamador. Fluxo Alternativo A5: String LDAP inválida Este fluxo inicia-se quando o sistema detecta a quebra da regra [RN 7.1.1]; 1. O sistema exibe uma mensagem de erro; [M047] 2. O caso de uso retorna ao passo anterior do fluxo chamador. Pré-condições Não se aplica. Pós-condições Não é relevante. Requisitos não funcionais RNF01 – A interface deve ser amigável. Mini-Estruturas de dados Informação – Filtros da pesquisa de Grupo Campo Órgão Opção de realizar consulta do filtro informado Opção de realizar inclusão Informação – Resultado da pesquisa de Grupo Campo Órgão Grupos do Órgão Nome do Grupo Texto de Busca no LDAP Operações Editar Grupo Apagar Grupo Atributos (Opcional) Editável – Texto – Obrigatório Botão Pesquisar Botão Incluir Atributos (Opcional) Protegido – Label – Obrigatório Protegido – Label – Obrigatório Protegido – Label – Obrigatório Protegido – Label – Obrigatório Link Editar Grupo para edição de grupo Link Apagar Grupo para exclusão de grupo Informação – Lista de atributos de detalhes da consulta de Grupo Campo Atributos (Opcional) Órgão Protegido – Label – Obrigatório Sigla Protegido – Label – Obrigatório Nome Protegido – Label – Obrigatório Matrícula Gerente Protegido – Label – Opcional Grupos do Órgão Protegido – Label – Obrigatório Nome do Grupo Protegido – Label – Obrigatório Texto de Busca no LDAP Protegido – Label – Obrigatório Operações Editar Grupo Botão Editar Grupo Apagar Grupo Botão Apagar Grupo 60 Informação - Lista de atributos de detalhes da inclusão de Grupo Campo Atributos (Opcional) Nome Editável – Texto – Obrigatório Texto no LDAP Editável – Texto – Obrigatório Opção de inclusão Botão Incluir Grupo Opção de retorno Botão Voltar Informação - Lista de atributos de detalhes da edição de Grupo Campos Atributos (Opcional) Nome Editável – Texto – Obrigatório Texto no LDAP Editável – Texto – Obrigatório Opção de edição Botão Editar Grupo Opção de retorno Botão Voltar Cenários Fluxo Básico Fluxo Básico + Fluxo Alternativo A1 Fluxo Básico + Fluxo Alternativo A2 Fluxo Básico + Fluxo Alternativo A3 Fluxo Básico + Fluxo Alternativo A1 + Fluxo Alternativo A4 + Fluxo Alternativo A1 Fluxo Básico + Fluxo Alternativo A1 + Fluxo Alternativo A5 + Fluxo Alternativo A1 Fluxo Básico + Fluxo Alternativo A2 + Fluxo Alternativo A4 + Fluxo Alternativo A2 Fluxo Básico + Fluxo Alternativo A2 + Fluxo Alternativo A5 + Fluxo Alternativo A2 61 ANEXO IV – Caso de Uso 04 - Importar Dados de Gerentes e Substitutos Sistema de Controle de Permissões Caso de uso 04: Importar dados de Gerentes e Substitutos Descrição Este caso de uso permite que o sistema importe os dados de gerentes e substitutos de órgão. Atores Módulo de Administração de Configuração do Sistema Administrador Usuário Especial (Gerente e substituto) Fluxo Básico: Importar dados Diariamente [CO004] [CO006] Este caso de uso inicia-se quando o sistema detecta a necessidade de Importar dados de gerentes e substitutos. 1. O sistema valida os dados do arquivo de importação; [A3][A4] 2. Sistema persiste os dados e registra as alterações realizadas e o resumo da operação em um arquivo de log de importação; [RN 2.1.3][RN 3.1][A1][M045] 3. Caso de uso se encerra. Fluxo Alternativo A1: Solicitar validação da lista de usuários Este fluxo inicia-se quando o há uma alteração de gerência (gerente atual diferente do gerente anterior) de um órgão; 1. O sistema obtém a lista de usuários que constam em cada grupo do órgão no AD; 2. O sistema cria as validações necessárias e realiza a inclusão da lista de usuários que constam em cada grupo do órgão, obtida através do AD; [RN 2.1.2][RN 3.2.2][RN 6.1.1][A2] 3. O sistema envia um e-mail ao novo gerente do órgão informando que há uma validação da lista de usuários pendente; [M044][RN 3.2.3] 4. O caso de uso se encerra. Fluxo Alternativo A2: Órgão sem gerente e sem substituto Este caso de uso inicia-se quando o sistema detecta que não há nem gerente nem substituto em algum órgão. 1. O sistema registra o problema no arquivo de log de importação; [M045] 2. O sistema envia e-mail para a produção alertando o problema;[RN 6.1.1][M046] 3. O caso de uso retorna ao passo 2 do fluxo alternativo A1. Fluxo Alternativo A3: Formato de Arquivo Inválido Este caso de uso inicia-se quando o sistema detecta que o formato do arquivo de informação é inválido. 1. O sistema envia e-mail para a produção alertando o problema; [M048] 2. O caso de uso se encerra. Fluxo Alternativo A4: Extensão de Arquivo Inválida Este caso de uso inicia-se quando o sistema detecta que a extensão do arquivo de importação é inválida. 1. O sistema envia e-mail para a produção alertando o problema; [M049] 2. O caso de uso se encerra. Pré-condições Não se aplica. 62 Pós-condições Registro de importação de gerentes criado em arquivo de log. Solicitações de validação enviadas aos novos gerentes. Validações pendentes criadas para cada órgão onde o gerente foi alterado. Para órgãos que estavam com validação pendente e sofreram alteração de gerência a validação antiga recebe o status de “Suspensa por validação de alteração de gerência”. Requisitos não funcionais RNF01 – O arquivo de importação dos dados de gerentes e substitutos deve ter a extensão txt. Mini-Estruturas de dados Não se aplica. Cenários Fluxo Básico Fluxo Básico + Fluxo Alternativo A1 Fluxo Básico + Fluxo Alternativo A3 Fluxo Básico + Fluxo Alternativo A4 Fluxo Básico + Fluxo Alternativo A1 + Fluxo Alternativo A2 + Fluxo Alternativo A1 63 ANEXO V – Caso de Uso 06 - Solicitar Validação da Lista de Usuários Pendente Sistema de Controle de Permissões Caso de uso 06: Solicitar Validação da Lista de Usuários Pendente Descrição Este caso de uso permite que o Sistema envie lembretes de validação aos gerentes e substitutos dos órgãos. Atores Módulo de Administração de Configuração do Sistema Fluxo Básico: Enviar lembrete de validação [CO004] Este caso de uso inicia-se quando o sistema verifica que existem validações pendentes. 1. O sistema verifica se existem lembretes de validação a enviar. 2. O sistema envia um e-mail ao gerente e substituto de cada órgão com validação pendente informando que há uma validação da lista de usuários pendente. [M004] 3. O sistema atualiza a quantidade de lembretes já enviados de cada validação. 4. Caso de uso se encerra. Pré-condições Não se aplica. Pós-condições E-mail de lembrete de validação enviado aos gerentes e substitutos dos órgãos aos quais foi necessário o envio de lembrete. Requisitos não funcionais Não se aplica. Mini-Estruturas de dados Informação – Filtros da pesquisa de Grupo Campo Órgão Opção de realizar consulta do filtro informado Opção de realizar inclusão Atributos (Opcional) Editável – Texto – Obrigatório Botão Pesquisar Botão Incluir Cenários Fluxo Básico 64 ANEXO VI – Caso de Uso 07 - Registrar Validação da Lista de Usuários Sistema de Controle de Permissões Caso de uso 07: Registrar Validação da Lista de Usuários Descrição Este caso de uso permite que um Gerente ou Substituto de órgão registre a validação da lista de permissões de usuários do órgão. Atores Usuário Especial (Gerente e substituto) Fluxo Básico: Listar Validações Pendentes Este caso de uso inicia-se quando o usuário indica a intenção de listar as validações pendentes dos órgãos que é gerente ou substituto. 8. O sistema apresenta todos os itens do Resultado da listagem de validações pendentes [A1] e a opção: Registrar Validação [A2] 9. Caso de uso se encerra. Fluxo Alternativo A1: Nenhuma Validação Encontrada Este fluxo inicia quando o usuário não possui nenhuma validação pendente no passo 1 do Fluxo Básico; 1. O sistema apresenta uma mensagem informando que nenhum registro foi encontrado. [M003] 2. Caso de uso se encerra. Fluxo Alternativo A2: Registrar Validação [CO005] Este fluxo inicia quando o usuário solicita opção Registrar Validação no passo 1 do Fluxo Básico; 5. O sistema solicita ao usuário o preenchimento dos dados da Lista de atributos de detalhes do registro de Validação e apresenta as opções: Adicionar Usuário [A3] Remover Usuário [A4] 6. O usuário preenche os dados e solicita o registro. 7. O sistema valida e realiza o registro dos dados informados. [RN 5.1] 8. O sistema envia um e-mail ao grupo de produção informando os dados da validação. [M042] 9. O sistema exibe uma mensagem informando que o registro foi realizado com sucesso. [M021] 10. O caso de uso se encerra. Fluxo Alternativo A3: Adicionar Usuário Este fluxo inicia quando o usuário indica a intenção de adicionar um usuário a um grupo da validação no passo 1 do Fluxo Alternativo A2; 1. O sistema valida a matricula do usuário. [RN 5.1.4][A5][A6] 2. O sistema registra os dados do usuário e o associa ao grupo. 3. O caso de uso retorna ao passo 1 do Fluxo Alternativo A2. Fluxo Alternativo A4: Remover Usuário Este fluxo inicia-se quando o usuário indica a intenção de remover um usuário de um grupo da validação no passo 1 do Fluxo Alternativo A2; Fluxo Alternativo A5: Matrícula não informada Este fluxo inicia-se quando o sistema detecta que a matrícula do usuário não foi informada. 1. O sistema exibe mensagem de erro; [M040] 2. O caso de uso retorna ao passo 1 do Fluxo Alternativo A2. 65 Fluxo Alternativo A6: Matrícula Inexistente Este fluxo inicia-se quando o sistema detecta que a matrícula fornecida não existe. 1. O sistema exibe mensagem de erro; [M022] 2. O caso de uso retorna ao passo 1 do Fluxo Alternativo A2. Pré-condições Não se aplica. Pós-condições Será possível o registro de uma validação da lista de usuários que terão acesso ao drive de rede do órgão. Requisitos não funcionais Não se aplica. Mini-Estruturas de dados Informação – Resultado da listagem de validações pendentes Campo Atributos (Opcional) Nome do Órgão Protegido – Label – Obrigatório Status Protegido – Label – Obrigatório Ações Registrar Ícone Registrar para realizar registro Informação – Lista de atributos de detalhes do registro de Validação Campo Atributos (Opcional) Sigla do Órgão Protegido – Label – Obrigatório Nome do Órgão Protegido – Label – Obrigatório Gerente do Órgão Protegido – Label – Obrigatório Data de criação Protegido – Label – Obrigatório Data limite para registro Protegido – Label – Obrigatório Status Protegido – Label – Obrigatório Inclusão de Usuário Grupo Protegido - Combobox Matrícula Editável – Texto – Opcional Opção de adicionar usuário Botão Adicionar Lista de Usuários Usuário Protegido – Label – Obrigatório Matrícula Protegido – Label – Obrigatório Opção de remover usuário Botão excluir Opção de realizar Registro Botão Registrar Opção de retorno Botão Voltar Cenários Fluxo Básico + Fluxo Alternativo A1 Fluxo Básico + Fluxo Alternativo A2 Fluxo Básico + Fluxo Alternativo A2 + Fluxo Alternativo A3 + Fluxo Alternativo A2 Fluxo Básico + Fluxo Alternativo A2 + Fluxo Alternativo A4 + Fluxo Alternativo A2 Fluxo Básico + Fluxo Alternativo A2 + Fluxo Alternativo A3 + Fluxo Alternativo A5 + Fluxo Alternativo A2 Fluxo Básico + Fluxo Alternativo A2 + Fluxo Alternativo A3 + Fluxo Alternativo A6 + Fluxo Alternativo A2 66 ANEXO VII – Documento de Especificação Complementar Sistema de Controle de Permissões Especificação complementar 1. Descrição: A finalidade deste documento é descrever as estruturas de dados do Sistema de Controle de Drives de Rede e as mensagens apresentadas ao usuário quando ocorre algum evento ou interação. 2. Código M001 M002 M003 M004 M005 M006 M007 M008 M047 M009 M010 M011 M012 M013 M014 M015 M016 M017 M018 M019 M020 M021 M022 M023 M024 M025 M026 M027 M030 Mensagens do sistema Descritivo Gerais Informe os campos obrigatórios. O usuário não tem permissão para acessar a funcionalidade. Nenhum registro foi encontrado para o critério de pesquisa. Administrar Cadastro de Órgão Órgão cadastrado com sucesso. O nome e a sigla do órgão não podem ser nulos. Já existe um órgão ativado com a sigla [sigla_do_orgao]. Nome deve ser preenchido. A String deve ser preenchida. A String LDAP fornecida é inválida. O grupo foi adicionado ao órgão com sucesso. O órgão foi desativado com sucesso. O grupo foi apagado com sucesso. O grupo foi atualizado com sucesso. Confirma a exclusão do Órgão? Confirma a remoção do Grupo? Importação de Dados Importação realizada com sucesso. Um arquivo de log foi criado com o nome [nome_do_arquivo]. Arquivo com conteúdo inválido. Nenhum arquivo selecionado. Arquivo no formato inválido. A validação do órgão falhou. Desculpe, ocorreu um erro ao realizar a requisição. Tente novamente e, se o erro persistir, contate o administrador. Registro de Validação. Validação registrada com sucesso. A Matrícula informada não pôde ser encontrada, verifique se a mesma está correta. O usuário foi incluído com sucesso no grupo. A validação já expirou. Usuário já esta dentro do grupo da validação. Ocorreu um erro. A transação não foi concluída. O usuário foi removido com sucesso do grupo. Confirma a remoção do Usuário? 67 M040 M031 M032 M033 M034 M035 M036 M037 M038 M039 M041 M042 Informe o campo obrigatório: Matrícula. Validação de Matricula e Senha Erro na Autenticação do usuário. Identificação inválida. A Identificação é formada pelo prefixo do empregado (FC, FR ou FE) mais a matrícula sem o dígito. Configurações do Sistema O número mínimo de meses para a revalidação da lista de usuários deve ser de 2 meses. O número de lembretes deve ser no mínimo 2. Alterações realizadas com sucesso Informe o campo obrigatório: Caminho do arquivo de importação Informe o campo obrigatório: E-mail da Produção Informe o campo obrigatório: Número de meses para a validação periódica Informe o campo obrigatório: Quantidade de lembretes a enviar Email para produção alertando Validação expirada Assunto: [ZIS1] Alerta de validacao expirada Prezados, A validacao de Id <idDaValidacao> com data de expiração em <dataDeExpiracao> foi expirada. Email para produção alertando Registro de Validação Assunto: [ZIS1] Registro da Validacao <idDaValidacao> Prezados, Segue o resumo do registro da validacao no sistema: Identificador da Validacao: <idDaValidacao> Data de Criacao: dd/mm/yyyy Data de Expiracao: dd/mm/yyyy Data de Registro: dd/mm/yyyy Matricula e Nome do Gerente que registrou a validacao: <matricula> - <nome> --------------------------------------------------------------------------------Permissoes --------------------------------------------------------------------------------Usuarios com permissao no Grupo <nomeDoGrupo> - <matricula> | <nome> - <matricula> | <nome> - <matricula> | <nome> - <matricula> | <nome> **************** Usuarios com permissao no Grupo <nomeDoGrupo> - <matricula> | <nome> - <matricula> | <nome> - <matricula> | <nome> - <matricula> | <nome> M043 **************** Email para produção alertando erro na criação de Validação Assunto: [ZIS1] Erro ao Criar Validacao de Orgao 68 M044 M045 Prezados, Ocorreu um erro ao tentar criar validacao para o orgao: <siglaDoOrgao> Email enviado ao gerente relativo a validação pendente. Gerente, existe uma lista de usuários pendente para validação. Acesse o link para realizar a validação.[Colocar um link redirecionando para a lista de usuários dos grupos do órgão] Log de Importação Orgao presente no arquivo e ignorado por nao existir: XXXX Orgao presente no arquivo e ignorado por nao existir: YYYY Nome: USUARIO GERENTE Gerente Principal: Orgao.A Gerente Substituto: Orgao.B Nome: USUARIO GERENTE 2 Gerente Principal: Gerente Substituto: M046 Nome: USUARIO GERENTE 3 Gerente Principal: Orgao.C Gerente Substituto: E-mail para produção alertando Órgão sem gerentes Assunto: [ZIS1] Órgão sem gerentes M048 Prezados, O Órgão <nome_do_orgão> não possui gerentes; Impossível criar validações para o mesmo. Email para produção alertando formato inválido Assunto: [ZIS1] Erro ao Realizar Importação M049 Prezados, Ocorreu um erro ao tentar importar os dados do arquivo <link caminho do arquivo>. O formato do arquivo é inválido. Email para produção alertando extensão inválida Assunto: [ZIS1] Erro ao Realizar Importação Prezados, Ocorreu um erro ao tentar importar os dados do arquivo <link caminho do arquivo>. A extensão do arquivo é inválida. 69 3. Comportamentos Identificação e Nome Descrição Comportamentos Gerais CO001 CO002 CO003 CO004 CO005 CO006 Todas as telas devem apresentar um Título no topo do Navegador, o mesmo título que aparece no Menu/Submenu. Por exemplo: Se no menu aparece “Órgão”, então o sistema deve apresentar o mesmo título em todas as telas desse assunto. O mesmo vale para o submenu. Se no submenu aparece “Validação”, então o sistema deve apresentar o mesmo título em todas as telas desse assunto; A mensagem “Nenhum registro foi encontrado para o critério de pesquisa” somente deve ser apresentada, após a realização de uma pesquisa que não retorna nenhum registro; No resultado das pesquisas, o sistema deve apresentar 10 linhas por página; Nos fluxos de inclusão e de alteração, a validação dos campos deve ser ao clicar no botão; Ao apresentar uma mensagem de erro do sistema ou mensagem informando que os campos obrigatórios devem ser preenchidos; Ao carregar a tela, os campos devem ser preenchidos com os dados cadastrados no sistema; Ao clicar em “Limpar”, todos os campos da tela devem ter seus valores apagados. Ao carregar a tela, todos os campos devem aparecer vazios; Ao clicar em “Limpar”, todos os campos da tela devem ter seus valores apagados; Ao carregar a tela, todos os campos devem estar preenchidos com os dados cadastrados, porém devem estar protegidos, e não deve permitir nenhuma operação, apenas a visualização; As rotinas periódicas do sistema são executadas de 6 em 6 horas. A tela deve ser carregada rapidamente. Todos os campos devem estar preenchidos com os dados cadastrados; Para cada grupo cadastrado no órgão da validação haverá uma lista de usuários na tela, identificando quais usuários possuem permissão no grupo de segurança do LDAP. O sistema só deve permitir a importação de arquivos no formato texto; Sistema deve validar se o layout do arquivo é válido. Layout do arquivo de importação: [MATRICULA], [DIGITO_VER], [NOME_COMPLETO], [NOME_EMAIL], [DOMINIO] [char] [DIRETORIA] [char], [SUPERINTEN], [DEPARTAMENTO], [DIVISAO], 70 [GERENTE], [SUBSTITUTO] Ao final da importação, o sistema deve gravar em um arquivo de log uma lista com o resultado da importação. ANEXO VIII – Documento de Regras de Negócio Sistema de Controle de Permissões Regras de Negócio RN.1 Finalidade O objetivo deste documento é reunir todas as regras de negócio relacionadas ao Sistema de Controle de Drives de Rede. RN.2 Definições Configurações do Sistema RN.2.1 Validação de alteração de Configurações do Sistema. RN.2.1.1 O número mínimo de meses para a revalidação da lista de usuários deve ser de 2 meses, podendo ser estendido. RN.2.1.2 Após o envio da lista de usuários para o gerente e substituto, o período máximo para registro da validação deve ser 35 dias. RN.2.1.3 O número de lembretes deverá ser no mínimo 2, podendo ser estendido. A freqüência deverá respeitar a periodicidade (diário, semanal, mensal). RN.2.1.4 O que delimita o intervalo entre validações periódicas é a data de criação de uma validação periódica acrescida da quantidade de meses definida na configuração do sistema no momento da criação desta mesma validação. Órgão RN.2.2 Inclusão, alteração e exclusão de órgão RN.2.2.1 Não poderá haver repetição de sigla do órgão. RN.2.2.2 Ao excluir um órgão: se ele não possuir nenhuma validação seu registro é excluído do sistema. Caso contrário, o seu status é alterado para “desativado”. RN.2.2.3 A sigla do órgão será composta por <Sigla do Nome do Órgão>.<Sigla da Diretoria a qual o órgão pertence>. Caso seja apenas uma diretoria, então a sigla será a própria sigla da diretoria. Gerentes e Substitutos RN.2.3 Validação de Importação de Gerentes e Substitutos RN.2.3.1 A cada nova importação serão atualizados os dados de gerentes/substitutos de órgãos que forem diferentes dos registrados no sistema. Ou seja, serão atualizados gerentes/substitutos novos ou em caso de órgãos que passaram a ficar sem gerente/substituto será realizada a remoção de gerente/substituto; RN.2.4 Validação do envio da lista de usuários após a importação da lista de gerentes. RN.2.4.1 Não poderá haver mais de uma validação pendente por órgão. Uma nova validação suspende todas as validações pendentes. RN.2.4.2 Sempre que houver alteração na gerência do órgão, deve ser solicitada uma validação da lista de usuários dos grupos do órgão; RN.2.4.3 O e-mail enviado para a gerência, solicitando a revalidação da lista, deve conter um link que redirecionara para o sistema, onde será feita a revalidação. Validação periódica RN.2.5 Validação periódica conforme configuração RN.2.5.1 A periodicidade da solicitação de validação da lista de usuários do grupo de trabalho do órgão deve respeitar as configurações do sistema; Registrar Validação RN.2.6 Registro de Validação RN.2.6.1 Somente o gerente / substituto pode realizar a validação dos seus órgãos; 71 RN.2.6.2 É permitido ao gerente / substituto adicionar qualquer usuário a lista de usuários que será validada; RN.2.6.3 Não será possível modificar uma validação registrada no sistema; RN.2.6.4 Na inclusão de um membro no grupo em uma validação, o sistema deverá utilizar a matrícula informada pelo usuário para encontrar o nome do colaborador no AD. Validações RN.2.7 Órgão sem gerente RN.2.7.1 Se no ato de criação de validação para o órgão, seja esta por alteração de gerência ou periodicidade, o órgão não possuir nem gerente e nem substituto a produção deve ser alertada sobre este problema e a validação pendente não é criada. Grupos RN.2.8 Inclusão de grupos RN.2.8.1 Na inclusão ou alteração de um grupo o sistema deverá verificar se a string LDAP fornecida é válida. 72 ANEXO IX – Glossário Sistema de Controle de Permissões Glossário 5 Introdução 5.1 5.2 Finalidade Este documento é utilizado para registrar as terminologias específicas ao domínio do sistema. Estas terminologias são relevantes para a compreensão das descrições de casos de uso e outras documentações do projeto. O objetivo deste documento é estabelecer um ponto inicial para entendimento de padrões e definição de termos que serão necessários para evitar problemas de interpretação durante o ciclo de vida do projeto. Referências Não se aplica. 6 Termos do Glossário 6.1 Siglas 6.1 GIR.A Gerência de Infra Estrutura de Rede. 6.1 AD Active Directory. É utilizado para a autenticação de usuários no sistema e também para a consulta de matrícula e nome de usuários. 6.2 Termos do domínio 6.2 Drive de rede Todo departamento de Furnas possui um drive de rede que armazena dados relativos a órgão. 6.2 Lista de Usuários Refere-se a lista de usuários que deve ser validada em relação a permissão de acesso ao drive de rede do órgão. 6.2 Query Significa Consulta. É o processo de extração de informações de um banco de dados e sua apresentação em forma adequada ao uso. Neste caso, é consulta é feita no AD. 6.2 LDAP Lightweight Directory Access Protocol, ou LDAP, é um protocolo de aplicação aberto, livre de fornecedor e padrão de indústria para acessar e manter serviços de informação de diretório distribuído sobre uma rede de Protocolo da Internet (IP). 6.2 Substituto Gerente substituto do órgão que pode responder pela gerência do órgão em caso de ausência do gerente principal. 6.2 Produção Equipe responsável pela configuração dos ambientes de Furnas de acordo com as decisões tomadas no sistema. 6.2 Validação Periódica Validação da lista de usuários que deve ter permissão de acesso aos drives de rede do órgão que é criada periodicamente de acordo com a as configurações do sistema. 6.2 Validação por Alteração Gerencial Validação da lista de usuários que deve ter permissão de acesso aos drives de rede do órgão que é criada quando há uma alteração (mudança ou remoção) de gerente. 6.2 Órgão Subdivisão do ambiente corporativo de Furnas. 6.2 Grupo Agrupamento de usuários que possuem permissão de acesso a um determinado drive de rede do órgão. 73 ANEXO X – Features do Caso de Uso 03 Feature: Consultar Grupos # A interface deve ser amigável. In order to visualizar os grupos de um determinado órgão As an administrador do sistema I want to consultar os grupos do órgão Background: Given Estou na pesquisa de grupos And quero consultar os grupos de um órgão Scenario: Consultar Grupos # Ao carregar a tela, todos os campos devem aparecer vazios; # Ao clicar em “Limpar”, todos os campos da tela devem ter seus valores apagados; When O sistema apresenta os filtros de pesquisa e a opção “Incluir Grupo” # Filtros de pesquisa de grupo # Órgão – Editável – Texto - Obrigatório # Opção de realizar consulta do filtro informado – Botão Pesquisar # Opção de realizar inclusão – Botão Incluir And Eu informo a sigla do órgão Then O sistema processa a pesquisa And o sistema apresenta os dados e as opções de “Detalhar Grupo”, “Incluir Grupo”, “Editar Grupo” e “Apagar Grupo”. # Resultado da pesquisa de Grupo # Órgão – Protegido – Label – Obrigatório # Grupos do Órgão – Protegido – Label – Obrigatório # Nome do Grupo – Protegido – Label – Obrigatório # Texto de Busca no LDAP – Protegido – Label – Obrigatório # Operações: # Editar Grupo Link Editar Grupo para edição de grupo # Apagar Grupo Link Apagar Grupo para exclusão de grupo Then Eu seleciono a opção “Detalhar Grupo”. And o sistema disponibiliza o grupo no detalhamento do órgão com as opções de “Editar Grupo” e “Apagar Grupo”. 74 # Lista de atributos de detalhes da consulta de Grupo # Órgão Protegido – Label – Obrigatório # Sigla Protegido – Label – Obrigatório # Nome Protegido – Label – Obrigatório # Matrícula Gerente – Protegido – Label – Opcional # Grupos do Órgão – Protegido – Label – Obrigatório # Nome do Grupo – Protegido – Label – Obrigatório # Texto de Busca no LDAP – Protegido – Label – Obrigatório # Operações: # Editar Grupo – Botão Editar Grupo # Apagar Grupo – Botão Apagar Grupo Feature: Incluir Grupo # A interface deve ser amigável. In order to incluir um grupo que contém os usuários que possuem certo tipo de acesso a um determinado drive de rede de um órgão As an administrador do sistema I want to incluir um novo grupo de um órgão Background: Given Eu estou na consulta de grupo And quero incluir um grupo. Scenario: Incluir Grupo # Ao carregar a tela, todos os campos devem aparecer vazios; # Ao clicar em “Limpar”, todos os campos da tela devem ter seus valores apagados; When O sistema disponibiliza a tela de inclusão # Lista de atributos de detalhes da consulta de Grupo # Nome – Editável – Texto – Obrigatório # Texto no LDAP – Editável – Texto – Obrigatório # Opção de inclusão – Botão Incluir Grupo # Opção de retorno – Botão Voltar And Eu informo o nome do grupo e o texto para busca dos dados do grupo no sistema LDAP Then O sistema verifica que o texto fornecido é válido para a busca no LDAP 75 And o sistema registra os dados do grupo And o sistema disponibiliza o grupo no detalhamento do órgão com as opções de editar e apagar grupo. And o sistema exibe a mensagem: “O grupo foi adicionado ao órgão com sucesso.”. Scenario: String LDAP inválida When Eu informo o nome do grupo e o texto para busca dos dados do grupo no sistema LDAP Then O sistema verifica que o texto fornecido é inválido para a busca no LDAP And o sistema exibe a mensagem: “A String LDAP fornecida é inválida.”. Scenario: Campos obrigatórios não preenchidos When Eu não informo um ou mais campos obrigatórios. Then O sistema verifica que existem campos obrigatórios não preenchidos. And o sistema exibe a mensagem: “Existem campos obrigatórios que não foram preenchidos: <nomes dos campos>.”. Feature: Editar Grupo # A interface deve ser amigável. In order to editar um grupo que contém os usuários que possuem certo tipo de acesso a um determinado drive de rede de um órgão As an administrador do sistema I want to editar um novo grupo de um órgão Background: Given Eu estou no detalhamento do órgão. And quero editar um grupo. Scenario: Editar Grupo #Ao carregar a tela, os campos devem ser preenchidos com os dados cadastrados no sistema; #Ao clicar em “Limpar”, todos os campos da tela devem ter seus valores apagados. When Eu acesso a opção de "Editar Grupo" Then O sistema exibe os dados do grupo para edição. 76 # Lista de atributos de detalhes da edição de Grupo # Nome – Editável – Texto – Obrigatório # Texto no LDAP – Editável – Texto – Obrigatório # Opção de inclusão – Botão Editar Grupo # Opção de retorno – Botão Voltar And Eu altero os dados de nome e texto LDAP. And O sistema verifica que o texto LDAP fornecido é válido. And O sistema registra os dados. And o sistema exibe a mensagem: “O grupo foi atualizado com sucesso.”. Scenario: String LDAP inválida When Eu informo o nome do grupo e o texto para busca dos dados do grupo no sistema LDAP Then O sistema verifica que o texto fornecido é inválido para a busca no LDAP And o sistema exibe a mensagem: “A String LDAP fornecida é inválida.”. Scenario: Campos obrigatórios não preenchidos When Eu não informo um ou mais campos obrigatórios. Then O sistema verifica que existem campos obrigatórios não preenchidos. And o sistema exibe a mensagem: “Existem campos obrigatórios que não foram preenchidos: <nomes dos campos>.”. Feature: Apagar Grupo # A interface deve ser amigável. In order to apagar um grupo que contém os usuários que possuem certo tipo de acesso a um determinado drive de rede de um órgão As an administrador do sistema I want to apagar um novo grupo de um órgão Background: Given Eu estou no detalhamento do órgão. And quero apagar um grupo. Scenario: Editar Grupo 77 When Eu acesso a opção de "Apagar Grupo" Then O sistema solicita a confirmação da exclusão com a mensagem: “Confirma a remoção do Grupo?”. And Eu confirmo a exclusão. And O sistema apaga os dados. And o sistema exibe a mensagem: “O grupo foi apagado com sucesso.”. Scenario: Exclusão não confirmada When Eu não confirmo a exclusão do grupo. Then O sistema não realiza a exclusão dos dados. And o sistema retorna para o resultado da consulta de grupos. 78 ANEXO XI – Features do Caso de Uso 04 Feature: Importar Dados de Gerentes e Substitutos In order to importar os dados de gerentes e substitutos dos órgãos As an Módulo de Administração de Configuração do Sistema / Administrador / Usuário Especial (Gerente e substituto) I want to localizar o arquivo de importação e atualizar os dados do sistema Background: Given A rotina de verificação de importação foi iniciada And O sistema detecta que é necessário realizar a importação dos dados Scenario: Importar Dados Diariamente A cada nova importação serão atualizados os dados de gerentes/substitutos de órgãos que forem diferentes dos registrados no sistema. Ou seja, serão atualizados gerentes/substitutos novos ou em caso de órgãos que passaram a ficar sem gerente/substituto será realizada a remoção de gerente/substituto; A sigla do órgão quando feita a importação, será composta por <Sigla do Nome do Órgão>.<Sigla da Diretoria a qual o órgão pertence>. Caso seja apenas uma diretoria, então a sigla será a própria sigla da diretoria. # As rotinas periódicas do sistema são executadas de 6 em 6 horas. When O sistema detecta a necessidade de Importar dados de gerentes e substitutos # O sistema só deve permitir a importação de arquivos no formato texto; # Sistema deve validar se o layout do arquivo é válido. # Layout do arquivo de importação: # [MATRICULA], # [DIGITO_VER], # [NOME_COMPLETO], # [NOME_EMAIL], # [DOMINIO] [char] # [DIRETORIA] [char], # [SUPERINTEN], # [DEPARTAMENTO], # [DIVISAO], # [GERENTE], 79 # [SUBSTITUTO] # Ao final da importação, o sistema deve gravar em um arquivo de log uma lista com o resultado da importação. Then O sistema verifica que os dados do arquivo de importação são válidos. And O sistema persiste os dados e registra as alterações realizadas e o resumo da operação em um arquivo de log de importação. # Padrão do log de importação: # Orgao presente no arquivo e ignorado por nao existir: XXXX # Orgao presente no arquivo e ignorado por nao existir: YYYY # # Nome: USUARIO GERENTE # Gerente Principal: Orgao.A # Gerente Substituto: Orgao.B # # Nome: USUARIO GERENTE 2 # Gerente Principal: # Gerente Substituto: # # Nome: USUARIO GERENTE 3 # Gerente Principal: Orgao.C # Gerente Substituto: Scenario: Solicitar Validação da Lista de Usuários Ao excluir um órgão: se ele não possuir nenhuma validação seu registro é excluído do sistema. Caso contrário, o seu status é alterado para “desativado”. Sempre que houver alteração na gerência do órgão, deve ser solicitada uma validação da lista de usuários dos grupos do órgão; O e-mail enviado para a gerência, solicitando a revalidação da lista, deve conter um link que redirecionara para o sistema, onde será feita a revalidação. When O sistema detecta que há uma alteração de gerência (gerente atual diferente do gerente anterior) de um órgão And O sistema obtém a lista de usuários que constam em cada grupo do órgão no AD; Then O sistema cria as validações necessárias e realiza a inclusão da lista de usuários que constam em cada grupo do órgão, obtida através do AD; 80 And O sistema envia um e-mail ao novo gerente do órgão informando que há uma validação da lista de usuários pendente; Scenario: Órgão sem gerente e sem substituto When O sistema detecta que há uma alteração de gerência (gerente atual diferente do gerente anterior) de um órgão And O sistema obtém a lista de usuários que constam em cada grupo do órgão no AD; Then O sistema cria as validações necessárias e realiza a inclusão da lista de usuários que constam em cada grupo do órgão, obtida através do AD; But O sistema detecta que não há nem gerente nem substituto em algum órgão Then O sistema envia e-mail para a produção alertando o problema; # E-mail para produção alertando Órgão sem gerentes # Assunto: [ZIS1] Órgão sem gerentes # # Prezados, # O Órgão <nome_do_orgão> não possui gerentes; Impossível criar validações para o mesmo. Scenario: Formato de arquivo inválido When O sistema detecta a necessidade de Importar dados de gerentes e substitutos # O sistema só deve permitir a importação de arquivos no formato texto; # Sistema deve validar se o layout do arquivo é válido. # Layout do arquivo de importação: # [MATRICULA], # [DIGITO_VER], # [NOME_COMPLETO], # [NOME_EMAIL], # [DOMINIO] [char] # [DIRETORIA] [char], # [SUPERINTEN], # [DEPARTAMENTO], # [DIVISAO], # [GERENTE], # [SUBSTITUTO] # Ao final da importação, o sistema deve gravar em um arquivo de log uma lista com o resultado da importação. 81 But O sistema verifica que os dados do arquivo de importação são inválidos. Then O sistema envia e-mail para a produção alertando o problema. # Email para produção alertando erro na importação de arquivo # Assunto: [ZIS1] Erro ao Realizar Importação # # Prezados, # Ocorreu um erro ao tentar importar os dados do arquivo <link caminho do arquivo>. # O formato do arquivo é inválido. Scenario: Extensão de arquivo inválida When O sistema detecta a necessidade de Importar dados de gerentes e substitutos # O sistema só deve permitir a importação de arquivos no formato texto; # Sistema deve validar se o layout do arquivo é válido. # Layout do arquivo de importação: # [MATRICULA], # [DIGITO_VER], # [NOME_COMPLETO], # [NOME_EMAIL], # [DOMINIO] [char] # [DIRETORIA] [char], # [SUPERINTEN], # [DEPARTAMENTO], # [DIVISAO], # [GERENTE], # [SUBSTITUTO] # Ao final da importação, o sistema deve gravar em um arquivo de log uma lista com o resultado da importação. But O sistema verifica que a extensão do arquivo de importação é inválida. Then O sistema envia e-mail para a produção alertando o problema. # Email para produção alertando erro na importação de arquivo # Assunto: [ZIS1] Erro ao Realizar Importação # # Prezados, # Ocorreu um erro ao tentar importar os dados do arquivo <link caminho do arquivo>. # A extensão do arquivo é inválida. 82 ANEXO XII – Features do Caso de Uso 06 Feature: Solicitar Validação da Lista de Usuários Pendente In order to enviar lembretes de validação aos gerentes e substitutos dos órgãos. As an Módulo de Administração de Configuração do Sistema I want to Enviar lembretes Background: Given A rotina de verificação de validações pendentes foi iniciada Scenario: Enviar lembrete de validação # As rotinas periódicas do sistema são executadas de 6 em 6 horas. When o sistema verifica que existem validações pendentes; # Filtros de pesquisa de grupo # Órgão – Editável – Texto - Obrigatório # Opção de realizar consulta do filtro informado – Botão Pesquisar # Opção de realizar inclusão – Botão Incluir And O sistema verifica se existem lembretes de validação a enviar. Then O sistema envia um e-mail ao gerente e substituto de cada órgão com validação pendente informando que há uma validação da lista de usuários pendente. # Órgão cadastrado com sucesso. And O sistema atualiza a quantidade de lembretes já enviados de cada validação. 83 ANEXO XIII – Features do Caso de Uso 07 Feature: Listar Validações Pendentes In order to verificar quais são as validações pendentes para o meu usuário As an Usuário Especial (Gerente e substituto) I want to Listar as validações pendentes Scenario: Listar Validações Pendentes When Eu indico a intenção de listar as validações pendentes And O sistema apresenta todos os itens do Resultado da listagem de validações pendentes e a opção “Registrar Validação” # Resultado da listagem de validações pendentes # Nome do Órgão – Protegido – Label – Obrigatório # Status – Protegido – Label – Obrigatório # Registrar – Ícone Registrar para realizar registro Scenario: Nenhuma Validação Encontrada When Eu indico a intenção de listar as validações pendentes But Não há nenhuma validação pendente para o meu usuário Then O sistema apresenta a mensagem: “Nenhum registro foi encontrado para o critério de pesquisa.”. Feature: Registrar Validações Pendentes Somente o gerente / substituto pode realizar a validação dos seus órgãos; Não será possível modificar uma validação registrada no sistema; In order to registrar a validação da lista de permissões de usuários do órgão. As an Usuário Especial (Gerente e substituto) I want to Registrar uma validação Scenario: Registrar Validação # A tela deve ser carregada rapidamente. # Ao carregar a tela, todos os campos devem estar preenchidos com os dados cadastrados; 84 # Para cada grupo cadastrado no órgão da validação haverá uma lista de usuários na tela, identificando quais usuários possuem permissão no grupo de segurança do LDAP. When Eu indico a intenção de registrar uma validação And O sistema solicita ao usuário o preenchimento dos dados da Lista de atributos de detalhes do registro de validação e apresenta as opções: “Adicionar Usuário” e “Remover Usuário” # Lista de atributos de detalhes do registro de validação # Sigla do Órgão – Protegido – Label – Obrigatório # Nome do Órgão – Protegido – Label – Obrigatório # Gerente do Órgão – Protegido – Label – Obrigatório # Data de criação – Protegido – Label – Obrigatório # Data limite para registro – Protegido – Label – Obrigatório # Status – Protegido – Label – Obrigatório # Lista de Usuários: # Usuário – Protegido – Label – Obrigatório # Matrícula – Protegido – Label – Obrigatório # Opção de remover usuário – Botão excluir # Opção de realizar Registro – Botão Registrar # Opção de retorno – Botão Voltar And Eu preencho os dados e solicito o registro Then O sistema valida e realiza o registro dos dados informados. And O sistema envia um e-mail ao grupo de produção informando os dados da validação. # Email para produção alertando Registro de Validação # Assunto: [ZIS1] Registro da Validacao <idDaValidacao> # # Prezados, # Segue o resumo do registro da validacao no sistema: # # Identificador da Validacao: <idDaValidacao> # Data de Criacao: dd/mm/yyyy # Data de Expiracao: dd/mm/yyyy # Data de Registro: dd/mm/yyyy # Matricula e Nome do Gerente que registrou a validacao: <matricula> - <nome> # # --------------------------------------------------------------------------------# Permissoes 85 # --------------------------------------------------------------------------------# # Usuarios com permissao no Grupo <nomeDoGrupo> # - <matricula> | <nome> # - <matricula> | <nome> # - <matricula> | <nome> # - <matricula> | <nome> # # **************** # # Usuarios com permissao no Grupo <nomeDoGrupo> # - <matricula> | <nome> # - <matricula> | <nome> # - <matricula> | <nome> # - <matricula> | <nome> # # **************** And O sistema exibe a mensagem “Validação registrada com sucesso.”. Feature: Adicionar Usuário É permitido ao gerente / substituto adicionar qualquer usuário a lista de usuários que será validada; Na inclusão de um membro no grupo em uma validação, o sistema deverá utilizar a matrícula informada pelo usuário para encontrar o nome do colaborador no AD. In order to validar a lista de usuários de um determinado grupo As an Usuário Especial (Gerente e substituto) I want to Adicionar um usuário ao grupo Background: Given Eu estou no registro de validação And Quero adicionar usuários a um grupo de permissões Scenario: Adicionar Usuário # Inclusão de Usuário: 86 # Grupo – Protegido - Combobox # Matrícula – Editável – Texto – Opcional # Opção de adicionar usuário – Botão Adicionar When Eu indico que quero adicionar um usuário a um grupo And Eu informo a matrícula de um usuário And O sistema verifica que a matrícula do usuário é válida Then O sistema encontra o nome do colaborador no AD And O sistema registra os dados do usuário e o associa ao grupo. Scenario: Matrícula Não Informada When Eu indico que quero adicionar um usuário a um grupo But Eu não informo a matrícula de um usuário Then O sistema exibe a mensagem “Informe o campo obrigatório: Matrícula.”. Scenario: Matrícula Inexistente When Eu indico que quero adicionar um usuário a um grupo And Eu informo a matrícula de um usuário But O sistema verifica que a matrícula informada não existe Then O sistema exibe a mensagem “A Matrícula informada não pôde ser encontrada, verifique se a mesma está correta.”. Feature: Remover Usuário In order to validar a lista de usuários de um determinado grupo As an Usuário Especial (Gerente e substituto) I want to Remover um usuário do grupo Background: Given Eu estou no registro de validação And Quero remover usuários de um grupo de permissões Scenario: Remover Usuário When Eu indico que quero remover um usuário de um grupo 87 ANEXO XIX – Termo de Consentimento TERMO DE CONSENTIMENTO Prezado, Convido você para participar de um estudo que é parte do Trabalho de Conclusão de Curso do Bacharelado em Sistemas de Informação da UNIRIO, com foco em processos de software. Seu objetivo é avaliar a forma de descrição de requisitos por meio de Casos de Uso e de Features. O estudo ocorrerá da seguinte maneira: em um primeiro momento você fornecerá informações sobre o seu perfil profissional. Os dados de identificação não serão mencionados no relatório da pesquisa, o que preservará o anonimato e sigilo dos respondentes. Na segunda etapa do estudo você receberá um material de detalhamento de requisitos e instruções sobre a composição do material. Será solicitado que você preencha um questionário ao final com suas impressões sobre o material de detalhamento dos requisitos. A sua participação é voluntária. Você pode desistir de participar a qualquer momento, sem sofrer penalidades. Para garantir sua privacidade, a sua identidade não será revelada. Os resultados do estudo serão divulgados exclusivamente pelo pesquisador e por seus orientadores na literatura especializada ou em congressos e eventos científicos. Qualquer dúvida a respeito dessa pesquisa entre em contato pelos e-mails: Rafaela Sampaio – [email protected] Gleison Santos - [email protected] 88 DECLARAÇÃO DE CONSENTIMENTO Li as informações contidas neste documento antes de assinar esta Declaração de Consentimento. Declaro que toda a linguagem utilizada na descrição do estudo foi explicada e que recebi respostas para todas as minhas dúvidas. Confirmo que recebi uma cópia deste Termo de Consentimento. Compreendo que posso me retirar do estudo a qualquer momento, sem sofrer qualquer penalidade. Dou meu consentimento de livre e espontânea vontade para participar deste estudo. ________________________________ , ____/____/_____ Local e Data ________________________________________________ Assinatura do Participante ________________________________________________ Assinatura do Pesquisador 89