Prévia do material em texto
* Graduação em Sistemas da Informação na Universidade Salvador (UNIFACS), pós-graduação em Engenharia de Software na Estácio de Sá. E-mail: alexandhre10@gmail.com. QUALIDADE DE SOFTWARE EM PROJETOS SCRUM Alexandre dos Santos Silva* RESUMO Este artigo tem como objetivo demonstrar e caracterizar a qualidade de software inserida no contexto de projetos que utilizam a metodologia ágil Scrum. Por muito tempo os produtos de software eram desenvolvidos sob a ótica dos modelos tradicionais com padrões e técnicas rígidas que não se adaptavam a mudanças, cada vez mais tinham custos mais altos e que não geram valor ao cliente. Dessa forma, as metodologias ágeis ganharam espaço nos últimos anos com práticas mais eficazes de controle e garantia da qualidade, adaptação a mudanças e o enfoque no cliente. A metodologia ágil SCRUM é a mais utilizada e a mais difundida atualmente por conta da facilidade no controle dos processos, auxilia o planejamento dos gestores, reduz os riscos e as falhas e pode se adaptar a qualquer projeto. A qualidade de software tem se tornado cada vez mais essencial nos projetos atualmente, diversas práticas são empenhadas e desenvolvidas durante o desenvolvimento que podem aumentar a confiabilidade do projeto, reduzir custos, aumentar a produtividade e atender as especificidades do cliente. Palavras-chave: Metodologia ágeis, SCRUM, Qualidade de Software, Projetos. INTRODUÇÃO Ao longo do desenvolvimento da humanidade a tecnologia foi e vêm sendo importante no dia a dia das pessoas, provendo bens e serviços que tornam a vida das mesmas mais rápida e prática. Hoje em dia praticamente tudo se converge em tecnologia ou necessita da mesma para facilitar a vida do ser humano. Desse modo, para que essas soluções possam de fato serem efetivas e gerar valor ao usuário, padrões, métricas de desenvolvimento e qualidade de software precisam ser seguidos. Para aplicar esses padrões de qualidade precisamos estabelecer a forma como iremos aplicar, em quanto tempo e evoluir gradativamente o produto final que chegará para solucionar os problemas do usuário. Todas essas ferramentas e métodos se configuram num esforço temporário com um objetivo final que se denomina projeto. Segundo o PMBOK (2017): “Um projeto é um esforço temporário empreendido para criar um produto, serviço ou resultado exclusivo. Os projetos e as 2 operações diferem, principalmente, no fato de que os projetos são temporários e exclusivos, enquanto as operações são contínuas e repetitivas.” Todo projeto é composto por um conjunto de ações e abordagens que vão permear como a equipe irá agir nesse período, como os processos serão elaborados e como as diferentes áreas serão geridas. A escolha da metodologia de software do projeto é uma das fases mais importantes e críticas, pois o sucesso do mesmo está diretamente ligado à metodologia de software. Cada método tem seus pontos fortes e pontos fracos cabe aos pontos focais do projeto conhecerem diversas metodologias para que diante dessas opções a mais eficiente seja escolhida. Dentro desse contexto, nos últimos anos com a alta demanda de produtos e serviços alguns padrões de software precisaram ser revistos e outros criados para atender essa evolução. As metodologias tradicionais por muito tempo foram as que eram mais usadas nas empresas pelo fato de trazerem regras e padrões de não flexíveis. Como as entregas precisaram ser mais rápidas e com muito mais qualidade de forma a gerar valor para o usuário. Visando atender a essa aceleração do consumo por produtos e serviços de software nos últimos anos que as metodologias ágeis ganharam força e vem se tornando cada vez mais comuns nas empresas. A metodologia SCRUM vem ganhando espaço desde os anos 80 como uma nova forma de desenvolvimento e gerenciamento de projetos. Por se basear e aplicar em padrões incrementais e iterativos o SCRUM consegue extrair o melhor de cada membro da equipe de forma a usar diferentes técnicas que são usadas da maneira correta para que todos contribuam para o sucesso final do produto. Diante desse cenário precisamos garantir a qualidade do software que será entregue ao cliente utilizando algumas dessas técnicas disponibilizadas pelo Scrum. São padrões, métricas e certificações que juntam provém testes, verificações e análises que visam controlar o desenvolvimento do software, das atividades de gestão e de todos eventos que deverão acontecer para que o software seja criado incrementalmente. Este artigo demonstrará a evolução da metodologia Scrum e sua correlação com a qualidade de software. Descrevendo os testes, métricas e conceitos relacionados a qualidade e como eles estão inseridos dentro da metodologia. 3 METODOLOGIAS ÁGEIS O desenvolvimento de software cada vez mais vem se tornando um desafio devido a diversos problemas encontrados pelas empresas para especificar e gerenciar os requisitos. Segundo Ambler (2002) modelagem Ágil (AM) é uma metodologia baseada na prática para modelagem efetiva de sistemas baseados em software, é também uma coleção de práticas, guiadas por princípios e valores que podem ser aplicados por profissionais de software no dia a dia. Podemos dizer que as metodologias ágeis são mais adaptáveis em relação aos modelos tradicionais e provêm uma maior segurança em caso de alterações constantes dos requisitos do projeto. Para um modelo ser ágil segundo Ambler (2002), ele precisa atender as seguintes características: Tabela 1 - Características para um modelo ser ágil 1. Ele atende seu propósito. 2. Ele é inteligível. 3. Ele é suficientemente preciso. 4. Ele é suficientemente consistente. 5. Ele é suficientemente detalhado. 6. Ele provê um valor positivo. 7. Ele é tão simples quanto possível. Fonte: Ambler (2002) Ainda segundo Abrahamsson (2003), as metodologias ágeis constituem uma nova classe de metodologias de desenvolvimento de software criada para atender à crescente pressão do mercado por processos mais ágeis e leves, com ciclos de desenvolvimento cada vez mais curtos. Segundo Fowler (2005), os métodos ágeis são conjuntos de técnicas e padrões de desenvolvimento de software, desenvolvidos ao longo dos últimos anos, com a finalidade de tornar o desenvolvimento dos softwares mais acelerado, dar a possibilidade de controlar o custo e melhorar cada vez mais a qualidade do produto que será entregue. 4 Fowler (2005) explica ainda que as metodologias ágeis são mais adaptativas ao invés de predeterminantes, ou seja, dentro da metodologia ágil já está previsto mudanças constantes durante o projeto e todos os membros da equipe precisam estar aptos. As metodologias tradicionais enfrentam diversos problemas pois possuem processos mais fixos e não suscetíveis a alterações e isso implica em atrasos na entrega do projeto e aumento excessivo do custo. Segundo Schwaber e Sutherland (2011), um dos principais requisitos para se definir se um método pode ser classificado como ágil é a construção incremental no lugar de entregar um produto total no final do projeto, as equipes precisam ter a autonomia de se organizar, colaborar entre si, praticar o feedback com clareza, se adaptar facilmente a novos cenários, realizar testes constantes e manter sempre pequenos ciclos de desenvolvimento. Segundo Bessa e Arthaud (2018, p.181), o termo “Metodologias Ágeis” tornou-se popular em 2001 quando houve uma reunião de especialistas em processos de software representando diversos métodos ágeis que se reuniram para abordar novas formas de aumentar o desempenho de seus projetos. Perceberam que algumas práticas e princípios que seguiam eram comuns e geram valor ao projeto. A partir daí se juntaram para estabelecer o Manifesto ágil com suas filosofias, valores e princípios. A tabela a seguir traz os 12 princípios que compõem o manifesto ágil: Tabela2 - 12 princípios que compõem o manifesto ágil 1 Entregar o software de forma eficaz e satisfatória para o cliente de modo a gerar valor ao seu negócio. 2 Uma das vantagens dos métodos ágeis é que mudanças nos requisitos não irão impactar no projeto. 3 Outra vantagem é poder entregar o software em menos tempo. 4 Todos os membros da equipe devem estar sincronizados em prol do projeto. 5 Dar a todos os membros da equipe ambiente estruturado e motivado para exercer seu trabalho. 6 Conversas one to one são mais eficazes para transmitir informações dentro da equipe. 7 Entregas de software funcionando são métricas de progresso do projeto. 8 Todos os envolvidos no projeto devem manter um ritmo constante de 5 desenvolvimento. 9 Cuidados relacionados à qualidade garantem a primazia do projeto. 10 Simplicidade é uma das características principais dos métodos ágeis. 11 Equipes auto-organizáveis promovem melhor qualidade ao projeto. 12 De tempos em tempos a equipe se auto avalia para planejar possíveis ajustes de modo a tornar o desenvolvimento mais eficaz. Fonte: J. Highsmith et al. (2001) Segundo Jeon et al (2011), as metodologias ágeis têm como principal foco oferecer satisfação ao cliente, capacidade de adaptação a mudanças e agregar produtos de maior qualidade e em um tempo muito menor do que metodologias tradicionais. Sfetsos e Stamelos (2010) descrevem que metodologias ágeis dispõe de padrões e práticas que conferem a qualidade do projeto e proporcionam elocução contínua no software. Dentro desse contexto, a metodologia SCRUM é a mais difundida na comunidade de desenvolvimento de software. Segundo Schwaber e Beedle (2011), o SCRUM é uma metodologia ágil, mas seu foco está no desenvolvimento iterativo e incremental em contraponto às práticas da engenharia de software tradicionais. De acordo com levantamento do IGTI (2017), o Scrum é o framework ágil mais famoso entre as empresas brasileiras, presente em 74% delas por sua eficiência na otimização de processos e sua versatilidade: ele se adapta facilmente a diversas áreas e não fica restrito apenas ao desenvolvimento de tecnologias. Figura 1 Desenvolvimento ágil em números, no Brasil e no Mundo IGTI Fonte: IGTI (2017) 6 SCRUM Segundo Bessa e Arthaud (2018) o SCRUM foi criado na década de 1990 por Jeff Sutherland, com base em conceitos tradicionais da engenharia de produção como Lean e a Teoria das Restrições Explorada por Takeuchi e Nonaka (1986) no artigo “The new product development game”, no qual descrevem as vantagens da utilização de times pequenos, multidisciplinares e auto gerenciáveis no desenvolvimento de produtos. Segundo Vasconcelos e Mello (2012) o nome Scrum surgiu da comparação entre desenvolvedores e jogadores de Rugby. Scrum é a denominação da rápida reunião que ocorre quando os jogadores de Rugby vão iniciar um lance. Segundo Schwaber e Beedle (2002), o SCRUM tem por finalidade definir um processo de desenvolvimento de projetos em que as pessoas sejam o centro de atenção e enfoque. Desse modo podemos perceber que o Scrum é um conjunto de práticas e padrões que visam facilitar e guiar o desenvolvimento do software de forma que as pessoas e que os processos possam ter uma capacidade facilitada de mudança caso necessário. Ainda segundo Schwaber e Sutherland (2011, p.3), Scrum pode ser definido como um framework onde as pessoas têm a facilidade de resolver problemas complexos, com o objetivo final de entregar um produto com o maior valor agregado ao cliente de forma incremental e iterativa. Segundo Sulman (2016, p.16) o SCRUM representa um conjunto de valores, princípios e práticas que fornecem uma base para se integrar a outras técnicas e facilitar o desenvolvimento de software. Os principais atores da metodologia Scrum são: Scrum Master: Segundo Bessa e Arthaud (2018, p.183), este seria o responsável por garantir que todas as regras do Scrum sejam aplicadas e que o projeto progrida de forma satisfatória e ágil. É responsável por tratar e eliminar os impedimentos do projeto. Product Owner: Segundo Vasconcelos e Mello (2012, p.561) é o responsável por definir quais são os requisitos e qual é o grau de importância e prioridade de cada um deles. Necessita dominar muito bem as regras de negócios do cliente e ajuda ao time tirando dúvidas quanto às funcionalidades. 7 Scrum Team: Time de desenvolvimento normalmente. Os principais elementos do SCRUM são: Product backlog: Funcionalidades que foram coletadas através de reuniões com os envolvidos do projeto e o cliente e são definidas por ordem de prioridade. Sprint: Ciclo de um conjunto de atividades com um tempo pré-determinado, Segundo Abrahamsson et al. (2002), a sprint normalmente dura de uma a quatro semanas, mas não há uma regra para isto; as equipes que decidem a duração a ser adotada para o projeto; Sprint backlog: Funcionalidades que foram mapeadas para que o time de desenvolvimento implemente naquele Sprint. Reunião diária ou Daily: Primeira reunião do dia logo pela manhã, feita em pé, para que os membros em que basicamente três perguntas são respondidas por cada membro sobre suas responsabilidades Rising e Janoff (2000): O que foi feito ontem? O que será feito hoje? Há algum obstáculo à realização das atividades? Sprint Planning meeting ou Reunião de Planejamento: Reunião de Planejamento da Sprint do que será entregue ao final da sprint, juntamente com o PO (Product Owner), normalmente o cliente, são decididas as funcionalidades que serão implementadas e colocadas no Backlog da Sprint. Sprint Review meeting ou Reunião de Revisão: Sempre ao final de cada Sprint o time deve apresentar o produto desenvolvido a partir do backlog da sprint. Sprint Retrospective meeting ou Reunião de Retrospectiva: Após a reunião de Review é feita a reunião de retrospectiva onde os membros do time podem indicar pontos positivos e negativos que viveram durante a Sprint, lições aprendidas e sugestões de melhorias. 8 Figura 2 GERENCIAMENTO ÁGIL DE PROJETOS COM SCRUM + PMBOK Fonte: Fábio Cruz e Project Builder QUALIDADE DE SOFTWARE: VISÃO GERAL O atual panorama em que vivemos se caracteriza por muitas mudanças e novas definições. Dessa forma, os projetos precisam estar preparados para se reorganizar o mais rápido possível em face dessas mudanças. As metodologias, frameworks e o gerenciamento do projeto têm grande parte nesse controle de novos requisitos e alteração dos atuais. Um dos grandes desafios dos atuais gestores é controlar os fatores externos e internos ligados aos projetos. Os fatores externos são mais difíceis de controlar e prever e dessa forma a empresa deve se encontrar preparada e organizada para quaisquer imprevistos. Uma boa gestão do projeto e uma metodologia de software bem escolhida proporciona ao gestor um domínio significativo do processo. Uma empresa para ser competitiva deve conhecer todos os fatos e dados de seu contexto empresarial. A informação deve envolver todo o contexto do ambiente, as ameaças e oportunidades no que se denomina “informação competitiva” Lopes (2007). De posse da informação competitiva a empresa consegue se antecipar ao mercado, oferecer melhores produtos e serviços e um crescimento estratégico. 9 Segundo Silva (2020a) cada vez mais se torna necessário uma análise da qualidade de produtos ou serviços, partindo do pressuposto que os usuários cada vez mais são exigentes e querem alta disponibilidade. Um produto que tenha alta performance, tenha suas funcionalidades intuitivas e gere valor ao seu negócio se torna cada vez mais importante para o usuário. Segundo Sommerville (2011, p.454), as dificuldades relacionadas à qualidade de software foram detectadas em meados de 1960 com o desenvolvimento de grandes sistemas. Os softwares eram lentose de baixa confiabilidade, com elevado custo de manutenção e baixo reuso, dessa forma, novos padrões tiveram que ser adotados para controlar a qualidade e no decorrer do século XX novos softwares de testes também foram desenvolvidos com a finalidade agregar mais valor ao projeto. Conforme a quinta edição da pesquisa de Qualidade e Produtividade no Setor de Software Brasileiro – 2001 MCT/SEPIN (2002), existem quatro tipos de produto de software: Tabela 3 - Quatro tipos de produto de software Uso Geral Softwares que são usados por um grande público e desenvolvidos conforme requisitos específicos. Uso Específico Softwares para clientes específicos, baseados em especificações mais inflexíveis. Para Internet Implementados com a finalidade de criar sites. Embutidos Softwares que vem juntamente com o hardware escolhido. Fonte: MCT/SEPIN (2002) De acordo com Lopes (2007), a qualidade deixou de ser um diferencial competitivo e se tornou obrigação entre as empresas que querem estar sempre à frente do mercado. Ainda segundo Lopes (2007) alguns fatores que devem ser levados em conta são: ● Quem define se suas aspirações foram atendidas ou não é o cliente; 10 ● Diante das opções oferecidas ao cliente, ele decide se fica numa empresa ou vai para concorrência, nesse caso, o cliente vai para onde enxerga que está sendo mais bem atendido; e ● Todo o processo de criação, validação, manutenção etc. do produto entram como fatores que influenciam se as expectativas do cliente foram atendidas ou não e criam uma identidade do mesmo com o produto. Figura 3 A Árvore e o Balanço no Desenvolvimento de Software Fonte: Blog do Takemura (2012) QUALIDADE DE SOFTWARE: DEFINIÇÃO Qualidade de projeto refere-se às características que os projetistas especificam para um produto. A qualidade dos materiais, as tolerâncias e as especificações de desempenho, todos são fatores que contribuem para a qualidade de um projeto. Quanto mais materiais de alta qualidade forem usados, tolerâncias mais rígidas e níveis de desempenho maiores forem especificados, a qualidade de projeto de um produto aumentará se o produto for fabricado de acordo com essas especificações (PRESSMAN 2011, p.359). 11 Ou seja, Pressman (2011) sugere que quanto maiores forem as métricas aplicadas ao projeto, ao produto, quanto mais testes forem feitos, quanto mais ferramentas eficazes forem empregadas o produto será de maior qualidade e confiabilidade. Ainda conforme Pressman (2011, p.359) a qualidade do projeto está intimamente ligada à conformidade em relação aos requisitos e a qualidade de conformidade está ligada às metas de desempenhos traçadas pela equipe que são atendidas no decorrer do desenvolvimento. Segundo Sommerville (2011, p.457), qualidade de software não é somente verificar se o produto foi implementado corretamente, mas se o mesmo atende aos requisitos não funcionais do sistema. Sommerville (2011, p.457) propõe ainda que esses atributos podem estar relacionados a confiança, usabilidade, eficiência e manutenibilidade, mas que é impossível de um projeto ser eficiente em todos esses atributos. Pressman (2011, p.360) enfatiza ainda que existem pontos importantes na qualidade de software: 1. A gestão da qualidade efetiva pressupõe que uma infraestrutura eficaz possibilita um software de qualidade, aspectos administrativos e o bom gerenciamento de mudanças criam mecanismos maiores de controle e equilíbrio. 2. O produto útil tem que atender as expectativas do usuário, ter conformidade em relação a requisitos não funcionais implícitos e oferecer confiabilidade. 3. Um produto de software de qualidade deve agregar valor para a empresa e o cliente. Para a empresa significa ter um menor gasto com manutenção e correção do software e para o cliente significa atender às suas demandas. Segundo Pressman (2011, p.361), sugere uma proposta de categorização dos fatores que acometem a qualidade de software: Tabela 4 - Fatores que acometem a qualidade de software Correção O quanto um programa satisfaz a sua especificação e atende aos objetivos da missão do cliente. Confiabilidade O quanto se pode esperar que um programa realize a função pretendida com a precisão exigida. 12 Eficiência A quantidade de recursos computacionais e código exigidos por um programa para desempenhar sua função. Integridade O quanto o acesso ao software ou dados por pessoas não autorizadas pode ser controlado. Usabilidade Esforço necessário para aprender, operar, preparar a entrada de dados e interpretar a saída de um programa. Facilidade de manutenção Esforço necessário para localizar e corrigir um erro em um programa. Flexibilidade Esforço necessário para modificar um programa em operação Testabilidade Esforço necessário para testar um programa de modo a garantir que ele desempenhe a função destinada Portabilidade Esforço necessário para transferir o programa de um ambiente de hardware e/ou software para outro Reusabilidade O quanto um programa [ou partes de um programa] pode ser reutilizado em outras aplicações — relacionado com o empacotamento e o escopo das funções que o programa executa. Fonte: Pressman (2011, p.362) Figura 4 Fatores de qualidade de software Fonte: Pressman (2011, p.362) QUALIDADE DE SOFTWARE APLICADA EM PROJETOS SCRUM Em projetos de software atuais que utilizam a metodologia ágil SCRUM entende-se que todos os membros da equipe têm um papel importante na garantia da qualidade do software. A boa execução dos processos do SCRUM garante a grande probabilidade de que o produto final seja de qualidade, Porém, muitas vezes 13 não existe uma definição clara de papéis e responsabilidades para cada pessoa no time a respeito da qualidade do produto, que atividades e artefatos e ferramentas estão sob sua responsabilidade e como compartilham os mesmos Negrello (2013). Ainda segundo Negrello (2013), problemas como realizar a qualidade de software, como e quando realizar são perguntas complexas que precisam de uma integração de dois componentes importantes dentro de um projeto: processos e ferramentas. Segundo Pressman (2011, p.370), a qualidade de software é uma ação constante de métodos de engenharia de software com boas práticas de gestão de projetos. Dessa forma, existem quatro grandes atividades que as equipes utilizam para controlar a qualidade de um projeto: Tabela 5 - Quatro grandes atividades para controlar a qualidade Métodos de engenharia de software Primeiro passo ao criar um projeto é entender o problema a ser resolvido e aplicar os métodos corretos da engenharia de software para aumentar a probabilidade de entregar um produto de qualidade. Técnicas de gerenciamento de software As mudanças constantes nos requisitos precisam estar bem explícitas e técnicas específicas de gerenciamento de projetos quando bem empregadas aumentam a qualidade do produto. Controle de qualidade Antes do início de cada projeto algumas métricas de qualidade são estabelecidas e constantemente precisam ser revisadas para garantir que o produto atenda a essas métricas. Garantia da qualidade Alguns relatórios e métodos podem ser utilizados de modo a avaliar de forma efetiva todos os passos e processos que garantem a qualidade. . Fonte: Pressman (2011, p.370) As atividades de garantia da qualidade de software são focadas na prevenção de defeitos e problemas, que podem surgir nos produtos de trabalho. Definição de padrões, metodologias, técnicas e ferramentas de apoio ao desenvolvimento fazem parte deste contexto Vasconcelos (2006). Ou seja, os padrões e métodos de 14 engenharia de software e da metodologia SCRUM precisam ser utilizados de forma eficiente pelos atores do projeto de modo aumentar a probabilidade de o produto atender asmétricas especificadas. Segundo Sommerville (2011, p.455), essas métricas e atributos de qualidade devem estar contidos num plano de qualidade que estabelece quais qualidades serão avaliadas durante o processo de desenvolvimento. Essas definições servem de base para que tanto a equipe de desenvolvimento quanto os engenheiros de software não se percam em quais atributos de qualidade realmente importam. Figura 5 Gerenciamento de qualidade e desenvolvimento de software Fonte: Sommerville (2011, p.455) Sommerville (2011, p.456) sugere que Humprey (1989) propôs uma estrutura básica para um plano de qualidade: 1. Introdução ao produto: Descrição do produto, mercado em que atua e as aspirações de qualidade; 2. Planos de produto: Datas relacionadas a release do produto e quando ele será disponibilizado para o usuário; 3. Descrições de processo: Processos de desenvolvimento geram padrões que devem ser seguidos no desenvolvimento do produto. 4. Metas de Qualidade: Metas e planos de qualidade que descrevem os atributos críticos de qualidade do produto. 5. Riscos e gerenciamento de riscos: Descreve os riscos e as ações que devem ser tomadas diante de cada um deles. 15 NORMAS E PADRÕES DE QUALIDADE DE SOFTWARE Normas e padrões de qualidade vêm sendo adotadas com o intuito de aumentar a qualidade do software e garantir que o mesmo atenda as especificidades elucidadas durante as fases de planejamento do projeto. Dessa forma, segundo Balthazar (2007) a Norma NBR 13596, elenca algumas características relacionadas à qualidade e propõe um modelo de processo de avaliação de produto de software. Ainda segundo Balthazar (2007), a norma NBR 13596 vem sendo substituída pela NBR ISO/IEC 9126. Segundo Cordeiro e Frreitas (2008. p,4), a norma de qualidade ISO/IEC 9126 é composta por duas partes: Tabela 6 - Partes do modelo de qualidade do produto de software da Norma NBR ISO/IEC 9126 Qualidade Interna e Externa Especifica seis características para a qualidade de software e são divididas em sub características: funcionalidade, confiabilidade, usabilidade, eficiência, manutenibilidade e portabilidade Qualidade de Uso Especifica características que tem relação a visão do usuário em relação ao software: Fonte: Cordeiro e Frreitas (2008. p,4) Aline e André (2008. p,4), descrevem ainda que existem outras normas como a ISO/IEC 15504 que segundo que caracteriza a avaliação do processo de desenvolvimento. A ISO/IEC 14598 que designa requisitos básicos para medição e avaliação de produtos de software. A ISO/IEC 12207 fornece uma organização de passos para os processos que são aplicados durante a aquisição de produtos de software. As normas descritas elas podem se referenciar ao produto ou ao processo, normas voltadas ao produto vão fornecer padrões básicos de qualidade que os produtos devem seguir. Já as normas voltadas para o processo vão descrever padrões básicos que o ciclo de vida dos processos deve seguir para garantir a qualidade. Existem outros padrões que são seguidos como modelos para garantir a qualidade durante o desenvolvimento como o CMMI (Capability Maturity Model 16 Integration), é um modelo que reúne boas práticas para atividades de engenharia de software que cobre desde a elucidação dos requisitos até a entrega e manutenção. CMMI tem a finalidade de guiar o que a organização precisa fazer para melhorar seus processos e não definir os processos para a organização (CMMI, 2018). Kasse (2008) descreve que para que uma empresa atinja um nível satisfatório de maturidade no processo de desenvolvimento do software, seu foco total tem que se concentrar em qualidade. O CMMI tem como foco principal atuar no desenvolvimento de melhoria contínua nos processos para que possíveis erros possam ser mapeados, solucionados da forma correta e que todas as etapas de desenvolvimento possam ser executadas de maneira correta. O CMMI mapeia 5 níveis de maturidade que são eles: 1. Nível 1 Inicial: O processo é abstrato e baseado nas experiências dos envolvidos; 2. Nível 2 Repetível: O projeto é controlado de forma simples; 3. Nível 3 Definido: Os processos seguem um padrão de organização; 4. Nível 4 Gerenciado: Métricas são estabelecidas para obter total controle do projeto; 5. Nível 5 Otimização: Melhoria contínua como base para evolução dos processos. Figura 6 Níveis de Maturidade do CMMI Fonte: Zhang Lina e Shao Dan (2011) 17 No cenário brasileiro nós temos o MPS.BR como um modelo de melhoria de processo de software com objetivo de auxiliar as empresas a caminharem para a melhoria contínua dos processos e disseminar os padrões da engenharia de software durante o desenvolvimento dele. O MPS.BR é um modelo de melhoria de processos de software que foi criado em 2003, de acordo com a realidade de empresas brasileiras, com o objetivo de propor um modelo de processo para alcançar a Melhoria do Processo de Software Brasileiro Koscianki e Soares (2007). Uma das metas do Programa MPS.BR é definir e aprimorar um modelo de melhoria e avaliação de processo de software e serviços, visando preferencialmente às micro, pequenas e médias empresas (mPME) (SOFTEX, 2012a). CONCLUSÃO Este trabalho teve por objetivo contextualizar e analisar como a qualidade de software hoje em dia é um aspecto fundamental no desenvolvimento de projetos e como sua interação com o SCRUM promove produtos que conferem mais valor ao cliente, produtos mais fáceis de manter e evoluir. O estudo foi realizado com a finalidade de compreender e explicitar que as metodologias ágeis junto com suas práticas e características são essenciais no desenvolvimento de software, tem o enfoque nas pessoas e que conjunto de todos esses fatores atestam o controle e a garantia da qualidade. Foi feita uma pesquisa exploratória a fim de colher mais informações a respeito dos métodos ágeis e sua evolução sistemática. Diante das pesquisas dos autores citados percebe-se que os métodos ágeis possuem e principalmente o SCRUM possuem práticas que contribuem para a qualidade de software. E por mais que não sejam métodos novos vem permeando o desenvolvimento dos produtos e evoluindo durante os anos. As atividades de qualidade desempenhadas pela equipe conferem ao gerente de projeto condições suficientes para controlar o produto que está sendo desenvolvido, controlar as entregas incrementais ao cliente e avaliar se eles atendem aos níveis de requisitos funcionais e não funcionais elucidados anteriormente. 18 Desse modo, as análises feitas nos estudos citados no trabalho descrevem que a qualidade de software provê práticas e padrões que auxiliam as equipes a evoluir exponencialmente e entregar produtos que conferem mais valor ao cliente. A comunicação se torna um fator essencial para esse progresso visto que as informações trafegam de forma mais eficaz e as mudanças não têm um grande impacto diante do projeto. Podemos concluir que a qualidade de software é um dos pilares fundamentais do SCRUM e vem permeando o sucesso progressivo das entregas de software nos últimos anos. REFERÊNCIAS AMBLER, W, Scott. Modelagem Ágil (AM): Um apanhado geral, Versão online. Disponível em: http://www.agilemodeling.com/shared/AMPanfleto.pdf. Acesso em: 20 abr. 2021. ABRAHAMSSON, P. et al. New directions on agile methods: a comparative analysis. In: International Conference On Software Engineering, 25., 2003, Portland. Anais eletrônicos […]. Portland: ICSE, p. 244-254, 2003. FOWLER, M. Continuous integration. 2006. Disponível em: http://martinfowler.com/articles/continuousIntegration.html. Acesso em: 20 abr. 2021. SCHWABER, Ken.; SUTHERLAND, Jeff. Scrum Guide. 2011. Disponível em: < http://www.scrum.org/Scrum-Guides >. Acesso em: 20 abr. 2021. BESSA, Thiago.; ARTHAUD, Daniel. Metodologias ágeis para o desenvolvimentode softwares. 2018. Revista Ciência e Sustentabilidade, ISSN 2447-4606. JEON, S. et al. Quality Attribute driven Agile Development. 2011. SFETSOS, P.; STAMELOS, I. Empirical Studies on Quality in Agile Practices: A Systematic Literature Review. Seventh International Conference on the Quality of Information and Communications Technology, 2010. SCHWABER, Ken; BEEDLE, Mike. Agile Software Development with Scrum. [S.l]: Prentice Hall, 2002. IGTI. Desenvolvimento ágil em números, no Brasil e no Mundo. 2017. Disponível em: https://www.igti.com.br/blog/desenvolvimento-agil-em-numeros/. Acesso em: 20 abr. 2021. TAKEUCHI, H; NONAKA, I.; The new product development game. Harvard Business Review, Cambridge, n. 1, jan./feb., 1986. 19 VASCONCELOS, Bernardo.; MELLO, Carlos Henrique. Aplicação do método ágil scrum no desenvolvimento de produtos de software em uma pequena empresa de base tecnológica. 2012. Gest. Prod.,São Carlos, v. 19, n. 3, p. 557-573, 2012. SULMAN, Daniel. UM ESTUDO COMPARATIVO DE METODOLOGIAS ÁGEIS NO DESENVOLVIMENTO DE APLICATIVOS MÓVEIS. 2016. Disponível em: https://www.cin.ufpe.br/~tg/2016-2/dsae.pdf. Acesso em: 22 abr. 2021. ABRAHAMSSON, Pekka, SALO Outi. Agile Software Development Methods – Review and Analysis. Espoo 2002, VTT Publications 478 107. RISING, L.; JANOFF, N. S. The Scrum Software Development Process for Small Teams. 2000. LOPES, Kátia. QUALIDADE DE SOFTWARE. 2007. Disponível em: http://www.facom.ufu.br/~bacala/QS/apostila_QS_Katia.pdf. Acesso em: 22 abr. 2021. SILVA, S. (2002a) Avaliação da Qualidade de Software Através da Usabilidade. Congresso Fenasoft 2002, São Paulo. SOMMERVILLE, Ian. Engenharia de Software 9. ed. Tradução Kalinka Oliveira, Ivan Bosnic. São Paulo: Persson, 2011. MCT/SEPIN. Qualidade e Produtividade no Setor de Software Brasileiro: 2001. BrasíliaDF, Brasil, 2002. PRESSMAN, Roger S. Engenharia de Software: Uma abordagem profissional 7. ed. Tradução Ariovaldo Griesi, Mario Moro Fecchio. Porto Alegre, RS: McGraw-Hill Education, 2011. NEGRELLO, Ana. Métodos Ágeis e Qualidade: Como Conciliar? 2013. Disponível em:http://www.ceavi.udesc.br/arquivos/id_submenu/787/gabriel_linardi___qualidade _de_software_na_metodologia_agil.pdf. Acesso em: 23 abr. 2021. VASCONCELOS, Alexandre Marcos Lins de., [et. al]. Engenharia de Software para Software Livre 1. Lavras: UFLA, 2006. HUMPHREY, W. Managing Software Process, Mass.:Addison Wesley, 1989. BALTHAZAR, Glauber da Rocha. Visão Geral da Qualidade de Software. 2007. Disponível em: http://re.granbery.edu.br/artigos/MjUw.pdf. Acesso em: 23 abr. 2021. CORDEIRO, Aline G, FRREITAS, André L. P. O cenário atual da qualidade de software. 2007. Disponível em: https://www.researchgate.net/profile/Andre-Luis- Freitas/publication/267623024_O_cenario_atual_da_qualidade_de_software/links/54 20 5395830cf2cf51647c1b44/O-cenario-atual-da-qualidade-de-software.pdf Acesso em: 23 abr. 2021. Kasse, T. (2008). Practical insight into CMMI. Artech House computing library. CMMI. About CMMI® Institute. 2018. Disponível em: https://cmmiinstitute.com/. Acesso em: 23 abr. 2021 KOSCIANKI, Andre; SOARES, Michel S. Qualidade de Software: Aprenda as metodologias e técnicas mais modernas para o desenvolvimento de software. 2ª Edição. São Paulo: Novatec Editora, 2007. SOFTEX, 2012a, MPS.BR - Melhoria de Processo do Software Brasileiro, Guia Geral de Software, Associação para Promoção da Excelência do Software Brasileiro – SOFTEX PMI - PROJECT MANAGEMENT INSTITUTE. Guia PMBOK®: Um Guia para o Conjunto de Conhecimentos em Gerenciamento de Projetos, sexta edição, Pennsylvania: PMI, 2017. COCKBURN, Alistair; HIGHSMITH, Jim. 2001. Disponível em: http://alistair.cockburn.us. Acesso em: 20 abr. 2021 TAKEMURA. A Árvore e o Balanço no Desenvolvimento de Software, 2012. Disponível em:http://blogdotakemura.blogspot.com/2012/05/arvore-e-o-balanco-no- desenvolvimento.html. Acesso em: 20 abr. 2021