Trabalho apresentado na primeira disciplina da pós-graduação, "Metódos Ágeis de Desenvolvimento de Software" ministrada pelo professor Marcio Sete.
Prezado Sr. Adriano,
Avaliando o atual cenário presente na ACME Air Lines (fictícia), apresento-lhe uma abordagem no mínimo instigante, capaz de fazê-lo reavaliar princípios e práticas anteriormente adotadas que um dia já foram capazes de lidar com os processos muito bem definidos de sua empresa. Vale salientar que grandes empresas estão adotando tal modelagem e mudando paradigmas relacionados ao desenvolvimento de software.
Falo-lhe da Modelagem Ágil que vem ganhando credibilidade e espaço nas empresas, afetando positivamente o ciclo de vida dos projetos. Diante da complexidade dos projetos atualmente, tornam-se necessárias práticas que lidem com a realidade emergente dos processos e suas organizações. Portanto, a modelagem ágil dispõe de vários princípios, adaptando-se aos mais variados cenários, sendo possível a escalabilidade para projetos de pequeno, médio e grande porte. Incrementalmente e iterativamente, ela disponibiliza artefatos de valor para o projeto, tornando-o transparente, de visibilidade comunitária e bastante clara. Vale lembrar que o uso de frameworks e ferramentas CASE é de fácil configuração, naturalmente e sem excessos, tais recursos irão se fazer necessários, trazendo contigo informações importantes para o projeto em questão.
Modelagem ágil não é uma “receita de bolo” nem ao menos uma “bala de prata”, que seguida passo a passo trará o mesmo resultado a todos os projetos. Diferente do que se parece, ela apenas complementa os métodos existentes, pois não é completa. Abordagem essa que tem embasamento prático, de mercado e adotado por grandes empresas. Ela não funciona sozinha, depende de profissionais competentes para implementá-la, através de documentação simples e clara, se excessos ou milhares de ferramentas CASE.
Tal modelagem serve de apoio para outros processos, visto que provêm documentação de valor para o mesmo. Seus três objetivos pilares, garantem um melhor implantação e implementação de processos como XP, UP, SCRUM, entre outros. Com documentação compreensível, precisa, consistente e suficientemente detalhada para reforçar o desenvolvimento da Metodologia Ágil adotada.
Portanto, torna-se necessário explorar como podemos melhorar a modelagem em processos descritivos adotados na empresa, definindo como colocar em prática os valores, princípios e práticas de forma eficaz e leve, adotando se necessário, técnicas de modelagem através de uma abordagem ágil. Tais valores implicam na renovação de conceitos importantes para a modelagem ágil.
Primeiramente, a forma de comunicação deve ser reavaliada, para torná-la mais clara e objetiva, adotando métodos mais eficazes, ou seja, modos de comunicação mais ricos, que possibilitem uma interação e feedback mais rapidamente entre as pessoas, incluindo até mesmo o uso de ferramentas simples para tornar a informação publica e transparente. Contribuindo assim positivamente com fatores que afetam diretamente a comunicação, com pessoas trabalhando juntas física e temporariamente, transferindo direta e indiretamente informações através de uma conversa ou mesmo percebendo o ambiente a sua volta.
Outro ponto importante é tornar os modelos mais simples possíveis e iterativamente desenvolvê-los acompanhando gradativamente o projeto. Naturalmente ele refletirá mais precisamente a realidade do projeto e suas mudanças emergentes durante o ciclo atual de seu desenvolvimento.
Vale salientar que devemos nos esforçar para obter feedback rápido sobre o trabalho para garantir que ele reflita as necessidades dos stakeholders do projeto. Sendo assim, desenvolva o modelo em equipe, revisando-o com seu público-alvo e atualizando sempre que necessário. Preocupe-se também em tirar as idéias do papel, implementando o que foi planejado e entregando naquela etapa todos os produtos previstos para a iteração corrente. E durante o ciclo de desenvolvimento, não exite em levantar detalhes que possam prejudicar o andamento do mesmo, e de forma humilde e transparente repasse detalhes para resolver os possíveis impedimentos que surgirem.
Além dos supracitados, alguns princípios da Modelagem Ágil defendem atividades que precisam da compreensão e apoio dos stakeholders, assim como empenho da equipe responsável pelo desenvolvimento do projeto. Mudanças claras na visão de projetos dos mesmos se fazem necessárias e de grande valia. Destacando alguns não menos importantes, como, ter em mente que o software e o foco central da modelagem, portanto modele com simplicidade e propósito, criando vários modelos que agreguem valor ao projeto, focando sempre em obter um feedback rápido, maximizando o retorno do investimento dos stakeholders.
Sintetizando objetivos, valores e princípios, algumas boas práticas vem trazendo benefícios aos adeptos da modelagem ágil. São elas:
- Modelagem Incremental e Iterativa, onde a cada iteração do projeto, apoiando-se nos artefatos corretos e modelando apenas o necessário para cada etapa, obtém-se documentação clara e objetiva.
- Existe um equipe responsável pelo projeto, portanto, não assuma a responsabilidade sozinho, compartilhe idéias e juntamente com os responsáveis pelo projeto crie as documentações necessárias e torne-as publicas de forma transparente.
- Abuse da simplicidade. Crie conteúdo simples, seja objetivo para apresentá-lo e com ferramentas eficientes para a criação dos mesmos, sem excessos.
- Implemente o que está documentado, considerando inclusive os testes e prove que o planejado é possível.
- Não descarte totalmente as normas de modelagem se for possível, sem excessos e se possível reutilize recursos.
- Documentação
- Crie modelos realmente úteis, que agregam valor ao projeto e se necessário, crie os documentos previstos em contrato, atualizando-os somente quando necessário.
- Modele para se fazer entender e se comunicar, para descomplicar.
De forma empírica, precisamos avaliar a situação do projeto dia-a-dia , e com flexibilidade nos adaptar as mudanças, sabendo exatamente quando ir além das próprias boas práticas.
Sugiro adotar as seguintes atividades: modelagem inicial de requisitos, que é quando vamos identificar o escopo de alto nível e a pilha de requisitos inicial e fazer uma modelagem inicial da arquitetura, que é apenas uma visão arquitetural do projeto. Após este chamado Ciclo 0, partimos para as iterações, onde primeiro fazemos o chamado Model Storming, que deve ser rápido, envolver poucas pessoas e bem objetivo, serve para levantar uma questão pra resolver e desenhar um modelo que o resolve em um quadro branco ou papel. O próximo passo seria passar para a implementação (ideal ser dirigido a teste) com uma abordagem TFD. Uma outra atividade são as revisões de modelos e inspeção de código, este é considerada opcional, porém são praticas muito úteis, pois garantem a qualidade e dão um bom feedback.
A abordagem da modelagem ágil (AMDD) tem um fluxo de desenvolvimento de um modelo bastante simples e eficiente que vai de acordo com todo o pensamento ágil, no ponto em que ele prega que devemos fazer somente o necessário e que devemos ser flexíves, pois situações diferentes pedem medidas diferentes. O fluxo do desenvolvimento, começa com uma discussão sobre o assunto, e modelamos se necessário para entender o que estamos falando, caso seja necessário devemos fazer de forma simples com uma ferramenta simples, e partir para a codificação manual, ou realizar essa modelagem em uma ferramenta case que gere o código fonte. No caso da ACME a solução seria adotar a pratica de sempre modelar para entender, e codificar manualmente.
Vejo que a ACME se preocupa muito com documentos e mais documentos, "esquecendo-se" as vezes do que realmente importa, o que os interessados realmente esperam como produto final, a ideia é implantar a documentação ágil, na qual é concisa, precisa, consistente e detalhada. Vamos documentar somente informações que são menos prováveis de mudar, e descrever "coisas boa de saber", e para realizar essa documentação na abordagem ágil contamos com os modelos ágeis, que é composto por 8 tipos ou grupos de artefatos, um para escopos diferentes do “projeto”, e cada tipo é composto por inúmeros artefatos que nos auxiliam na documentação, vou citar alguns para que fique já como sugestão:
- Testes de aceitação, que é uma abordagem simples e eficaz, pois dificilmente alguma demanda entrará em produção com algum bug, pois passará por testes de caixa preta, por usuários como se fossem os finais, e em ambientes que simulam o de produção.
- Diagrama de Classe da UML, que é um dos principais diagrama da UML, muito útil para nós, pois ilustram as classes, interfaces e relacionamentos entre elas, nos dando uma visão geral do núcleo do sistema.
- Diagrama de Interface de Usuário, nos permite modelar as interações que os usuários têm com o software, conforme definido em um único caso de uso, bem como obter uma visão geral de alto nível da interface do usuário para sua aplicação.
- Diagrama de pacotes, para usarmos permitindo ter uma visão mais arquitetural, pois ele separa o sistema em modulos ou pacotes, e define os relacionamento entre eles.
- Diagrama de sequência, que iremos usar na modelagem de objetos, pois este diagrama “desenha” muito bem a sequência de processos, e mais especificamente as mensagens entre os objetos.
- Diagrama de Atividades UML, são normalmente utilizados para a modelagem de processos de negócios, modelando a lógica capturada por um único caso de uso ou cenário de uso, ou para modelar a lógica detalhada de uma regra de negócio.
Vale lembrar quais são as verdadeiras razões que realmente importam e justificam uma documentação em nossos projetos, que seria usarmos para definir um modelo de contrato, apoiar a comunicação de um grupo externo e que os envolvidos no projeto precisam de uma documentação.
Para finalizar no que se diz respeito ao gerenciar os requisitos, a abordagem BRUF, que temos utilizado é muito falha, o custo é altíssimo colocar os grandes requisitos em primeiro na ordem de execução. Com o gerenciamento ágil de requisitos definimos a ordem dos requisitos por prioridades, por o que realmente precisamos primeiro, e novos requisitos são colocados na fila para ser priorizados, e depois implementados nas iterações, que poderão ser desenvolvidos junto a uma abordagem de gerenciamento ágil de processos, como por exemplo, no SCRUM em seus sprints, mas isto fica para um segundo momento.
Atenciosamente,
Túlio César Gaio
Willian Douglas Gaio Gualberto
Belo Horizonte, 20 de Outubro de 2010.