DEV Community

Cover image for Garanta o shape do verão com Kiro e Spec Driven Development
Giovana Armani
Giovana Armani

Posted on

Garanta o shape do verão com Kiro e Spec Driven Development

Como construi minha primeira aplicação com IA usando Kiro em poucos minutos e sem escrever código para acompanhar a frequência dos meus treinos.


Gosto muito de me exercitar e tenho muitos objetivos físicos. Meu grande problema é que quero fazer só os treinos que gosto e ignoro os que não gosto. Todo atleta passa por isso do seu jeito, mas para mim, isso significa treinar muita perna e não treinar braço nunca.

Sei que no fundo o que me falta é vergonha na cara, então pedi ajuda para o Kiro para construir uma aplicação onde eu posso registrar meus treinos para ter noção de quando estou fugindo demais. Nesse artigo, vim compartilhar como você pode usar o Kiro e Spec Driven Development para tirar suas ideias do papel de forma rápida e eficiente.

O que é o Kiro e Spec Driven Development?

O Kiro é um editor de código com poderes de IA que te ajuda no desenvolvimento de programas. Para isso, ele oferece duas formas de interação com a ferramenta: Vibe coding, na qual o programador pede auxílio para a IA sob demanda com prompts (instruções) específicos; e Spec Driven Development , onde você começa o programa descrevendo seus requisitos para a IA.

No modo de specs, o Kiro segue o seguinte fluxo:

Você guia o desenvolvimento e o Kiro te ajuda a agilizar. Você pode voltar as etapas e alterar arquivos anteriores a qualquer momento.

Na IDE você ainda verá algumas funcionalidades interessantes:

  • Specs: onde estarão concentrados seus arquivos de requisitos, designs e tarefas para as aplicações desenvolvidas com specs;
  • Agent Hooks: prompts pré definidos executados autonomamente no plano de fundo. É possível usar essa feature, por exemplo, para gerar documentação ou testes a cada vez que um arquivo é salvo, otimizar performance, etc;
  • Agent steering: regras que guiam o comportamento e respostas do agente através de arquivos que especificam padrões de design e código que ele deve seguir;
  • MCP Servers: lista todas as integrações com MCP configuradas para seu agente. Falaremos mais sobre eles em postagens futuras.

Saiba mais com a documentação desses conceitos e veja na imagem abaixo onde achar essas funcionalidades na IDE.

Definindo requisitos

Se o Kiro e Spec Driven Development nos ajudam a desenvolver rapidamente cuidando da parte mais densa de escrita de código, ele nos abre espaço para ser ainda mais atentos com nossos requisitos. O segredo de trabalhar efetivamente com IA é refinar nossas habilidades de comunicação para ter certeza que o que estamos imaginando para o sistema será traduzido para código corretamente. No processo de desenvolvimento de software é recomendado definir bem os requisitos funcionais e não funcionais da sua aplicação.

Requisitos funcionais ditam o que a aplicação deve fazer ou como os usuários devem poder interagir com ela. Eles se relacionam aos seus objetivos de uso da aplicação. Aqui devemos listar as funcionalidades, elementos de interface gráfica, outputs esperados, entre outros.

Já os requisitos não funcionais, vão para um lado mais técnico. Dizem respeito a expectativas de performance, qualidade e segurança do sistema, assim como administram limitações de recursos que podem impactar a aplicação. Podemos considerar, por exemplo, requisito de tempo de resposta para determinadas operações, que podem afetar decisões de arquitetura.

Padrão de requisitos EARS

EARS é o padrão de escrita de requisitos utilizado pelo Kiro. Significa Easy Approach to Requirements Syntax, ou abordagem simples para sintaxe de requisitos. Os requisitos no EARS são escritos em inglês em linguagem natural e seguem uma estrutura padrão sempre na mesma ordem:

While [optional pre-condition], when [optional trigger], the [system name] shall [system response].

Traduzido para o português, essa estrutura seria:

Enquanto [pré-condição opcional], quando [gatilho opcional], o [nome do sistema] deve [resposta do sistema].

Exemplo:

Enquanto o usuário estiver logado, quando o usuário clicar no botão de pagar, o site da loja do seu Zé deve ser redirecionado para a página de pagamento.

Para desenvolver com Kiro, você não precisa escrever seus requisitos assim, mas é importante entender esse padrão para conseguir fazer uma revisão cuidadosa do que ele produzir.

Primeiros passos com Kiro

Antes de mais nada, baixei e instalei o Kiro aqui: https://kiro.dev/downloads/

Em seguida, criei uma pasta local e abri na IDE do Kiro. No lado direito da IDE, selecionei Spec para começar a aplicação.

Você sabia que pode falar com o Kiro em português? Comecei a aplicação oferecendo o seguinte prompt com as especificações iniciais dos meus requisitos:

Por favor crie uma aplicação onde usuários possam registrar treinos feitos a cada dia. A aplicação deve conter uma UI que obedece os seguintes requisitos funcionais:

- Página principal: calendário que mostra todos os treinos realizados a cada dia. Deve ter um botão de registrar novo treino que leva para a página de registro

- Registro de treino: página com um formulário com um campo de data e uma lista com todos os tipos de treinos cadastrados. O usuário deve poder selecionar um ou mais treinos da lista ou adicionar um novo item na lista. Ao submeter o formulário, o usuário deve ser redirecionado para a página de calendário e conseguir ver os treinos que registrou

Ainda deve seguir o requisito não funcional abaixo:
- Armazenamento de dados local
Enter fullscreen mode Exit fullscreen mode

Calma, eu não bati a cabeça para sair fazendo loucuras como um armazenamento de dados local. Essa foi uma decisão consciente porque quero manter a aplicação o mais simples possível por ora para focarmos no desenvolvimento de código com specs e ela será evoluída aos poucos enquanto abordamos outros assuntos. Disso podemos tirar uma reflexão importante de que os requisitos não têm sentido por si só, mas dentro de um contexto maior do sistema.

A partir desse prompt inicial, Kiro vai criar o documento de requisitos (requirements.md) na pasta .kiro/specs. Ele interpreta seus requisitos iniciais e adiciona detalhes a partir deles. Nessa aplicação, por exemplo, pedi que fosse adicionado um calendário e o Kiro adicionou o requisito de que o sistema permita a navegação entre meses e anos. Esse é um ótimo momento para revisar detalhes como a experiência de navegação e tratamento de erros.

Quando estava satisfeita, cliquei em "move to design phase" para prosseguir. Na sequência, Kiro criou o documento de design (design.md). Como parte dele, definiu a arquitetura, tecnologias e linguagens utilizadas, componentes e interfaces, modelos de dados e propriedades.

Finalmente, segui para o plano de implementação. Ele transformou o design em uma sequência de tarefas (tasks.md) que revisei e aprovei para execução. Algumas tarefas são ainda marcadas como opcionais e podemos pular para um desenvolvimento mais rápido e voltar para ela depois.

Veja o repositório com o código criado pelo Kiro e assista à demo abaixo:

Video Title

Conclusão

Minha experiência com Kiro e Spec Driven Development foi surpreendentemente fluida e divertida!

Em poucas horas, consegui sair de uma ideia simples para uma aplicação funcional, sem me perder em detalhes técnicos ou ficar travada na implementação. Pude focar exatamente no resultado que eu queria e quando queria ajustar algo, foi fácil voltar às etapas anteriores e refinar.

Agora que tenho a base funcionando, posso evoluir a aplicação aos poucos - colocar um banco de dados decente e quem sabe uma funcionalidade de lembretes automáticos que me dê bronca por pular treinos... A melhor parte é que a estrutura criada pelo Kiro facilita todas as minhas ideias mirabolantes!

Quer experimentar você mesmo? Baixe o Kiro em kiro.dev e comece com um projeto simples que resolva algum problema seu. Pode ser um organizador de tarefas, um livro de receitas, ou qualquer coisa que você sempre quis construir mas nunca teve tempo. O importante é começar com requisitos claros e deixar o Kiro cuidar da parte técnica.

Comente aqui também suas ideias de evolução para minha aplicação e vamos todos ficar bem malhados juntos (ou fingir rs)!

Top comments (0)