Melhorando a Usabilidade em Projetos de Desenvolvimento Ágil: um Estudo de Caso - PDF
Melhorando a Usabilidade em Projetos de Desenvolvimento Ágil: um Estudo de Caso
Download "Melhorando a Usabilidade em Projetos de Desenvolvimento Ágil: um Estudo de Caso"
Ana Bento Lage
1 Universidade Federal de Pernambuco Centro de Informática Ciência da Computação Melhorando a Usabilidade em Projetos de Desenvolvimento Ágil: um Estudo de Caso TRABALHO DE GRADUAÇÃO Estudante: Flávia Renata Costa Chaves Orientadora: Professora Dra Carina Frota Alves Recife, Julho/2010
2 Universidade Federal de Pernambuco Centro de Informática Ciência da Computação Melhorando a Usabilidade em Projetos de Desenvolvimento Ágil: um Estudo de Caso TRABALHO DE GRADUAÇÃO Trabalho apresentado ao Programa de Graduação em Ciência da Computação do Centro de Informática da Universidade Federal de Pernambuco como requisito parcial para obtenção do grau de Bacharel em Ciência da Computação. Estudante: Flávia Renata Costa Chaves Orientadora: Professora Dra Carina Frota Alves Recife, Julho/2010
3 Assinaturas O presente trabalho de conclusäo de curso intitulado Melhorando a Usabilidade em Projetos de Desenvolvimento Çgil: um Estudo de Caso Ñ resultado do esforöo da aluna FlÜvia Renata Costa Chaves com orientaöäo da professora Dra Carina Frota Alves. A estudante e a orientadora assinam abaixo concordando com o conteádo desse documento, assim como com os resultados obtidos neste projeto. Carina Frota Alves (Orientadora) FlÜvia Renata Costa Chaves (Estudante) Recife, Julho/2010
4 Make everything as simple as possible, but not simpler. Albert Einstein 4
5 AGRADECIMENTOS A elaboração deste trabalho representa, certamente, um marco em minha vida. Por essa razão, me vejo na obrigação de agradecer a todos que me acompanharam e me fizeram, de alguma maneira, chegar até aqui. Agradeço a minha mãe, Telma, que, certamente, é a maior responsável pelas minhas conquistas. Obrigada por sempre acompanhar meus estudos e acreditar no meu potencial. Obrigada também por ter feito sempre tudo que estava ao seu alcance para que a carga de estudar no CIn pesasse um pouco menos sobre mim. Agradeço ao meu pai, Sérgio, por ter me proporcionado um ensino de qualidade durante a escola que, certamente, refletiu positivamente no meu desempenho na faculdade. Entrar na faculdade certamente ampliou meus horizontes. Pude perceber que o volume de conhecimento disponível para ser absorvido é imenso e que, para tudo que se afirme durante um trabalho, é preciso uma fundamentação. Agradeço a todos os professores que tive ao longo desses quatro anos de graduação que contribuíram de alguma forma para meu crescimento. Agradeço em especial à professora Carina Frota por ter me orientado ao longo deste trabalho de conclusão de curso e ao professor Fernando Fonseca, meu tutor, por ter me orientado durante minha trajetória no grupo PET. Agradeço a meus amigos e colegas do PET e do CIn por toda a ajuda durante o andamento dos projetos da graduação e por toda a diversão proporcionada pelos momentos de descontração. Agradeço a Renato por ter entendido a minha ausência e cansaço ao longo dos últimos quatro meses. Obrigada por ter sempre me incentivado. Por último, gostaria de agradecer a uma pessoa que, infelizmente, não está mais entre nós, mas que me acompanhou do ensino fundamental à faculdade. Solange, obrigada por ter cuidado de meu irmão e nos ter feito companhia ao longo desses nove anos. O cuidado de mãe, que em algumas ocasiões você direcionava a mim, não há dinheiro que compre. 5
6 RESUMO Em reação ao complexo e rigoroso processo de desenvolvimento comercial de software, as metodologias de desenvolvimento ágil têm conquistado uma crescente atenção [3]. Apesar do sucesso reportado, nenhuma das principais metodologias ágeis incorpora explicitamente práticas de usabilidade e de design centrado no usuário [1] [3] [26]. Mesmo a filosofia ágil não impedindo que haja o foco na usabilidade durante o processo de design, há uma lacuna na relação entre metodologias ágeis e usabilidade em desenvolvimento de projetos, sendo essa vertente de pesquisa ainda carente. Nesse contexto, surge este trabalho, que tem como objetivo principal realizar uma pesquisa sobre a união entre usabilidade e metodologias ágeis através de um estudo de caso com uma equipe de desenvolvimento de uma aplicação de e-commerce que utiliza a metodologia ágil Scrum. Espera-se que, através do estudo de caso, seja possível entender, do ponto de vista prático, os problemas enfrentados no processo de design de equipes que adotam metodologias ágeis e, a partir desse estudo, propor um método de trabalho que integre o processo de design ao gerenciamento ágil, refletindo positivamente na usabilidade, e consequente qualidade, do produto desenvolvido por essas equipes. Palavras-chave: Metodologias Ágeis, Usabilidade, Estudo de Caso, Design Centrado no Usuário, Experiência do Usuário, Scrum. 6
7 Índice LISTA DE FIGURAS...9 LISTA DE TABELAS...10 LISTA DE GRÁFICOS INTRODUÇÃO Motivação e Contexto Objetivos Estrutura do Documento REFERENCIAL TEÓRICO Metodologias Ágeis O Manifesto Ágil Scrum Comparação com os Métodos Tradicionais Usabilidade Conceito Teste de Usabilidade Design Centrado no Usuário A Abordagem da Usabilidade no Desenvolvimento Ágil Considerações Finais PROCESSO DE PESQUISA Caracterização da Pesquisa Etapas da Pesquisa ESTUDO DE CASO Objeto de Estudo Visão Geral do Projeto Dinâmica de Trabalho Coleta de Dados Pesquisa Documental Grupo Focal Entrevistas Semi-Estruturadas RESULTADOS OBTIDOS Percepções da Equipe Proposta de Solução
8 5.2.1 Caminho de Trabalho Paralelo Boas Práticas de Trabalho Considerações Finais CONCLUSÕES E TRABALHOS FUTUROS...55 REFERÊNCIAS BIBLIOGRÁFICAS...56 APÊNDICE A...59 APÊNDICE B
9 LISTA DE FIGURAS Figure 1. Processo do Scrum 18 Figure 2. Modelo Cascata 20 Figura 3. Etapas da Pesquisa 28 Figura 4. Ciclo de Desenvolvimento do Projeto 33 Figura 5. Atribuição de Papéis 34 Figura 6. Processo de Desenvolvimento Observado Inicialmente 40 Figura 7. Processo de Desenvolvimento com uma Sprint de Diferença entre Designer e Desenvolvedores 41 Figura 8. Modelo de Trabalho Paralelo 43 Figura 9. Modelo de Trabalho Adaptado 45 Figura 10. Modelo de Trabalho na Transição entre Módulos 47 Figura 11. Template Criação de Persona 49 Figura 12. Exemplo prático de persona para a aplicação Business to Consumer 50 9
10 LISTA DE TABELAS Tabela 1. Melhoria Obtida ao Adotar Práticas Ágeis 16 Tabela 2. Comparação Metodologias Tradicionais e Ágeis 20 Tabela 3. Técnicas de Coleta 30 10
11 LISTA DE GRÁFICOS Gráfico 1. Que metodologias você acompanha mais de perto? 17 11
12 1. INTRODUÇÃO Este capítulo introdutório tem como objetivo apresentar a motivação para a realização da pesquisa relativa a este trabalho de conclusão de curso, assim como elucidar o contexto envolvido e os objetivos do trabalho realizado. O capítulo ainda apresenta uma explicação a cerca da estrutura do presente documento. 1.1 Motivação e Contexto Em reação ao complexo e rigoroso processo de desenvolvimento comercial de software, as metodologias de desenvolvimento ágil têm conquistado uma crescente atenção [3]. Com foco na simplicidade e velocidade [2] e priorizando entregas rápidas e iterativas em detrimento da produção de documentação e de modelos extensos, as técnicas de desenvolvimento ágil de software têm sido aplicadas com grande sucesso por algumas organizações da área de desenvolvimento de software [1]. Apesar do sucesso reportado, nenhuma das principais metodologias de desenvolvimento ágil incorpora explicitamente práticas de usabilidade e de design centrado no usuário [1] [3] [26]. Mesmo a filosofia ágil não impedindo que haja o foco na usabilidade durante o processo de design, há uma lacuna na relação entre metodologias ágeis e usabilidade em desenvolvimento de projetos, sendo essa vertente de pesquisa ainda carente. A usabilidade de um sistema é considerada uma chave crucial para qualidade por estar relacionada diretamente à satisfação ou frustração do usuário com o resultado final de um sistema [4], portanto, suprir essa carência é uma questão fundamental. Segundo [1], em 2003, o índice dos artigos do site da Agile Alliance não possuía categoria para usabilidade e nenhum artigo era listado com a palavra usabilidade no título, assim como o termo não aparecia em nenhum sumário. Não havia nenhum trabalho que abordasse a união das duas disciplinas. Hoje, sete anos depois, o índice do site já conta com a categoria Usability Design que possui 14 artigos. Apesar dessa evolução, a área ainda necessita de amadurecimento para que as técnicas de usabilidade sejam levadas da melhor forma possível para a prática cotidiana dos projetos que utilizam metodologias ágeis. 1.2 Objetivos Usabilidade e experiência do usuário estão emergindo como determinantes críticos do sucesso de uma aplicação web. Designs pobres de interface aumentam os erros de usuários, o que pode ser custoso [5]. Quando o projeto de tal aplicação web é conduzido 12
13 através de uma metodologia ágil, a questão da união entre metodologias ágeis e usabilidade é posta em destaque. Considerando as colocações acima, este trabalho tem como objetivo principal realizar uma pesquisa sobre a união entre usabilidade e metodologias ágeis através de um estudo de caso com uma equipe de desenvolvimento de uma aplicação de e-commerce cuja metodologia de gerenciamento é ágil. Espera-se que, através do estudo de caso, seja possível entender, do ponto de vista prático, os problemas enfrentados no processo de design de equipes que adotam metodologias ágeis e, a partir desse estudo, propor um método de trabalho que integre o processo de design ao gerenciamento ágil, refletindo positivamente na usabilidade, e consequente qualidade, do produto desenvolvido por essas equipes. 1.3 Estrutura do Documento Este documento possui a seguinte estrutura: Capítulo 2 (Referencial Teórico): Apresenta uma breve revisão da literatura sobre os temas envolvidos neste trabalho, abordando a temática das Metodologias Ágeis e os conceitos relacionados à Usabilidade, bem como sobre a união entre esses dois temas. Capítulo 3 (Processo de Pesquisa): Descreve o processo da pesquisa realizada neste trabalho, apresentando suas fases e as técnicas utilizadas. Capítulo 4 (Estudo de Caso): Apresenta um relato detalhado do estudo de caso realizado através de uma visão geral sobre o projeto estudado e o detalhamento dos procedimentos de coleta de dados utilizados. Capítulo 5 (Resultados Obtidos): Aborda a etapa final do estudo de caso conduzido, apresentando as percepções obtidas sobre o processo de desenvolvimento do projeto analisado e propondo um modelo de solução para o desenvolvimento ágil com foco na usabilidade. Capítulo 6 (Conclusões e Trabalhos Futuros): Apresenta o encerramento deste trabalho e algumas perspectivas de trabalhos futuros. 13
14 2. REFERENCIAL TEÓRICO Este capítulo tem por objetivo apresentar uma breve revisão da literatura sobre os temas envolvidos neste trabalho. A seção 2.1 apresenta a temática das Metodologias Ágeis. A seção 2.2 aborda conceitos relacionados à Usabilidade. A seção 2.3 discorre sobre a união entre esses dois temas, Metodologias Ágeis e Usabilidade. Por fim, na seção 2.4, são apresentadas algumas considerações finais a cerca do conteúdo do capítulo. 2.1 Metodologias Ágeis O Manifesto Ágil No final da década de 90, diversas metodologias começaram a obter crescente atenção pública. Cada uma possuía diferentes combinações de ideias já conhecidas, de novas ideias e da adaptação de ideias antigas; mas todas elas enfatizavam uma estreita colaboração entre programadores e as pessoas relacionadas aos negócios, comunicação direta (cara a cara), entregas frequentes que agregassem valor ao negócio, times auto-organizáveis e maneiras de gerenciar código e time de modo que mudanças inevitáveis de requisitos não gerassem uma crise [9]. Nesse período, não havia uma definição formal que englobasse e tratasse as práticas citadas. Em fevereiro de 2001, um grupo de 17 especialistas em software se reuniu na estação de esqui Snowbird, nas montanhas de Utah, Estados Unidos da América, para discutir o crescente domínio do que chamavam à época de lightweight methods, ou métodos leves. Nessa reunião, surgiu o Manifesto for Agile Software Development - também conhecido como Manifesto Ágil, uma declaração dos valores e princípios que fundamentam o processo de desenvolvimento ágil [6] [7]. Na mesma ocasião, o grupo fundou a Agile Software Development Alliance. Em [6], Jim Highsmith e Martin Fowler, ambos autores do Manifesto Ágil, afirmam que, à época da elaboração do Manifesto, estavam descobrindo maneiras melhores de desenvolver software fazendo o que pregavam e ajudando outras pessoas a fazer o mesmo. Frisando o aspecto da descoberta, os autores esclarecem que apesar de os membros da Agile Alliance serem especialistas reconhecidos de desenvolvimento de software, eles não possuíam todas as respostas. Outro ponto ressaltado é o que afirma que os autores do Manifesto realmente praticaram os métodos indicados por eles em seus respectivos trabalhos. O Manifesto Ágil valoriza quatro princípios básicos [6] [8] [35]. São eles: Os Indivíduos e suas interações estão acima de processos e ferramentas. 14
15 O funcionamento do software está acima de documentação completa. A colaboração dos clientes está acima da negociação de contrato. Responder a mudanças está acima de seguir um plano. Cada ponto segue uma formatação; o primeiro segmento indica uma preferência, enquanto o último, apesar de importante, possui menor prioridade. O Manifesto Ágil conta ainda com 12 princípios que são apresentados no trecho a seguir [6]: A prioridade é satisfazer o cliente através de entregas rápidas e contínuas de software com valor (funcionando corretamente). Mudanças nos requisitos são bem-vindas, mesmo que em um estado avançado do desenvolvimento. Entregue software funcionando frequentemente, de preferência em prazos curtos. As pessoas relacionadas aos negócios e os desenvolvedores devem trabalhar juntas diretamente durante o projeto. Construa projetos em torno de indivíduos motivados. Dê às pessoas o ambiente e o suporte que elas precisam e confie nelas para fazer o trabalho. O método de troca de informação mais eficiente e efetivo para um time de desenvolvimento é a conversa direta, cara a cara. Software funcionando é a medida principal de progresso. Processos ágeis promovem ambientes sustentáveis. Os patrocinadores, desenvolvedores e usuários devem manter um ritmo de trabalho constante e sustentável. Atenção contínua na excelência técnica e no bom design aumenta a agilidade. Simplicidade, a arte de maximizar a quantidade de trabalho que não precisou ser feito, é essencial. As melhores arquiteturas, requisitos e design emergem de times autoorganizáveis. Em intervalos regulares, o time deve refletir em como ser mais efetivo e ajustar seu comportamento para obter esse objetivo. 15
16 Com o surgimento do Manifesto Ágil, foi posta em destaque uma proposta de abordagem diferente das metodologias tradicionais, promovendo um foco maior nos indivíduos participantes do projeto, entregas contínuas que agreguem valor e repostas rápidas a mudanças durante o desenvolvimento. Em uma pesquisa realizada em 2008 pela VersionOne com mais de 2300 pessoas de 80 países a respeito da utilização de metodologias ágeis [27], foi pedido aos entrevistados que estimassem o percentual de melhoria que obtiveram ao adotar práticas ágeis. Os resultados obtidos estão na Tabela 1. Tabela 1 - Melhoria Obtida ao Adotar Práticas Ágeis - Fonte [27] A partir dos dados da Tabela 1, tem-se que 89% dos entrevistados afirmaram ter obtido um crescimento na produtividade de 10% ou mais, 82% afirmaram que obtiveram uma aceleração no tempo de mercado de no mínimo 10%, 84% afirmaram ter obtido uma redução de 10% ou mais de defeitos no software e 66% obtiveram redução de custos de pelo menos 10%. É importante destacar que o desenvolvimento ágil de software não é apenas um único processo bem definido, mas sim uma nomenclatura comum a diversos processos e métodos que dividem um conjunto de ideias principais, valores e princípios declarados no Manifesto Ágil [10]. Como exemplos de abordagens ágeis, pode-se citar Scrum, Crystal, Adaptive Software Development, Dynamic Systems Development, FDD (Feature Driven Development) e XP (Extreme Programming) [28]. Na pesquisa realizada pela VersionOne [27], o Scrum foi apontado como a abordagem mais utilizada. Observe o Gráfico 1. 16
17 Gráfico 1 - Que metodologias você acompanha mais de perto? - Fonte [27] Como mostra o Gráfico 1, 49% dos entrevistados afirmaram seguir o Scrum; esse resultado coloca essa abordagem em uma posição de destaque na pesquisa conduzida pelo VersionOne [27]. A seguir, serão abordados os detalhes do Scrum Scrum O Scrum é um framework para desenvolvimento ágil. Nessa abordagem, o projeto é dividido em ciclos denominados sprints que, tipicamente, duram de duas a quatro semanas. Os sprints são a base das iterações do Scrum, ou seja, o trabalho do projeto é dividido em iterações, ou sprints, e em cada uma dessas iterações é executado um conjunto de atividades do projeto [24] [25]. Cada funcionalidade a ser implementada no projeto é mantida em uma lista chamada Product Backlog. No início de cada sprint, é realizada uma reunião chamada Sprint Planning, onde os itens do Product Backlog são priorizados e selecionados pela equipe para serem implementados ao longo dessa iteração que se inicia. Os itens selecionados recebem, então, um valor estimado pela equipe referente ao esforço de trabalho em horas para implementá-los. A esse conjunto de atividades selecionadas dá-se o nome de Sprint Backlog. A cada dia de uma sprint é realizada uma breve reunião conhecida como Daily Meeting que tem como objetivo atualizar toda a equipe sobre o que foi feito no dia anterior, 17
18 alñm de identificar impedimentos que estejam atrapalhando a realizaöäo de alguma atividade. Essa reuniäo Ñ importante para que todos estejam cientes do andamento da sprint. Ao final de uma sprint deve-se ter um incremento que possa ser entregue ao cliente. Mesmo que o càdigo produzido na sprint näo seja liberado imediatamente, Ñ recomendado evitar a necessidade de se revisar o càdigo depois do fim da sprint; para tanto, deve-se codificar, testar e entregar o incremento ao cliente o quanto antes [11]. No final de uma sprint Ñ feita uma retrospectiva sobre o trabalho realizado durante aquele perâodo, onde Ñ feita uma avaliaöäo sobre o que funcionou bem durante a sprint, o que pode ser melhorado e que aöäes devem ser tomadas para tanto. Apàs a retrospectiva, a equipe realiza o planejamento de uma nova sprint, reiniciando o ciclo do Scrum. A Figura 1 mostra um esquemütico do processo descrito. Figura 1 - Processo do Scrum Segundo a Scrum Alliance, organizaöäo sem fins lucrativos que se empenha em fornecer informaöäes sobre esse framework a seus usuürios, existem trãs papñis no Scrum [24]. SÄo eles: Product Owner: Em traduöäo literal, Ñ o dono do produto. Define as caracterâsticas do produto ou os resultados desejados; juntamente com o Scrum Master, Ñ responsüvel por manter uma lista priorizada dos requisitos que devem ser implementados, o Product Backlog. Pode ajustar caracterâsticas ou resultados esperados do produto conforme o necessürio e aceitar ou rejeitar os resultados das sprints. Scrum Master: å um lâder-facilitador que trabalha pràximo ao Product Owner. Seu papel como facilitador Ñ garantir que a equipe esteja funcionando e produzindo totalmente. Deve possibilitar o trabalho cooperativo entre pessoas de diferentes papñis 18
19 e funções, remover os impedimentos que surgirem e proteger a equipe de interferências externas. O Scrum Master também deve assegurar que o processo definido está sendo seguido. Time: O time, como é denominada a equipe de desenvolvimento no Scrum, deve possuir idealmente poucos integrantes. O Scrum Master, ao contrário do que possa parecer, não gerencia o time; o time no Scrum é auto-organizável. Na reunião de planejamento da sprint e durante sua execução, o time se organiza para atender o trabalho compreendido no Sprint Backlog. É estimulada a comunicação verbal entre todos os membros da equipe e entre todas as disciplinas envolvidas. O Scrum vem sendo utilizado para o desenvolvimento de produtos desde o início da década de 90, porém, vale ressaltar que ele não é um processo ou uma técnica para desenvolvimento, mas sim um framework dentro do qual é possível empregar diversos processos e técnicas. Fundamentado na teoria de controle de processos empíricos, o Scrum emprega uma abordagem iterativa e incremental objetivando otimizar a previsão e o controle de riscos [29] Comparação com os Métodos Tradicionais As metodologias tradicionais de desenvolvimento de software, também conhecidas como metodologias pesadas ou orientadas a documentação, surgiram em uma época em que o acesso a computadores era bastante limitado e não havia o apoio de ferramentas modernas de desenvolvimento, o que fazia com que o custo de realizar alterações nos projetos fosse muito grande [12]. No cenário dessa época, os projetos de software eram planejados e documentados por completo antes da implementação. A metodologia tradicional Waterfall ou Cascata segue um fluxo cronológico unidirecional, onde os produtos de uma fase são utilizados na seguinte. A Figura 2 ilustra essa situação. Essa abordagem em si não representa um problema, porém, ela é indicada para os casos em que os requisitos do sistema são bem conhecidos, estáveis e imutáveis, não sendo necessário voltar a fases anteriores por erros na especificação. No entanto, o contexto atual de desenvolvimento de software torna, muitas vezes, esse modelo inviável; o ambiente das organizações é dinâmico, o que não permite requisitos estáticos [12]. As metodologias ágeis têm sido apontadas como uma alternativa às metodologias tradicionais no desenvolvimento de software. Processos de desenvolvimento de software orientados a documentação podem ser, em alguns casos, limitantes para os desenvolvedores. Em projetos em os requisitos são mutáveis, o custo de refazer parte do código não é muito alto, as equipes são pequenas e as datas de entregas do software são curtas, as metodologias 19
20 ágeis são indicadas [12]. Na Tabela 2, adaptada de [13], é possível observar um comparativo entre os métodos tradicionais e ágeis. Figura 2 - Modelo Cascata Tabela 2 - Comparação Metodologias Tradicionais e Ágeis - Fonte: [13] 20
21 Como nas metodologias ágeis a proposta é utilizar pequenos ciclos para implementar um subconjunto das funcionalidades do sistema por vez, praticamente em cada iteração são realizadas todas as fases dos modelos tradicionais. A distância temporal entre cada uma das fases do desenvolvimento do projeto é encurtada, o que permite que alterações nos requisitos do sistema possam ser acomodadas mais facilmente, pois não há a obrigação de se definir tudo no começo do projeto, como ocorre nas metodologias tradicionais. 2.2 Usabilidade Conceito A usabilidade geralmente é considerada como o fator que assegura que determinado produto é fácil de usar, eficiente e agradável para seu usuário. O termo está relacionado à otimização das interações estabelecidas entre as pessoas e produtos interativos, possuindo relação com os métodos utilizados para melhorar a facilidade de uso de um produto ao longo do seu processo de criação [14]. A usabilidade pode ser dividida em seis componentes de qualidade [15]; são eles: Eficácia: Se refere a quanto um sistema é bom em fazer o que se espera dele. Eficiência: Se refere à maneira como um sistema auxilia os usuários na realização de suas tarefas, mas especificamente à rapidez com que o usuário desempenha as atividades necessárias após aprender a utilizar o sistema. Segurança: Relacionado à proteção do usuário de situações perigosas ou indesejáveis. Abrange questões relacionadas à ocorrência de erros por parte do usuário, como, por exemplo, a necessidade de prevenir o usuário de cometer erros graves e de fornecer ao usuário várias formas de recuperação ou retorno no caso de erros. Utilidade: Este ponto se refere à verificação de se um sistema propicia as funcionalidades que possibilitam a seus usuários realizar as tarefas que necessitam ou desejam de forma a satisfazê-los. Facilidade de aprendizado: Também conhecido por Learnability, refere-se à facilidade com que o usuário é capaz de realizar tarefas simples ao utilizar o sistema pela primeira vez, ou seja, verifica o quão fácil é para o usuário aprender a usar o sistema em questão. 21
22 Facilidade de memorização: Também conhecido por Memorability, trata de quão fácil é para o usuário lembrar-se de como utilizar o sistema após passar um período sem utilizá-lo. A usabilidade busca ressaltar a importância de se pensar no usuário e em sua reação ao utilizar um sistema [16]; por essa razão, possui relação direta com a satisfação ou frustração do usuário com o resultado final de um dado produto [4]. Principalmente para aplicações web, a usabilidade é uma questão fundamental; ao se deparar com web sites com falhas na usabilidade, como informações difíceis de serem encontradas, os usuários costumam abandonar o sistema ou apresentar baixa produtividade [14]. Para aplicações corporativas, a busca por uma melhor usabilidade pode permitir redução de custos devido à melhora da produtividade do usuário, uma vez que menos tempo é gasto para aprender e utilizar o sistema, assim como menos erros são provocados por utilização incorreta [1]. Nos casos das aplicações de e-commerce, o investimento na usabilidade pode ser fundamental para que os usuários façam negócio ao invés de abandonar o site. Por essas razões, o foco na usabilidade durante o processo de desenvolvimento de um sistema é fundamental Teste de Usabilidade O teste de usabilidade é um processo que busca avaliar como está um produto em relação a determinados critérios de usabilidade, fazendo uso de técnicas específicas e da participação de uma amostra de pessoas que representem o grupo de usuários do produto em questão. De acordo com o que é citado em [16], os testes de usabilidade são mais eficientes quando conduzidos como parte constituinte do processo de desenvolvimento de um produto, uma vez que essa abordagem permite maiores chances de se descobrir falhas de usabilidade e de corrigi-las ao longo dos ciclos de desenvolvimento. Nos testes de usabilidade é pedido aos usuários que realizem tarefas pré-definidas enquanto os observadores tomam nota das dificuldades encontradas ao utilizar o produto e do sucesso, ou insucesso, do usuário em realizar essas atividades. É importante lembrar que, durante esse processo, o observador não deve interferir no comportamento dos usuários, sob o risco de invalidar os resultados dos testes. O observador deve permitir que o usuário resolva sozinho qualquer problema que apareça durante a realização do teste, procurando que sua presença afete o mínimo possível a interação entre produto e usuário. Após a realização de um teste de usabilidade, os resultados obtidos devem ser cuidadosamente analisados. Soluções para os problemas encontrados referentes aos critérios de usabilidade devem ser propostas e estudadas para que o produto seja modificado para 22
23 atender essas questäes. Quando se julgar que o produto jü näo mais possui as falhas de usabilidade encontradas no teste, um novo teste deve ser feito para avaliar se realmente as soluöäes aplicadas surtiram o efeito desejado Design Centrado no Usuário Segundo [10], o design centrado no usuürio ou UCD (User Centered Design) descreve um conjunto de abordagens e atitudes que buscam desenvolver sistemas usüveis. A filosofia do UCD Ñ manter o foco no entendimento do usuürio como forma de obter informaöäes que permitam trabalhar o design, uma vez que o objetivo de um sistema Ñ servir seu usuürio. O UCD possui quatro princâpios fundamentais [10]. SÄo eles: Foco contínuo no usuário desde o princípio: å imprescindâvel entender o contexto onde estü inserido o produto, quem säo seus competidores e usuürios. å preciso estudar a fundo seu usuürio, suas caracterâsticas e comportamentos, alñm de observü-los executando suas tarefas. Para que o usuürio entenda o produto em questäo, Ñ preciso antes que a equipe envolvida no projeto entenda o usuürio; por isso, ele deve ser envolvido no processo design. Avaliações empíricas: O design deve ser avaliado desde o princâpio, atravñs de um processo que deve incluir avaliaöäes empâricas nas quais o usuürio realize tarefas reais utilizando protàtipos; as reaöäes e desempenho do usuürio devem ser observados e analisados. O processo de design e desenvolvimento do produto deve ser guiado pelos resultados dessas avaliaöäes. Design iterativo: Quando problemas de design forem detectados atravñs de testes com o usuürio, eles devem ser solucionados e, em seguida, novos testes devem ser conduzidos para avaliar a soluöäo. Essa abordagem configura a iteratividade existente no processo de design e desenvolvimento de um projeto guiado pelo UCD; o projeto passa por ciclos de design - teste - avaliaöäo - redesign repetidamente, quantas vezes se fizerem necessürias. Design integrado: Todos os aspectos da usabilidade do sistema devem evoluir em paralelo. Os esboöos da interface e a elaboraöäo de manuais devem ser feitos no inâcio do projeto; isto permite que a abordagem global do design detalhado da interface seja desenvolvido e testado em um estügio inicial. 23
24 Com a proposta de abordagem de desenvolvimento do UCD, é possível manter o foco no usuário e, consequentemente, investir na usabilidade do produto ao longo de todo o processo de desenvolvimento [30]. Ao contrário dos projetos onde as avaliações de usabilidade são feitas em períodos muitos espaçados ou apenas na etapa final de desenvolvimento, no UCD o custo das modificações no design é menor, pois as avaliações são feitas continuamente ao longo do projeto, o que diminui as chances de grandes modificações ocasionadas por defeitos no design. 2.3 A Abordagem da Usabilidade no Desenvolvimento Ágil A engenharia de software é definida como uma disciplina que lida com desenvolvimento, operação e manutenção de software. Já a interação humano-computador, ou IHC, é uma disciplina que trabalha com projeto, avaliação e implementação das interações entre os usuários e sistemas de computadores, preocupando-se com o impacto que o software causa no usuário e no seu contexto social [31]. A engenharia de software, em geral, considera a usabilidade como uma questão da interface do sistema, lidando com esse aspecto apenas no final do processo de desenvolvimento, quando partes do software consideradas mais importantes já estão prontas. Em contrapartida, a IHC procura estudar cuidadosamente o usuário e suas tarefas, a fim de obter um sistema que supra da melhor forma os objetivos e necessidades do usuário. Além disso, a IHC considera que o estudo das interações com o sistema deve fazer parte do processo de construção inicial do projeto. Apesar de possuírem princípios diferentes, há uma necessidade de se promover uma colaboração entre os trabalhos desenvolvimentos por essas duas disciplinas, uma vez que há uma sobreposição em seus objetos de estudo [31]. A princípio, as comunidades de engenharia de software e de interação humanocomputador não demonstravam muito interesse na questão da abordagem da usabilidade, ou do design centrado no usuário, em projetos ágeis [10]. Segundo [1], em 2003, o índice dos artigos do site da Agile Alliance não possuía categoria para usabilidade e nenhum artigo era listado com a palavra usabilidade no título, assim como o termo não aparecia em nenhum sumário; consequentemente, trabalhos que abordassem a união das duas disciplinas não eram encontrados. No entanto, hoje, após sete anos, o índice do site já possui a categoria Usability Design, que soma 14 artigos. Esse fato é um indicativo do aumento gradativo do interesse no assunto. Infelizmente, a maioria dos artigos que tratam da temática usabilidade e desenvolvimento ágil foca em apenas um processo ágil, o Extreme Programming, e em como ele é utilizado em conjunto com a usabilidade em um projeto específico [10]. Apesar de existir o interesse tanto do mercado como da academia em realizar pesquisas nessa área, o fato da 24