Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Diferente de uma linguagem de uso geral, como C# ou UML, uma DSL (linguagem específica de domínio) é projetada para expressar instruções em um espaço de problema, ou domínio, específico.
DSLs conhecidas incluem expressões regulares e SQL. Cada DSL é muito melhor do que uma linguagem de uso geral para descrever operações em cadeias de texto ou em um banco de dados, mas muito pior para descrever ideias fora do próprio escopo. Setores individuais também têm as próprias DSLs. Por exemplo, no setor de telecomunicações, as linguagens de descrição de chamadas são amplamente usadas para especificar a sequência de estados em uma chamada telefônica, e no setor de viagens aéreas uma DSL padrão é usada para descrever reservas de voo.
Sua empresa e seu projeto também lidam com conjuntos especiais de conceitos que podem ser descritos com uma DSL. Por exemplo, você pode definir uma DSL para uma destas aplicações:
Planejamento de caminhos de navegação em um site.
Diagramas de fiação para componentes eletrônicos.
Redes de correias transportadoras e equipamentos de manuseio de bagagem para um aeroporto.
Quando projeta uma DSL, você define uma classe de domínio para cada um dos conceitos importantes no domínio, como uma página da Web, uma lâmpada ou um balcão de check-in do aeroporto. Você define relações de domínio, como hiperlinks, fios ou uma correia transportadora, para vincular os conceitos.
Os usuários da DSL criam modelos. Modelos são instâncias da DSL. Por exemplo, eles descrevem um site específico, ou a fiação de um dispositivo específico, ou o sistema de manuseio de bagagem em um aeroporto específico.
Os usuários podem exibir um modelo como um diagrama ou como um formulário do Windows. Os modelos também podem ser exibidos como XML, que é como são armazenados. Quando define uma DSL, você define como as instâncias de cada classe de domínio e relação aparecem na tela do usuário. Uma DSL típica é exibida como uma coleção de ícones ou retângulos conectados por setas.
A seguinte figura mostra um modelo pequeno em uma DSL diagramática:
O que você pode fazer com DSLs
Uma aplicação típica de uma DSL é gerar código de programa ou outros artefatos. Ao definir uma DSL, você pode definir modelos de texto que leem um modelo da DSL e geram arquivos de texto.
Por exemplo, você pode escrever modelos que pegam a planta de um aeroporto e geram parte do software para manipulação de bagagem, bem como alguns dos documentos de usuário que descrevem a planta.
Quando tiver definido uma DSL, você poderá distribuí-la para outros usuários que poderão instalá-la nos próprios computadores. Os usuários da DSL podem criar e editar modelos no Visual Studio.
Você também pode definir comandos de menu e outras ferramentas que ajudam os usuários a editar a DSL, restrições de validação para ajudar a garantir que a DSL seja usada corretamente e modelos de item que ajudam os usuários a criar instâncias. Você pode encapsular uma ou mais DSLs com as respectivas ferramentas e outras extensões do Visual Studio como um pacote integrado.
Normalmente, uma linguagem específica de domínio é criada quando uma equipe de desenvolvimento precisa escrever código semelhante para vários produtos. Por exemplo, uma empresa especializada em sistemas de manuseio de bagagem pode definir uma DSL de acompanhamento de bagagem com base na qual possa gerar parte do código para cada instalação. Os benefícios da DSL são que ela pode ser compreendida pelos clientes, que o código gerado com base nela é confiável e que o sistema pode ser atualizado rapidamente se os requisitos dos clientes forem alterados.
As Ferramentas de Linguagem Específica de Domínio permitem que você crie uma linguagem específica de domínio que tenha seu designer gráfico e sua notação de diagrama e, em seguida, use a linguagem para gerar o código-fonte apropriado para cada projeto.
Desenvolvimento específico de domínio
Desenvolvimento específico de domínio é o processo de identificar as partes dos aplicativos que podem ser modeladas usando uma linguagem específica de domínio e, em seguida, construir a linguagem e implantá-la para desenvolvedores de aplicativos. Os desenvolvedores usam a linguagem específica de domínio para construir modelos específicos para seus aplicativos, usam os modelos para gerar código-fonte e, em seguida, usam o código-fonte para desenvolver os aplicativos.
Aspectos do desenvolvimento específico de domínio gráfico
Uma linguagem específica de domínio gráfica precisa incluir os seguintes recursos:
Notation
Modelo de domínio
Geração de artefato
Serialização
Integração com o Visual Studio
Notation
Uma linguagem específica de domínio precisa ter um conjunto razoavelmente pequeno de elementos que possam ser definidos e estendidos facilmente para representar constructos específicos do domínio. Uma notação é composta por formas, que representam os elementos, e conectores, que representam as relações entre elementos, em uma superfície de diagrama gráfico. Nas Ferramentas de Linguagem Específica de Domínio, as formas podem ser estendidas e refinadas de modo a representar os elementos da linguagem específica de domínio.
Modelo de domínio
Uma linguagem específica de domínio precisa combinar o conjunto de elementos e as relações entre eles em uma gramática coerente. Ela também precisa definir se combinações de elementos e relações são válidas. Por exemplo, as linguagens de programação normalmente impedem a herança circular, na qual uma classe é derivada de uma segunda classe e a segunda classe é derivada da primeira classe. Restrições também podem ser usadas para expressar a lógica de negócios, por exemplo, uma pessoa não pode ser dependente de si mesma. As Ferramentas de Linguagem Específica de Domínio usam restrições para expressar os tipos de limitações que a maioria das linguagens específicas de domínio exige.
Geração de artefato
Uma das principais finalidades de uma linguagem específica de domínio é gerar um artefato, por exemplo, o código-fonte, um arquivo XML ou alguns outros dados utilizáveis. Normalmente, uma alteração no modelo significa uma alteração no artefato. Você pode usar Ferramentas de Linguagem Específica de Domínio para gerar artefatos e regenerá-los quando alterar o modelo.
Serialização
Uma linguagem específica de domínio precisa ser persistida de alguma forma que possa ser editada, salva, fechada e recarregada. As Ferramentas de Linguagem Específica de Domínio usam um formato XML que permite definir e personalizar como a linguagem específica de domínio é serializada ou persistida.
Integração com o Visual Studio
Como as Ferramentas de Linguagem Específica de Domínio estão hospedadas no Visual Studio, elas estendem muitas janelas e controles do Visual Studio. Elas também permitem personalizar o comportamento de comandos de menu, itens de caixa de ferramentas e outros elementos da interface do usuário.
Você também pode criar um Adaptador de Barramento de Modelo para a linguagem específica de domínio. Esse adaptador permite referenciar um modelo e elementos dentro de um modelo, e permite escrever código que possa acessar e atualizar uma instância da DSL. Usando o mecanismo avançado do Barramento de Modelo, você pode escrever extensões do Visual Studio que funcionam com vários modelos. Você também pode escrever aplicativos autônomos que funcionam com modelos. Para obter mais informações, confira Integrar modelos usando o Visual Studio Modelbus.
Benefícios do desenvolvimento específico de domínio
Uma linguagem específica de domínio pode fornecer os seguintes benefícios:
Contém constructos que se ajustam exatamente ao espaço de problema.
Diferente das linguagens de uso geral, uma linguagem específica de domínio é composta por elementos e relações que representam diretamente a lógica do espaço de problema. Por exemplo, um aplicativo de apólice de seguro precisa incluir elementos de apólices e sinistros. Uma linguagem específica de domínio facilita a criação do aplicativo e a localização e correção de erros de lógica.
Permite que não desenvolvedores e pessoas que não conhecem o domínio entendam o design geral.
Usando uma linguagem específica de domínio gráfica, você pode criar uma representação visual do domínio para que não desenvolvedores possam entender facilmente o design do aplicativo.
Facilita a criação de um protótipo do aplicativo final.
Desenvolvedores podem usar o código que seu modelo gera para criar um aplicativo protótipo que possam mostrar a clientes.
O processo de desenvolvimento específico de domínio
A maioria das equipes de desenvolvimento de software que usam linguagens específicas de domínio segue estas etapas para criar e usar modelos:
A equipe distingue as partes variáveis do domínio das partes que nunca mudam.
Os desenvolvedores escrevem código para as partes fixas e deixam pontos de extensão para as partes variáveis.
O desenvolvedor de software líder ou o arquiteto cria uma linguagem específica de domínio que incorpora os padrões de design das partes fixas do domínio e os pontos de extensão para as partes variáveis.
O desenvolvedor de software líder ou o arquiteto implanta a linguagem específica de domínio para os desenvolvedores dos vários aplicativos que a equipe produz.
Cada desenvolvedor cria um modelo que se aplica ao aplicativo específico.