metodologias

Afinal, o que é AUP – Processo Unificado Ágil?

Dando sequência à nossa série de artigos de metodologias, vamos abordar hoje o AUP – Processo Unificado Ágil. Já passaram por aqui outras metodologias como o Scrum, Crystal, RAD e RUP.

Conheça o AUP – Processo Unificado Ágil

O Processo Unificado Ágil (AUP – Agile Unified Process) é uma metodologia que foi idealizada por Scott Ambler e se refere a uma versão simplificada do RUP. Para prosseguir com este artigo sugiro a leitura do artigo: O que é RUP – Rational Unified Process?.

Assim como RUP, o AUP também é iterativo e incremental, mas tem uma forma mais simples e fácil de entender a forma de como desenvolver software usando técnicas ágeis e conceitos que ainda se mantêm válidos no RUP.

Alguns dos princípios do AUP…

  • Simplicidade: pouca documentação, menos disciplinas que o RUP
  • Agilidade: entrega periódica e frequente do software funcional
  • É centrado em atividades de alto valor: as tarefas são priorizadas em função do valor que podem ter e uma maior atenção no que o desenvolvimento requer
  • Não tem dependência de ferramentas: pode-se utilizar qualquer conjunto de ferramentas que deseje

Fases do ciclo de desenvolvimento

O AUP dispõe das mesmas fases de RUP: início, elaboração, construção e transição. Cada uma delas é dividida em uma série de iteração que oferecem como resultado um incremento no produto desenvolvido.

  • Iniciação: escopo inicial do projeto, arquitetura, custos do projeto, cronograma, viabilidade, riscos.
  • Elaboração: se aprofunda nos requisitos e arquitetura, para se assegurar que a equipe desenvolva um sistema que cumpra o requisito do cliente.
  • Construção: como o nome diz, é aqui que se desenvolve o sistema até estar pronto para os testes até a produção final.
  • Transição: testar o software, validar e implantar o sistema no ambiente de produção.
AUP - Agile Unified Process
Curso de AUP - Agile Unified Process
CONHEÇA O CURSO

Disciplinas

Abrange 7 disciplinas, onde as 4 primeiras são de implementação e as 3 restantes são disciplinas chamadas de apoio. De acordo com a fase do ciclo de vida, as atividades da disciplina vão variando. As 7 disciplinas são:

  • Modelo: entender as regras de negócio, o domínio do problema e identificar solução viável para resolvê-lo, realizar uma prototipação, diagramas, casos de uso, etc.
  • Implementação: transformar os modelos em códigos, tendo uma prototipagem mais técnica, pensando na UI (user interface), sempre evoluindo na criação do software.
  • Teste: validação da arquitetura, evolução no modelo de teste, validar o sistema, finalização do modelo de teste.
  • Implantação: planejamento da entrega do sistema, deixar o sistema disponível para usuários finais. Treinar clientes e implantar o sistema em produção.
  • Gestão de configuração: configurar o ambiente de configuração.
  • Gerenciamento de projetos: dirigir as atividades que acontecem no projeto, como a gestão de riscos, gerenciar a equipe, a atribuição de tarefas, monitoramento do progresso, etc.
  • Ambiente: configurar e evoluir o ambiente de trabalho, apoiar a equipe.

Se você quer se aprofundar ainda mais na metodologia AUP e utilizar em seus projetos, temos um curso específico de AUP aqui na TreinaWeb. Te esperamos lá =D

O que é RUP – Rational Unified Process?

Metodologias são práticas que oferecem técnicas e rotinas criadas para aumentar a produtividade e dar mais coesão e coerência para o desenvolvimento de software. Continuando com a série de artigos sobre metodologias, essas que nos ajudam a ter mais qualidade e agilidade no desenvolvimento de software, vamos abordar neste artigo a metodologia RUP. Caso você queira ver outras metodologias, já abordamos aqui as metodologias Scrum, Crystal e RAD.

RUP (Rational Unified Process)

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.

RUP - Rational Unified Process
Curso de RUP - Rational Unified Process
CONHEÇA O CURSO

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

As quatro fases que vimos acima e as disciplinas se interagem. As disciplinas e modelos existem para isso, para ficar organizado e que se consiga ter mais controle sobre o software final.

Considerações finais

Pudemos ver que o RUP tem o objetivo de garantir a produção de software de alta qualidade que atinja as necessidades dos usuários, dentro de um cronograma e orçamento previsível. Com ele podemos obter qualidade de software, produtividade no desenvolvimento e manutenção, controle sobre desenvolvimento dentro de custos, prazos e qualidade, estimativa de prazos e custos com maior precisão.

Geralmente ele costuma ser indicado para projetos com grandes equipes de desenvolvimento e projetos extensos, que requerem muita documentação e muito detalhe, que não necessitam de uma entrega tão imediata.

Se você ficou curioso em saber mais sobre o RUP de maneira mais aprofundada, temos um curso específico de RUP, onde você consegue ver inclusive como o RUP funciona na prática. Até lá =)

O que é RAD – Rapid Application Development?

Em busca da agilidade e qualidade no desenvolvimento de software, existem metodologias que são capazes de potencializar o desempenho dos profissionais envolvidos em seus processos. Por isso, as empresas têm cada vez mais adotado essas metodologias para que elas as auxiliem a atingir seus objetivos.

Hoje em dia, existem diversas metodologias de desenvolvimento de software, por isso estamos fazendo uma série de artigos focados em metodologias. Já falamos aqui sobre as metodologias Scrum e Crystal, e hoje vamos abordar a metodologia RAD.

O que é RAD?

Rapid Application Development (RAD) ou Desenvolvimento Rápido de Aplicação é um modelo de processo de desenvolvimento de software incremental, que foi registrado por James Martin, em 1991. É um processo de desenvolvimento de aplicações de forma rápida com objetivos bem definidos e análise de requisitos extremamente bem alinhada. Esse modelo enfatiza um ciclo de desenvolvimento curto, com o intuito de ter um desenvolvimento melhor e mais rápido.

No desenvolvimento incremental, uma das características de RAD, o sistema é dividido em módulos, tomando por base a funcionalidade. Tendo os incrementos definidos, a cada ciclo é acrescido de novas funcionalidades ou até mesmo modificações, caso seja necessário. Outra característica é justamente essa maleabilidade de adaptação dos processos e a capacidade de se manter em constante evolução.

O processo consiste basicamente em:

  1. Modelagem do negócio
  2. Modelagem dos dados
  3. Modelagem do processo
  4. Geração da aplicação
  5. Teste e Modificação
RAD - Rapid Application Development
Curso de RAD - Rapid Application Development
CONHEÇA O CURSO

As fases de modelagem e geração da aplicação são executadas por diversas equipes. Essa divisão otimiza tempo, além do reaproveitamento de módulos prontos que faz com que o desenvolvimento cumpra prazos curtos. Por fim, ocorre a integração desses componentes.

O RAD tem uma capacidade muito grande de potencializar o desempenho dos profissionais da equipe. Algumas outras vantagens são:

  • economia de tempo
  • progresso mensurável
  • trabalho com modelos
  • integração mais rápida de sistemas
  • feedback constante

Quando devo usar?

Um ponto muito importante é que a aplicação deve possuir requisitos muito bem definidos e o sistema poder ser modularizado para o bom funcionamento do RAD. Quando você analisar que o projeto a ser desenvolvido pode ser dividido em componentes e em ser reutilizado componentes prontos, sempre pensando no curto prazo, pode ser uma boa opção.

Não é apropriado quando se tem um risco técnico alto ou quando não se tem equipe suficiente para suprir essa agilidade.

Se você deseja se aprofundar nessa metodologia, conhecendo mais a fundo seus princípios, exemplo de técnicas e ferramentas do RAD temos um curso específico aqui na TreinaWeb, dá uma conferida 😀

Metodologia Crystal: o que é e para que serve?

As metodologias ágeis são ferramentas que vem sendo cada vez mais utilizadas no desenvolvimento de software. Já temos aqui no blog posts falando de uma bem conhecida: a metodologia Scrum.

O Scrum é o mais famoso e mais usado. Mas também temos vários outros, talvez menos conhecidos, pois alguns acabam sendo mais técnicos, o que os tornam mais específicos para engenharia de software, ao contrário do Scrum que é mais gerencial e aplicável não somente a indústria de software, como também a outras áreas e setores.

Neste artigo abordaremos a metodologia Crystal.

Crystal - Metodologia ágil
Curso de Crystal - Metodologia ágil
CONHEÇA O CURSO

Família Crystal

Criada no final da década de 90 por Alistair Cockburn e Jim Highsmith, a família Crystal se baseia na gestão de pessoas, tendo o foco na interação, habilidades, talentos e comunicação.

Segundo o criador Cockburn, as pessoas de uma equipe possuem diferentes talentos e habilidades, sendo um diferencial durante o desenvolvimento de um projeto, já que as pessoas têm uma importância muito grande no desempenho do projeto. Além disso, foi criada para atender vários tipos de projetos e equipes que precisam de táticas para resolver diversos problemas.

Não há uma metodologia Crystal e sim diferentes tipos de metodologia Crystal para diferentes tipos de projeto, por isso chamamos de família Crystal. É uma família de metodologias que une diferentes modelos de processo, mas com elementos centrais que são comuns a todas, além dos papéis e práticas específicas de cada uma.

Segundo os autores da metodologia, acredita-se que a metodologia adequada é baseada no tamanho da equipe e nos riscos envolvidos no projeto. Por isso, a família Crystal é dividida em cores, onde deve-se escolher a cor que mais for apropriada para cada projeto, de acordo com o nível de criticidade e o tamanho da equipe. Quanto mais escura for a cor, mais crítico é o sistema e, consequentemente, será utilizada a metodologia mais “pesada”.

Por exemplo, um projeto com 50 pessoas envolvidas precisa de uma metodologia mais pesada do que um projeto com 10 pessoas. Você pode avaliar seu projeto por duas visões: número de pessoas e criticidade do sistema.

A criticidade é dividida em 4 níveis: (C) conforto, (D) baixo custo, (E) alto custo e (L) risco de vida. Assim você consegue escolher a melhor metodologia para aquele projeto, adotando um conjunto de políticas adequadas para cada situação.

Algumas práticas da metodologia são:

  • a entrega em intervalos regulares;
  • o monitoramento do progresso;
  • envolvimento direto com o cliente;
  • inspeções constantes a cada incremento;
  • os feedback que servem para ajuste do produto e da metodologia caso necessário.

Você pode utilizar as metodologias da família Crystal em projetos de alta ou baixa criticidade. A ideia de Crystal é permitir que cada organização implemente as atividades que lhe pareçam adequadas.

Se você se interessou nessa metodologia e quer conhecer um pouco mais dos conceitos e como colocar em prática, temos um curso específico de Crystal, onde é abordado todas as metodologias dessa família.

No próximo artigo, conheceremos uma outra metodologia. Até lá!

Metodologias ágil x tradicional: Quais as diferenças?

Para qualquer coisa que queremos desenvolver hoje em dia precisamos fazer um projeto. Em meio ao processo do projeto, devemos ficar atentos a algumas especificações, como os prazos, custos, qualidade e satisfação do cliente, pois o não cumprimento destes pode nos trazer alguns problemas mais à frente. Por isso, cada vez mais damos a devida importância ao gerenciamento de projetos e em como a utilização de metodologias podem nos ajudar a gerir melhor tudo isso.
Atualmente temos dois tipos de metodologias que são bem conhecidas, principalmente se tratando de desenvolvimento de software: as metodologias tradicional e ágil.

Metodologia Tradicional

A metodologia tradicional tem etapas bem definidas sendo o planejamento do projeto, uma estimativa em termos de prazo e orçamento, a execução e entrega no final. Por exemplo, em um desenvolvimento de software financeiro, teríamos o seguinte fluxo:

  • Planejamento do software (como ele ficará no final)
  • Planejamento das atividades que serão necessárias (programação, design, etc)
  • Definição de prazos e custos
  • Execução
  • Testes
  • Implantação

A metodologia tradicional segue um modelo sequencial, ou seja, uma etapa deve ser executada após a outra, sendo assim, uma tarefa não pode ser iniciada enquanto a anterior não for concluída. Também se espera que seja executado exatamente o que foi planejado, focando no resultado final. Para ser um sucesso, não basta apenas seguir essa ordem, é importante entregar no prazo, dentro do orçamento e da qualidade esperada. Na metodologia tradicional o produto só irá “fazer sentido” e ter valor quando o projeto estiver 100% concluído. Dentro dessa metodologia a mais conhecida é o modelo cascata.

O principal receio dentro da metodologia tradicional é que ela não tem muita flexibilidade em relação a mudanças. Qualquer mudança no meio do caminho é vista com grande preocupação pelo gerente de projetos.

Para nos ajudar nesse quesito, entra uma outra metodologia: a ágil.

Metodologia Ágil

Apesar do nome, a palavra ágil aqui não significa agilidade e sim o poder de “quebrar” o projeto em partes menores. Ao contrário da metodologia tradicional que você faz apenas uma entrega já com o projeto final, aqui você faz entregas constantemente até entregar todo o projeto.

A preocupação com custo, qualidade e prazos são as mesmas da metodologia tradicional, porém você consegue controlar e gerenciar as mudanças que provavelmente irão aparecer no decorrer do projeto. Na metodologia ágil o foco principal é a entrega de valor ao cliente, por isso é priorizado a entrega à documentação, por exemplo. Mas isso não quer dizer que não é documentado, não planejado, assim como na tradicional. Na metodologia ágil também existem esses aspectos, mas de maneiras diferentes. Por exemplo, o planejamento da metodologia ágil é de forma iterativa e incremental enquanto a da tradicional planeja com muita antecedência como será cada etapa do projeto.
Dentro desta metodologia o mais utilizado e que provavelmente você já ouviu falar é o Scrum.

Scrum - Planejamento e Desenvolvimento Ágeis
Curso de Scrum - Planejamento e Desenvolvimento Ágeis
CONHEÇA O CURSO

Como saber qual utilizar?

Isso vai depender muito do tipo de projeto e cultura da empresa. A própria empresa pode preferir a metodologia tradicional, ainda mais se os envolvidos do projeto não estão acostumados a trabalhar com uma metodologia ágil, ainda que ela se aplique a aquele projeto.

O ideal é estudar o projeto, conhecer os requisitos, tecnologias a serem utilizadas… tudo o que julgar necessário. E a partir disso tudo analisar se é melhor partir pela metodologia ágil ou a tradicional. Em um projeto onde as necessidades do cliente podem mudar a qualquer momento (o que é muito comum), você precisará ter a liberdade de poder fazer mudanças necessárias tanto pelo lado do cliente quanto de tecnologia, se precisar. Projetos que provavelmente terão mudanças constantes, precisa ter um planejamento mais flexível, sendo assim a metodologia mais viável seria a ágil.

A metodologia tradicional é uma boa opção em casos mais específicos, como por exemplo em algo que precisa ser planejado e decidido desde o início. Se o projeto tem poucas chances de ter mudanças e com baixo risco, o ideal é ter um plano de projeto mais detalhado antes de iniciar.

Concluindo…

Vale lembrar que a escolha da metodologia é importante não somente para se ter sucesso no processo, mas principalmente, na entrega do produto. As duas metodologias têm vantagens e podem ser utilizadas até mesmo de forma conjunta, convivendo perfeitamente bem, até mesmo porque o foco das duas é a otimização de projetos. A escolha entre a metodologia tradicional e ágil não precisa ser um conflito. Deve-se respeitar às premissas das duas metodologias e saber o que cada uma pode agregar aos objetivos de cada projeto.