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:
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.
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.
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.
[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
|