Artigos Engenharia de Software Gerenciamento de Projetos Web utilizando Scrum
Projetos Web necessitam ser gerenciados com flexibilidade em relação a mudanças, visando a entrega rápida de um produto de qualidade. Metodologias ágeis podem auxiliar no desenvolvimento de projetos em que não é possível definir todas as especificações do produto logo nas fases iniciais do planejamento e em casos onde a equipe possui tempo e recursos limitados. Ao utilizar o Scrum, a equipe passa a gerenciar o tempo e os recursos disponíveis de forma produtiva, sendo que o sucesso na utilização do framework é parte de um trabalho de estudo, análise e adaptação a realidade do negócio, devendo-se analisar as possibilidades que envolvem a utilização do modelo de trabalho no desenvolvimento de projetos Web.
Aplicações Web vem ganhando espaço no mercado por se caracterizarem como softwares multiplataformas que evoluem conforme necessário para se adequar as tendências tecnológicas. O desenvolvimento dessas aplicações é geralmente realizado por equipes multidisciplinares, fazendo uso de padrões, protocolos e diferentes tecnologias trabalhando em conjunto, tornando importante o conhecimento acerca das características e tendências que aplicações Web devem seguir, e dos conceitos que fundamentam a metodologia a ser utilizada para o gerenciamento dos processos, permitindo a análise prévia das possibilidades e adversidades que envolvem a adoção do modelo de trabalho no desenvolvimento do projeto.
Um desafio para o gerenciamento de projetos Web é o tratamento das mudanças que venham a ocorrer durante o processo de desenvolvimento, aplicando as soluções de maneira incremental, procurando fazer com que as estimativas de tempo e custo não sofram alterações, de modo a garantir a satisfação do cliente.
Este artigo apresenta propostas para o gerenciamento ágil de projetos Web, destacando os fundamentos que compõe o Scrum, um framework que pode ser adaptado ao negócio e utilizado em conjunto com diversas técnicas e ferramentas visando sempre a entrega ágil do produto em funcionamento. Além disso, são apresentadas possibilidades relacionadas a adoção do modelo ágil Scrum no gerenciamento de projetos Web.
A criação das tecnologias computacionais contribuiu para automatizar o processamento e a disseminação de informações.
Com a disseminação das tecnologias portáteis, surgiram novas plataformas de hardware e sistemas operacionais, resultando na necessidade de aplicações multiplataformas. Neste contexto destaca-se o uso de aplicações Web, por permitirem flexibilidade quanto ao uso de diversas arquiteturas de hardware e software.
Com o aumento dos usuários de dispositivos móveis, aplicações com designer responsivo tornaram-se comuns no cenário Web. Diante desta necessidade emergente, linguagens de programação Web passaram a ser reestruturadas, objetivando aprimorar o processo de desenvolvimento além de melhorar o desempenho das aplicações e a experiência para usuários.
Por este motivo aplicações Web necessitam de atualizações frequentes para acompanhar as mudanças tecnológicas e seguir os padrões de desenvolvimento Web que influenciam diretamente em sua qualidade.
Partindo desse princípio, o gerenciamento de projetos Web deve compreender a possibilidade de que a qualquer momento pode surgir a necessidade de se realizar alterações no projeto. É importante que gerentes de projetos Web utilizem métodos de gerenciamento que preparem a equipe para responder as mudanças, garantindo a entrega rápida de um produto de qualidade. Metodologias ágeis proporcionam o desenvolvimento de produtos com flexibilidade em relação a mudanças, tornando-se uma opção ao gerenciamento de projetos Web.
Projetos para criação de aplicações Web englobam atividades técnicas e não técnicas, e embora seu desenvolvimento seja visto por muitos desenvolvedores como uma atividade que não necessita de um projeto formal, este pensamento aplica-se somente a aplicações "relativamente simples". Em casos de aplicações extremamente complexas, em que seu sucesso influencia diretamente no negócio, o projeto deve ser tratado como um fator de sucesso para a criação do produto.
Neste contexto é importante enfatizar a necessidade de um modelo de gerenciamento eficaz para guiar o desenvolvimento de um projeto, visando melhor aproveitamento de tempo e recursos disponíveis. Há diversos modelos para auxiliar o gerenciamento de projetos de softwares, classificados como metodologias tradicionais e ágeis.
Metodologias tradicionais possuem processos rígidos baseados em um conjunto de atividades predefinidas, documentação detalhada, e métodos que buscam prever antecipadamente problemas, soluções e todos os requisitos necessários a construção do produto.
Esses métodos possuem pouca flexibilidade em relação a mudanças durante o desenvolvimento do projeto, assim, em metodologias tradicionais, alterações durante o desenvolvimento do projeto geram um aumento significativo no custo e no tempo de entrega previsto inicialmente. Entre as metodologias tradicionais existentes pode-se destacar: CMMI (Capability Maturity Model Integration), TSP (Team Software Process), PSP (Personal Software Process), SPICE (Software Process Improvement and Capability Etermination).
Já as metodologias ágeis possuem princípios que visam o gerenciamento de projetos de forma que a equipe consiga responder rapidamente às mudanças, incentivando a comunicação contínua entre os membros da equipe, da qual o cliente torna-se integrante. Tendo como foco principal a entrega rápida de software de qualidade. O Scrum segue consistentemente os princípios do Manifesto Ágil, tornando-se uma opção ao gerenciamento ágil de projetos Web.
Cabe ao responsável por implantar um modelo ágil de trabalho em uma empresa, analisar o ambiente e realizar ajustes se necessário, respeitando a ideia de que dificilmente será possível transformar completamente sua estrutura organizacional. Assim, a metodologia a ser implantada deve ser flexível, para que possa ser adaptada ao negócio visando facilitar o processo de adequação de todos os envolvidos.
O desenvolvimento ágil proporciona benefícios, podendo ser utilizado como base para o gerenciamento de qualquer projeto de software. A implantação do Scrum em uma organização deve buscar a adaptação do framework a realidade da empresa e das pessoas envolvidos, sem deixar de seguir os princípios ágeis em que a metodologia é fundamentada.
Schwaber e Sutherland (2013), criadores do Scrum, afirmam que este vem sendo utilizado para gerenciar o desenvolvimento de projetos desde 1990.
Scrum é um framework que pode ser utilizado em conjunto com diversas técnicas e processos, auxiliando no tratamento de problemas complexos geralmente encontrados durante o desenvolvimento de um projeto, de modo que as soluções sejam implementadas de forma incremental.
O Scrum tem comprovado ser uma excelente metodologia para o gerenciamento de projetos, sendo indicado, especialmente para situações em que os prazos de entrega são curtos e requisitos mudam com frequência.
Para obter um resultado satisfatório no desenvolvimento de um projeto, é de extrema importância que todos os envolvidos compreendam os processos a serem executados. O Scrum possui reuniões, artefatos e papéis definidos de forma que cada ator tem suas responsabilidades pré-estabelecidas.
Veja a seguir as definições dos papéis e artefatos dentro do Scrum:
Scrum máster: aquele que possui maior conhecimento a respeito do framework, ele é responsável por garantir que todos os envolvidos compreendam como o Scrum funciona, garantindo que cada agente entenda e cumpra seu papel de forma correta.
Product Owner: papel que deve ser exercido por apenas um representante para facilitar a comunicação com a equipe, este contribuirá definindo os requisitos principais para formar o Product Backlog e fazendo com que a equipe de desenvolvimento entenda os itens especificados.
Product Backlog: uma lista de necessidades funcionais do produto a serem desenvolvidas, classificadas de acordo com sua importância.O Product Backlog evolui com o produto, mudando de acordo com as necessidades dos usuários e do ambiente onde o produto será implantado.
A partir do Product Backlog o time de desenvolvimento, formado pelos programadores, seleciona itens a serem desenvolvidos em uma Sprint (um período de tempo que tem duração entre duas a quatro semanas), criando-se assim a Sprint Backlog, que é uma lista refinada de requisitos para atender aos itens selecionados.
Durante uma Sprint, o time de desenvolvimento realiza reuniões diárias de no máximo 15 minutos, para analisar o desempenho desde a última reunião, planejar as atividades a serem realizadas nas próximas 24 horas e verificar se o trabalho realizado está buscando satisfazer os objetivos da Sprint.
Ao final de cada Sprint, todos os requisitos especificados na Sprint Backlog devem estar atendidos, em uma nova reunião com todos os envolvidos no projeto discutem-se os requisitos trabalhados e analisa-se se o conteúdo desenvolvido está em conformidade com as necessidades reais do produto. Além disso, um novo incremento funcional para o produto deve ser criado, ou seja, é entregue uma versão funcional do produto.
O Time de Desenvolvimento é auto organizável e deve analisar e definir qual a melhor forma de realizar seu trabalho, podendo ser auxiliado pelo Scrum Master. Assim que uma Sprint é finalizada a equipe seleciona novos itens do Product Backlog, para iniciar o desenvolvimento da próxima parte do produto, sendo o Time de Desenvolvimento o responsável por definir a quantidade de itens que podem ser atendidas em cada Sprint. Observe na Figura 1 a representação do ciclo de desenvolvimento Scrum.
Figura 1. Ciclo Scrum
A aplicação do framework Scrum no gerenciamento de projetos Web permite o tratamento de problemas de forma iterativa, onde toda a equipe busca encontrar soluções que possam agregar valor ao produto e ao mesmo tempo auxiliar o Time de Desenvolvimento no processo de construção e disponibilização do software.
Scrum aplicado ao Gerenciamento de Projetos Web
Processos para o desenvolvimento de aplicações Web precisam ser altamente iterativos e flexíveis, pois o cenário das aplicações Web é caracterizado por mudanças e curtos períodos. Aplicações Web diferenciam-se de softwares convencionais, que evoluem através de versões planejas, por evoluírem de forma contínua em períodos curtos.
Processos para o desenvolvimento de aplicações Web devem prever que os prazos de implantação serão pequenos, devendo-se dar ênfase na qualidade visual do produto por ser um importante fator de usabilidade.
Tratando-se de aplicações Web, dificilmente consegue-se identificar definitivamente todos os requisitos necessários antes que se inicie o desenvolvimento do projeto.
A obtenção de sucesso na construção de uma aplicação Web pode ser prejudicada por fatores como a evolução tecnológica, o mal planejamento na definição de prazos e custos, e equipes despreparadas para lidar com a realidade do negócio.
Uma abordagem ágil considera mudanças nos requisitos uma vantagem, onde todos os processos visam a adaptação de alterações durante todo o ciclo de vida do projeto, de forma a manter as estimativas de custo e tempo.
A necessidade de mudança nos requisitos é previsível desde a fase inicial do projeto, de modo que o Time de desenvolvimento estará preparado para realizar alterações durante todo o processo de construção do produto. É importante que os integrantes do time possuam percepção sobre as tecnologias utilizadas no desenvolvimento do projeto. Este modelo de trabalho faz com que todos os membros da equipe estejam aptos a buscar e implementar soluções em todas as camadas da aplicação.
O Time trabalha em conjunto de forma que todos os integrantes participem de todas as etapas de construção do produto, tornando o trabalho uma fonte de aprendizagem e enriquecimento do conhecimento para os desenvolvedores. Além disso, devem ser multidisciplinares e com poucos integrantes, capazes de operar em todas as camadas da aplicação. De acordo com Schwaber e Sutherland (2013), o ideal é que a equipe contenha entre três a nove integrantes.
Times de desenvolvimento menores podem encontrar restrições de habilidades durante a Sprint e em equipes maiores o gerenciamento torna-se complexo, além de dificultar a comunicação, como representado na Figura 2.
Figura 2. Comunicação entre integrantes da equipe
James (2012) sugere que Times de Desenvolvimento com número elevado de integrantes sejam desmembrados em equipes multidisciplinares menores, focadas no cliente, ou seja, que buscam atender as especificações do produto com o auxílio do Product Owner.
Como demonstrado na Figura 3, para que esta divisão funcione as equipes dever estar aptas a operar em todas as camadas da aplicação e neste modo de trabalho cada equipe deverá trabalhar simultaneamente no atendimento a um conjunto de diferentes itens do Product Backlog.
Figura 3. Divisão do Time de Desenvolvimento em grupos.
O sucesso de uma aplicação Web está ligado a fatores como a forma como o conteúdo é apresentado ao usuário, devendo proporcionar uma navegação intuitiva, facilitando o uso e a compreensão das funcionalidades disponíveis.
Em uma equipe de desenvolvimento onde todos os membros possuem conhecimento total sobre o projeto, a realização de testes e a formulação de soluções para problemas encontrados é facilitada.
Os testes de aplicações Web devem ser realizados de acordo com sua evolução, por uma quantidade considerável de usuários que não necessitam estar diretamente envolvidos no projeto, as interações devem ser monitoradas para avaliar o desempenho do produto em relação a usabilidade, compatibilidade, confiabilidade e desempenho.
Para que a adoção do Scrum resulte em sucesso é importante a comunicação entre os integrantes da equipe, visando analisar o trabalho realizado e as metas futuras, para facilitar a identificação e realização de correções.
No Scrum a comunicação entre os membros da equipe deve ser frequente, o que auxilia no desenvolvimento de projetos Web, onde deve-se buscar formas de aprimorar o produto em termos de funcionalidades e usabilidade. A comunicação eficaz da equipe faz com que todos possam estar cientes do que é necessário para construir a aplicação e o que será feito para alcançar o mesmo.
Aplicações Web são diretamente influenciadas pela qualidade visual e usabilidade, que variam de acordo com os usuários e os dispositivos utilizados para acesso à aplicação. Ao término de cada Sprint é criada uma versão executável do produto, assim, é possível que testes sejam realizados ainda nas fazes inicias de desenvolvimento da aplicação. A boa comunicação garante que todos os interessados possam expor seu ponto de vista e assim colaborar para construção do produto.
Geralmente os usuários pedem mais que pode ser alcançado dentro dos limites de tempo e orçamento do projeto ou podem haver pedidos conflitantes. Sendo indicado que os interessados que ordenem seus requisitos por prioridade, para que possam ser discutidos em termos de custos e riscos, utilizando uma abordagem iterativa onde requisitos são eliminados, combinados ou modificados, com o objetivo de que cada parte obtenha certo nível de satisfação.
Desse modo é possível que a equipe realize correções à medida que se faça necessário, maximizando a aceitação do produto no mercado e minimizando problemas de execução e usabilidade após a entrega do produto final.
Para que equipes obtenham sucesso no desenvolvimento de projetos para construção de aplicações Web, é necessário ter-se o conhecimento de como desenvolver um software robusto, que seja capaz de suprir as necessidades do ambiente e dos usuários, respondendo com agilidade as diversas mudanças que virão a ocorrer sem aviso prévio, visando a qualidade e a rapidez na entrega do produto em funcionamento.
O uso de metodologias ágeis no desenvolvimento de projetos Web garante o gerenciamento do tempo, com ênfase no atendimento aos requisitos, visando a satisfação do cliente e dos demais envolvidos, além de propiciar o tratamento de mudanças durante todo o ciclo de vida do projeto.
As necessidades dos usuários em relação a funcionalidades, usabilidade e desempenho, dificilmente serão totalmente sanadas, devido ao surgimento de novas tendências e tecnologias.
Estas aplicações são usadas de diversas maneiras no comércio de bens e serviços, na gestão empresarial, no entretenimento, na comunicação, entre outros, e devem evoluir junto aos dispositivos e ferramentas utilizadas para acesso, isto torna o desenvolvimento um trabalho cada vez mais complexo, sendo necessário o uso de métodos de gerenciamento tolerantes a mudanças que possibilitem o desenvolvimento rápido o suficiente para acompanhar a demanda do mercado.
Observou-se nesse artigo a necessidade de estudos relativos a aplicação de diferentes práticas ágeis no desenvolvimento de aplicações Web, pois, um modelo de gerenciamento pode não ser aplicável a todas as equipes e ambientes, fazendo-se necessário a análise de diferentes técnicas para criar uma solução que possa garantir o sucesso na realização do trabalho.
Percebeu-se que para o gerenciamento de projetos, especialmente os voltados para criação de aplicações Web, não há um manual passo a passo. O melhor a se fazer é analisar metodologias e retirar o melhor de cada uma para assim produzir um modelo de trabalho que seja capaz de suprir as necessidades do projeto e garantir a satisfação de todos os envolvidos.
James, M. Reference Scrum card, 2012
Marcote, E. Responsive Web design, 2010
Pressman, R. Engenharia de Software: uma abordagem profissional. Tradução de Ariovaldo Griesi e Mario Moro Fecchio. Revisão técnica Reginaldo Arakaki, Julio Arakaki e Renato Manzan de Andrade. 7. ed. Porto Alegre: AMGH Editora Ltda, 2011.
Schwaber, k.; Sutherland, J. Guia do Scrum: um guia definitivo para o Scrum: as regras do jogo. Scrum.org: 2013.
ZEMEL, T.; Web Designer responsivo: Páginas adaptáveis para todos os dispositivos. São Paulo: Casa do Código, 2012.