Baixe o app para aproveitar ainda mais
Prévia do material em texto
80 Unidade III Unidade III 5 METODOLOGIAS ÁGEIS 5.1 Manifesto para Desenvolvimento Ágil de Software O Manifesto para Desenvolvimento Ágil de Software deu início a uma nova forma de desenvolvimento do software. Tal Manifesto desconsidera elementos prescritivos de modelos de processos de desenvolvimento de software, que, muitas vezes, eram práticas exaustivas, de custo alto e que ocupavam muito tempo. Os modelos de processos de desenvolvimento de software considerados até então eram descartados quando se exigiam implementações rápidas para o software. No entanto, vários profissionais da área já utilizavam outras técnicas de desenvolvimento consideradas tão eficientes quanto os modelos usados na época. Essas outras técnicas de desenvolvimento passaram a se chamar metodologias ágeis. Por meio do Manifesto para Desenvolvimento Ágil de Software, publicado nos dias 11 a 13 de fevereiro de 2001 por Kent Beck e mais 16 notáveis desenvolvedores, são defendidas as seguintes regras: Estamos descobrindo maneiras melhores de desenvolver software, fazendo-o nós mesmos e ajudando outros a fazerem o mesmo. Por meio desse trabalho, passamos a valorizar: Indivíduos e interações mais que processos e ferramentas. Software em funcionamento mais do que documentação abrangente. Colaboração com o cliente mais do que negociação de contratos. Responder a mudanças mais que seguir um plano. Ou seja, mesmo havendo valor nos itens à direita, valorizamos mais os itens à esquerda (BECK et al., 2001). A frase “Mesmo havendo valor nos itens à direita, valorizamos mais os itens à esquerda” (BECK et al., 2001) pode ser explicada com base na figura 30. Enquanto o RUP (lado direito da figura) é extremamente rígido, com altos níveis de controle e forte documentação, as metodologias ágeis (no centro e do lado 81 FUNDAMENTOS DE ENGENHARIA DE SOFTWARE esquerdo) caminham ao contrário e, mesmo assim, as metodologias ágeis não infringem uma sólida prática da engenharia de software. Destaque: Liberdade Tamanho da equipe de desenvolvedores: Pequena (menor que 10) Destaque: Alto rigor Tamanho da equipe de desenvolvedores: Média (de 10 a 20) Destaque: Controle Tamanho da equipe de desenvolvedores: Grande (maior que 20) XP FDD RUP Figura 30 – Valores da metodologia ágil Saiba mais Consulte a referência a seguir: BECK, K. et al. Manifesto para Desenvolvimento Ágil de Software. Agilemanifesto.org, 2001. Disponível em: https://bit.ly/3cnXQWi. Acesso em: 3 mar. 2021. Observação Métodos ágeis envolvem uma coleção de metodologias pautadas na prática para modelagem efetiva de sistemas baseados em software. É uma filosofia em que muitas metodologias se encaixam. As metodologias ágeis aplicam uma coleção de práticas guiadas por princípios e valores que podem ser adotados por profissionais de software no dia a dia. Os princípios aplicados nas metodologias ágeis são mostrados no quadro a seguir. Embora esses métodos ágeis sejam todos baseados na noção de desenvolvimento e entrega incremental, eles propõem diferentes processos para alcançar tal objetivo. No entanto, compartilham um conjunto de princípios, com base no manifesto ágil, e por isso têm muito em comum (SOMMERVILLE, 2011, p. 40). 82 Unidade III Quadro 5 – Os princípios dos métodos ágeis Princípios Descrição Envolvimento do cliente Os clientes devem estar intimamente envolvidos no processo de desenvolvimento. Seu papel é fornecer e priorizar novos requisitos do sistema e avaliar suas iterações Entrega incremental O software é desenvolvido em incrementos com o cliente, especificando os requisitos para serem incluídos em cada um Pessoas, não processos As habilidades da equipe de desenvolvimento devem ser reconhecidas e exploradas. Membros da equipe devem desenvolver suas próprias maneiras de trabalhar, sem processos prescritivos Aceitar as mudanças Deve-se ter em mente que os requisitos do sistema vão mudar. Por isso, projete o sistema de maneira a acomodar essas mudanças Manter a simplicidade Focalize a simplicidade, tanto do software a ser desenvolvido quanto do processo de desenvolvimento. Sempre que possível, trabalhe ativamente para eliminar a complexidade do sistema Fonte: Sommerville (2011, p. 40). 5.2 Metodologias ágeis 5.2.1 Extreme Programming (XP) Emprega uma abordagem orientada a objetos como paradigma preferido e envolve um conjunto de regras e práticas constantes no contexto de quatro atividades metodológicas: planejamento, projeto, codificação e testes (PRESSMAN, 2011). As quatro atividades-chaves da XP a serem desenvolvidas são mostradas no ciclo de desenvolvimento do processo XP: Valores das histórias de usuários Critérios de teste de aceitação Plano de iteração Teste de unidades Integração contínua Teste de aceitação Versão Programação em dupla Projetos simples Cartões CRC Soluções pontuais Protótipos Refabricação Planejam ento Projeto Teste Codificaç ão Incremento de software Velocidade de projeto registrado (computada) Figura 31 – O processo da XP 83 FUNDAMENTOS DE ENGENHARIA DE SOFTWARE Saiba mais Consulte a referência a seguir para fixar o conteúdo estudado: XP. Programação extrema: uma introdução suave. XP Extreme Programming, 8 out. 2013. Disponível em: http://www.extremeprogramming.org/. Acesso em: 8 mar. 2021. • Planejamento: também chamado jogo do planejamento. Nessa fase, faz-se um planejamento de projeto, não muito elaborado ou que leve muito tempo para ser feito. Na maioria das vezes, detalhes são omitidos, considerando a habilidade dos membros da equipe em interpretar os resultados que se quer atingir. O jogo de planejamento se inicia com a atividade “ouvir” – uma atividade de levantamento de requisitos que capacita os membros técnicos da equipe XP a entender o ambiente de negócios do software e possibilita que se consiga ter uma percepção ampla sobre os resultados solicitados, fatores principais e funcionalidade (PRESSMAN, 2011, p. 88). • Projeto: o projeto XP preserva a simplicidade. É preferível sempre um projeto simples a uma representação mais complexa (PRESSMAN, 2011). Esse design não comporta muitas funcionalidades com antecedência e segue um determinado número de ações: — Escolher metáfora do sistema. As metáforas são elementos que o desenvolvedor usa do computador, tais como lixeira, ambiente operacional, janelas e pastas para simular o ambiente de software a ser criado. — Usar cartões CRC (classe/responsabilidade/colaborador) para sessões de design. Os cartões CRC identificam e organizam classes orientadas a objetos. — Criar soluções de pico para reduzir riscos. — Cuidado na adição das funcionalidades com muita antecedência. — Sempre que possível, refatorar para aprimorar a concepção do software. A refatoração é uma técnica de construção para otimização de projetos; significa que a atividade de projeto é realizada continuamente enquanto o sistema estiver sendo desenvolvido. • Codificação: inicialmente, são desenvolvidos vários testes de unidades. Na implementação do código, todos revisam e fazem acréscimos de funcionalidades. Uma inovação da XP é a programação em dupla. Existe uma grande ênfase para o trabalho em duplas, assim, um dos programadores pode trabalhar na codificação enquanto o outro cuida de integração, 84 Unidade III padrões de código e testes das unidades. A ideia é: “Duas cabeças normalmente funcionam melhor que uma”. • Testes: antes de liberar o código, a equipe faz testes de unidades para possíveis correções de falhas no software. Os testes de unidades são criados na codificação com o princípio de poderem ser repetidos de forma fácil. Quando um erro é encontrado, os testes são criados. Os testes de aceitação são realizados frequentemente e uma pontuação é executada. Lembrete As metodologias ágeis aplicam uma coleção de práticas guiadas por princípios e valores que podem ser adotados por profissionais de software no dia a dia. 5.2.2 Scrum A origem do nome Scrum vem da atividadede jogadores de rúgbi; refere-se ao trabalho de deslocar a bola pelo campo estando “fortemente” juntos. O Scrum foi concebido por Jeff Sutherland e sua equipe de desenvolvimento na década de 1990 (PRESSMAN, 2011). O desenvolvimento ágil Scrum segue os mesmos princípios do Manifesto Ágil. Scrum é um processo para construir software de modo incremental e em ambientes complexos, cujos requisitos não são claros ou mudam com muita frequência. O objetivo do Scrum é fornecer um processo conveniente para projetos e desenvolvimento orientado a objetos. A metodologia é baseada em princípios semelhantes aos do XP: • equipes pequenas; • requisitos pouco estáveis ou desconhecidos; • iterações curtas para promover visibilidade para o desenvolvimento. O processo do Scrum incorpora as seguintes atividades estruturais: requisitos, análise, projeto, evolução e entrega (PRESSMAN, 2011). Inicialmente, são determinados papéis e responsabilidades. Na figura 36, nota-se que o processo ágil do Scrum é organizado em ciclos. Os ciclos ágeis de processos do Scrum são definidos por um breve período, acompanhados de certa disciplina a ser seguida em compasso com os sprints. 85 FUNDAMENTOS DE ENGENHARIA DE SOFTWARE Um sprint tem um período curto de tempo. Funciona do seguinte modo: os funcionários devem realizar uma série de atividades e a cada novo sprint o profissional adquire novas experiências com base na etapa anterior, levando a melhorias em cada sprint subsequente. O número de sprints necessários varia de acordo com o tamanho e a complexidade do artefato a ser construído. Sprint No esporte e em muitas outras atividades ocorrem as seguintes etapas: no início, vale toda energia e velocidade para se conseguir uma boa posição; durante a competição, administra-se todo o desempenho; no fim, vale toda a atenção, energia, potência, velocidade e exaustão. O objetivo é conquistar a melhor posição e, se possível, a vitória. Essa finalização é chamada de sprint. Observe a seguir as características do Scrum: • O Scrum promove reuniões diárias de 15 minutos e nelas todos respondem às seguintes questões: — O que você realizou desde a última Scrum? — Você está tendo alguma dificuldade? — O que você irá fazer até a próxima reunião? • Benefícios: — Maior integração entre os membros da equipe. — Rápida solução de problemas. • Promovem o compartilhamento de conhecimento: — Progresso medido continuamente. — Minimização de riscos. Pressman (2011) explica que o Scrum enfatiza o uso de um conjunto de padrões de processo de software que comprovam sua eficácia em projetos com prazos curtos, requisitos mutáveis e críticos do negócio. Acompanhe o fluxo apresentado na figura 32. O método Scrum é composto de um conjunto de ações de desenvolvimento do processo de software e é aplicado de forma sequencial, com várias iterações e entregas de software por incrementos. 86 Unidade III • Planejamento • Andamento do processo Sprint (corrida) — Ciclos • Encerramento • Escopo do andamento Sprint (corrida) Reunião diária do Scrum Tarefas detalhadas pela equipe Lista de prioridades do produto em espera (backlog) Nova demonstração de funcionalidade, podendo ser liberado para uso 24h 2 a 4 semanas Figura 32 – Metodologia de desenvolvimento ágil Scrum Registro pendente de trabalhos (backlog) – é um termo utilizado para designar listas com prioridades dos requisitos ou funcionalidades do projeto que fornecem valor ao cliente. Os itens podem ser adicionados a esse registro em qualquer momento. Urgências (corridas de curta distância) sprints – são unidades de trabalho solicitadas para atingir um requisito do registro de trabalho (backlog), normalmente em trinta dias. Reuniões Scrum – são reuniões curtas (em torno de 15 minutos) realizadas diariamente. Demos – entrega do incremento de software ao cliente para que a funcionalidade implementada possa ser avaliada pelo cliente. O demo não precisa estar completo, mas deve apresentar as principais funções no prazo determinado (PRESSMAN, 2011, p. 95). 5.2.3 FDD O Desenvolvimento Dirigido a Funcionalidades (Feature Driven Development) foi concebido por Peter Coad e seus colegas em 1999, teve como premissa criar um modelo prático de processo para a engenharia de software orientada a objetos. No entanto, Stephen Palmer e John Felsing em 2002 aprimoraram o modelo descrevendo um processo ágil e adaptativo que pode ser aplicado a projetos de software tanto a projetos de médio como de grande porte (PRESSMAN, 2011, p. 98). 87 FUNDAMENTOS DE ENGENHARIA DE SOFTWARE O FDD (Feature Driven Development) tem como foco a entrega frequente de software funcional ao cliente. Está baseado no processo de desenvolvimento de software iterativo e incremental. Com FDD os clientes têm resultados rápidos e relatórios de acompanhamento do desenvolvimento numa linguagem que eles entendem, os gerentes de projeto têm uma visão completa e exata de acompanhamento do projeto e os desenvolvedores conseguem trabalhar em novas tarefas em poucos dias e ficam mais envolvidos em análise, projeto e codificação. Para controle, o FDD utiliza um termo comum chamado “característica” (feature, em inglês). Na figura 33, Deluca (2008) destaca a feature e suas descrições. De acordo com vários autores e para um melhor entendimento, o termo a ser usado no texto é em português: “característica”. A característica é uma função relativamente pequena e que deve ser alinhada diretamente com o cliente: • As características podem ser pequenos blocos de funções ou certa funcionalidade, sendo determinadas com base no tamanho e na complexidade do artefato a ser desenvolvido. Esse recurso é para que usuários e desenvolvedores possam ter melhor controle e entendimento de todo o processo. • As características são organizadas em agrupamentos com base na hierarquia ou prioridades relacionadas ao negócio. • Normalmente, a equipe estabelece metas a cada duas semanas para o desenvolvimento de novas características. Requisitos Desenvolver um modelo abrangente Construir a lista de features Planejar por feature Produto Concepção e planejamento Plano de desenvolvimento ProgressoDetalhar por feature Construir por feature Construção Mais forma que conteúdo Mais conteúdo na forma Modelo de objetos Pacotes de trabalho Figura 33 – Engenharia de software com FDD O FDD é a metodologia ágil de desenvolvimento que mais enfatiza as diretrizes e técnicas de gestão de projetos. O projeto é claro para todos os envolvidos. Essa metodologia pode ser combinada com 88 Unidade III outras metodologias ágeis, a exemplo do Scrum. O FDD define seis processos (ou marcas de referência) durante o projeto e a implementação de uma característica: • Ciclo de desenvolvimento do código. • Projeto. • Inspeção do projeto. • Codificação. • Inspeção do código. • Promoção para a construção. 5.2.4 DSDM Dynamic System Development Method é tido como um dos primeiros métodos ágeis de desenvolvimento, engenharia de software baseada em componentes (CBSE – Component-Based Software Engineering). O desenvolvimento de software é através da composição de componentes de software independentes e implantáveis que estão consistentes com um modelo de componentes na engenharia de sistemas (SOMMERVILLE, 2011, p. 514). O método dinâmico de desenvolvimento de sistemas (DSDM – Dynamic Systems Development Method) surgiu como uma extensão do modelo RAD. O DSDM é aplicado em projetos de sistemas caracterizados pelos cronogramas e custos limitados. Seu foco está na especificação do sistema, na integração de seus componentes e nos testes para verificar se o sistema atende os requisitos especificados. A filosofia DSDM se baseia em uma versão modificada do princípio de Pareto, isto é, 80% de uma aplicação podem ser entregues em 20% do tempo que levaria para entregar a aplicação completa (PRESSMAN, 2011). Características principais do DSDM: • Progenitor do XP. • Estruturapara RAD. • Fixa tempo e recursos ajustando a quantia de funcionalidades. • Equipes pequenas. A equipe tem poder para tomar decisão. • Suporta mudanças nos requisitos durante o ciclo de vida. 89 FUNDAMENTOS DE ENGENHARIA DE SOFTWARE O DSDM possui nove princípios fundamentais: • Envolvimento ativo do usuário. • Equipes capacitadas (com poderes). • Entrega frequente. • Aptidão para negócios. • Desenvolvimento incremental. • Alterações reversíveis. • Linha de base para os requisitos. • Teste integrado. • Colaboração das partes interessadas. A figura 34 mostra que o DSDM divide o ciclo de vida do desenvolvimento em cinco estágios: viabilidade, estudo de revisão, modelo funcional de iteração, projeto e construção da iteração e implementação. Modelo funcional de iteração Viabilidade Estudos de revisão Implementação Projeto e construção da iteração Figura 34 – Os cinco estágios de desenvolvimento do software com a metodologia de desenvolvimento ágil DSDM Conforme a figura 34, o ciclo de vida DSDM define três ciclos iterativos e duas atividades de ciclo de vida adicionais (PRESSMAN, 2011): 90 Unidade III • Viabilidade: determina os principais requisitos do negócio e restrições, o que permite viabilizar o desenvolvimento do software com o DSDM. • Estudos de revisão (ou negócio): define os requisitos funcionais, a estrutura da informação, uma arquitetura básica da aplicação e os recursos que facilitam a manutenção. • Modelo funcional de iteração: atividade de prototipação para demonstrar a funcionalidade ao cliente. • Projeto e construção da iteração: para atender os objetivos do negócio, os protótipos desenvolvidos são verificados, para assegurar que cada modelo funcional tenha passado por um processo de engenharia. • Implementação: a partir da última versão do incremento de software, é gerado um release para o cliente. 5.2.5 Crystal Conforme Pressman (2011), Alistair Cockburn, em 2005, e Jim Highsmith, em 2002, criaram a família Crystal de métodos ágeis visando conseguir elaborar uma abordagem de desenvolvimento de software que priorizasse a adaptabilidade. O método Crystal/Clear faz parte de um conjunto de metodologias criadas com o intuito de fazer uma analogia com os cristais geológicos, apresentados na natureza com sua própria cor, forma e dureza. As premissas destacadas para a existência desse conjunto são: • Todo projeto tem necessidades, convenções e uma metodologia diferente. • O funcionamento do projeto é influenciado por fatores humanos, e há melhora do projeto quando os indivíduos produzem melhor. • Melhor comunicação e lançamentos frequentes reduzem a necessidade de construir produtos intermediários do processo. O método Crystal/Clear é direcionado a projetos pequenos, com equipes de até seis desenvolvedores. Assim como o Scrum, os membros da equipe têm especialidades distintas e existe uma forte ênfase na comunicação entre os membros. Existem também outras metodologias Crystal para grupos maiores. A figura 35 mostra políticas e práticas que devem ser personalizadas para acomodar as propriedades Crystal. 91 FUNDAMENTOS DE ENGENHARIA DE SOFTWARE Trabalho em equipe Comunicação Simplicidade Reflexão Ajustes frequentes Melhores processos Figura 35 Toda especificação do projeto é feita informalmente, utilizando quadros publicamente visíveis. Os requisitos são elaborados utilizando casos de uso, assim, são enunciados os requisitos como tarefas e um processo para sua execução. As entregas das novas versões de software são feitas em incrementos regulares de um mês e existem alguns subprodutos do processo que são responsabilidade de membros específicos do projeto. Destaca-se a manobrabilidade com o significado de um jogo cooperativo de invenção e comunicação de recursos limitados, com o principal objetivo de entregar software útil funcionando e objetivo secundário de preparar-se para o jogo seguinte A família Crystal é, na verdade, um conjunto de processos ágeis que se mostraram efetivos para diferentes tipos de projeto. A intenção é permitir que equipes ágeis selecionem o membro da família Crystal mais apropriado para o seu projeto e ambiente (PRESSMAN, 2017, p. 71). 5.2.6 Agile Modeling (AM) É uma metodologia pautada na prática para modelagem e documentação efetiva de sistemas baseados em software. A AM dispõe de múltiplos modelos para descrever software. É uma coleção de valores, princípios e práticas de modelagem de software que podem ser aplicados a um projeto de desenvolvimento de software de modo efetivo e leve. Os modelos ágeis são mais efetivos do que os modelos tradicionais, porque eles são suficientemente bons, não precisando ser perfeitos. A expressão “viajar leve” é muito usada na AM. Orienta-se que é preciso conservar apenas os modelos que fornecerão valor a longo prazo, e os demais modelos devem ser descartados. 92 Unidade III Saiba mais Acesse o site Agile Modeling: Disponível em: http://agilemodeling.com. Acesso em: 20 abr. 2021. 6 ENGENHARIA DE REQUISITOS 6.1 Processo da engenharia de requisitos do software Sommerville (2003) destaca que a engenharia de requisitos do software é um processo que envolve todas as atividades exigidas para criar e manter o documento de requisitos do software/sistema. Esse documento pode ser usado em contratos e licitações para o desenvolvimento de software, escolha de fornecedores de componentes do sistema, acompanhamento de mudanças e especificação do software. Algumas pessoas consideram a engenharia de requisitos o processo de aplicação de um método estruturado, como a análise orientada a objetos. Trata-se de analisar o sistema e desenvolver um conjunto de modelos gráficos de sistema, como modelos de casos de uso, que, então, servem como especificação do sistema. O conjunto de modelos descreve o comportamento do sistema e recebe informações adicionais, descrevendo, por exemplo, seu desempenho ou sua confiabilidade (SOMMERVILLE, 2011, p. 69). As principais atividades do processo da engenharia de requisitos do software/sistema são: • Estudo da viabilidade do sistema. • Elicitação. • Análise. • Especificação. • Modelagem. • Validação. 93 FUNDAMENTOS DE ENGENHARIA DE SOFTWARE Modelo do Processo da Engenharia de Requisitos do software/sistema: a figura 36 mostra o fluxo de atividades do processo da engenharia de requisitos do software/sistema. Estudo da viabilidade do sistema Especificação, modelagem e documentação Elicitação e análise de requisitos Validação Desenvolvimento do sistema Início Nova iteração Figura 36 Observe que na figura 36 o desenvolvimento do sistema só ocorre após a validação dos requisitos. Caso os requisitos não sejam validados, ocorre uma iteração, ou seja, todo o processo será revisto, incluindo as abordagens para levantamento dos requisitos. Sommerville (2011) define que as atividades do processo da engenharia de requisitos do software/sistema podem ser decompostas em quatro níveis distintos de serviços: • Nível 1 (Estudo da viabilidade do sistema): esse estudo é de grande importância, pois garante que as necessidades do cliente para implementação do sistema estejam de acordo com os interesses organizacionais e que os recursos necessários estão disponíveis para o desenvolvimento ou integração do novo software/sistema. Um estudo de viabilidade deve ser relativamente barato e rápido. O resultado deve informar a decisão de avançar ou não, com uma análise mais detalhada (SOMMERVILLE, 2011). • Nível 2 (Elicitação e análise de requisitos): nessa fase são feitas várias reuniões entre cliente e desenvolvedor, com o objetivo de extrair com detalhes o conhecimento do negócio para que se destine o software/sistema. • Nível 3 (Especificação, modelagem e documentação dos requisitos): após a interpretação e o entendimento dos detalhes do negócio, inicia-se a preparação do documento de requisitos, que deve ser formada pelos vários requisitos discutidos em reunião. Essa fase deveser feita pelo desenvolvedor com acompanhamento do cliente. São descritos textos breves interpretativos sobre cada requisito, acompanhados sempre que necessário de um modelo visual e, consequentemente, da elaboração do documento de requisitos do software/sistema. • Nível 4 (Validação de requisitos): a validação é a apresentação do documento de requisitos em reunião com a participação do grupo formado pelos interessados no sistema. O objetivo é 94 Unidade III aprimorar, incluir mudanças propostas e aprovar o início do projeto e o desenvolvimento do software/sistema. O documento a ser validado pode ser elaborado para um único sistema, para parte do sistema ou para cada funcionalidade do sistema. Vale o bom senso. A análise decisiva deve ter base no tamanho e na complexidade do sistema ou da funcionalidade, associada ao seu prazo e custo. O processo da engenharia de requisitos antecede o projeto. A fase de levantamento de requisitos busca a interpretação, o entendimento e a especificação do negócio a ser alinhado com a TI. Essa fase permite criar uma linguagem única entre o cliente e o desenvolvedor. Conforme a figura 37, para iniciar as atividades de projeto, é necessário que as entradas de projeto estejam claras para o cliente e para o desenvolvedor. Informação de plataforma Arquitetura de sistema Especificação de banco de dados Especificação de interface Especificação de componentes Projeto de arquitetura Projeto de interface Projeto de banco de dados Projeto de componentes Especificação de requisitos Descrição de dados Entradas de projeto Atividades de projeto Saídas de projeto Figura 37 – Modelo geral do processo e projeto Lembrete Conforme Sommerville (2003), a engenharia de requisitos do software é um processo que envolve todas as atividades exigidas para criar e manter o documento de requisitos do software/sistema. 95 FUNDAMENTOS DE ENGENHARIA DE SOFTWARE 6.2 Estudo da viabilidade do sistema Quanto à identificação (concepção), a maioria dos projetos começa quando uma necessidade de negócio é identificada ou um mercado ou serviço novo é descoberto. Os desenvolvedores fazem uma série de perguntas com a intenção de estabelecer um entendimento básico do problema. Deve haver uma colaboração entre cliente e desenvolvedor. Para todos os sistemas novos, de acordo com a figura 38, o processo de engenharia de requisitos de sistema deve começar com o estudo de viabilidade, antes mesmo da obtenção e da análise de requisitos. A entrada para o estudo de viabilidade é uma descrição geral do sistema e de como ele será utilizado dentro de uma organização. Os resultados do estudo de viabilidade devem ser: um relatório que recomenda se vale ou não a pena realizar o processo de engenharia de requisitos e o processo de desenvolvimento de sistemas. Sugere-se também que o estudo de viabilidade seja feito no acompanhamento de mudanças do software que irão ocorrer em seu ciclo de vida. Estudo da viabilidade Especificação de requisitos Validação de requisitos Elicitação e análise de requisitos Relatório de viabilidade Modelos de sistema Requisitos de usuários e de sistema Documentação de requisitos Figura 38 – Processo da engenharia de requisitos Um estudo de viabilidade é um estudo breve, direcionado, que se destina a responder algumas perguntas: • O sistema proposto contribui para os objetivos gerais da organização? • No caso, são considerados os aspectos culturais da organização, a hierarquia de comando na tomada de decisão e o processo de negócio? Nesse aspecto, é considerado se as regras de negócio estão de acordo com a organização? 96 Unidade III • O sistema pode ser implementado com a utilização de tecnologia atual dentro das restrições de custo e prazo? • O que o cliente quer está dentro do orçamento e prazo para entrega do sistema? • O sistema pode ser integrado com os outros sistemas já em operação? Qual o impacto das mudanças no ambiente operacional do cliente? • A tecnologia a ser implementada é adaptável ao sistema do cliente (se este existir)? 6.3 Elicitação e análise de requisitos 6.3.1 Elicitação Elicitação dos requisitos é a tarefa de comunicar-se com os usuários e clientes para determinar quais são os requisitos. Na elicitação o analista deve ter habilidade e sutileza para extrair informações durante uma conversa. Os analistas podem empregar várias técnicas para elicitar os requisitos dos clientes. As técnicas mais utilizadas são: • Organizar reuniões, entrevistas ou grupos focais (workshops) e, consequentemente, a criação da lista de requisitos. O workshop de requisitos consiste na realização de reuniões estruturadas e delimitadas entre os analistas de requisitos do projeto e representantes do cliente. • Prototipação e casos de uso. O analista irá aplicar uma combinação de métodos para estabelecer os requisitos exatos de seus stakeholders (qualquer pessoa que terá influência direta ou indireta sobre os requisitos do sistema), de forma que um sistema que atenda as necessidades do negócio seja produzido. O protótipo é recomendado para avaliar a interface do usuário, os problemas de comunicação com outros produtos e a possibilidade de cumprimento dos requisitos de desempenho. Os métodos mais utilizados para elicitar requisitos são: • Questionários dirigidos. • Perguntas abertas e brainstorming. • Grupos de desenvolvimento de sistemas do tipo projeto de aplicação conjunta (JAD – Joint Application Design). O JAD é uma técnica de captura de requisitos baseada em reuniões. As técnicas JAD aplicam os conceitos de visões refinadas, sendo três as visões da aplicação: overview (geral), macro e detalhe (FOURNIER, 1994). 97 FUNDAMENTOS DE ENGENHARIA DE SOFTWARE Observe a seguir a formulação das primeiras questões: • Quem está por trás da solicitação desse trabalho? • Quem vai usar a solução? • Qual será o benefício econômico de uma solução bem-sucedida? • Há outra fonte para a solução que você necessita? Essas questões ajudam a identificar todos os que têm interesse no software a ser construído (PRESSMAN, 2011). As técnicas reconhecidas como eficientes e efetivas na elicitação dos requisitos são: • Etnografia. É uma técnica de observação utilizada para entender os processos operacionais; o analista acompanha o ambiente de trabalho em que o sistema será usado (SOMMERVILLE, 2011). • Técnicas Facilitadas de Especificação de Aplicações Melhorada (eFAST – Enhanced Facilitated Application Specification Techniques). O eFAST é uma melhoria do método JAD, que serve para captura de requisitos. Seu principal objetivo é cobrir o gap (falha de entendimento) entre o que o desenvolvedor pensa que vai produzir e o que os clientes pensam que vão receber. Saiba mais Consulte a referência a seguir: DAD, K.; JAMIL, A. N. Enhanced Facilitated Application Specification Techniques (eFAST). In: IEEE/ACIS INTERNATIONAL CONFERENCE ON COMPUTER AND INFORMATION SCIENCE, 5., 2006, Honolulu (USA). Anais […]. Honululu: Institute of Electrical and Electronics Engineers (IEEE), 2006. Disponível em: https://bit.ly/3rTxOQY. Acesso em: 3 mar. 2021. • Implantação da função de qualidade (QFD – Quality Function Deployment). A QFD identifica três tipos de requisitos: normais; esperados e fascinantes (PRESSMAN, 2011). • Cenários de uso. Um caso de uso representa uma descrição breve de uso de uma determinada funcionalidade do sistema que é requisitada pelo usuário. O diagrama de casos de uso (figura 39) mostra a relação entre os casos de uso e a entidade (ator). Esse diagrama faz parte do padrão de diagramas UML. Ele é composto dos seguintes elementos: cenário, casos de uso (interações), atores (agentes ou entidades) e o relacionamento de comunicação. 98 Unidade III Registro de venda — PDV Estoque restaurante Estoque Rodoalimenta LEC Pedido de compra do restaurante Pedido de compra da Rodoalimenta <<include>> <<include>> <<include>> Fornecedor Caixa Gerente de comprasRodoalimenta Gerente de restaurante <<extend>> <<extend>> Figura 39 – Diagrama de caso de uso em UML para a função de gerenciamento de compras do centro de distribuição Rodoalimenta Na elicitação o diagrama de casos de uso apresenta um cenário de uso específico do sistema, em que apenas as interações do usuário com o sistema são mostradas, servindo como um modelo para o processo de negócio. Os detalhes técnicos de construção do sistema não são mostrados nesse diagrama, eles são apresentados em outros diagramas da UML. Observação Na interpretação de como o sistema de informação da logística irá funcionar, o diagrama de casos de uso ilustrado na figura 39 corresponde a um sistema de informação da logística para o controle de estoque. Acompanhe os elementos do diagrama na figura 39. O ator Caixa registra a venda ao passar o código de barras do produto pelo leitor ótico do ponto de venda (PDV). Assim, é feito o registro correspondente ao caso de uso Registro de Venda. Essa venda faz com que o sistema de informação registre uma baixa de estoque pelo caso de uso Estoque Restaurante, por meio do qual foi efetuada a venda. Para a compra de reposição do estoque, o sistema faz o cálculo no caso de uso Lote Econômico de Compra (LEC), que possui o registro da quantidade de produtos existentes, bem como o período certo para se fazer o pedido de compra para reposição do estoque. O ator Gerente Restaurante acessa o caso de uso Pedido de Compra do Restaurante para fazer seu pedido. A Rodoalimenta é um centro de distribuição de produtos para restaurantes cujo ator Gerente de Compras Rodoalimenta atende o pedido de compra do restaurante pelo caso de uso Pedido de Compra do Restaurante, monitora o estoque do centro de distribuição pelo caso de uso Estoque Rodoalimenta e, se for necessário, faz o pedido de reposição do estoque do produto, pelo caso de uso Pedido de Compra da Rodoalimenta. 99 FUNDAMENTOS DE ENGENHARIA DE SOFTWARE 6.3.2 Levantamento e análise de requisitos Durante o levantamento de requisitos, ocorrem reuniões com analistas de negócios por parte do cliente. A atividade de análise dos requisitos por parte do analista de sistemas é fazer pesquisas e classificar e agrupar as ideias, com o objetivo de entender como funciona o negócio e já estabelecer algumas funcionalidades para o sistema. As reuniões com o cliente devem ocorrer periodicamente para se ter uma completa compreensão do domínio do sistema (veja a figura 40). Na análise, os membros da equipe técnica trabalham com o cliente e os usuários para descobrir informações sobre o domínio da aplicação, que serviços o sistema deve fornecer, o desempenho exigido do sistema, bem como as restrições de software e hardware (SOMMERVILLE, 2003). Especificação de requisitos Documento de requisitos Verificação de requisitos Classificação Compreensão do domínio Coleta de requisitos Definição das prioridades Resolução de conflitos Entrada do processo Figura 40 – Processo de levantamento e análise de requisitos 6.4 Especificação, documentação e modelagem dos requisitos Em sistemas e software, o termo especificação significa coisas diferentes para pessoas diferentes. A especificação e a modelagem são os produtos do trabalho final produzido pelo engenheiro de requisitos. Elas servem como fundamento das atividades de engenharia de software subsequentes. Assim, descrevem-se a função e o desempenho do sistema e as restrições que acompanharam seu desenvolvimento. Uma especificação pode ser um documento escrito, um modelo gráfico, um modelo matemático formal, casos de uso, protótipos ou qualquer combinação desses elementos. 100 Unidade III Saiba mais Leia o texto indicado a seguir: BAHN, C. IEEE 830-1998: prática recomendada do IEEE para especificações de requisitos de software. Comitê de Normas de Engenharia de Software e Sistemas, 20 out. 1998 [reafirmado em 9 dez. 2009]. Disponível em: https://bit.ly/3rIqVCf. Acesso em: 3 mar. 2021. Os stakeholders interpretam os requisitos de maneiras diferentes e, muitas vezes, notam-se conflitos e inconsistências inerentes aos requisitos (SOMMERVILLE, 2011). Existem vários requisitos que devem ser levantados e deduzidos. Contudo, as atividades e tarefas descritas na preparação do documento de requisitos se baseiam em quatro principais grupos de requisitos, que serão descritos nesse mesmo tópico. Os principais grupos de requisitos para elaboração do contrato do software/sistema são: • Requisitos do usuário. • Requisitos do sistema. • Requisitos funcionais. • Requisitos não funcionais. 6.4.1 O documento de requisitos de software A especificação de requisitos de software (SRS – Software Requirements Specification) captura todos os requisitos de software para o sistema ou para uma parte do sistema. É a declaração oficial do que é exigido dos desenvolvedores de sistema. Ele deve incluir os requisitos de usuário para um sistema e uma especificação detalhada dos requisitos de sistema, abrangendo desde a alta gerência da organização até os analistas responsáveis pelo desenvolvimento. Pressman (2011) sugere o modelo de especificação de requisitos de software, descrito a seguir: Sumário Histórico de revisão 1. Introdução 1.1 Propósito 101 FUNDAMENTOS DE ENGENHARIA DE SOFTWARE 1.2 Convenções do documento 1.3 Público-alvo e sugestões de leitura 1.4 Escopo do projeto 1.5 Referências 2. Descrição geral 2.1 Perspectiva do produto 2.2 Características do produto 2.3 Classes de usuários e características 2.4 Ambiente operacional 2.5 Restrições de projeto e implementação 2.6 Documentação para usuários 2.7 Hipóteses e dependências 3. Características do sistema 3.1 Características do sistema 1 3.2 Características do sistema 2 (e assim por diante) 4. Requisitos de interfaces externas 4.1 Interfaces do usuário 4.2 Interfaces de hardware 4.3 Interfaces de software 4.4 Interfaces de comunicação 5. Outros requisitos não funcionais 5.1 Necessidades de desempenho 102 Unidade III 5.2 Necessidades de proteção 5.3 Necessidades de segurança 5.4 Atributos de qualidade de software 6. Outros requisitos Apêndice A: Glossário Apêndice B: Modelos de análise Apêndice C: Lista de problemas 6.4.2 Requisitos do usuário (RU) São declarações em linguagem natural, formulários e diagramas simples sobre as funções que o sistema/software deve fornecer e as restrições sobre as quais deve operar. Esse documento pode ser elaborado pelo representante do usuário. Os requisitos do usuário são descritos de forma compreensível para que o stakeholder tenha um bom entendimento do que se quer do sistema a ser construído. A modelagem do negócio é um modelo de fácil interpretação. Normalmente, utiliza-se um modelo construído com o diagrama de atividade da UML, que é uma ferramenta fácil de usar e que inclusive o cliente se sente à vontade para expor suas ideias em um desenho, o que auxilia muito o analista. A modelagem do processo de negócio (BPM – Business Process Management) pode ser constrúida com o aplicativo BizAgi Modeler, que é oferecido gratuitamente pela Object Management Group (OMG). Os cenários de uso são construídos com o diagrama de casos de uso da UML. É uma resposta do analista de sistemas para apresentar o escopo ou partes do software que será construído. Saiba mais Faça o download da ferramenta gratuita de nome BizAgi, fornecida pela OMG. Essa ferramenta é padrão na construção modelos de negócios. OBJECT MANAGEMENT GROUP (OMG). Categoria de modelagem de negócios: especificações associadas. [s.d.]. Disponível em https://bit.ly/3lb2Ph5. Acesso em: 3 mar. 2021. 103 FUNDAMENTOS DE ENGENHARIA DE SOFTWARE 6.4.3 Requisitos funcionais (RF) Nesse instante você deve pensar: “Será que os requistos funcionais são sobre aquilo que irá funcionar no sistema, para fazer o que preciso?” Exatamente isso! Requisitos funcionais são declarações mais detalhadas dos requisitos do usuário com uma especificação completa e consistentede toda a funcionalidade ou serviços que se espera que o sistema forneça. A atividade de elaboração dos requisitos funcionais consiste em extrair dos casos de uso as funções necessárias que irão operar no sistema. O objetivo é preparar um material detalhado para que possa ser passado para a codificação. Para que os objetivos das funções fiquem claros, aconselha-se fazer um quadro de especificações das funções do software e que contenha um código que identifique o requisito e a descrição do requisito, conforme é mostrado no quadro: Quadro 6 – Especificação de requisitos funcionais Requisito funcional (RF) Especificação RF01 Chamada de menu: relatórios – deverá exibir o menu de relatórios disponíveis RF01.1 Função: relatório de compras – relatório com as compras efetuadas no período desejado. Exibindo: fornecedor, produto comprado, quantidade e valor RF01.2 Função: relatório de pagamentos efetuados – relatório com os pagamentos efetuados a fornecedores no período desejado. Exibindo: fornecedor, produto comprado, quantidade e valor pago As especificações das funcionalidades do software normalmente são refinadas por meio da prototipagem, que é uma forma colaborativa de participação do cliente no desenvolvimento do software. A modelagem da análise é uma ação de elaboração e cujas informações obtidas do cliente são expandidas e refinadas. A modelagem destaca o desenvolvimento de um modelo técnico visual das funções, características e restrições do software. Ela é guiada pela criação e pelo refinamento de cenários do usuário, que descrevem como o usuário (e outros atores) vão interagir com o sistema. Os relacionamentos e a colaboração entre as classes são identificados e uma variedade de diagramas UML é produzida. A modelagem serve também para avaliar a eficiência do fluxo de trabalho e a forma como ocorrerá o desenvolvimento. Veja o exemplo a seguir de como funciona o refinamento dos modelos. 104 Unidade III Exemplo de aplicação A partir do caso de uso Registro acadêmico, foram projetados os modelos apresentados nas figuras 41 e 42. A figura 41 apresenta o diagrama das classes derivado do caso de uso Registro acadêmico, conjunto de classes usado para estruturar a informação. Já a figura 42 apresenta na parte inferior o diagrama de sequência para mostrar o comportamento do software. Observe que, na figura 42, o diagrama de sequência é criado a partir dos métodos apresentados nas classes Aluno e Professor. Em apoio a esses diagramas, para refinar o processo do projeto são apresentados também diagramas de: objetos, pacotes, estados, comunicação e interação. Pessoa - CPF - nome - dataNascimento Aluno - matricula: int Professor - registroAcademico: int Figura 41 – Diagrama de classes que mostra a herança de objetos Pessoa - CPF - nome - dataNascimento Aluno - matricula + informarMatricula( ) int + receberNota(double) void Professor - registroAcademico int - informarNota(int) double João :Professor Pedro :Aluno informarMatricula( ) :int receberNota(double) Figura 42 – Na parte inferior da figura está o diagrama de sequências construído a partir dos métodos das classes, apresentadas na parte superior da figura 105 FUNDAMENTOS DE ENGENHARIA DE SOFTWARE 6.4.4 Requisitos não funcionais (RNF) Agora você deve pensar: “Será que os requistos não funcionais envolvem o que não irá funcionar no sistema?” Totalmente errado. Os requisitos não funcionais, como o nome sugere, são requisitos que não estão diretamente relacionados com os serviços específicos oferecidos pelo sistema a seus usuários. Eles podem estar relacionados às propriedades emergentes do sistema, como confiabilidade, tempo de resposta e ocupação de área. Uma alternativa a esse cenário seriam os requisitos definirem restrições sobre a implementação do sistema, como as capacidades dos dispositivos de E/S ou as representações de dados usadas nas interfaces com outros sistemas (SOMMERVILLE, 2003, p. 85). Os requisitos não funcionais determinam a qualidade do software, que é o diferencial de uma aplicação. Uma forma de memorizar o que são requisitos não funcionais é saber que requisito não funcional é tudo aquilo que o cliente não pede, mas que, se der problema, ele vai reclamar. Observe essa situação: determinado usuário levou uma hora preenchendo um formulário na rede local de um sistema servidor/cliente. Ao finalizar e salvar o formulário, o software emite um aviso, de tela inteira, de sistema forma do ar. Se o software possuir o recurso de recuperação do arquivo, mesmo que seja no computador local, o usuário vai encarar isso de forma mais amena, diferentemente se ele perder o formulário já preenchido: ele vai reclamar de um problema de confiabilidade. De acordo com Sommerville (2003), na figura 43 são mostrados os tipos de requisitos não funcionais, formados pelos grupos: requisitos do produto, requisitos organizacionais e requisitos externos. Requisitos não funcionais Requisitos do produto Requisitos de usabilidade Requisitos de eficiência Requisitos de implementação Requisitos éticos Requisitos legais Requisitos de portabilidade Requisitos de desempenho Requisitos de espaço Requisitos de segurança Requisitos de privacidade Requisitos de confiabilidade Requisitos de padrões Requisitos de entrega Requisitos de interoperabilidade Requisitos organizacionais Requisitos externos Figura 43 – Tipos de requisitos não funcionais 106 Unidade III O quadro a seguir apresenta as principais métricas de requisitos do produto. Essas métricas servem como base para o desenvolvimento do produto software. São determinadas principalmente como meta para estabelecer a qualidade exigida em que o software irá operar. Quadro 7 – Métricas de requisitos do produto Propriedade Medida Velocidade (Desempenho) Transações processadas/segundo Tempo de resposta ao usuário/evento Tempo de atualização da tela Tamanho (Espaço) Tamanho em megabytes do software final Tamanho da memória Facilidade de uso (Usabilidade) Tempo de treinamento necessário Número de frames de ajuda Confiabilidade Tempo médio para falhar Probabilidade de indisponibilidade Disponibilidade Taxa de ocorrência de falhas Robustez Tempo de reinício após falha Percentual de eventos que causam falhas Probabilidade de corrupção de dados em caso de falha Portabilidade Percentual de declarações dependentes do sistema-alvo Número de sistemas-alvo Fonte: Sommerville (2011, p. 62-63). 6.4.5 Requisitos do sistema (RS) São descrições mais detalhadas dos requisitos do usuário com o foco no sistema, com uma especificação completa e consistente de todos os componentes do sistema. Podem ser apresentados vários modelos que mostram objetos ou fluxo de dados. Servem como base para o contrato destinado à implementação do sistema. Os componentes podem ser divididos em dois grupos: • A visão estática da arquitetura promove a visão da organização e relações dos componentes do software com elementos de dados (banco de dados, arquivos-texto etc.), com o hardware e outros ambientes operacionais. • A visão dinâmica da arquitetura promove a visão comportamental do sistema e de seus componentes. São definidos os seguintes aspectos: como os componentes reagem a eventos internos e externos e a forma como eles se comunicam (ou trocam mensagens). 107 FUNDAMENTOS DE ENGENHARIA DE SOFTWARE Saiba mais Leia a referência a seguir: SILVA, T. A. S. Modelos UML estáticos vs. dinâmicos. TASSinfo, 19 abr. 2016. Disponível em: https://bit.ly/3l8KzVi. Acesso em: 3 mar. 2021. Os requisitos do sistema são especificados conforme o quadro a seguir: Quadro 8 – Especificação de requisitos do sistema Requisito do sistema (RS) Especificação RS01 Computador cliente, modelo PC com médio desempenho RS02 Sistema operacional do computador cliente – Windows. Ver RS01 RS03 Navegador para internet. A aplicação irá funcionar em uma rede intranet A engenharia de projeto no nível de componentesocorre após a conclusão da primeira iteração, após a elaboração da arquitetura (ou prototipação) do software ou do sistema. “O objetivo da atividade de projetar é gerar um modelo ou representação que apresente solidez, comodidade e deleite. Para tanto, temos de praticar a diversificação e depois a convergência” (PRESSMAN, 2011, p. 207). Para a modelagem dos requisitos do sistema, são utilizados basicamente os diagramas de componentes e o diagrama de implantação da UML. Exemplo de aplicação “A prática da diversificação é adquirir e construir um repertório de alternativas, a matéria-prima do projeto: componentes, soluções de componentes e conhecimento” (BELADY, 1981 apud PRESSMAN, 2011, p. 407). A figura 44 fornece diversos componentes e módulos disponíveis para o projetista construir e implantar infraestruturas de TI que apoiem um determinado sistema. 108 Unidade III Cliente - SO Windows Server - SOR Windows Web Server - Apache/Tomcat Cliente - Browser Server - SOR Linux Server = SGBD SQL Microsoft Server - Gerenciador de telas Web server - Microsoft Ils Server = SGBD MySQL Server - Gerenciador de contas (Login) Server - App Controle de Estoque (JSP) Cliente - PC Computer Nó1 - Server Computer 1 Nó2 - Server Computer 2 Figura 44 – Repertório de alternativas para a construção de um sistema O projetista na prática da convergência escolhe os elementos do repertório que satisfaça os requisitos e os resume em uma particular configuração de componentes após a criação do produto final. A figura 45 apresenta a convergência de alguns desses componentes em módulos. O módulo, representado por uma “caixa”, é construído com o diagrama de implantação; ele representa o modelo de implantação desse sistema. Observe que os módulos são formados pelos mesmos componentes destacados na figura 44. Cliente - PC Computer <<TCP/IP>> <<HTTP>> Cliente - SO Windows Cliente - Browser Nó 1 - Server computer 1 <<HTML>> Server - SOR Windows Web - Server - Microsoft Ils Server - Gerenciador de telas <<HTML>> Server - Gerenciador de contas <<HTML>> <<TCP/IP>> <<DNS>> <<JSP>> Nó 2 - Server computer 2 <<MySQL>> Server - SOR Linux Web Server - Apache/Tomcat Server - App-controle de estoque <<JSP>> Server - SGBD MySQL <<MySQL>> Figura 45 – Modelo de módulo de um sistema 109 FUNDAMENTOS DE ENGENHARIA DE SOFTWARE 6.4.6 Validação dos requisitos A validação dos requisitos ocorre formalmente. Os produtos de trabalho resultantes da engenharia de requisitos são avaliados e aprovados quanto à qualidade. A atividade de validação é a última fase do processo da engenharia de requisitos, responsável por autorizar o desenvolvimento do sistema/software. É a tarefa de apresentar o documento de requisitos em reunião com a participação do grupo formado pelos interessados no sistema. O objetivo é aprimorar, incluir mudanças propostas e aprovar o início do projeto e desenvolvimento do software/sistema. Os critérios de validação são especificações para demonstrar o entendimento e viabilizar uma implementação de software bem-sucedida logo que informações básicas, funções, desempenho, comportamento e interfaces forem descritos. Esses critérios servem de base para as atividades de teste que ocorrerão posteriormente no processo de engenharia de software. O documento a ser validado pode ser elaborado para um único sistema, para parte do sistema ou para cada funcionalidade dele. Vale o bom senso. A análise decisiva deve ter base no tamanho, na complexidade ou na qualidade exigida do sistema ou da funcionalidade, sendo associada ao seu prazo e custo. Esse documento pode ser interpretado como o “aceite do cliente”. O cliente valida os requisitos, processo que envolve as informações fornecidas e o reconhecimento dos elementos que irão permitir a construção do sistema, bem como custos e prazos acordados com o desenvolvedor. Na validação, os desenvolvedores se comprometem em desenvolver o sistema no custo e prazo determinado. No desenvolvimento irão ocorrer algumas ou muitas mudanças nos requisitos, o que causará nova verificação dos requisitos, incluindo custo e prazo para novas implementações. A validação de requisitos examina a especificação para garantir que todos os requisitos do software tenham sido declarados de modo não ambíguo, que as inconsistências, omissões e erros tenham sido detectados e corrigidos e que os produtos de trabalho estejam de acordo com as normas estabelecidas para o processo, o projeto e o produto. O principal mecanismo de validação de requisitos é a revisão formal (checklist). A equipe de revisão deve incluir engenheiros de software, clientes, usuários e outros interessados no software/sistema. Exemplo de aplicação Um manual do usuário preliminar pode ser rascunhado para casos em que um protótipo não tenha sido desenvolvido. O manual estimula o usuário/cliente a revisar o software a partir de uma perspectiva de engenharia humana. Por exemplo: comentário do usuário: “A ideia é boa, mas não é desse jeito que eu pretendia fazer isso...”. Esses tipos de comentários devem ser feitos o quanto antes no processo revisional. Tal ação auxilia a melhoria ou o entendimento do produto. Antes de finalizado, o processo revisional normalmente resulta em modificações na função, no desempenho, nas representações da informação, nas restrições ou nos critérios da validação. 110 Unidade III Resumo As metodologias ágeis surgiram para acrescentar um novo paradigma de desenvolvimento de software e melhor uso da engenharia de software. A metodologia ágil vai de encontro aos modelos prescritivos de desenvolvimento de software, com o argumento, ou melhor, com um manifesto pelo reconhecimento da nova tendência para desenvolver software. Vários desses métodos ágeis foram dispostos nesta unidade, bem como as metodologias aplicáveis em todas as fases de projeto e construção do produto software de computador. Esses métodos abrangem a programação e produtividade de software com equipes pequenas e com o objetivo de melhorar o desempenho nas entregas de produtos de software, tais como aplicações, implementação de novas funcionalidades, atualizações e mudanças. As metodologias ágeis estudadas – XP, Scrum, FDD, DSDM, Crystal e AM – compõem um conjunto útil em cada fase do desenvolvimento, desde o entendimento do projeto, sua modelagem, codificação e implantação e com entregas rápidas, que variam de duas a quatro semanas. Todo projeto começa pela ideia do que vai fazer e para que vai servir ou melhorar alguma coisa. A engenharia de requisitos é a principal fase, quando o analista concebe o entendimento da ideia e o negócio que será aplicado. A engenharia de requisitos apresentada se baseia em quatro principais tipos de requisitos: usuário, funcional, não funcional e do sistema. Cada requisito tem um foco no desenvolvimento: o que o cliente quer? Abstração do negócio; especificação e modelagem do negócio; modelagem do produto e atividades que acompanham cada requisito. Vimos que são ponderadas duas questões: “o que se quer? Será que dá para fazer?” Antes mesmo de começar o processo de engenharia dos requisitos, é feita a viabilidade para produzir um software específico ou parte deste. Para tal, consideram-se custos, prazos, organização das ideias e recursos e tecnologias a serem implementadas. “O que se quer? O que está sendo feito?” A suscitação dessas questões traz eficácia e eficiência para a equipe de desenvolvimento. A validação dos requisitos acompanha todo o processo de desenvolvimento de software e garante metas e atividades específicas do processo. 111 FUNDAMENTOS DE ENGENHARIA DE SOFTWARE Exercícios Questão 1. A Extreme Programing (Programação Extrema – XP) emprega uma abordagem orientada a objetos como paradigma e envolve um conjunto de regras e práticas constantes de quatro atividades metodológicas: • planejamento; • projeto; • codificação; • testes. Em relação às quatro atividades-chaves da XP, analise as afirmativas. I –Na fase de planejamento, é feito o planejamento do projeto, caracterizado por ser minucioso e apresentar todos os detalhes, não importando o tempo necessário para sua realização. II – O projeto XP preserva a simplicidade. III – Na codificação, são desenvolvidos vários testes de unidades. IV – Na fase de testes, são feitos testes de unidades para possíveis correções de falhas no software. É correto apenas o que se afirma em: A) I e IV. B) I e II. C) II, III e IV. D) I, III e IV. E) I, II e III. Resposta correta: alternativa C. 112 Unidade III Análise das afirmativas I – Afirmativa incorreta. Justificativa: na fase de planejamento, é feito o planejamento do projeto. No entanto, ele não precisa ser muito elaborado e não deve levar muito tempo para ser feito. Na maioria das vezes, detalhes são omitidos, considerando a habilidade dos membros da equipe em interpretar os resultados que se quer atingir. II – Afirmativa correta. Justificativa: o projeto XP preserva a simplicidade. É preferível sempre um projeto simples a uma representação mais complexa. Esse design não comporta muitas funcionalidades com antecedência e segue determinado número de ações: • escolher a metáfora do sistema; • usar cartões CRC (classe-responsabilidade-colaborador) para sessões de design; • criar soluções de pico para reduzir riscos; • ter cuidado na adição das funcionalidades com muita antecedência; • refatorar sempre que possível, para aprimorar a concepção do software. III – Afirmativa correta. Justificativa: na codificação, são desenvolvidos vários testes de unidades. Na implementação do código, todos revisam e fazem acréscimos de funcionalidades. Uma característica da XP é a programação em dupla. Existe grande ênfase para que o trabalho seja feito em duplas, a fim de permitir que um dos programadores trabalhe na codificação enquanto o outro cuida da integração, dos padrões de código e dos testes das unidades. IV – Afirmativa correta. Justificativa: antes de liberar o código, a equipe faz testes de unidades para possíveis correções de falhas no software. Os testes de unidades são criados na codificação com a característica de poderem ser repetidos de forma fácil. Quando um erro é encontrado, os testes são criados. 113 FUNDAMENTOS DE ENGENHARIA DE SOFTWARE Questão 2. A engenharia de requisitos do software é um processo que envolve todas as atividades exigidas para criar e manter o documento de requisitos do software/sistema. O documento de requisitos de software pode ser usado nos contratos e licitações para o desenvolvimento de software, na escolha de fornecedores de componentes do sistema, no acompanhamento de mudanças e na especificação do software. Algumas das atividades principais do processo da engenharia de requisitos do software/sistema são: A) Estudo da viabilidade do sistema, verificação de condições de aplicação e análise. B) Especificação, modelagem e validação. C) Estudo da viabilidade do sistema, elicitação e permissão. D) Especificação, modelagem e verificação de condições de aplicação. E) Modelagem, análise e permissão. Resposta correta: alternativa B. Análise da questão As principais atividades do processo da engenharia de requisitos do software/sistema são: estudo da viabilidade do sistema, elicitação, análise, especificação, modelagem e validação. As atividades do processo da engenharia de requisitos do software/sistema podem ser decompostas em quatro níveis distintos de serviços, conforme segue. Nível 1. Estudo da viabilidade do sistema. Esse estudo é de grande importância, pois garante que as necessidades do cliente estão de acordo com os interesses organizacionais e que os recursos necessários estão disponíveis para o desenvolvimento ou a integração do novo software/sistema. Nível 2. Elicitação e análise de requisitos. Nessa fase, são feitas várias reuniões entre cliente e desenvolvedor, com o objetivo de extrair com detalhes o conhecimento do negócio ao qual se destina o software/sistema. Nível 3. Especificação, modelagem e documentação dos requisitos. Após a interpretação e o entendimento dos detalhes do negócio, inicia-se a preparação do documento de requisitos, que deve ser composto pelos vários requisitos discutidos em reunião. Nessa fase, que deve ser feita pelo desenvolvedor com acompanhamento do cliente, são descritos textos breves sobre cada requisito, acompanhados, sempre que necessário, de um modelo visual. 114 Unidade III Nível 4. Validação de requisitos. A validação é a apresentação do documento de requisitos em reunião com a participação do grupo formado pelos interessados no sistema. O objetivo é aprimorar, incluir mudanças propostas e aprovar o início do projeto e o desenvolvimento do software/sistema. A verificação de condições de aplicação e a permissão não são atividades previstas na engenharia de requisitos. Isso significa que as alternativas que as contêm não podem ser consideradas corretas. Assim, a alternativa correta é a B.
Compartilhar