SlideShare ist ein Scribd-Unternehmen logo
1 von 11
Melhorando  a comunicação entre stakeholder/desenvolvedores com a  Linguagem Ubíqua   Alline Watkins
O problema: ,[object Object],[object Object],[object Object],[object Object]
O Acordo: ,[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object]
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:
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)
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)
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
/**   * 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)
Qual das duas opções um Stakeholder melhor entenderia ? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],(retiradas de um software exemplo para o Jogo da Velha)
[object Object],!!  OBRIGADA !!

Weitere ähnliche Inhalte

Ähnlich wie Ubiquitous Language - Portugues

Java aprendendo linguagem.ppt
Java aprendendo linguagem.pptJava aprendendo linguagem.ppt
Java aprendendo linguagem.ppt
Emerson Cardoso
 
Advanced topics for game developers
Advanced topics for game developersAdvanced topics for game developers
Advanced topics for game developers
juliocoopergames
 

Ähnlich wie Ubiquitous Language - Portugues (20)

Júlio Pescuite - Advanced Topics for Game Developers
Júlio Pescuite - Advanced Topics for Game DevelopersJúlio Pescuite - Advanced Topics for Game Developers
Júlio Pescuite - Advanced Topics for Game Developers
 
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
 
Processo de desenvolvimento de Jogos.pdf
Processo de desenvolvimento de Jogos.pdfProcesso de desenvolvimento de Jogos.pdf
Processo de desenvolvimento de Jogos.pdf
 
Introdução ao desenvolvimento de jogos em OGRE 3D - Mackenzie
Introdução ao desenvolvimento de jogos em OGRE 3D - MackenzieIntrodução ao desenvolvimento de jogos em OGRE 3D - Mackenzie
Introdução ao desenvolvimento de jogos em OGRE 3D - Mackenzie
 
Interface grafica
Interface graficaInterface grafica
Interface grafica
 
INdT Mobile Labs - Sparta
INdT Mobile Labs - SpartaINdT Mobile Labs - Sparta
INdT Mobile Labs - Sparta
 
Project coin pequenas mudanças grandes facilidades
Project coin pequenas mudanças grandes facilidadesProject coin pequenas mudanças grandes facilidades
Project coin pequenas mudanças grandes facilidades
 
Desenvolvimento de Jogos com Cocos2d - Apresentação Coderockr Jam
Desenvolvimento de Jogos com Cocos2d - Apresentação Coderockr JamDesenvolvimento de Jogos com Cocos2d - Apresentação Coderockr Jam
Desenvolvimento de Jogos com Cocos2d - Apresentação Coderockr Jam
 
Apostila de Jogos em Rede com Java
Apostila de Jogos em Rede com JavaApostila de Jogos em Rede com Java
Apostila de Jogos em Rede com Java
 
PJ20222 500 050 Descrevendo Jogos.pdf
PJ20222 500 050 Descrevendo Jogos.pdfPJ20222 500 050 Descrevendo Jogos.pdf
PJ20222 500 050 Descrevendo Jogos.pdf
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
 
Java hidden features
Java hidden featuresJava hidden features
Java hidden features
 
Persistência com Realm.io
Persistência com Realm.ioPersistência com Realm.io
Persistência com Realm.io
 
Portando app JavaME S40 para C# WP7: Um estudo de caso real da app CalcSphere
Portando app JavaME S40 para C# WP7:  Um estudo de caso real da app CalcSpherePortando app JavaME S40 para C# WP7:  Um estudo de caso real da app CalcSphere
Portando app JavaME S40 para C# WP7: Um estudo de caso real da app CalcSphere
 
Desenvolvimento de jogos e Ogre 3D - Dev In Santos
Desenvolvimento de jogos e Ogre 3D - Dev In SantosDesenvolvimento de jogos e Ogre 3D - Dev In Santos
Desenvolvimento de jogos e Ogre 3D - Dev In Santos
 
GUI Aplicações Gráficas
GUI Aplicações Gráficas GUI Aplicações Gráficas
GUI Aplicações Gráficas
 
Java aprendendo linguagem.ppt
Java aprendendo linguagem.pptJava aprendendo linguagem.ppt
Java aprendendo linguagem.ppt
 
Advanced topics for game developers
Advanced topics for game developersAdvanced topics for game developers
Advanced topics for game developers
 
Desenvolvendo games multiplataforma
Desenvolvendo games multiplataformaDesenvolvendo games multiplataforma
Desenvolvendo games multiplataforma
 
Node.js - #5 - Process - Rodrigo Branas
Node.js - #5 - Process - Rodrigo BranasNode.js - #5 - Process - Rodrigo Branas
Node.js - #5 - Process - Rodrigo Branas
 

Mehr von Alline Oliveira (8)

Lean xpress
Lean xpressLean xpress
Lean xpress
 
User driven development
User driven developmentUser driven development
User driven development
 
Developing UNCERTAIN Software
Developing UNCERTAIN SoftwareDeveloping UNCERTAIN Software
Developing UNCERTAIN Software
 
Live Source - Brasil
Live Source - BrasilLive Source - Brasil
Live Source - Brasil
 
CrowdLoud SW DEMO
CrowdLoud SW DEMOCrowdLoud SW DEMO
CrowdLoud SW DEMO
 
Live Source - an Agile Toolkit
Live Source - an Agile ToolkitLive Source - an Agile Toolkit
Live Source - an Agile Toolkit
 
Ubiquitous Language
Ubiquitous LanguageUbiquitous Language
Ubiquitous Language
 
How to start with Google Web Toolkit
How to start with Google Web ToolkitHow to start with Google Web Toolkit
How to start with Google Web Toolkit
 

Ubiquitous Language - Portugues

  • 1. Melhorando a comunicação entre stakeholder/desenvolvedores com a Linguagem Ubíqua Alline Watkins
  • 2.
  • 3.
  • 4.
  • 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. 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. 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. 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. /**   * 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.
  • 11.

Hinweis der Redaktion

  1. Main problem in software is miscommunication
  2. The common language is in the middle and not more of business language nor technical language Somewhere in between, not programmers completely conforming to biz language
  3. Maintainability – classes and packages are named/grouped in a way that makes sense in the real world Agility improve - Precise Communication
  4. We understand each other Software development is by its nature a series of translations and compromises. What the end user wants, what the customer is willing to pay for, and what is technically feasible rarely combine to form a unified set of features. In this talk we will explore how an Agile team can work to understand each other better, in particular at the communication divide between stakeholders and developers. We will show you how to develop a domain-specific ubiquitous language, how to lessen the responsibility gap between managers and developers, and how to use your codebase as the central source for documentation.