11 jul 2016

Metodologias: Parte 1 – Scrum

Com este post gostaria de apresentar os principais pontos sobre duas metodologias bastante utilizadas no seguimento de desenvolvimento de software, ele será dividido em duas partes, são elas: Scrum e XP(Extreme Programming).

Com o amplo desenvolvimento no setor de Internet, juntamente com a alta demanda no desenvolvimento de aplicações, torna-se cada vez mais necessário o desenvolvimento de serviços rápidos, seguros e confiáveis.

Outra característica é que as aplicações tendem a se tornar cada vez mais complexas, pois a diversidade de negócios, e suas características específicas devem ser consideradas no desenvolvimento dessas aplicações.

Sendo assim, o uso de metodologias especificas e o devido planejamento é imprescindível no cenário atual, uma vez que o desenvolvimento dessas aplicações está se tornando cada vez mais robusto e complexo, necessitando de projetos bem organizados e documentados. Atualmente, há uma variedade de metodologias e recursos destinados a otimização e qualidade de aplicações, seja para seu planejamento e/ou para seu desenvolvimento, cabendo a equipe analisá-las e verificar qual atenderia melhor o projeto em questão.

Antes de iniciar o contexto, e necessário entender que metodologias ágeis assim como, o Scrum e o XP, que são as que estão sendo analisadas neste post, possuem um problema de interpretação do conceito ágil. O conceito de ágil não é ser rápido, e sim ser adaptativo, é a capacidade de mudar, de acompanhar as mudanças de ambiente, e de vários fatores que podem interferir no projeto, como os requisitos do cliente, leis, equipe, por isso, todos os envolvidos no projeto devem estar preparados para este tipo de mudança, e assim, sempre poder entregar ao cliente o que realmente seja útil e funcional em seu software.

CTA-ebook-transformação-digital

A seguir irei apresentar os principais pontos sobre a metodologia Scrum.

Scrum

A metodologia Scrum baseia-se em fornecer de uma forma flexível recursos e métodos para o gerenciamento de atividades, muitas vezes consideradas complexas e também facilitando a adaptação do projeto caso mudanças inevitáveis sejam necessárias. Nesta metodologia tem-se 3 principais pilares onde o Scrum se baseia:

  • Transparência;
  • Inspeção;
  • Adaptação.
  1. Quando fala-se de transparência dentro do Scrum, se refere ao compromisso entre todos os integrantes da equipe para com o projeto, para assim, todos saberem suas respectivas responsabilidades e posições dentro do projeto, provendo uma confiança plena para com todos da equipe, e assim, a colaboração mutua entre todos, ao invés de trabalhos individualistas.
  2. O segundo ponto principal é a inspeção, pois com ela obtém-se o controle do andamento do projeto, efetuando uma verificação contínua da evolução do projeto, para assim ter certeza de que tudo caminha no prazo estipulado. Com isso, seria possível diagnosticar alguns desvios em seu andamento, e sua devida correção dos últimos atos sem prejudicar o andamento como um todo.
  3. E, por fim, tem-se o terceiro pilar dentro da metodologia Scrum, o conceito da adaptação. Com ela, debate-se diante de um dos principais objetivos das metodologias ágeis, a flexibilidade diante de mudanças. Um projeto de software sempre esta sujeito a possíveis alterações, sejam elas por questões do cliente, diretrizes governamentais, sempre pode haver desvios pré-estabelecidos. Desta forma, a questão da adaptação e ajuste quando necessário,  serão sempre utilizados, e a equipe deve estar devidamente preparada para tal, com isso amenizando problemas indesejáveis em um futuro da aplicação.

Nesta metodologia os projetos são divididos em ciclos regulares, os chamados Sprints que geralmente possuem uma duração regular, seja ela entre 2 a 4 semanas, onde contém o que será desenvolvido dentro deste período já estipulado, cada Sprint poderá ser dividido em partes entre toda a equipe, afim de atingir o objetivo final deste ciclo. Antes do Sprint tem-se a elaboração de reuniões periódicas, a fim de elaborar o que será executado dentro de um Sprint e, consequentemente, o prazo necessário para tal realização.

Juntamente para complementar o andamento de cada Sprint, são realizadas reuniões diárias, geralmente no início do dia, afim de verificar o andamento do projeto, verificando se houve desvios e corrigi-los quando necessário, para assim, manter seu andamento dentro do prazo estipulado.

Dentro do Scrum também tem-se alguns papéis fundamentais, que consistem em uma ou mais equipes Scrum, nelas há três papéis, os chamados:

  • Product Owner;
  • Scrum Master;
  • Time de Desenvolvimento.

Papeis-Scrum

O Product Owner possui a responsabilidade pela ideia do projeto como um todo, possui o poder de liderar o produto, na verdade ele é o requisitante, o cliente, que necessita da solução final de tal projeto. Ele é responsável por definir quais as funcionalidades que serão necessárias, e sua respectiva ordem de construção, possui um espaço reservado dentro da equipe, podendo estar presente o tempo todo durante o desenvolvimento do produto, pois é um membro da equipe. O Product Owner estando sempre presente, influencia ativamente no desenvolvimento do projeto, logo quando se tem alguma dúvida ele pode prontamente esclarece-la tão logo sejam feitas.

O Scrum Master é o responsável por garantir que o processo seja cumprido, deve garantir que tanto o Product Owner como o Time de Desenvolvimento realizem o Scrum de forma correta, por isso, ele deve conhecer muito bem a metodologia. Ele deve identificar se o andamento do projeto esta sofrendo algum desvio, e estar sempre presente para resolver quaisquer impedimentos que possam interferir na produtividade da equipe, seja ela interna ou externa. Uma questão que muitas empresas acabam confundindo é que o Scrum Master não é um gerente, não possui nenhuma autoridade sobre a equipe, ele deve se portar como um líder servidor, cabendo a ele a tarefa de servir e auxiliar a equipe como um todo.

O Time de Desenvolvimento é composto por uma equipe multidisciplinar, podendo abranger pessoas das mais diversas áreas de atuação, o Time é uma equipe auto-gerenciável, o que é interessante, pois quando um membro da equipe, por exemplo, o indivíduo que é responsável pelo design do projeto, tenha terminado sua tarefa, ele poderá auxiliar nas tarefas restantes, mesmo que não seja sua área de atuação, assim adquirindo novos conhecimento. Em uma equipe que esta junta a bastante tempo, pode ocorrer o nivelamento de conhecimento entre seus integrantes. O Time é o único responsável por definir como o projeto vai ser desenvolvido e qual o período do projeto, ele define quando cada etapa será entregue, se houver alguma nova funcionalidade a ser implementada, ele é quem define o seu tempo de desenvolvimento e entrega, e não o Product Owner como muitos pensam.

Scrum-Process

Product Backlog
Dentro do Scrum tem-se duas formas onde registra-se a lista de trabalhos a ser executada, inicialmente há, o Product Backlog, que consiste em reunir todas as informações referentes ao projeto total, nela estão todas as funcionalidades desejadas, sendo a lista mestre do projeto, ela é gerada a partir das informações fornecidas pelo Product Owner juntamente com as partes interessadas no produto. A sequência do Product Backlog é definida pelo próprio Product Owner, e é mantida e atualizada pelo líder da equipe. Esta lista por conter todas as funcionalidade do projeto, está em constante evolução, pois podem surgir novas funcionalidades, novas regras, e, isso, requer a sua atualização. Na priorização das atividades, é importante que o Product Owner responsável por tal função, saiba mensurar o custo de cada funcionalidade, para que a priorização seja feita de forma adequada.

Sprint Backlog
No Sprint Backlog ocorre a ampliação de cada item do Produt Backlog, fornecendo uma ou mais tarefas em sua respectiva prioridade, e distribuídas para o Time para que sejam executadas, cabendo ao líder da equipe, o Scrum Master, manter a lista atualizada e verificar o andamento do Sprint garantindo sua constante evolução, e sempre a devida especificação da tarefa, como por exemplo, o seu status (Desenvolvimento, teste, completo), podendo ser utilizado para exibir o estado atual da tarefa o Kanban, o time pode quando necessário adicionar ou remover tarefas durante as interações.

Sprint Planning
Outro ponto que não pode-se deixar de lado é o Sprint Planning, ele consiste em efetuar o planejamento para selecionar o que tem-se de mais importante dentro do Product Backlog, para assim definir o próximo Sprint a ser produzido. Para este planejamento é necessário o Product Owner, Scrum Master e o Time de desenvolvimento, eles devem estabelecer um acordo e definir qual o objetivo do Sprint.

Daily Scrum
Para finalizar o estudo do Scrum, tem-se o Daily Scrum, umas das etapas mais rápidas dentro da metodologia, mas que deve ser executada todos os dias. Ela se baseia simplesmente em reuniões diárias com duração de no máximo 15 minutos, afim de criar um entendimento do que foi executado no dia anterior e o que será executado no dia atual, e também se há algum impedimento que possa dificultar a evolução do Time.

Até o momento, mostrou-se os pontos principais do Scrum, que cuida da parte de gerenciamento do projeto, no próximo post será abordado um outro aspecto de metodologias, será descrita uma metodologia de desenvolvimento, o Extreme Programming (XP), uma das mais utilizadas neste setor.

Leave a Comment