Conceito: Design de Domínio
Neste conceito, a noção de um domínio é destacada como a área de contexto ou de problema, na qual ocorre o desenvolvimento. Três aspectos também são descritos: modelagem, análise e engenharia de domínio.
Relacionamentos
Descrição Principal

Introdução

Uma parte principal de qualquer projeto de desenvolvimento é adquirir um bom entendimento do contexto ou domínio, relevante ao software ou sistema sendo desenvolvido. Invariavelmente, o domínio se refere ao domínio do problema, o qual é entendido como um precursor para definir o domínio de solução. Uma descrição do domínio pode ter muitos formatos. No entanto, a criação de um modelo desse domínio ajuda no entendimento, ajuda os investidores a compartilharem uma visualização comum no domínio, fornece a base para o escopo do domínio de solução e oferece a entrada conveniente para tarefas de análise e de design posteriores.

Pessoas diferentes têm idéias diferentes sobre a modelagem de domínio, e o termo "modelo de domínio" é fortemente muito utilizado: Ele pode descrever os vários recursos de um domínio específico, a semelhança e a variedade de recursos em um domínio, as informações sendo manipuladas em um domínio e assim por diante. Por isso, essa área pode ser categorizada de forma útil em três atividades principais:

Modelagem de Domínio

Um modelo de domínio é aquele no qual uma organização conduz seu negócio. Por isso, na prática o domínio para uma organização deve ser o mesmo que para qualquer outra organização que conduz o negócio neste domínio. Porém, de fato, as variações na modelagem de domínio são o resultado de dois fatores: o nível de detalhes do modelo de domínio e como o modelo é utilizado no contexto de metodologias específicas. Em sua simplicidade, o modelo de domínio de termo é utilizado para consultar o diagrama de classe criado para representar conceitos no domínio e seus relacionamentos principais. Normalmente, ele incluirá classes com atributos e operações para representar elementos de domínio conceituais. Esses modelos podem ser anotados com informações informais, suportadas por casos de uso de negócios de alto nível e assim por diante.

Freqüentemente, a modelagem de domínio inclui o conhecimento dos sistemas de software existentes em uso em um domínio. Nestas instâncias, boa parte do foco em modelagem de domínio é identificar e modelar pontos em comum e diferenças que caracterizam os sistemas de software dentro do domínio, para fornecer um entendimento de quais aspectos do domínio do problema são atualmente endereçados pelo software. A modelagem de domínio é utilizada para definir quais os sistemas de software são por modelagem de forma sistemática da funções, objetos, dados e relacionamentos dos sistemas de software no domínio. Isso resulta em:

  • Um conhecimento dos recursos dos sistemas de software utilizado no domínio.
  • Um vocabulário comum que captura o conhecimento de vários investidores do domínio.
  • Conclusão da documentação de sistemas de software em uso, sua função principal e relações.

Uma saída principal de modelagem de domínio é um dicionário de domínio abrangente que captura os elementos utilizados na descrição dos recursos e entidades no modelo de domínio, em conjunto com uma visão geral de sua finalidade principal.

Para obter informações adicionais, consulte também o Artefato: Modelo de análise de Negócio.

Análise de Domínio

A análise de domínio é "o processo de identificação, coleta, organização e representação das informações relevantes em um domínio, baseado no estudo de sistemas existentes e suas histórias de desenvolvimento, conhecimento capturado de especialistas de domínio, teoria de base e tecnologia emergente em um domínio"[CMU/SEI-90-TR-21]

A Análise de Domínio deve "limitar com cuidado o domínio sendo considerado, considerar pontos em comum e diferenças dos sistemas no domínio, organizar um conhecimento dos relacionamentos entre os vários elementos no domínio e representar esse conhecimento de forma útil"[CARDS94].

Existem muitas formas diferentes de analisar o domínio, dependendo do formato dos modelos de domínio sendo analisados e dos diferentes objetivos para a análise. Por exemplo, algumas técnicas tem foco na análise de semelhanças e diferenças em famílias de produtos. A FODA (Feature Oriented Domain Analysis) é direcionada na identificação de recursos visíveis do usuário distinto dentro de uma classe de sistemas de software relacionados. Outras técnicas de análise de domínio focalizam pontos de vista específicos ou interesses dentro de um domínio. A CWSA (Cognitive Work and Safety Analysis) tem foco o trabalho executado por pessoas, as decisões tomadas e as estratégias utilizadas para suportar a identificação de deficiências de segurança em um sistema.

Engenharia de Domínio

A engenharia de domínio é uma abordagem para ativação de melhor eficiência e reaproveitamento, para realização de uma família de sistemas semelhantes. Ela abrange todas as tarefas para construção de recursos principais de software. Essas tarefas incluem a identificação de um ou mais domínios, a captura da variação em um domínio, a construção de um design adaptável e a definição dos mecanismos para conversão de requisitos em sistemas criados a partir de componentes reutilizáveis. Os produtos (ou recursos de software) dessas tarefas são modelos de domínio, modelos de design, idiomas específicos de domínio, geradores de código e componentes de código. Esse conjunto de tarefas é fundamental para a criação de uma abordagem sistemática para reutilização em uma organização.

Referências

[CARDS94] CARDS: Nilson, Roslyn; Kogut, Paul; & Jackelen, George Component Provider's and Tool Developer's Handbook Central Archive for Reusable Defense Software (CARDS). STARS Informal Technical Report STARS-VC-B017/001/00. Unisys Corporation , March 1994.

[CMU/SEI-90-TR-21]Feasibility Study (CMU/SEI-90-TR-21, ADA 235785).

[EVANS03] E. Evans, Domain-Driven Design: Tackling Complexity in the Heart of Software, Addison-Wesley, 2003.

[FODA] Kang, Kyo C.; Cohen, Sholom G.; Hess, James A.; Novak, William E.; & Peterson, A. Spencer Feature-Oriented Domain Analysis (FODA)

[SEI] Domain Engineering at the Software Engineering Institute: http://www.sei.cmu.edu/domain-engineering/domain_eng.html