Simple Science

Ciência de ponta explicada de forma simples

# Informática # Engenharia de software

Desenvolvimento Moldável: Simplificando Insights de Softwares

Aprenda como o desenvolvimento moldável transforma a compreensão de software com ferramentas personalizadas.

Oscar Nierstrasz, Tudor Gîrba

― 7 min ler


Transformando Software Transformando Software com Ferramentas Personalizadas com desenvolvimento moldável. Deixe o software mais fácil de entender
Índice

O desenvolvimento moldável ajuda a tornar o software mais fácil de entender. Ele faz isso permitindo que os desenvolvedores criem ferramentas personalizadas que podem responder a perguntas específicas sobre o software. Essa abordagem resulta em um sistema mais explicável, onde os usuários podem explorar interativamente o funcionamento interno do software.

Introdução: Desenvolvimento Moldável em Poucas Palavras

Sistemas de software guardam muita informação que pode ajudar tanto desenvolvedores quanto usuários comuns. No entanto, acessar esse conhecimento pode ser complicado. Recursos típicos para avaliar software, como código-fonte e sistemas em execução, podem não oferecer respostas claras. A documentação também pode estar desatualizada ou incompleta.

Embora ferramentas de análise de software possam ajudar, elas geralmente não dão conta do recado porque cada sistema é único. Muitas vezes, os desenvolvedores gastam muito tempo tentando entender o que um sistema faz e como ele funciona. Esse é um custo significativo no desenvolvimento de software.

Para melhorar essa situação, o desenvolvimento moldável cria sistemas que podem responder às suas próprias perguntas. Ao facilitar a adição de muitas ferramentas personalizadas, ele cria um modelo dinâmico do software que os usuários podem explorar. Essas ferramentas podem incluir recursos como inspetores, editores de código, depuradores e cadernos.

Por exemplo, em um jogo como Ludo, em vez de apenas ver o código-fonte ou executar o jogo, os desenvolvedores podem criar visões personalizadas para fazer perguntas específicas sobre o jogo e obter respostas fáceis. Eles podem visualizar os movimentos feitos, ver o estado atual do jogo e interagir com ele de uma forma mais compreensível.

Padrões de Desenvolvimento Moldável

O desenvolvimento moldável pode ser dividido em uma série de padrões que trabalham juntos. Esses padrões fornecem uma estrutura para criar tais sistemas.

Padrões de Ferramentas

Esses padrões focam na construção de ferramentas personalizadas que são fáceis de criar e usar.

Ferramenta Moldável

Se as ferramentas existentes não atendem às necessidades de um domínio específico, uma ferramenta moldável pode ser desenvolvida. Em vez de criar plugins complexos, que podem ser caros, uma ferramenta moldável permite a personalização em tempo de execução. Por exemplo, um executor de testes poderia identificar casos de teste automaticamente com base em convenções de nomenclatura comuns ou anotações, facilitando a execução de testes específicos de um domínio.

Playground Contextual

Ao usar uma ferramenta moldável, um playground contextual oferece uma maneira de explorar entidades de software de forma interativa. Esse ambiente permite que os usuários escrevam e testem pequenos trechos de código sem precisar alternar entre diferentes ferramentas. Por exemplo, em uma aplicação Python, um playground poderia permitir que os usuários manipulassem instâncias reais de objetos e testassem suas ideias sem precisar configurar testes separados ou trabalhar em um editor padrão.

Visão Personalizada

Visões personalizadas ajudam a apresentar informações do domínio de forma eficaz. Em vez de usar uma visão genérica que pode não destacar detalhes importantes, os desenvolvedores podem criar visões sob medida. Usando um jogo de Ludo como exemplo, eles podem construir uma visão personalizada mostrando os movimentos de cada jogador, facilitando a compreensão do estado atual do jogo.

Busca Personalizada

Em modelos de domínio complexos, navegar entre entidades pode ser complicado. Recursos de busca personalizada permitem que os usuários localizem entidades com base em diferentes critérios rapidamente. Por exemplo, dentro de um aplicativo de agenda, os usuários podem procurar contatos ou endereços específicos, aumentando a eficiência.

Ação Personalizada

Para tarefas repetitivas, ações personalizadas simplificam a execução. Em vez de rodar os mesmos trechos de código repetidamente, um desenvolvedor pode encapsular ações comuns em um único clique de botão dentro da ferramenta moldável. Isso ajuda a agilizar processos e reduz a chance de erros.

Narrativa Composta

Explicar um sistema de software pode ser desafiador algumas vezes. Uma narrativa composta combina várias visões em uma história coesa, ajudando os usuários a entender recursos ou problemas específicos. Ao passar por várias etapas, os usuários podem ver como navegar em um sistema ou solucionar um problema de forma eficaz.

Padrões de Modelagem

Esses padrões focam em como estruturar melhor as entidades do domínio para melhorar a compreensão e a consulta.

Objeto Moldável

Um objeto moldável é uma instância viva de uma entidade do domínio que os desenvolvedores podem interrogar. Em vez de escrever código em um editor de texto tradicional, eles podem interagir com um objeto ao vivo para fazer perguntas e obter insights. O processo de exploração pode levar à criação de ferramentas personalizadas que aumentam a compreensão.

Objeto de Exemplo

Objetos de exemplo servem como instâncias concretas que mostram estados ou comportamentos específicos no sistema. Eles podem ser úteis para testes e documentação, permitindo que os desenvolvedores se refiram ou demonstrem rapidamente a funcionalidade.

Wrapper de Dados Moldável

Ao trabalhar com dados existentes, aplicar um wrapper de dados moldável torna os dados mais fáceis de gerenciar. Em vez de lidar com estruturas de dados brutas, os desenvolvedores podem encapsular os dados em uma classe dedicada que representa melhor os conceitos do domínio. Isso permite a criação de visões e ações personalizadas que refletem a interpretação dos dados.

Wrapper de Coleção

Semelhante aos wrappers de dados moldáveis, os wrappers de coleção lidam com grupos de objetos do domínio. Eles permitem que ferramentas personalizadas sejam aplicadas a coleções, melhorando a navegação e as habilidades de exploração.

Padrões de Processo

Padrões de processo orientam como organizar e gerenciar as tarefas envolvidas no desenvolvimento moldável.

Diário de Projeto

Manter um diário de projeto ajuda a acompanhar o progresso, decisões e experimentos. Em vez de criar documentação após a conclusão de um projeto, os desenvolvedores podem usar um caderno ao vivo para documentar sua jornada. Essa abordagem permite manter um histórico das mudanças e decisões que podem melhorar os esforços de desenvolvimento futuros.

Acúmulo de Ferramentas

Antes de começar o desenvolvimento moldável, pode ser necessário configurar ferramentas fundamentais. Isso pode incluir analisadores para formatos específicos ou pontes para outros sistemas. Investir nessas ferramentas no começo pode acelerar o processo de desenvolvimento real.

Ponto Cego

Identificar "pontos cegos" em um sistema é crucial. Essas são áreas que as partes interessadas acham desafiadoras de entender ou monitorar. Ao focar nesses pontos cegos, os desenvolvedores podem criar ferramentas que fornecem insights e ajudam as partes interessadas a ver o valor do desenvolvimento moldável.

Visão Simples

Ao desenvolver uma visão personalizada, começar simples é fundamental. Criar uma visão que transmita as informações essenciais permite eficiência. Se houver necessidade de mais complexidade depois, melhorias podem ser feitas.

Ferramenta de Análise Descartável

Às vezes, durante avaliações ou investigações de bugs, ferramentas personalizadas rápidas são benéficas. Essas ferramentas descartáveis podem ser desenvolvidas para fornecer insights imediatos sobre problemas específicos sem a necessidade de componentes reutilizáveis.

Conclusão

O desenvolvimento moldável oferece uma maneira de tornar sistemas de software mais explicáveis e fáceis de explorar. Ao dividir o processo em padrões compreensíveis, os desenvolvedores podem se concentrar em atender a necessidades específicas dentro de seus projetos. Ao evoluir continuamente esses sistemas com ferramentas personalizadas que se adaptam às necessidades dos usuários, o software pode se tornar mais acessível tanto para partes interessadas técnicas quanto não técnicas.

Artigos semelhantes