O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
Melhorando  a comunicação entre stakeholder/desenvolvedores com a  Linguagem Ubíqua   Alline Watkins
O problema: <ul><li>Programadores conversam usando jargões técnicos  ( design patterns, abreviações, termos técnicos ) </l...
O Acordo: <ul><li>Agile prega que programadores devem usar a linguagem de domínio como nomenclaturas no código fonte (“ubi...
<ul><li>u. bí .qu:o   </li></ul><ul><li>que está ao mesmo tempo em toda a parte, onipresente    (pt.Wikcionário.org) </li>...
Histórias de Usuário Reuniões E-mails   Mensagens Intântaneas Planejamento de Projeto Documentação do Software E  CÓDIGO F...
As vantagens... Comunicação mais Eficiente Menor  risco de desentendimentos Conhecimento do Domínio armazenado no código f...
NÃO Quando o  Usuário  clica no  Grid , o  sistema  exibe  0 ou X dependendo que qual é o  Usuário  atual.   Exemplo de Hi...
NÃO . Integer  i  =  new Integer(); . String  char1  =  new String(); . public class GameDAO() { } . catch (Exception e) E...
/**   * Exibe a string O ou X na celula do jogo. */ public class   MostraCellGrid { public static void   exibeUsuario  (Gr...
Qual das duas opções um Stakeholder melhor entenderia ? <ul><li>Movimento do Jogador      Efetiva o movimento do jogador n...
<ul><li>[email_address] </li></ul>!!  OBRIGADA !!
Próximos SlideShares
Carregando em…5
×

Ubiquitous Language - Portugues

1.382 visualizações

Publicada em

Ubiquitous Language - Portugues

  1. 1. Melhorando a comunicação entre stakeholder/desenvolvedores com a Linguagem Ubíqua Alline Watkins
  2. 2. O problema: <ul><li>Programadores conversam usando jargões técnicos ( design patterns, abreviações, termos técnicos ) </li></ul><ul><li>Especialistas do Domínio usam terminologias específicas de suas áreas de conhecimento (economia, hotelaria, telecom, …) </li></ul><ul><li>Computadores conversam linguagens de programação </li></ul><ul><li>alguém tem que ceder! </li></ul>
  3. 3. O Acordo: <ul><li>Agile prega que programadores devem usar a linguagem de domínio como nomenclaturas no código fonte (“ubiquitous language”, “system metaphor” na XP) </li></ul>
  4. 4. <ul><li>u. bí .qu:o </li></ul><ul><li>que está ao mesmo tempo em toda a parte, onipresente (pt.Wikcionário.org) </li></ul><ul><li>UBIQUITOUS LANGUAGE </li></ul><ul><li>. A language structured around the domain model and used by all team members to connect all the activities of the team with the software. (Excerpted from Domain-Driven Design by Eric Evans ) </li></ul><ul><li>. We understand each other. (Excerpted from The Art of Agile Development by James Shore and Shane Warden, published by O'Reilly. Copyright © 2008 the authors. All rights reserved.) </li></ul>
  5. 5. Histórias de Usuário Reuniões E-mails Mensagens Intântaneas Planejamento de Projeto Documentação do Software E CÓDIGO FONTE !! Onde aplicar:
  6. 6. As vantagens... Comunicação mais Eficiente Menor risco de desentendimentos Conhecimento do Domínio armazenado no código fonte Código mais compreensível (manutenibilidade, extensibilidade)
  7. 7. NÃO Quando o Usuário clica no Grid , o sistema exibe 0 ou X dependendo que qual é o Usuário atual. Exemplo de História de Usuário: SIM Quando o Jogador clica no Tabuleiro, o Jogo exibe o símbolo 0 ou X dependendo de qual é o Jogador atual. (retiradas de um software exemplo para o Jogo da Velha)
  8. 8. NÃO . Integer i = new Integer(); . String char1 = new String(); . public class GameDAO() { } . catch (Exception e) Exemplos no Código Fonte: SIM . String realSignificadoDaString = new String(); . public class ScoreDataLoader() { } . catch (Exception ExcecaoUsuarioNaoAutenticado) NÃO . Ambiguidades . Inconsistências . Sinônimos . Abreviações SIM . Clareza . Precisão . Reuso . Nomes Completos
  9. 9. /**   * Exibe a string O ou X na celula do jogo. */ public class   MostraCellGrid { public static void   exibeUsuario (Grid  grid , Cell  cell ) {            if (! Inicializacao. flag    &&  Inicializacao.statusJogo.getSequencia () == null     &&  isVazio ( grid ,  cell )) {   Inicializacao. flag = true;   String  mk =  exibeString ( Inicializacao.statusJogo        . getUsuarioCorrente (). getStringUsuario ());   grid .setHTML( cell. getRowIndex(),  cell .getCellIndex(),  mk );   Inicializacao.statusJogo.getStatus ()[ cell .getRowIndex()] [ cell .getCellIndex()] =  Inicializacao.statusJogo . getUsuarioCorrente (); GameEnd . verificaFim ( Inicializacao.statusJogo , cell .getRowIndex(),  cell .getCellIndex());        } (...) } Uma classe ANTES e DEPOIS da Linguagem Ubíqua /**   * Efetiva o movimento do jogador na grade do jogo.   */ public class  MovimentoDoJogador   { /**  * Quando o jogador clica numa celula na grade do tabuleiro o jogo desenha  * um 0 ou X dependendo de qual e o jogador atual.  */ public static void mover   (GradeDoJogo  gradeDoJogo , Cell celulaSelecionada ) { if (! VariaveisGlobais.flagDeAguardoDoMovimento && VariaveisGlobais.statusCorrenteDoJogo.getSequenciaGanhadora () == null && eCelulaVazia ( gradeDoJogo , celulaSelecionada )) { VariaveisGlobais.flagDeAguardoDoMovimento = true; String simbolo = exibeSimboloDoJogador ( VariaveisGlobais.statusCorrenteDoJogo . getJogadorCorrente (). getSimboloDoJogador ()); gradeDoJogo .setHTML( celulaSelecionada .getRowIndex(), celulaSelecionada .getCellIndex(), simbolo ); ChamadaParaOJulgamentoDoMovimento.verificaSeGanhou ( VariaveisGlobais.statusCorrenteDoJogo , celulaSelecionada .getRowIndex(), celulaSelecionada .getCellIndex()); } } (...) } (Excerpted from a Tic Tac Toe Game source code)
  10. 10. Qual das duas opções um Stakeholder melhor entenderia ? <ul><li>Movimento do Jogador      Efetiva o movimento do jogador na grade do jogo. </li></ul><ul><ul><ul><li>Mover  </li></ul></ul></ul><ul><ul><ul><li>      Quando o jogador clica numa celula na grade do tabuleiro          o jogo desenha um 0 ou X dependendo de qual e o       jogador atual. </li></ul></ul></ul><ul><ul><ul><li>E Celula Vazia </li></ul></ul></ul><ul><ul><ul><li>        Um jogador podera selecionar somente as celulas que         ainda nao foram selecionadas. </li></ul></ul></ul><ul><li>Mostra Cell Grid </li></ul><ul><li>    Exibe a string O ou X na celula do jogo.                                               </li></ul><ul><ul><ul><li>Exibe Usuario  </li></ul></ul></ul><ul><ul><ul><li>        </li></ul></ul></ul><ul><ul><ul><li>Is Vazio </li></ul></ul></ul>(retiradas de um software exemplo para o Jogo da Velha)
  11. 11. <ul><li>[email_address] </li></ul>!! OBRIGADA !!

×