Ubiquitous Language

Já faz algum tempo que alguns alunos me perguntaram o que era Ubiquitous Language, com isso me motivou a fazer este post. Espero realmente que seja útil.

Ubiquitous Language é um conceito muito comum em DDD(Domain-driven Design).

Basicamente é um dos conceitos que o DDD utiliza, que tem como finalidade: “falar” a língua do usuário/cliente . Manter uma única linguagem de domínio que seja entendível tanto para os desenvolvedores quanto para o cliente.

Vamos falar de outra forma.
No DDD você tem o Domain/Domínio que é o primeiro D, que é a parte mais “importante” desta abordagem. Pois esse domínio é exatamente o problema que queremos resolver, o problema do cliente.

Problemas
Normalmente não conhecemos a área do cliente, por isso se faz necessário o entendimento por completo ou parcial do domínio(problema do cliente).

O cliente usando a sua linguagem pede algo que pode ser entendido[isso acontece sempre] de outra forma pelo desenvolvedor ou analista.

Outro problema também seria a falta de cuidado para definição de nomes de classes, métodos, variáveis etc, causando problemas de entendimento na equipe e favorecendo ao aumento na dificuldade de manutenção dessas classes e entendimento no código.

Possível solução
Para esses “problemas” anteriores se os desenvolvedores tivessem o conceito de Ubiquitous Language bem definidos na equipe, esses problemas poderiam ser evitados. Quando se tem por exemplo uma classe chamada StrUtil.java onde muitos de nós adotamos como classes utilitárias[inclusive eu confesso, mas não da forma como passada aqui claro 😉 ] é no mínimo perigoso, pois o nome dessas classes não refletem bem a sua real função.

Mas então você defende: “- Ah mas é uma classe utilitária de strings, onde você pode fazer certas manipulações com Strings”.

Ok ! Mas muitas vezes por não tem um bom senso o desenvolvedor acaba criando uma classe UtilUtil, ou seja, essa sua classe StrUtil não está manipulando somente String ela pode está fazendo determinadas funções que são completamente diferentes, métodos que não tem nada em comum, como manipulação de datas etc, e esse é o problema.

O que o DDD com o Ubiquitous Language fala é bem simples:

Todo comportamento do seu sistema deveria estar implementado em classes cujos nomes devem fazer parte do domínio do problema, do domínio do cliente.

Isso é válido não somente para nomes de classes,mas para métodos, variáveis e tudo dentro do domínio, assim como também para o problema em si.
Esses nomes devem ter o mesmo[se não bem próximo] significado tanto para a equipe quanto para o cliente, facilitando assim a comunicação entre os mesmo, sem falar que irá melhorar muito a manutenção e entendimento do código.

Essa “linguagem” é um meio termo entre a linguagem técnica e a linguagem do cliente. O seu cliente não irá entender seu dialeto técnico e você provavelmente não irá entender[pelo menos no início] a linguagem do cliente. Assim utilizando esse conceito você irá facilitar a comunicação entre todos[desenvolvedores, analistas e cliente].

O cliente[conhecedor do domínio/problema em detalhes] deve conversar com os desenvolvedores[que possuem o conhecimento para a solução] que conhecem a programação em detalhes, para juntos, chegarem a uma língua comum, onde que todos consigam se entender e que será usada não somente nas conversas mas também no desenvolvimento do software.

Com essas conversas constantes e com a utilização desse conceito de linguagem comum, todos juntos chegarão a um consenso sobre o domínio, definindo assim o modelo do domínio[Domain Model].

Domain Model em resumo é a abstração do problema real, criada em parceria com os especialistas no domínio[normalmente o cliente e/ou analista] com os desenvolvedores.

É utilizando esse modelo que os desenvolvedores vão implementar em código[seu código irá refletir a solução para o problema do cliente], exatamente como foi acordado e as chances de cair naquele velho problema de telefone sem fio[cliente diz X, analista entende –X+2, desenvolvedor implementa Y] serão mais escassas.

Conclusão
Podemos observar que o conceito de Ubiquitous Language é bem simples, e parece que não tem muita importância, pois no resumo é apenas a padronização de nomes de métodos, classes etc, claro que tudo dentro do domínio.

Mas vimos também que não é somente isso, a idéia de Ubiquitous Language no DDD é criar um canal de comunicação entre o cliente e a principal peça: o desenvolvedor.
Pois é ele que irá criar o produto que o cliente deseja.

E através da Ubiquitous Language podemos juntamente com o cliente definir um modelo para o sistema, fazendo com o que as chances de problemas de má interpretação sejam anuladas[ou parcialmente anuladas], assim deixando o sistema mais limpo, fácil manutenção, simples alteração e de quebra, sendo entregue no prazo.

Bem espero ter conseguido explicar um pouco sobre Ubiquitous Language.

Abraços

3.607 Comments on “Ubiquitous Language

  1. Muito elucidativo, parabéns professor e estou no aguardo do retorno da turma de java. Um abraço!

  2. Nada melhor que a própria definição do autor: “A language structured around the domain model and used by all team members to connect all the activities of the team with the software.”

    O que seus alunos precisam realmente entender é que Ubiquitous Language não é uma linguagem utilizada apenas no código, porém em qualquer atividade (documentação, especificação, testes, código, conversas entre a equipe e especialistas etc) durante o desenvolvimento do software.

    Vale lembrar também que UL e domain-model são a cerne de Domain-Driven Design.

    Post bacana, parabéns!

  3. @João Paulo
    Obrigado cara que bom que consegui passar direitinho.

    @Rafael Ponte
    Exatamente, como falei um pouco na metade do post. Não é somente para o código, ele reflete no código, pois ela é aplicada antes do código, utilizada nas conversas entre o cliente e a equipe, e no final acaba refletindo no código.

    Não adianta aplicar UL no código se não está aplicando isso na equipe quando ela vai se comunicar com o cliente[documentos, casos de uso e tudo que você falou].

    Obrigado.

  4. Buying a franchise is one of the best ways for people to achieve their dreams of owning a business and working for themselves with the support and structure of a proven brand system. And while buying a franchise may have once seemed like an unlikely venture for individuals working with less startup funds, these days there are many great low-cost franchises with high-profit opportunities in various industries for motivated entrepreneurs from all walks of life to explore. Kentucky Fried Chicken charges a $45,000 franchise fee, which is on the high end of the low-cost range. But total start-up costs for a KFC location vary between $1.3 million and $2.5 million. It’s a business model where the franchisor (the franchise owner) allows other people (the franchisees) to open a business under their brand to market or sell their products or services.
    http://www.limitedsofa.com/Buy-Masks-Efficiency-Of-N95-Ffrs-Protecting-Against-Diseases.html
    Are you especially good at a certain type of cleaning, such as general janitorial cleaning, carpets, or windows? The initial investment to start a cleaning business is reasonable, especially when you consider that some clients prefer that you use their products. Also, cleaning is something you can do in off hours, like after businesses close for the evening or when homeowners are not around on evenings or weekends, which makes it one of the most successful small business ideas. Have you noticed flower arrangements in shops, restaurants, coffee shops, and at baby showers and weddings? If you’re gifted with arranging flowers and making them look beautiful, look into starting a flower arrangement business. Start small with one or two orders and see if you like it. From there, decide if it’s for you!

  5. Sú celkovo štyri a po ich odkrytí potrebujete nájsť konkrétne číslo, ako ďaleko sú ochotní zájsť. Nechápte ma zle, aby túto zbierku chránili a starali sa o ňu. Medzi ďalšie voliteľné vybavenie patrí ergonomický stôl a stolička, im povie ešte viac. Osobne radi skúšame nové spôsoby hrania automatov a ak chcete získať odmenu za výhru, ktoré oslovia hráčov všetkých tvarov a veľkostí. Preto ak prevádzkovateľ hazardných hier prostredníctvom SMS vkladu získal licenciu od príslušných orgánov na Slovensku a prevádzkovateľ spĺňa všetky zákonné požiadavky, je legálne, aby na Slovensku ponúkal služby SMS vkladu. Ak však prevádzkovateľ nemá licenciu alebo nespĺňa zákonné požiadavky, potom sú SMS vkladové hazardné hry na Slovensku nelegálne.
    http://www.masskorea.co.kr/bbs/board.php?bo_table=free&wr_id=1098834
    Poďme sa porozprávať o tom, ako je na Slovensku legálne doplniť herný účet v casino prostredníctvom SMS, aké je to anonymné a bezpečné. Podelíme sa aj o naše skúsenosti s využívaním tejto platobnej metódy na hazardnú zábavu. Doxxbet vklad cez SMS uskutočníte zaslaním jednoduchej sms správy s kódom na číslo 8869. Pokiaľ chcete peniaze ihneď na účet, zrejme najrýchlejšie je požiadať o výber na pobočke online kasína, v ktorom ste výhru dosiahli. Výber na pobočke umožňujú online kasína Fortuna, Tipsport a Niké. Tipos casino SK ⏩ recenzia a prehľad ponuky: hracie automaty, aplikácia, registračný bonus, free spiny, SMS casino, online poker… Pokiaľ chcete peniaze ihneď na účet, zrejme najrýchlejšie je požiadať o výber na pobočke online kasína, v ktorom ste výhru dosiahli. Výber na pobočke umožňujú online kasína Fortuna, Tipsport a Niké.

  6. You don’t need real money or even real cards. Check out these best free poker apps to play a game of Texas Hold’em Poker with friends online. *Featuring tournament Auto Notes designed by Shaun Deeb exclusively for PokerTracker 4 There are other nice mobile apps out there (PokerStars being one, of course), but with ultra tough games we don’t recommend it for players new to online poker. Give 888poker a try right now by clicking the “Get Bonus” button on the right. If you’re not ready to play real money poker yet, 888poker also offers free play-money games where you learn the ropes with virtual poker chips. Exclusive high-roller VIP bonuses for ProfessionalRakeback readers are now available at Cafe Casino! These proprietary Cafe Casino bonus codes entitle our customers to double the bonuses found on other websites! Simply utilize the appropriate code for your preferred deposit method:
    http://wsgulbi.com/gshop/bbs/board.php?bo_table=free&wr_id=12792
    Tak kenal maka tak sayang, begitulah kata kata emas yang dikenal oleh masyarakat Indonesia. Sebelum anda ingin terjun di KOISLOT88 lebih jauh lagi, alangkah lebih baik jika anda mengenal dan mendalami situs judi slot online terpercaya kami. Penting sekali untuk mengetahui kelebihan dari situs judi slot online KOISLOT88. Maka dari itu kami akan memberikan informasi penting mengenai situs judi slot online terpercaya KOISLOT88: Anda akan mendapatkan banyak keuntungan saat bermain judi slot online. Selama Anda bergabung sebagai member, maka Anda bisa bermain banyak permainan judi slot yang disediakan situs slot Slot88.Seperti misalnya slot online gacor yang mudah menang dan pastinya memberikan peluang menang besar untuk setiap membernya. 9. Slot Gacor JokerGamingBagi kalian yang sudah lama mengikuti permainan judi slot ini tentu tidak asing dengan provider slot joker gaming ini karena sudah banyak penggemar slot indonesia yang bermain dan mencoba keberuntungannya melalui provider tersebut. Ditambah lagi slot joker sebagai pengembang dan penyedia permainan judi slot indonesia selalu memberikan bonus jackpot besar untuk menarik perhatikan para pemain slot di Indonesia. Tidak hanya itu, winrate dari joker slot juga cukup tinggi sehingga memberikan keuntungan yang lebih buat seluruh pemainnya.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

*

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.