Um Squad Ágil executou a análise, a escrita e o refinamento de requisitos para um sistema da Britânia
Cliente
Área
Problema Resumido
Solução Resumida
Resultados
A equipe montada pela Visionnaire se encarregou de todos os aspectos englobados pela análise e
pelo refinamento de requisitos, como identificação, documentação e validação das
necessidades e expectativas em relação a um sistema em desenvolvimento. Assim, todos os requisitos relevantes
foram abordados e compreendidos por todos os envolvidos antes da etapa do desenvolvimento em si.
O resultado do extenso trabalho foi registrado em um detalhado documento de visão de sistema,
bem como um documento de requisitos de negócio, para os quais foram coletadas, analisadas e definidas as necessidades
do levantamento de requisitos para a Britânia, mais precisamente para a equipe de Recursos Humanos da empresa.
Em suma, a Visionnaire proporcionou à Britânia aumento de produtividade e, ao mesmo tempo,
diminuição de custos por meio de uma equipe altamente especializada em desenvolvimento de software e focada
na entrega com processos ágeis e baseados na nuvem, além do uso de Scrum e Sprints semanais.
Tecnologias
O processo principal usado pela Visionnaire é o Scrum, seguindo a filosofia Ágil
com execução de Sprints (que podem ser semanais ou quinzenais), tudo isso com o uso intenso de ferramentas
na Nuvem (para a parte do processo em si, usamos fortemente os produtos da plataforma Atlassian, nesse caso, principalmente,
o Confluence é usado para documentação integrada de sistemas, bem como das plataformas baseadas em Git,
como GitLab e GitHub).
A Visionnaire usou por muito tempo (e ainda usa em boa parte dos clientes) o Unified Process,
seguindo os conceitos de Gestão de Projetos do PMI PMBok (Project Management Institute, Project Management Body
of Knowledge), mais recentemente com adequação aos Processos Ágeis e Scrum.
Nos últimos anos, a filosofia de desenvolvimento ágil baseada em Scrum tem ganho
muita aderência de empresas em todo o mundo, e a Visionnaire vem implantando em seu processo de desenvolvimento essa
filosofia de desenvolvimento ágil. Na maioria dos casos, por sermos uma fábrica de software e nos adequarmos
aos processos de desenvolvimento de nossos clientes, o Scrum não é usado, mas o sugerimos quando é
possível.
Para análise e projeto de sistemas, usamos toda a filosofia UML (Unified Modeling Language)
da OMG (Object Management Group), tanto com o uso de ferramentas software livre quanto com o uso de ferramentas da
IBM/Rational (a Visionnaire é parceira de desenvolvimento da IBM e conta com todas as ferramentas).
Como software de controle de versão e gerência de configuração, usamos as
plataformas baseadas em Git, como Atlassian Bitbucket, GitHub ou GitLab. Para os projetos com aderência a Scrum,
usamos como gerência de configuração, planejamento e gestão de projetos o Atlassian Jira integrado
ao Git (com Sourcetree, GitKraken ou linha de comando).
Para documentação usamos o Atlassian Confluence. Para outras atividades do processo de
desenvolvimento, usamos Atlassian Wiki. Para tarefas/atividades administrativas usamos o Trello e o Jira. Usamos ferramentas
de comunicação como Slack em todas as áreas.
Para prototipação usamos Balsamiq e Mockflow (além das próprias ferramentas
de prototipação de alguns IDEs como a do Xcode para sistemas Apple). Como IDEs (Integrated Development Environment)
usamos o Eclipse, Visual Studio, Visual Studio Code, Sublime Text, Xcode, entre outros.
Para monitoramento de sistemas em datacenters e gerenciamento do ciclo de aplicação
(ALM), usamos o New Relic. Como datacenters em sistemas desenvolvidos pela Visionnaire para clientes, os quais nós
mantemos, usamos AWS – Amazon Web Services, Google Cloud, Azure, Weblink, Emmex e servidores próprios (escolhendo
a solução mais adequada para cada caso). Especialmente quando possível utilizar plataformas na nuvem
mais avançadas, como o AWS, da Amazon, a Visionnaire explora as vantagens da plataforma, como o desenvolvimento de
sistemas em arquitetura de microsserviços (filosofia Serverless), bancos de dados distribuídos e a integração
de sistemas através de APIs REST. A plataforma AWS é uma das melhores plataformas disponíveis para esse
fim, podendo disponibilizar balanceamento de carga dos microsserviços (load balancing), bancos de dados poderosos
como Redshift e Aurora e a possibilidade de executar código sem provisionar ou gerenciar servidores do AWS Lambda.
A solução na nuvem do Google (Google Cloud Platform) é fortemente usada em alguns clientes também.
Para clientes mais atualizados nos conceitos de CI e CD (Continuous Integration e Continuous
Delivery), utilizamos o GitLab e muita automatização do processo via Scripts YAML, tudo isso com alto uso
de microvirtualização com uso de Docker e Kubernetes.
Mas é importante ressaltar que, em todos os casos, prioritariamente, adaptamo-nos às necessidades
e ferramentas de nossos clientes, pois somos uma fábrica de software com quase três décadas de história.
Problema Detalhado
No começo de 2020, a Britânia estava desenvolvendo uma plataforma de gestão de performance
e necessitava uma consultoria para análise e refinamento de requisitos de software para o projeto. A análise
e o refinamento de requisitos são etapas cruciais no desenvolvimento de sistemas de software, fundamentais para o sucesso
de um projeto de software, garantindo que o produto final seja funcional, de alta qualidade e alinhado com as expectativas
dos stakeholders.
A análise de requisitos envolve identificação, documentação e validação
das necessidades e expectativas das partes interessadas em relação ao sistema que será desenvolvido.
Essa etapa garante que todos os requisitos relevantes sejam compreendidos e que qualquer ambiguidade ou inconsistência
seja resolvida antes de avançar para a fase de design e implementação.
O refinamento de requisitos, por sua vez, é o processo de detalhar e especificar ainda mais os
requisitos identificados durante a análise. Isso pode incluir a decomposição de requisitos gerais em
requisitos mais específicos, a definição de critérios de aceitação claros e a priorização
de requisitos com base em sua importância e impacto no projeto. O refinamento é um processo iterativo que pode
continuar ao longo do ciclo de vida do desenvolvimento, adaptando-se às mudanças nas necessidades das partes
interessadas e nas condições de negócio.
A importância dessas etapas reside em diversos fatores, a saber alguns deles:
- Redução de riscos: a análise e o refinamento de requisitos ajudam a identificar cedo potenciais problemas e conflitos no processo de desenvolvimento, reduzindo o risco de retrabalho e de não atendimento das expectativas dos usuários finais;
- Clareza e comunicação: esses processos promovem uma melhor comunicação entre as partes interessadas e a equipe de desenvolvimento, assegurando que todos tenham uma compreensão comum dos objetivos e funcionalidades do sistema;
- Eficiência no desenvolvimento: requisitos bem definidos facilitam a criação de um design mais preciso e a implementação eficiente, uma vez que os desenvolvedores têm diretrizes claras a seguir;
- Qualidade do produto: um sistema desenvolvido com base em requisitos bem analisados e refinados tende a ser mais alinhado com as necessidades reais dos usuários, resultando em maior satisfação e melhor usabilidade.
Seguindo as melhores práticas do Vale do Silício, a Visionnaire oferece:
- Equipe especializada de desenvolvimento de software que atende às demandas de talentos profissionais dos clientes;
- Processo ágil e baseado na nuvem com foco na entrega;
- Uso de Scrum e entregas com Sprints semanais ou quinzenais visando a aceleração dos projetos;
- Integração de Desenvolvimento (Dev) e Operações (Ops), entregando a solução completa de DevOps para nossos clientes;
- Uso de ferramentas na nuvem 100% digitais para acompanhamento dos projetos;
- Uso de tecnologia de software modernas como Arquitetura de Microsserviços, Virtualização, Integração Contínua e Entrega Contínua;
- Experiência em mais de 28 anos de desenvolvimento e entrega de projetos de sucesso com tecnologias modernas;
- Tudo isso permitindo aumento de produtividade de diminuição de custos nos projetos para nossos clientes.
A importância dos Squads Ágeis no
desenvolvimento de software reside na sua capacidade de aumentar a flexibilidade, velocidade e colaboração.
Eles permitem uma rápida adaptação às mudanças nos requisitos, garantem a entrega contínua
de valor aos clientes e promovem um senso de propriedade e responsabilidade entre os membros da equipe. Essa abordagem leva
a software de maior qualidade e ciclos de desenvolvimento mais eficientes.
A Visionnaire apontou rapidamente um Squad Ágil
para se dedicar a esse projeto, ou seja, uma equipe multifuncional que trabalhou de forma colaborativa para suprir as necessidades
da Britânia. Nos Squads Ágeis formados pela Visionnaire, cada equipe inclui membros com diversas habilidades,
permitindo-lhes lidar com todos os aspectos do processo de desenvolvimento de software, desde o planejamento até a
implantação.
A equipe montada pela Visionnaire teve contato frequente com
funcionários da Britânia, o que incluiu reuniões presenciais com usuários do sistema em desenvolvimento,
o que foi de suma importância para se conduzir uma análise profunda e chegar a um documento extenso e bem detalhado.
Este projeto teve seu escopo híbrido, ou seja, uma abordagem
balanceada que combina o melhor dos métodos tradicionais e ágeis, promovendo tanto a previsibilidade e o controle
quanto a flexibilidade e a adaptabilidade. Conceitos das abordagens tradicionais e ágeis foram combinados para a definição
e gerenciamento do escopo do projeto. Isso possibilitou aproveitar os benefícios de ambas as metodologias para melhor
atender às necessidades específicas de um projeto.
Assim, seguindo uma abordagem de escopo fechado, um planejamento
inicial foi detalhado a fim de definir as principais funcionalidades e requisitos do sistema, o que forneceu uma visão
clara dos objetivos e das expectativas do projeto desde o início. Ao mesmo tempo, seguindo conceitos de abordagem ágil,
o projeto inicial incorporou ciclos de desenvolvimento curtos e iterativos (Sprints) para que partes do escopo fossem
ajustadas conforme o avanço do projeto, o que possibilitou a adaptação às mudanças nas
necessidades do cliente e às novas descobertas técnicas.
O escopo híbrido também permitiu entregas incrementais
de funcionalidades, proporcionando feedback contínuo dos e permitindo ajustes rápidos, e combinou práticas
rígidas de controle de mudanças com a flexibilidade ágil, garantindo que as alterações
no escopo fossem geridas de forma estruturada, mas sem comprometer a capacidade de adaptação.
Apresentação
Panfleto