Bom dia pessoal,
Há algum tempo eu decidir realizar o meu trabalho de conclusão de curso sobre o Domain Driven Design, porém não irei falar de tudo e sim de um ponto especifico:
Linguagem Ubíqua.
Nos momentos em que escrevi a fundamentação teórica e comecei a conviver algumas situações em projetos onde a linguagem falada pelos envolvidos não era tão coerente para o projeto, e o que isso acarretava? Sérios problemas, principalmente na documentação e elaboração até mesmo do código, onde o analista passava algo totalmente o contrário do cliente e o desenvolvedor entendia mais nada, pois só pensava em termos técnicos (sou testemunha disso, quando fiquei batendo na tecla de padrões e ninguem entendia o que eu falava).
Eric Evans destaca que:
Qualquer pessoa técnica contribuindo para o modelo deve programar, pelo menos tocar no código, independente do papel desempenhado no
projeto. Um responsável por mudar o código deve sempre
aprender a expressar o modelo através do código. Todo desenvolvedor
deve estar envolvido na discussão sobre o modelo e ter
contato com os especialistas do domínio.
Esse trecho comentado em seu livro tem sua questão importante, pois ainda temos um grande problema. Os papeis independentes, é muito comum hoje em dia, ainda encontrar Analistas de Negócios / Sistemas que não sabem programar (leia-se não entende uma leitura no código), por isso fica mais complicado essa separação de papeis. Na minha concepção eu defendo que o programador (para muitos Eng. de Software) ele tem que está mais ativo nas implementações, por tanto separar a suas atividades na compreensão e modelagem da aplicação, na minha concepção, é impressidivel para a evolução do sistema e documentação. E outro ponto é que observei muitos Analistas focarem nas bases, ou seja, primeiro construir modelos de "Entidade Relacional" e depois partir para
Por estes fatos, é que eu encontro problemas ao estabelecer uma comunicação onde esteja presente a linguagem Úbiqua ou Onipresente, pois é dificil para os participantes não terem o seu jargão técnico. E então como uma equipe, ágil, ela pode começar a documentar, testar, codificar... Enfim realizar suas atividades com uma comunicação mais aberta e presente em todos os pontos do projeto. Esteja esta comunicação diante o cliente e até entre a equipe, para que todos possam falar a mesma lingua.
É comum hoje termos alguns desenvolvedores que estão sempre em busca de obter conhecimentos mais elevados em Model Design, porque quando é representado de forma visual para ele fica até mais fácil de transferir aquilo para o código e a participação. E na minha visão, em alguns lugares que já passei eu vejo os Analistas discutirem mais sobre: Tabelas, Campos... Não há uma relação de objetos, do sentido real do sistema para solucionar um problema.
Eu concluo que todos os participantes, assim como o desenvolvedor tem que ter em mente que: "Toda vez onde alguém perceber que um determinado conceito do domínio
possui várias palavras que o represente, essa pessoa deve tentar
readequar tanto a linguagem falada e escrita, quanto o código".
Bom, depois de todo esse resumo o meu TCC se aprofundou nesta questão da "A importância da Linguagem Ubiqua para estabelcer uma comunicação mais presente em todo o projeto". Nessa linguagem estão termos que fazem parte das conversas diárias
entre especialistas de negócio e times de desenvolvimento. Todos devem
usar os mesmos termos tanto na linguagem falada quanto no código.
A partir desse modelo irei realizar a metodologia com uma pesquisa de campo, entrevistando Analistas e Times de Desenvolvimento, não vou frizar projetos e sim se eles conseguem estabelecer essa comunicação.
Agora peço a ajuda de todos, alguém poderia me dar dicas de formulação que essas perguntas podessem ser feitas para estes participantes?
Atenciosamente
Thiago Holder M. Silva