Introdução

Neste tutorial, mergulharemos na rica experiência de integração do Smalltalk com ambientes de desenvolvimento ágil utilizando o framework Pharo. O Pharo é um ambiente de desenvolvimento altamente produtivo que permite a rápida prototipagem e o desenvolvimento colaborativo de software. Neste artigo, vamos explorar como utilizar o Pharo para integrar ferramentas modernas de desenvolvimento ágil, permitindo que as equipes trabalhem de forma mais eficaz e produtiva. Abordaremos a configuração do ambiente, a criação de uma aplicação simples, a implementação de funcionalidades e como testar nosso código. Este é um guia ideal para desenvolvedores e equipes que desejam revitalizar processos de desenvolvimento e colaboração.

Etapas

  1. Configuração do Ambiente Pharo

    Primeiro, vamos instalar o Pharo em sua máquina. Acesse a página oficial do Pharo e baixe a versão mais recente. Após o download, extraia os arquivos em um diretório de sua preferência. Abra o Pharo Launcher e inicie uma nova imagem.

    commands
    # Download do Pharo
    wget http://get.pharo.org/64/70/pharo.zip
    # Extraia os arquivos em um diretório
    unzip pharo.zip -d ~/pharo

  2. Criando um Novo Projeto Pharo

    Após abrir o Pharo, crie um novo projeto utilizando o ambiente de desenvolvimento. Clique em ‘World’, selecione ‘New’ e depois ‘Project’. Dê um nome adequado ao seu projeto, como ‘AgilePrototyping’.

  3. Instalando Ferramentas de Desenvolvimento Ágil

    Instale a biblioteca Roassal para visualização de dados e a biblioteca Glorp para interação com bancos de dados. No ambiente Pharo, use o seguinte script para carregar as bibliotecas:

    script
    Metacello new
      baseline: 'Roassal';
      repository: 'github://svenvc/roassal2';
      load.
    
    Metacello new
      baseline: 'Glorp';
      repository: 'github://pharo-contributions/glorp';
      load.

  4. Criando uma Classe de Produto

    Crie uma nova classe chamada `Produto`. Esta classe terá atributos como nome e preço. No playground do Pharo, insira o seguinte código para definir a classe:

    Produto.class
    Object subclass: #Produto
    	instanceVariableNames: 'nome preco'
    
    Produto >> nome: aNome
    	nome := aNome.
    
    Produto >> preco: umPreco
    	preco := umPreco.
    
    Produto >> nome
    	^ nome.
    
    Produto >> preco
    	^ preco.

  5. Implementando Métodos de CRUD

    Vamos implementar métodos básicos para criar, ler, atualizar e deletar produtos. Primeiro, crie um repositório simples utilizando uma coleção para armazenar os produtos.

    ProdutoRepository.class
    Object subclass: #ProdutoRepository
    	instanceVariableNames: 'produtos'
    
    ProdutoRepository >> initialize
    	produtos := OrderedCollection new.
    
    ProdutoRepository >> add: umProduto
    	produtos add: umProduto.
    
    ProdutoRepository >> all
    	^ produtos.
    
    ProdutoRepository >> update: umProduto
    	|existing|
    	existing := produtos detect: [:p | p nome = umProduto nome] ifNone: [^nil].
    	existing preco: umProduto preco.
    
    ProdutoRepository >> remove: umNome
    	produtos remove: (produtos detect: [:p | p nome = umNome] ifNone: [nil]).

  6. Testando a Implementação com SUnit

    Utilize o SUnit para criar testes que validem o funcionamento de seus métodos de CRUD. Crie uma classe de testes chamada `ProdutoRepositoryTest` e defina os testes em seguida.

    ProdutoRepositoryTest.class
    TestCase subclass: #ProdutoRepositoryTest
    
    ProdutoRepositoryTest >> testAddAndRetrieve
    	|repo produto|
    	repo := ProdutoRepository new.
    	produto := Produto new.
    	produto nome: 'Produto Teste'; preco: 10.0.
    	repo add: produto.
    	self assert: (repo all size = 1).
    	self assert: ((repo all first) nome = 'Produto Teste').

  7. Executando os Testes

    Após definir a classe de testes, execute os testes utilizando o navegador SUnit. Você pode acessar o SUnit através do menu do Pharo e executar a classe `ProdutoRepositoryTest`.

  8. Iterando sobre Feedback e Refatoração

    Após os testes, itere sobre o feedback e faça as refatorações necessárias no código. O Pharo permite que você modifique o código em tempo real, o que é essencial para o desenvolvimento ágil.

Conclusão

Neste tutorial, exploramos a integração do Smalltalk com ferramentas modernas de desenvolvimento ágil por meio do framework Pharo. Aprendemos como configurar o ambiente, criar um projeto, implementar uma classe simples, desenvolver métodos de CRUD e testar nossa aplicação. O Pharo, com sua natureza interativa e dinâmica, possibilita uma rápida prototipagem e colaboração efetiva entre equipes, fazendo dele uma escolha excelente para desenvolvimento ágil. Agora você está equipado com o conhecimento para começar a implementar suas próprias soluções utilizando Smalltalk e Pharo.

Hashtags

#Smalltalk #Pharo #DesenvolvimentoÁgil #PrototipagemRápida #Colaboração #Frameworks