Mergulhando nos princípios ágeis

Apresentação

Olá pessoal, tudo bem? Me chamo Lucas Amaral Oliveira da Silva. Minha formação é em Tecnologia em Redes de Computadores (Cruzeiro do Sul) e pós graduado em Gestão Ágil de Projetos (uniciv).

Hoje, estarei falando um pouco sobre os princípios ágeis, caso tenham alguma sugestão só deixar nos comentários. Então... chega de enrolação e vamos começar!

Mergulhando nos princípios ágeis

Como surgiu?

A tecnologia é parte do nosso dia a dia e para interagirmos com ela, faz-se necessário o uso de diversos dispositivos. Como exemplo, podemos citar os notebooks, smartphones e tablets. E para cada um destes dispositivos temos pelo menos um software em funcionamento. E como cada um de nós tem uma necessidade, existe uma imensa oportunidade na produção de softwares para atender esta demanda. Talvez esta seja a indústria que mais cresceu nos últimos anos.

A produção de um software não é tão simples quanto parecer ser. E nem tão pouco é um trabalho repetitivo, como o de um operário em uma indústria. A produção de software está muito mais próxima da criação de uma obra criativa (como um quadro ou música), do que o trabalho fabril executado em fábricas.

Visando esta complexidade, surgiram vários modelos para o desenvolvimento de software, dentre eles:

• Modelo cascata (waterfall) • Modelo iterativo e incremental • Modelo espiral • Processo unificado (RUP)

Os modelos acima citados têm suas características e premissas, mas muitas das vezes eles não atendem a velocidade que a indústria de software requisita. Por exemplo, o modelo em cascata prevê que todos os requisitos estejam definidos e escritos para daí começar a etapa seguinte, a de elaboração do projeto. Em sequência começa a implementação e codificação dos requisitos. Após esta etapa, começam os testes e em sequência a implantação do software. Com isto, chegamos ao fim do processo. Uma nova rodada destes passos deve começar, repetindo todas as etapas.

O que é o Modelo cascata (waterfall)?

Modelo em Castata

O Método Cascata (modelo Waterfall), conhecido também como método tradicional, é uma forma de gerenciamento de projetos que utiliza fases sequenciais, longo planejamento, projetos com custos, escopo e cronograma fixos.

Utilizado desde a Segunda Guerra Mundial, esse método de gerenciamento vai abranger fases básicas que são: planejamento, execução, validação e entrega.

Por ser realizado em etapas sequenciais, o método cascata prevê que o projeto só avance a partir do momento que uma etapa se finde, sendo que cada uma delas só poderá seguir a partir da aprovação dos stakeholders.

No Método Cascata, projetos são executados a partir do acordo total dos desenvolvedores e clientes, que resolvem, logo no início, o que será entregue ao longo do ciclo de vida de um projeto.

Vantagens do modelo cascata

O método cascata ou Waterfall é bastante indicado para projetos que têm requisitos bem definidos, no qual não são esperadas alterações. Além disso, também é possível usar o modelo cascata quando é preciso fazer adaptações ou aperfeiçoamentos em um produto ou serviço que já existe.

Por isso, no método cascata, um software também pode ser desenvolvido, especialmente quando são necessários passos bem previsíveis, quase como um roteiro para ser seguido, com uma abordagem sequencial e sistemática.

Desvantagens do modelo cascata

Por esse formato mais engessado, o método cascata pode não ser tão interessante para projetos muito longos e complexos, que podem sofrer impactos em prazos, custos e qualidade.

O que é Modelo iterativo-incremental?

Modelo Iterativo-Incremental

O processo de desenvolvimento iterativo e incremental é uma tendência que vem dominando o mercado de criação de softwares. Isso provavelmente se explica pela agilidade e flexibilidade que a metodologia traz para times e clientes.

Embora o modelo tradicional em cascata ofereça uma série de vantagens e atenda a diversos cenários, ele apresenta alguns pontos fracos por não se alinhar às urgências e constantes mudanças do mercado atual. Assim, para lidar com essas demandas e atingir melhores resultados em médio e longo prazo, é preciso buscar novas saídas.

Como processo de desenvolvimento iterativo, podemos entender a atividade em que a criação de um software é realizada por meio de progressos sucessivos. Assim, é comum que o sistema seja apresentado ainda incompleto ou com algumas partes deficitárias. O objetivo é que o refinamento do produto aconteça por etapas até que o resultado pretendido seja alcançado.

Assim, o método iterativo é frequentemente comparado ao trabalho de um escultor: primeiramente, ele seleciona uma pedra do tamanho adequado para o seu trabalho; na sequência, ele começa a esculpir a peça de um modo geral, quando já é possível ter uma ideia de qual será o seu desfecho; na última etapa, ocorre o refinamento de detalhes, resultando em uma arte que cumpre com o seu propósito.

O desenvolvimento incremental, por outro lado, é aquele em que o software é entregue separadamente — ou seja, por pedaços, que são chamados de incrementos. Independentemente do tamanho desses subconjuntos, o fato que é que eles são entregues já na sua versão final. Assim, há uma concentração de esforços em determinadas partes até que elas estejam em pleno funcionamento.

Podemos dizer, ainda, que no desenvolvimento iterativo há uma repetição das etapas do processo de criação do software até que o resultado almejado seja obtido; já no desenvolvimento incremental, novas partes são integradas ao longo do período de construção.

Vantagens do modelo iterativo-incremental

A adoção de um processo de desenvolvimento iterativo e incremental pode trazer uma série de vantagens para o negócio — e elas vão além da melhora dos produtos entregues aos clientes.

A seguir, veja alguns dos benefícios desses modelos:

  • É possível realizar a criação de um fluxo de entrega de softwares em que os requisitos são apresentados em pequenas partes funcionais.
  • Maior capacidade de acompanhar a evolução do desenvolvimento da aplicação;
  • identificação precisa de erros e falhas durante a criação do sistema;
  • redução de riscos a cada etapa do projeto;
  • maior capacidade de modificar a direção de um projeto;
  • criação de soluções de software com maior valor agregado;
  • capacidade de otimizar a ferramenta continuamente;
  • escopo de software mais flexível;
  • mais agilidade e produtividade no dia a dia de cada time.

Desvantagens do modelo iterativo-incremental

Abaixo, algumas desvantagens do desenvolvimento iterativo:

  • A arquitetura do sistema precisa de uma atenção proativa e pode exigir mudanças fundamentais ao longo do caminho.

As desvantagens do desenvolvimento incremental incluem:

  • Todos os requisitos precisam ser conhecidos para decompor o produto em módulos;
  • Não são tão adaptáveis a mudanças nas exigências, a menos que combinadas com o trabalho em iterações.
  • produto não estará completo até que cada peça esteja no lugar.
  • Fazer com que as peças trabalhem juntas requer esforço extra e pode ser um desafio

O que é Modelo espiral?

Modelo Espiral

Criado por Barry Boehm em 1988, o Modelo em Espiral é uma melhoria do Modelo Incremental e possui esse nome por causa de sua representação, onde cada volta no espiral percorre todas as fases do processo de software. As voltas devem ser repetidas quantas vezes forem necessárias até que o software possa ser completamente entregue.

Vantagens do modelo espiral

Como o modelo exige a consideração dos riscos técnicos em todos os estágios de evolução, se for aplicado adequadamente, reduzirá os riscos antes que se tornem problemáticos. Além disso, As estimativas se tornam mais realistas e o tempo de implementação é reduzido. Ele é mais versátil para testar e lidar com mudanças e ele também não faz distinção entre desenvolvimento e manutenção.

Desvantagens do modelo espiral

Segundo PRESSMAN (2006), pode ser difícil convencer os clientes que o processo de evolução é controlável, pois ele exige competência considerável na avaliação dos riscos e depende dessa competência para ser bem sucedido. Se um risco importante não for descoberto e gerenciado corretamente, fatalmente ocorrerão problemas além disso a avaliação dos riscos exige um analista com experiência logo, caso ocorram erros na avaliação de riscos podem impactar o projeto.

O que é Processo unificado RUP (Rational Unified Process)?

Processo Unificado RUP

RUP (Rational Unified Process), traduzido em Processo Unificado Rational ou comumente falado “Processo Unificado” foi criado pela Rational Software Corporation, mas em 2003 foi adquirida pela IBM.

A metodologia RUP utiliza uma abordagem de orientação a objetos em sua concepção e é projetado e documentado utilizando o UML para ilustrar os processos. Tem como principais características ser incremental e iterativo. Incremental significa que aquele software é construído e entregue em pedaços, constituindo um conjunto de funcionalidades completas.

Através de pequenos ciclos de projetos - que correspondem a uma iteração - o software é melhorado através da adição de mais detalhes, o que resulta em um incremento no software. Iterações referem-se a passos e incrementos a evolução do produto.

O RUP organiza o desenvolvimento em 4 fases bem direcionadas, contendo em cada uma delas no mínimo uma iteração, ou seja, um ciclo de vida, são nessas iterações que são mostradas ao cliente o andamento da produção para que ele possa validar e assim liberar a continuação do desenvolvimento. São elas:

Concepção: define o escopo do software. É uma fase preliminar, é nessa etapa que se concentra o levantamento de requisitos, define preços e prazos da entrega do sistema e onde se avalia os possíveis riscos.

Elaboração: plano do projeto, especificação de características e arquitetura. Aqui todas as análises de riscos são aprofundadas, como também os custos.

Construção: ocorre a codificação do software.

Transição: implantação do software, assegurando que ele esteja disponível aos usuários finais. Nesta fase está incluída os testes e o treinamento dos usuários.

Outra característica do RUP é que ele possui atividades lógicas, chamadas de disciplinas, sendo estas muito bem trabalhadas e desenvolvidas. Essas disciplinas são:

  • Modelagem de negócios
  • Requisitos
  • Análise e Design
  • Implementação
  • Teste
  • Implantação
  • Gerenciamento de configuração e mudança
  • Gerenciamento de projeto
  • Ambiente

Vantagens do Processo unificado RUP

Algumas das vantagens em se utilizar o processo unificado RUP são:

  • Processo robusto e bem definido com a geração de artefatos importantes;
  • Os maiores riscos são atacados primeiro, diminuindo as chances de fracasso do projeto

Desvantagens do Processo unificado RUP

Algumas das desvantagens em se utilizar o processo unificado RUP são:

  • Complexo e trabalhoso para projetos de pequeno porte;
  • Exige experiência da equipe.

Comparativo metodologias tradicionais x metodologias ágeis

Abaixo, separei uma imagem apresentando as principais diferenças entre a metodologia tradicional e metodologias ágeis, segue:

Diferenças Metodologias Ágeis x Metodologias Tradicionais

Percebam que o principal foco da metodologia ágil, são as pessoas ao invés de processos, colaborativo, ao invés de engessado. Enquanto em metodologias tradicionais como o waterfall, o modelo de desenvolvimento é, como o próprio nome sugere, em cascata, as metodologias ágeis são totalmente iterativas, onde o objetivo principal é satisfazer o cliente com entregas contínuas, por exemplo.

Esse é apenas um exemplo de diferenciação entre ambas as metodologias. Se forem realizar estudos mais aprofundados sobre o assunto, irão perceber o quão impessoal é a metodologia tradicional em comparação a metodoligia ágil.

Conclusão

Esse é apenas o meu primeiro post, espero que tenham gostado, logo mais trago mais sobre universo das metodologias ágeis, espero que tenham gostado.

Fontes:

https://robsoncamargo.com.br/blog/metodo-cascata#:~:text=O%20que%20é%20o%20método,custos%2C%20escopo%20e%20cronograma%20fixos.

https://blog.cronapp.io/desenvolvimento-iterativo-e-incremental/

https://medium.com/contexto-delimitado/o-modelo-em-espiral-de-boehm-ed1d85b7df

https://www.digite.com/pt-br/agile/desenvolvimento-iterativo-e-incremental/#:~:text=As%20desvantagens%20do%20desenvolvimento%20incremental,cada%20peça%20esteja%20no%20lugar.

https://www.treinaweb.com.br/blog/o-que-e-rup-rational-unified-process

https://tec4rup.wordpress.com/2010/05/26/vantagens-e-desvantagens-do-rup/

Referências:

Prof.Wagner Mendes Voltz (Metodologias Ágeis)

Excelente postagem, de fato a metodologia ágil é essencial para o desenvolvimento de qualquer área, atualmente, pois com ela conseguimos mais produtividade e foco na colaboração de toda a equipe. Tendo assim, entregas de valor mais eficiente.

De fato, a metodologia ágil veio para desburocratizar a maioria dos processos antigos que existem no ciclo de vida de um software. O foco na colaboração entre a equipe e comunicação mais fluida com o cliente, permitem que as entregas tenham mais qualidade e atendam as expectativas.