Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Principios de Diseño de Componentes Web

4,054 views

Published on

Video: http://goo.gl/acVK2t
Slideshare: http://goo.gl/2OChM4
Github: http://goo.gl/29ldtQ

La Web se está orientando a componentes. El objetivo es alcanzar una Web cada vez más madura, dirigida a fomentar la sencillez en las tareas de diseño y construcción, aumentar la rapidez y agilidad de desarrollo y mejorar la productividad general de las soluciones Web. Todo esto se consigue en parte debido al carácter declarativo que confiere la tecnología de componentes Web que, además, permite encapsular un comportamiento complejo, absorber la gestión adaptativa de los contenidos y, a la postre, generar un vocabulario propio de etiquetas de autor que fomenta la reutilización de código desde el front end.

Sin embargo, la comunidad demanda de manera creciente la definición de directrices y buenas prácticas en relación con las actividades de diseño y desarrollo vinculadas a la construcción de soluciones basadas en componentes Web. En esta charla ofreceremos una colección de principios que tienen por objetivo orientar a los equipos implicados en este tipo de proyectos.

Published in: Software
  • DOWNLOAD THE BOOK INTO AVAILABLE FORMAT (New Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THE can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THE is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBOOK .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, CookBOOK, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, EBOOK, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THE Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THE the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THE Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THE BOOK INTO AVAILABLE FORMAT (New Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THE can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THE is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBOOK .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, CookBOOK, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, EBOOK, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THE Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THE the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THE Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Principios de Diseño de Componentes Web

  1. 1. Javier  Vélez  Reyes    @javiervelezreye   Javier.velez.reyes@gmail.com   Principios  de  Diseño  en  Componentes  Web   Programación  Orientada  a   Componentes  Web   Marzo  2015  
  2. 2. @javiervelezreye    2     Autores   Principios  de  Diseño  en  Componentes  Web   Licenciado  en  informá2ca  por  la  UPM  desde  el  año  2001  y  doctor   en   informá2ca   por   la   UNED   desde   el   año   2009,   Javier   es   inves2gador  y  su  línea  de  trabajo  actual  se  centra  en  la  innovación   y  desarrollo  de  tecnologías  de  Componentes  Web.  Además  realiza   ac2vidades   de   evangelización   y   divulgación   en   diversas   comunidades  IT,  es  Polymer  Polytechnic  Speaker  y  co-­‐organizador   del  grupo  Polymer  Spain  que  conforma  una  comunidad  de  interés   de   ámbito   nacional   en   relación   al   framework   Polymer   y   a   las   tecnologías  de  Componentes  Web.     I.  ¿Quién  Soy?     II.  ¿A  Qué  Me  Dedico?     javier.velez.reyes@gmail.com   @javiervelezreye   linkedin.com/in/javiervelezreyes   gplus.to/javiervelezreyes   jvelez77   javiervelezreyes   youtube.com/user/javiervelezreyes   Polymer  Polytechnic  Speaker   Co-­‐organizador  de  Polymer  Spain     Evangelización  Web   Desarrollador  JS  Full  stack   Arquitectura  Web   Formación  &  Consultoría  IT   e-­‐learning  
  3. 3. Javier  Vélez  Reyes    @javiervelezreye   Javier.velez.reyes@gmail.com   1  Introducción   §  Qué  son  los  Componente  Web   §  Por  Qué  los  Componentes  Web   §  Por  Qué  Principios  de  Diseño  para  Componentes  Web   §  El  Paradigma  de  Componentes  Web   Introducción   Principios  de  Diseño  en  Componentes  Web  
  4. 4. @javiervelezreye    4     Introducción   Principios  de  Diseño  en  Componentes  Web   Qué  son  los  Componentes  Web     La   tecnología   de   Componentes   Web   proporciona   un  mecanismo  para  construir  nuevas  e2quetas  de   autor  personalizadas  que  incluyen  una  semán2ca,   un   comportamiento   funcional   y   una   lógica   de   presentación  propia.   E2quetas  de  Autor   Componentes  Web  
  5. 5. @javiervelezreye    5     Introducción   Principios  de  Diseño  en  Componentes  Web   Por  Qué  Componentes  Web   Un   Componente   Web   encapsula   cierta   lógica   funcional   y   presentacional   elaborada   que   se   ac2va   desde   el   navegador   como   una   simple   e2queta  estándar  de  HTML.   Encapsulación  de  la  Lógica   Comportamiento  AdaptaRvo   Los   componentes   se   desarrollan   para   hacerse   responsables  de  la  ges2ón  del  espacio  en  el  área   de   presentación,   de   las   necesidades   de   accesibilidad   y   las   preocupaciones   generales   de   usabilidad.   RWD  &  AWD   Accesibilidad   Usabilidad  
  6. 6. @javiervelezreye    6     Introducción   Principios  de  Diseño  en  Componentes  Web   Por  Qué  Componentes  Web   Los   componentes   Web   también   fomentan   un   proceso   de   diseño   Web   que   2ende   a   la   homogenización  lo  que  desde  un  punto  de  vista   corpora2vo  resulta  ventajoso.   Homogenización  del  diseño   GesRón  de  la  Evolución  Centralizada   La   lógica   de   presentación   de   los   componentes   Web   se   puede   adaptar   evolu2vamente   bajo   demanda   de   las   necesidades   empresariales   sin   impactar   en   el   correcto   funcionamiento   de   los   aplica2vos   y   si2os   web   que   hacen   uso   de   los   mismos.   Restaurante Diversia 9.7 (51) Casa de Campo Puerta del Sol Plaza Mayor Línea  evoluDva   t1   t2   t3   Los  usuarios  perciben  los   cambios  instantáneamente   v1   v2   v3  
  7. 7. @javiervelezreye    7     Introducción   Principios  de  Diseño  en  Componentes  Web   Por  Qué  Componentes  Web   La   tecnología   de   componentes   Web   ofrece   la   posibilidad   de   exponer   los   servicios   de   una   organización   en   forma   de   un   conjunto   de   e2quetas  visuales  que  conectan  con  capacidades   de  negocio.   Orientación  a  la  Vista   Construcción  ComposiRva   Como   cualquier   otra   e2queta   estándar   los   componentes  Web  pueden  conectarse  de  forma   composi2va   a   través   de   las   relaciones   de   anidamiento   y   propagación   de   eventos   que   soporta  la  Web.   C   R   U   D   Servicios  REST   HTTP   Usuario   Programador   Usuario   Final   Los  componentes  Web   están  orientación  a  la  vista  
  8. 8. @javiervelezreye    8     Introducción   Principios  de  Diseño  en  Componentes  Web   Por  Qué  Principios  de  Diseño  Para  Componentes  Web   WebComponents.org   is   where   pioneers   and   community-­‐ members  of  the  Web  Components  ecosystem  (like  Polymer,   X-­‐tags,   and   other   interested   par2es)   document   web   components   best   prac2ces   so   that   others   can   follow   the   same  path  instead  of  needlessly  striking  out  on  their  own.     -­‐  Zeno  Rocha   ¿Cómo  se  que  mi  componente   es  suficientemente     reuRlizable?   ¿Cómo  se  cuándo  debo  aplicar   encapsulación  o  simple   agregación?   ¿Cómo  se  que  mi  componente  va   a  perdurar  en  el  Rempo?   ¿Cómo  se  que  mi  componente   está  preparado  para  uRlizarse  en   muchos  contextos?   ¿Cómo  se  si  mi  componente  se   integrará  bien  con  los  demás?   ?   ?  ?  ?  
  9. 9. @javiervelezreye    9     Introducción   Principios  de  Diseño  en  Componentes  Web   Por  Qué  Principios  de  Diseño  Para  Componentes  Web   Podemos   exponer   gráficamente   todos   los   obje2vos   primarios  y  secundarios  vinculados  a  la  tecnología  de   componentes   Web.   Los   principios   de   diseño   nos   ayudarán  a  alcanzar  dichos  obje2vos.   Encapsulación   AdaptaRvidad   Homogeneidad   EvoluRvidad   Visualidad   ComposiRvidad   Sencillez   DeclaraDvidad   Agilidad   Reusabilidad   Diversidad   Accesibilidad   Usabilidad   Estandarización   Reducción  de  código   Alineamiento  a  dominio   Orientación  a  negocio   Mantenibilidad   Perdurabilidad   Estabilidad   Robustez   Dialectalidad   Usabilidad   Orientación  a  Cliente   MulDcanalidad   Interoperabilidad   Integración   Coordinación   Contextualización  
  10. 10. @javiervelezreye    10     Introducción   Principios  de  Diseño  en  Componentes  Web   Ejes  Dimensionales   El  Paradigma  de  Componentes  Web   En  torno  al  concepto  de  componente  Web  se  pueden  describir  tres  ejes  dimensionales.  Los   obje2vos  determinan  los  propósitos  perseguidos,  los  mecanismos  caracterizan  las  capacidades   na2vas  de  plataforma  y  los  principios  de  diseño  ofrecen  directrices  generales  de  actuación.   Principios   Mecanismos   Vis Evo Hom Ada ObjeRvos   Los   objeDvos   describen   las   caracte-­‐ rísDcas   diferenciales   de   los   componentes  Web  y  jusDfican  su  uso   en   los   procesos   de   desarrollo   de   soluciones  Web   ¿Qué?   Los  principios  de  diseño  ofrecen  líneas   maestras   que   dirigen   los   procesos   de   desarrollo   del   so^ware   orientado   a   componentes  Web   ¿Cómo?   Los   mecanismos   conforman   las   herramientas   de   la   plataforma   para   arDcular   el   desarrollo   del   so^ware   orientado  a  componentes  Web   ¿Con  qué?   Dom Cmp Enc Std Tmp Evt Her DBin cic
  11. 11. @javiervelezreye    11     Introducción   Principios  de  Diseño  en  Componentes  Web   Planos  de  AcRvidad   El  Paradigma  de  Componentes  Web   La  intersección  de  las  dimensiones  por  pares  configura  tres  planos  de  ac2vidad.  En  el  plano   arquitectónico  se  definen  los  es2los  arquitectónicos  o  modelos  de  programación  soportados   por  el  paradigma.  En  el  plano  de  diseño  se  establecen  los  patrones  fundamentales.  Y  en  el   plano  tecnológico  se  describen  las  técnicas  u2lizadas.   Principios   Mecanismos   Los   esDlos   arquitectónicos   propor-­‐ cionan   restricciones   estructurales   que   determinan   y   condicionan   los   procesos  de  desarrollo   EsRlos  Arquitectónicos   El  diseño  establece  formas  canónicas   de   aplicabilidad   probada   para   dar   respuesta  a  problemas  recurrentes     Patrones   Las  técnicas  indican  cómo  aplicar  los   mecanismos   de   la   plataforma   en   el   proceso   de   desarrollo   para   alcanzar   los  objeDvos   Técnicas   Patrones   Diseñadores   Arquitectos   Plano  Tecnológico   Programadores  ObjeRvos   Vis Evo Hom Ada Dom Cmp Enc Std Tmp Evt Her DBin cic
  12. 12. @javiervelezreye    12     Introducción   Principios  de  Diseño  en  Componentes  Web   AcRvidades   El  Paradigma  de  Componentes  Web   Sobre  este  espacio  dimensional  pueden  ubicarse  las  ac2vidades  que  conforman  los  procesos   de  desarrollo  de  sobware  orientado  a  componentes  Web.  En  lo  que  resta  de  este  trabajo  nos   centraremos   en   describir   los   principios   de   diseño   fundamentales.   Otros   elementos   serán   cubiertos  en  próximos  trabajos.     Principios   Mecanismos   Patrones   Diseñadores   Arquitectos   Plano  Tecnológico   Programadores  ObjeRvos   Vis Evo Hom Ada Dom Cmp Enc Std Tmp Evt Her DBin cic AcRvidades   Foco  de  atención  
  13. 13. Javier  Vélez  Reyes    @javiervelezreye   Javier.velez.reyes@gmail.com   2  Principios  de   Diseño   §  Introducción   §  Principios  de  Diseño  en  el  Stream  OOP   §  Principios  de  Diseño  en  el  Stream  COP   §  Principios  de  Diseño  en  el  Stream  SOC   Introducción   Principios  de  Diseño  en  Componentes  Web  
  14. 14. @javiervelezreye    14     Principios  de  Diseño   Principios  de  Diseño  en  Componentes  Web   Introducción     Dom   Aco   Abs   Reu   Est   Com  Std   Adp   Evo   Ctx   A  lo  largo  de  este  capítulo  revisaremos  los   principios   fundamentales   que   guían   el   proceso   de   diseño   y   construcción   de   componentes  Web.   Orientación  a   Objetos   Orientación  a   Componentes   Computación   Distribuida   Este  material  entronca  con  los   streams  fundamentales  de   desarrollo  vigentes  en  la   actualidad.     Su   contenido   ha   sido   cuidadosamente   adaptado  para  encajarlos  en  las  necesidades   y   peculiaridades   arquitectónicas   que   demanda   la   tecnología   de   componentes   Web.   Enc  
  15. 15. @javiervelezreye    15     Principios  de  Diseño   Principios  de  Diseño  en  Componentes  Web   Introducción     La  descripción  detallada  de  cada  uno  de  los  principios  que  se  enumeran  en  este  trabajo  se   realizará   en   torno   a   un   esquema   de   caracterís2cas   que   recogen   de   manera   sumarial   las   preocupaciones  esenciales  que  dichos  principios  abordan.  A  con2nuación  presentamos  cuáles   son  tales  caracterís2cas.   Nombre   Describe  el  nombre  del   principio   Refiere  a  los  principales   implicados  en  el  desarrollo   del  principio   Actores   Enuncia  las  directrices   generales  que  se  enmarcan   bajo  el  principio   Descripción  
  16. 16. @javiervelezreye    16     Principios  de  Diseño   Principios  de  Diseño  en  Componentes  Web   Introducción     La  descripción  detallada  de  cada  uno  de  los  principios  que  se  enumeran  en  este  trabajo  se   realizará   en   torno   a   un   esquema   de   caracterís2cas   que   recogen   de   manera   sumarial   las   preocupaciones  esenciales  que  dichos  principios  abordan.  A  con2nuación  presentamos  cuáles   son  tales  caracterís2cas.   Facetas   Cada  principio  se  analiza   desde    una  colección  de   facetas  complementarias   Los  ejemplos  ilustran  la   aplicación  de  cada  faceta  en  la   prác2ca  y  en  su  mayoría  son   extraídos  del  código  y   documentación  de  Polymer   Ejemplo   Las  facetas  se  acompañan   de  explicaciones  que   ayudan  a  entender  su   relevancia   Explicación  
  17. 17. @javiervelezreye    17     Principios  de  Diseño   Principios  de  Diseño  en  Componentes  Web   Introducción     La  descripción  detallada  de  cada  uno  de  los  principios  que  se  enumeran  en  este  trabajo  se   realizará   en   torno   a   un   esquema   de   caracterís2cas   que   recogen   de   manera   sumarial   las   preocupaciones  esenciales  que  dichos  principios  abordan.  A  con2nuación  presentamos  cuáles   son  tales  caracterís2cas.   ObjeRvos   Se  describe  la  colección  de   obje2vos  que  se  persiguen   con  la  aplicación  del  principio   Se  describen  las  fases  de   aplicación  del  principio   dentro  de  los  proyectos  de   construcción  o  uso  de   componentes   Fases   Se  ilustran  las  regiones  en  el   marco  de  la  arquitectura   donde  impacta  la  aplicación   del  principio   Región   Se  ofrece  el  fundamento   que  jus2fica  y  mo2va  el   principio   MoRvación  
  18. 18. @javiervelezreye    18     Principios  de  Diseño   Principios  de  Diseño  en  Componentes  Web   Introducción     La  descripción  detallada  de  cada  uno  de  los  principios  que  se  enumeran  en  este  trabajo  se   realizará   en   torno   a   un   esquema   de   caracterís2cas   que   recogen   de   manera   sumarial   las   preocupaciones  esenciales  que  dichos  principios  abordan.  A  con2nuación  presentamos  cuáles   son  tales  caracterís2cas.   Tensiones   Se  analiza  la  repercusión  de   la  aplicación  del  principio  en   relación  con  los  demás   principios   Se  argumenta  la  razón  del   impacto  en  cada  principio   para  aquellos  casos  de   mayor  correlación   Argumentos  
  19. 19. @javiervelezreye    19     Principios  de  Diseño   Principios  de  Diseño  en  Componentes  Web   Introducción     La  descripción  detallada  de  cada  uno  de  los  principios  que  se  enumeran  en  este  trabajo  se   realizará   en   torno   a   un   esquema   de   caracterís2cas   que   recogen   de   manera   sumarial   las   preocupaciones  esenciales  que  dichos  principios  abordan.  A  con2nuación  presentamos  cuáles   son  tales  caracterís2cas.   Ejemplo   Desde  una  perspec2va   visual  se  presentan   ejemplos  que  aplican   claramente  el  principio   Se  ofrecen  explicaciones  en   relación  a  por  qué  el   componente  de  ejemplo   cumple  el  principio   Comentarios  
  20. 20. @javiervelezreye    20     Principios  de  Diseño   Principios  de  Diseño  en  Componentes  Web   Principio  de  Diseño  Centrado  en  el  Dominio     Diseño  Centrado  en  el  Dominio   Analista  de  Dominio   Arquitecto  de  Componentes   Nombre   Actores   Comienza   siempre   realizando   una   adecuada   división  de  responsabilidades  en  el  ámbito  de   tu   dominio   y   garan2zando   la   ausencia   de   huecos  y  solapamientos  entre  componentes.  
  21. 21. @javiervelezreye    21     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  Diseño  Centrado  en  el  Dominio     Por   norma   general,   cuando   trabajas   construyes   familias   de   componentes   que   incluyes   en   una   librería   de   e2quetas   personalizadas.   Un   componente   aislado   puede   ser   puntualmente   ú2l   pero   frecuentemente   forma   parte   de   una   colección   de   otros   componentes.   Nunca  Defines  Componentes  Aislados   <google-map latitude="37.77493" longitude="-122.41942" fitToMarkers> <google-map-marker latitude="37.779" longitude="-122.3892" draggable="true" title="Go Giants!"> </google-map-marker> </google-map> Los   componentes   aislados   no   suelen   ser   frecuentes   en   el   paradigma  de  componentes   El  componente  google-­‐map-­‐marker  opera   siempre   en   el   ámbito   light   DOM   de   un   componente  google-­‐map   Es  frecuente  construir  componen-­‐ tes   por   familias   que   operan   de   manera  coopera2va   En   este   ejemplo   se   ve   como   los   componentes   trabajan   frecuentemente   de  manera  conjunta.  
  22. 22. @javiervelezreye    22     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  Diseño  Centrado  en  el  Dominio     Siempre  que  construyes  componentes  Web  estás  elaborando  un   dominio   cuyos   componentes   se   aplicarán   en   mul2tud   de   proyectos.   Esto   significa   que   tus   clientes   de   librería   no   son   clientes   finales   sino   desarrolla-­‐ dores  de  proyecto.   Estás  Contribuyendo  A  Dominio   <google-analytics-dashboard> <google-analytics-view-selector> </google-analytics-view-selector> <google-analytics-chart metrics="ga:sessions" dimensions="ga:date"> </google-analytics-chart> </google-analytics-dashboard> Los   desarrolladores   u2lizan   discrecional-­‐ mente   estos   componentes   en   sus   proyectos   En   este   ejemplo   se   ve   como   Google   ha   adaptado   su   API   de   análisis   creando   una   librería  de  componentes  Web.   librería   Proyecto  B   Proyecto  A   usa   usa   Dominio   Usa   componentes   para   desarrollar   tus   proyectos.   No   desarrolles   componentes   para  usar  en  tus  proyectos.  
  23. 23. @javiervelezreye    23     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  Diseño  Centrado  en  el  Dominio     Antes   de   empezar   la   construcción   de   una   librería   de   componentes  determina  el  ámbito  preciso  de  responsabilidades   que  quieres  cubrir  con  ella.   Lo   prioritario   es   tener   claro   qué   capaci-­‐ dades  quieres  cubrir  con  tu  librería  y  qué   otras  dejarás  conscientemente  fuera.   Define  El  Alcance   Un  buen  ejemplo  de  alcance  de  librería  lo   encontramos   en   la   orientación   a   componentes  que  Google  ha  hecho  de  sus   APIs.   Dominio   librería   Existen   ámbitos   dentro   del   dominio  que  estratégicamente   se  decide  dejar  no  cubiertos   El  alcance  de  librería  se  puede  definir   en   términos   de   la   proporción   de     dominio  que  ésta  abarca   google-­‐analy2cs-­‐base   google-­‐analy2cs-­‐chart   google-­‐analy2cs-­‐dashboard   google-­‐analy2cs-­‐date-­‐selector   google-­‐analy2cs-­‐query   google-­‐analy2cs-­‐view-­‐selector   google-­‐map   google-­‐map-­‐direc2ons   google-­‐map-­‐marker   google-­‐map-­‐search   Cada  una  de  estas  dos  librerías  se  centra   en   dar   cobertura   a   las   necesidades   concretas   dentro   de   un   dominio   especifico  
  24. 24. @javiervelezreye    24     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  Diseño  Centrado  en  el  Dominio     Asegúrate  de  que  la  construcción  de  tu  librería  de  componentes   Web   sólo   aborda   competencias   propias   del   dominio   al   que   pertenece.   Incluir   componentes   en   tu   librería   fuera   del   alcance   de   su   dominio   provoca   colisiones  potenciales  con  otras  librerías.   Centra  El  Dominio   La  librería  core-­‐*  de  Polymer  es  un  claro   contraejemplo   de   diseño   centrado   en   el   dominio.   Dominio  A   librería   Es   importante   asegurarte   que   tu   librería   pertenece   enteramente   a   un  único  dominio   Dominio  B   core-­‐a11y-­‐keys   core-­‐ajax   core-­‐xhr   core-­‐localstotage   core-­‐media-­‐query   core-­‐meta   core-­‐shared-­‐lib   core-­‐signals   core-­‐style   core-­‐animated-­‐pages   core-­‐drag-­‐drop   core-­‐drawer-­‐panel   core-­‐header-­‐panel   core-­‐overlay   core-­‐scaffold   core-­‐spliher   core-­‐menu   core-­‐pages   core-­‐scroll-­‐header-­‐panel   core-­‐scroll-­‐threshold   core-­‐selec2on   core-­‐selector   Helpers   Control   Layout   Dentro   de   la   librería   se   encuentran   categorías   funcionales  muy  dispares   En   este   ejemplo   la   librería   invade  parte  del  dominio  A  
  25. 25. @javiervelezreye    25     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  Diseño  Centrado  en  el  Dominio     La   aplicación   de   las   dos   facetas   anteriores   puede   reformularse   en  términos  de  la  cohesión.  Se  dice  que  existe  cohesión  alta  en   una  librería  si  sus  componentes  están  altamente  relacionados.   Existen   dis2ntos   2pos   de   cohesión   que   pueden   ser   establecidos   sobre   una   librería   de   componentes.   Por   orden   de   impacto   de   nega2vo  a  posi2vo  éstos  son  los  siguientes.   Fomenta  La  Cohesión  De  Librería   Coincidental         Temporal         Informacional         Funcional   Dos   componentes   se   incluyen   en   la   misma   librería   por   criterios   arbitrarios       Lógica         Procedimiental         Secuencial         Dos   componentes   se   incluyen   en   la   misma  librería  por  pertenecer  a  una   categoría  lógica  común   Dos  componentes  se  incluyen  en  la  misma   librería  porque  siempre  se  usan  de  acuerdo   a  un  determinado  orden   Dos   componentes   se   incluyen   en   la   misma   librería   porque   siempre   se   conectan   composi2vamente   en   los   diferentes  contextos  de  uso   Dos  componentes  se  incluyen    en  la   misma   librería   porque   se   usan   siempre  a  la  vez   Dos   componentes   se   incluyen   en   la   misma   librería   porque   operan   sobre  el  mismo  2po  de  datos   Dos   componentes   contribuyen   unifor-­‐ memente   a   un   conjunto   de   responsa-­‐ bilidades  relacionadas  en  el  dominio   -­‐   +  
  26. 26. @javiervelezreye    26     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  Diseño  Centrado  en  el  Dominio     Para  definir  el  alcance  de  tu  librería  de  componentes  distribuye   las   competencias   que   desees   cubrir   entre   espacios   de   responsabilidad  disjuntos.   La  división  en  espacios  de  responsabilidad   organiza   el   alcance   ya   que   explicita   y   aclara  la  descomposición  que  se  hace  del   dominio  en  el  marco  de  la  librería.   Define  Espacios  De  Responsabilidad   Nuevamente   la   librería   de   componentes   de  Google  que  encapsula  las  capacidades   de  Google  Maps  es  un  ejemplo  de  buena   segmentación  de  responsabilidades.   librería   El  alcance  es  una  caracterís2ca  invariante  que  se  establece  en   el   2empo   de   diseño   de   la   librería.   La   cobertura   puntual   de   requisitos   que   den   los   componentes   no   guarda   relación   con   esta  caracterís2ca   r1 r7 r4 r3 r5r6 r2 r8 r9 Un   espacio   de   responsa-­‐ bilidad   es   un   clasificador   de   competencias   dentro   del  alcance  de  la  bibliote-­‐ ca   google-­‐map   google-­‐map-­‐direc2ons   google-­‐map-­‐marker   google-­‐map-­‐search   Cada   una   de   las   cuatro   e2quetas   cons2tuyentes   se   dirigen   a   cubrir   una   competencia   ortogonal   en   el   marco   del   sistema  de  mapas  de  Google  
  27. 27. @javiervelezreye    27     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  Diseño  Centrado  en  el  Dominio     Durante   el   proceso   de   análisis,   diseño   y   construcción   de   componentes   asegúrate   de   que   no   produces   solapamientos   funcionales  entre  los  mismos.   Cada  componente  será  ahora  responsable   de   implementar   las   competencias   definidas  en  el  marco  de  uno  y  sólo  uno   de  los  espacios  de  responsabilidad.   Evita  Solapamientos  Funcionales     Como  contraejemplo  de  segmentación  de   responsabilidades  podemos  volver  a  traer   la   librería   core-­‐*.   Incluso   dentro   de   los   componentes  de  control  las  competencias   entre  e2quetas  están  solapadas.   librería   La   segmentación   completa   y   disjunta   en   espacios   de   responsabilidad  ayuda  a  garan2zar  ausencias  de  solapamien-­‐ tos  funcionales  entre  componentes   Lo  que  en  cualquier  caso   hay  que  garan2zar  es  que   ningún   componente   se   posiciona   entre   dos   espacios   de   responsabili-­‐ dad   Pese  a  que  a2enden  a  contextos  arquitectó-­‐ nicos   de   uso   diferentes,   las   e2quetas   core-­‐ selec2on   y   core-­‐selector   presentan   solapa-­‐ mientos  funcionales  en  relación  al  control  de   la  interacción   core-­‐menu   core-­‐pages   core-­‐scroll-­‐header-­‐panel   core-­‐scroll-­‐threshold   core-­‐selec2on   core-­‐selector   Control  
  28. 28. @javiervelezreye    28     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  Diseño  Centrado  en  el  Dominio     Las   dependencias   en   el   dominio   son   una   consecuencia   del   proceso  de  división  de  responsabilidades.  Una  vez  establecidos   los  componentes  analiza  las  dependencias  emergentes.   Dis2ntos  criterios  de  división  en  espacios   de   responsabilidad   conducen   potencial-­‐ mente   a   dis2ntos   conjuntos   de   depen-­‐ dencias  entre  los  componentes.     Descubre  Las  Relaciones  De  Composición  Emergentes   En  este  ejemplo  la  relación  de  dependen-­‐ cia   entre   componentes   es   una   clara   consecuencia   de   los   criterios   de   división   de  responsabilidades  establecidos   librería   Es   importante   descubrir   las   dependencias   de   dominio   y   dis2nguirlas   claramente   de   aquellas   mo2vadas   por   una   decisión   de   diseño   o   implementación.   El   principio   de   acoplamiento  se  ocupará  posteriormente  de  éstas  úl2mas   r1 r7 r4 r3 r5r6 r2 r8 r9 Una  vez  iden2ficado  cada   componente   estudia   las   relaciones   que   guarda   con   los   componentes   de   su  vecindad   <google-map latitude="37.77493" longitude="-122.41942" fitToMarkers> <google-map-marker latitude="37.779" longitude="-122.3892" draggable="true" title="Go Giants!"> </google-map-marker> </google-map> El  componente  google-­‐map-­‐marker  se  debe   evaluar   en   el   contexto   DOM   de   un   componente  google-­‐map  
  29. 29. @javiervelezreye    29     Principios  de  Diseño   Principios  de  Diseño  en  Componentes  Web   Principio  de  Diseño  Centrado  en  el  Dominio     §  Organizar  el  proceso  de  desarrollo   §  Garan2zar  una  buena  cobertura   §  Evitar  el  versionado   §  Mantener  acotado  el  alcance   §  Facilitar  la  evolución   §  Planificar  el  trabajo  en  equipo   §  Promover  dialectos  de  dominio   Análisis  &  Diseño  de  Dominio   ObjeRvos   Fases   Fronteras  de  Dominio   Relaciones  de  Dependencia   Región   Librería   Dominio   Frontera  de   Dominio   Relaciones  de   Dependencia   El  principio  de  diseño  centrado  en  el   dominio  persigue  orientar  el  proceso   de   desarrollo   de   una   librería   para   asegurar  su  aplicabilidad  máxima.   MoRvación  
  30. 30. @javiervelezreye    30     Principios  de  Diseño   Principios  de  Diseño  en  Componentes  Web   Principio  de  Diseño  Centrado  en  el  Dominio   Tensiones   Una   adecuada   división   de   responsabilidades   permite   obtener   componentes   con   mayores   oportunidades  de  reuDlización   Un   cuidadoso   análisis   de   dominio   evita   escenarios   de   adaptación   pero   facilita   su   aplicabilidad  discrecional   Una   adecuada   división   del   dominio   en   parcelas   bien   definidas   de   responsabilidad   permite  definir  las  líneas  evoluDvas  de  cada   componente     Aco   Abs   Dom   Reu   Est   Com   Adp   Evo   Enc  Std   Ctx   Un   análisis   centrado   en   el   alcance   del   dominio   favorece   encontrar   las   abstracciones   adecuadas   Un   análisis   del   dominio   descuidado   puede   generar   acoplamientos  no  previstos     La   organización   del   dominio   promueve   que   los   componentes   se   integren   fluidamente   en   el   contexto  de  uso    
  31. 31. @javiervelezreye    31     Principios  de  Diseño   Principios  de  Diseño  en  Componentes  Web   Principio  de  Diseño  Centrado  en  el  Dominio     Ejemplo   E-­‐commerce  App   hhp://goo.gl/3MHSkg     La  tecnología  de  componentes  Web   permite  definir  familias  de  elementos  de   interfaz  para  dar  respuesta  a  las   necesidades  de  negocio  específicas   vinculadas  a  un  dominio  
  32. 32. @javiervelezreye    32     Principios  de  Diseño   Principios  de  Diseño  en  Componentes  Web   Principio  de  Acoplamiento  Débil   Acoplamiento  Débil   Arquitecto  &  Desarrollador    de  Componentes   Nombre   Actores   Cuando  construyas  un  componente  asegúrate   de   minimizar   el   número   de   dependencias   existentes  y  de  mantener  un  diseño  agnós2co   de  las  caracterís2cas  de  las  mismas.  
  33. 33. @javiervelezreye    33     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  Acoplamiento  Débil     Durante   las   fases   de   diseño   y   desarrollo   conviene   analizar   la   prescindibilidad  de  las  dependencias  entre  componentes.  En  la   medida  de  lo  posible  reduce  al  máximo  su  número.   Las   dependencias   que   un   componente   establece   con   su   vecindad   limitan   su   autonomía   y   los   escenarios   en   los   que   éste  puede  operar.   Minimiza  Las  Dependencias   Un   componente   sin   dependencias   o   sólo   con   dependencias   opcionales   es   ideal.   Uno   de   tantos   ejemplos   es   el   google-­‐ signin.     Cada   dependencia   supone   un   riesgo   de   propagación   de   errores   entre   componentes   y   una  traba  para  la  evolución   Frecuentemente  el  exceso  de  dependencias  está   mo2vado  por  una  mala  estrategia  de  diseño  que   puede   ser   solventada   con   el   uso   de   patrones   que  fomenten  el  desacoplamiento   <google-signin clientid="..." scopes="profile" role="button" tabindex="0"> </google-signin> Google-­‐signin   es   un   componente   para   poder  auten2ficarse  en  un  tercero  a  través   de  las  credenciales  de  Google.  Su  carácter   autónomo  sirve  de  ejemplo  en  esta  faceta  
  34. 34. @javiervelezreye    34     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  Acoplamiento  Débil     Procura   que   dentro   de   tu   arquitectura   se   mantenga   un   conocimiento   explícito   de   todas   las   dependencias   obligatorias   que  cada  componente  2ene  con  la  vecindad.     Las   dependencias   obligatorias   entre   componentes   son   aquellas   necesarias   para   garan2zar   su   correcto   funciona-­‐ miento.   Haz  Explícitas  Las  Dependencias  Obligatorias   Por   ejemplo   considere   un   componente   asistente   que   requiere   obligatoriamente   hacer   uso   de   una   ventana   modal   donde   mostrar  la  ayuda.   La   explicitación   arquitectónica   se   hace   patente   al   observar   el   código  interno  del  componente.  La  mejor  forma  de  conseguirlo  es   mediante   el   uso   del   modelo   de   paso   de   mensajes   (llamadas   a   métodos).  A  necesitará  una  referencia  explicita  a  B  dentro  de  su   código     La   explicitación   arquitectónica   de   las   dependencias   obligatorias   exige   tenerlas   en  cuenta  en  cualquier  escenario  de  uso   m   A   B   <core-overlay id="A"> <h2>Help</h2> ... <button toggle-btn>OK</button> </core-overlay> <wc-help-assistant window="A"> </wc-help-assistant> open   El  asistente  de  ayuda  usa  la  ventana  modal  y  la  abre  o   cierra  explícitamente  por  invocación  de  sus  métodos.   La  referencia  explícita  a  A  en  el  atributo  window  ayuda   a   destacar   la   existencia   de   una   dependencia   obligatoria   close   El  core-­‐overlay  expone  métodos   para   abrir   y   cerrar   explícita-­‐ mente  la  ventana  modal  
  35. 35. @javiervelezreye    35     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  Acoplamiento  Débil     Procura   que   dentro   de   tu   arquitectura   se   mantengan   ocultas   todas  las  dependencias  opcionales  que  cada  componente  2ene   con  la  vecindad.     Las   dependencias   opcionales   sirven   para   comunicar   información   a   los   componen-­‐ tes  de  la  vecindad  que  no  son  necesaria-­‐ mente  requeridos  para  el  correcto  funcio-­‐ namiento  del  componente.   Haz  Implícitas  Las  Dependencias  Opcionales   La   comunicación   desacoplada   puede   realizarse  en  Polymer  mediante  arquitec-­‐ turas   de   eventos   o   memoria   compar2da   por  data  binding.   <div on-core-select="{{A.fn}}"> <core-pages selected="{{s}}"> <div>Page 1</div> <div>Page 2</div> </core-pages> </div> event A   El   modelo   de   propagación   de   eventos  es  una  de  las  soluciones  para   ocultar   dependencias   opcionales   ya   que   los   receptores   no   se   hacen   explícitos  dentro  del  código  de  A   {{x}} Los  modelos  de  data  binding  basados   en   memoria   compar2da   son   otra   forma  de  ocultación  de  dependencias   ya   que   cada   componente   no   es   consciente   de   quién   recibe   la   información  compar2da   fn   A   B   event {{s}} C   Cada  vez  que  en  core-­‐pages  se  selecciona  una  página  se   dispara  un  evento  core-­‐select  que  escucha  A.  Asimismo   los   cambios   son   propagados   por   data   binding   en   la   variable  s  lo  que  permite  informar  a  B  y  C     s   s  
  36. 36. @javiervelezreye    36     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  Acoplamiento  Débil     En   términos   generales   procura   que   en   tus   diseños   de   componentes   la   comunicación   entre   los   mismos   se   realice   de   manera  no  directa.   Los   esquema   de   indirección   siempre   fomentan   el   desacoplamiento   ya   que   permiten  segmentar  la  comunicación.   Busca  La  Indirección   Un   buen   ejemplo   de   comunicación   indirecta   por   paso   de   mensajes   se   da   entre  el  componente  core-­‐icon  y  el  core-­‐ iconset.   {{x}} Escriben   Leen   C  As   Bs   event Los  escritores  As  se   comunican  con  los   lectores  Bs  a  través  de  C   A  se  comunica  con  los   escuchadores  Bs  a   través  de  eventos   Los  componentes  se   comunican  a  través  del   uso  de  la  variable   compar2da  x   Bs   A   core-­‐iconset  <core-iconset id="my-icons" src="my-icons.png" icons="site place ..."> </core-iconset> <core-icon icon="my-icons:location"> </core-icon> core-­‐icon   core-­‐iconset  es  una   factoría  de  iconos    que   deposita  iconos  en  una   base  de  datos  local   core-­‐meta   Las  familias  de   iconos  son  recogidas   desde  la  base  de   datos  por  core-­‐icon  
  37. 37. @javiervelezreye    37     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  Acoplamiento  Débil     En  el  marco  de  una  comunicación,  el  diseño  de  un  componente   no  debería  verse  influenciado  por  quién  o  quienes  son  los  demás   componentes  implicados  en  la  misma.     Al   diseñar   un   componente   no   debería   importar   el   2po,   comportamiento,   propósito  o  iden2dad  del  resto  de  compo-­‐ nentes  implicados  en  una  comunicación.   No  Importa  Quién   El  componente  core-­‐selec2on  es  un  buen   ejemplo   de   diseño   que   man2ene   el   desacoplamiento  de  cliente.   El   diseño   del   contrato   del   componente   D   no   se   debe   ver   influenciado   por   dis2ntos   2pos   de  componentes  cliente    que  lo   puedan  u2lizar   A   B   C   D   click <div on-click='{{fn}}'> </div> A   B   core-­‐selec2on  expone  un  contrato   basado   en   el   método   select.   Es   responsabilidad  de  los  clientes  A  y   B  adaptarse  a  su  forma  de  operar   El  componente  A  comunica  sus   cambios  por  emisión  de  eventos   core-select <core-selection> </core-selection>select   El  componente  B  comunica   sus  cambios  por  invocación   de  métodos  
  38. 38. @javiervelezreye    38     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  Acoplamiento  Débil     En  el  marco  de  una  comunicación,  el  diseño  de  un  componente   no   debería   verse   influenciado   por   dónde   se   encuentran   los   demás  componentes  implicados  en  la  misma.   Al   diseñar   un   componente   no   debería   importar   la   posición   rela2va   en   el   DOM   donde   residen   el   resto   de   componentes   implicados  en  una  comunicación.   No  Importa  Dónde   En   este   caso   el   componente   paper-­‐tabs   nos  sirve  de  contraejemplo  para  ilustrar  el   desacoplamiento  a  contexto.   Componentes  receptores   e  interesados   Componentes  no   receptores  e  interesados   event El  componente  decide  por  diseño   no2ficar   acontecimientos   rele-­‐ vantes  por  medio  de  la  propaga-­‐ ción  de  eventos   Los   componentes   situados   en   la   cadena  de  ascendencia  de  A  son   capaces  de  recibir  sus  eventos   Otros   componentes   mal   posicio-­‐ nados   no   pueden   acceder   a   los   eventos   de   A   pero   eso   es   algo   que   no   debería   competer   al   componente  A   A   <div on-core-select="{{A.fn}}"> <paper-tabs> <paper-tab>1<paper-tab> <paper-tab>2<paper-tab> </paper-tabs> <div>...</div> </div> Los   componentes   escuchadores   deben   registrarse  necesariamente  en  algún  nivel   dentro   de   la   cadena   de   ascendencia   de   paper-­‐tabs   Otros   componentes   mal   posicionados   no   podrán   establecer   una   comunicación   con   paper-­‐tabs   core-select fn   A  
  39. 39. @javiervelezreye    39     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  Acoplamiento  Débil     En  el  marco  de  una  comunicación,  el  diseño  de  un  componente   no   debería   verse   influenciado   por   cuántos   son   los   demás   componentes  implicados  en  la  misma.   Al   diseñar   un   componente   no   debería   importar  la  can2dad  de  componentes  que   par2cipan   potencialmente   en   una   comunicación.   No  Importa  Cuántos   El   componente   paper-­‐radio-­‐group   es   un   ejemplo   de   cómo   una   no2ficación   de   selección   se   puede   desacoplar   de   la   can2dad  de  escuchadores.   event El   componente   B   decide   por   diseño   comunicar  el  cambio  de  estado  a  través  de  la   llamada  a  un  método  A  y  así  se  independiza   del  número  de  escuchadores   Dado  que  hay  N  interesados  en  el   cambio   de   estado   de   B,   A   funciona   de   intermediario   para   no2ficar  dichos  cambios   Los  interesados  en  os  cambios  de   B   reciben   las   no2ficaciones   de   cambio   a   través   del   interme-­‐ diario  A   A   B   <div on-core-select="{{gn}}"> <div on-core-select="{{fn}}"> <paper-radio-group> <paper-radio-button/> ... <paper-radio-button/> </paper-radio-group> </div> </div> selectNext   core-select gn   fn   El  componente  A  cambia  el  estado  de   selección  invocando  a  selectNext()  sin   ser   consciente   de   cuántos   serán   sus   receptores   A  
  40. 40. @javiervelezreye    40     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  Acoplamiento  Débil     En  el  marco  de  una  comunicación,  el  diseño  de  un  componente   no   debería   verse   influenciado   por   la   can2dad   de   información   adicional  que  se  comparte  dentro  de  la  misma.   Al   diseñar   un   componente   no   deberían   importar   los   cambios   en   la   can2dad   de   información   que   se   comparta   a   lo   largo   del  2empo.   No  Importa  Cuánto   El   siguiente   ejemplo   ilustra   bien   la   transferencia   de   un   volumen   de   datos   potencialmente  variante.   <google-map map="{{map}}" latitude="37.779" longitude="-122.3892"> </google-map> <google-map-directions map="{{map}}" startAddress="San Francisco" endAddress="Mountain View"> </google-map-directions> OUT   IN   {{map}}   A  lo  largo  del  2empo  el  componente  google-­‐ map   podría   ir   incluyendo   nueva   información   no   dirigida   a   google-­‐map-­‐direc2ons   dentro   del  objeto  map     Los  cambios  adi2vos  sobre  el  objeto  map  no   deberían  impactar  en  el  funcionamiento  de   google-­‐map-­‐direc2ons   A   B   C   D   {{x}}   {{x}}   {{x}}   x = { foo: 1, bar: 2, baz: 3 }   A  comunica  una  estructura   de  datos  x  a  B,  C,  y  D   Cada   componente   B,   C,   D   hace   sólo  uso  de  parte  de  los  datos  en  x   sin  importar  el  resto     x.foo x.bar   x.baz   x.bar x.baz  
  41. 41. @javiervelezreye    41     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  Acoplamiento  Débil     En  el  marco  de  una  comunicación,  el  diseño  de  un  componente   no   debería   verse   influenciado   por   cuándo   se   produce   la   información  compar2da  dentro  de  la  misma.   Al   diseñar   un   componente   no   debería   importar   con   qué   desfase   llega   a   los   des2natarios   la   información   compar2da   en  una  comunicación.   No  Importa  Cuándo   Muchos  componentes  de  Polymen  en  las   librerías   core-­‐*   y   paper-­‐*   u2lizan   la   e2queta   core-­‐meta   para   ofrecer   desaco-­‐ plamiento  temporal.   e set {{x}} get Ninguno   de   los   medios   de   comunicación,   mensajes,  data  binding  &  eventos  presenta   desacoplamiento  temporal  ya  que  requiere   que   los   componentes   des2natarios   estén   ac2vos  en  el  momento  de  la  comunicación   Es   buena   idea   introducir   intermediarios   que   garan2cen   desacoplamiento  temporal   <core-meta id="A"> <property name="x" value="1"> </property> </core-meta> Ps   C   var m = document.createElement('core-meta'); var data = m.byId('A'); console.log(data); x : 1 A   P   C   P   u2liza   core-­‐meta   para   escribir   un   dato   en  el  espacio  A   Una   nueva   instancia   de   core-­‐meta   permite   a   C   posteriormente   acceder     a   los  datos  en  A  
  42. 42. @javiervelezreye    42     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  Acoplamiento  Débil     En  el  marco  de  una  comunicación,  el  diseño  de  un  componente   no  debería  verse  influenciado  por  la  frecuencia  con  la  que  otros   componentes  interactúan  dentro  de  la  misma.   Al   diseñar   un   componente   no   debería   importar  con  qué  frecuencia  llegan  solici-­‐ tudes   al   mismo   desde   los   demás   par2-­‐ cipantes  en  una  comunicación.   No  Importa  Cada  Cuánto   Existen   muchas   librerías   como   underscore.js   que   permiten   implementar   componentes  C  que  ar2culen  polí2cas  de   throhling.   eeeeee e e e El  componente  A  emite  eventos   con   una   frecuencia   excesiva   para  el  des2natario  B       Gracias   a   C,   la   frecuencia   con   que   B   recibe   eventos   está   más   amor2guada   B   A   C   El  componente  C  recibe  eventos   de   A   y   los   retransmite   a   B   ges2onando  el  throhling   <div on-mousemove="{{C.hn}}"> </div> _.throttle(function(e){ this.fire(e); }.bind(this), 3000); hn   e e A   B   C  
  43. 43. @javiervelezreye    43     Principios  de  Diseño   Principios  de  Diseño  en  Componentes  Web   Principio  de  Acoplamiento  Débil   §  Aumentar  la  mantenibilidad     §  Simplificar  el  uso   §  Simplificar  el  desarrollo   §  Facilitar  la  sus2tución   §  Fomentar  la  autonomía   §  Mejorar  la  evolu2vidad   Diseño  de  Dominio   Desarrollo  de  Componentes   ObjeRvos   Fases   Contrato  de  Componentes   Relaciones  de  Dependencia   Región   El   principio   de   acoplamiento   débil   persigue   obtener   componentes   idealmente   autónomos   que   sean   fácilmente   reu2lizables   en   dis2ntos   contextos  de  uso.   MoRvación   Librería   Dominio   Contrato  de   Componentes   Relaciones  de   Dependencia  
  44. 44. @javiervelezreye    44     Principios  de  Diseño   Principios  de  Diseño  en  Componentes  Web   Principio  de  Acoplamiento  Débil     Cuantas   menos   dependencias   presenta   un   componente   mayor   libertad  de  reuDlización  ofrece   El   bajo   acoplamiento   permite   arDcular  técnicas  de  adaptación   en  los  componentes   Dom   Abs   Est   Com   Adp   Evo   Enc  Std   Ctx   ArDcular   mecanismos   de   desacoplamiento   conduce   a   generar   confusión   en   el   dominio   Reu   Aco   El   desacoplamiento   permite   una   integración   grácil   en   el   contexto   Los   componentes   con   bajo   acoplamiento   son   más   fácilmente  encapsulables     El   desacoplamiento   ofrece   más   grados   de   libertad   en   la   evolución  del  componente   Tensiones  
  45. 45. @javiervelezreye    45     Principios  de  Diseño   Principios  de  Diseño  en  Componentes  Web   Principio  de  Acoplamiento  Débil     Collec2on   hhp://goo.gl/6nLcbk   Este  componente  no   presenta  dependencias   con  ningún  otro  elemento   Cada  avatar  es  un  componente   que  es  responsable  de  su  propio   rendering  con  lo  que  el  volumen   de  información  intercambiada   es  nulo   Cuando  pinchas  en  un   item  de  la  colección  se  le   comunica  al  padre  por   eventos   Ejemplo  
  46. 46. @javiervelezreye    46     Principios  de  Diseño   Principios  de  Diseño  en  Componentes  Web   Principio  de  Abstracción   Abstracción   Analista  de  Dominio   Arquitecto  &  Desarrollador  de  Componentes   Nombre   Actores   Asegúrate   siempre   de   que   tus   componentes   operan   al   nivel   más   elevado   de   abstracción   posible   dentro   de   los   contextos   de   colaboración  en  que  par2cipen.  
  47. 47. @javiervelezreye    47     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  Abstracción     Durante  la  definición  del  contrato  de  un  componente  asegúrate   de  que  no  expones  detalles  internos  de  implementación  y  de  que   revelas  la  mínima  can2dad  de  información  posible  sobre  él.   Incluye   la   parte   pública   en   el   proto2po.   Usa   los   mecanismos   de   declaración   de   atributos   de   Polymer   para   definir   el   estado.  Encapsula  mediante  clausuras  las   partes  privadas.   Abstrae  Los  Detalles   core-­‐ajax   es   un   buen   ejemplo   de   componente   que   permite   realizar   una   prolija   operación   abstrayendo   de   los   detalles  de  implementación.   Atributos     Propiedades   Capacidades   Controladores   Manejadores   Variables   implementación   Helpers   Adaptadores   …   Estado  Funciones   Pública  Privada   <core-ajax auto url="..." params="..." handleAs="json"{{A.hn}}"> </core-ajax> A  De   una   manera   declara2va   se   exponen  los  datos  de  una  solicitud   AJAX   incluyendo   la   función   que   ges2onará  la  respuesta  cuando  ésta   se  haya  obtenido   hn  
  48. 48. @javiervelezreye    48     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  Abstracción     Expresa  las  colaboraciones  entre  componentes  al  mayor  nivel  de   abstracción   posible.   De   esta   manera   se   dará   cobertura   par2cipa2va  a  un  mayor  número  de  variantes.   Al  definir  un  componente  en  un  nivel  de   abstracción   dado   se   condiciona   su   número   de   potenciales   colaboradores.   Si   el  nivel  aumenta  dicho  número  también.   Opera  Al  Mayor  Nivel  De  Abstracción  Posible   Como  ejemplo  seleccionaremos  de  nuevo   el   componente   core-­‐selec2on   y   lo   compararemos   con   otro   hipoté2co   definido  a  un  nivel  más  abstracto.     core-select <wc-data-holder> </wc-data-holder> data   Al  subir  el  nivel  de  abstracción  en  el  que  se  define   el   contrato   del   componente,   éste   no   queda   restringido   a   escenarios   se   selección   sino   a   cualquier  situación  de  cambio  de  estado   <core-selection> </core-selection> select   wc-data Abstracción   Abstracción   Al  subir  el  nivel  de  abstracción   aumenta   el   número   de   componentes  compa2bles  
  49. 49. @javiervelezreye    49     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  Abstracción     Durante  la  fases  de  diseño  y  análisis  establece  las  abstracciones   de  datos  per2nentes  que  serán  elementos  de  intercambio  en  las   comunicaciones  entre  componentes.   Además   de   definir   el   entramado   de   componentes   de   dominio   es   importante   establecer  las  abstracciones  de  datos  que   permiten  a  éstos  comunicarse.   Construye  Abstracciones   La  familia  de  componentes  google-­‐map-­‐*   es   un   ejemplo   de   librería   que   u2liza   un   objeto  map  para  comunicar  unos  compo-­‐ nentes  con  otros.   {{x}} data   B   event (ctx) Se   define   la   abstracción   de   datos   data   que   se   u2liza   para   comunicar   A   con   B   en   los   parámetros  de  una  llamada   Se   definen   la   abstracción   de   datos   del   contexto   de   evento   que   permite   a   A   comunicase   con  los  escuchadores  Bs   Se   definen   la   abstracción   de   datos  de  la  variable  compar2da   x   que   sirve   para   comunicar   los   componentes   Bs   A   A   <google-map map="{{map}}"> </google-map> <google-map-directions map="{{map}}" startAddress="San Francisco" endAddress="Mountain View"> </google-map-directions> <google-map-search map="{{map}}" query="Pizza" result="{{result}}"> </google-map-search> El   objeto   {{map}}   es   una   abstracción   de   datos  que  representa  un  mapa  de  Google   Maps  
  50. 50. @javiervelezreye    50     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  Abstracción     Define  componentes  abstractos  que  iden2fiquen  un  modelo  de   capacidades   y   comportamiento   protorpico   para   que   otros   componentes  puedan  adquirirlo  por  herencia.   La  definición  de  un  componente  abstracto   que   es   extendido   por   herencia   permite   centralizar   cierta   lógica   común   que   debe   ser  conferida  a  cada  hijo.   Abstrae  Por  ProtoRpos   Un   buen   ejemplo   de   abstracción   por   herencia   que   persigue   este   obje2vo   lo   encontramos   en   componentes   que   heredan  de  core-­‐selector.   C   D   A   B   En   este   nivel   de   abstracción   A   concentra   toda   la   lógica   común   de  que  deberá  disponer  cada  hijo   Cada   hijo   adquiere   las   propiedades,   semán2ca   y   comportamiento   del   padre   core-­‐menu  paper-­‐tabs   core-­‐selector   core-­‐pages   Core-­‐selector  es  un  componente   abstracto  que  define  el  contrato   de  todo  proveedor  de  selección   Cada  hijo  adquiere  la  lógica  del  padre   ya   que   es   una   variante   de   core-­‐ selector  y  se  comporta  como  él  
  51. 51. @javiervelezreye    51     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  Abstracción     Cuando  diseñes  un  componente  define  los  requisitos  sobre  los   contratos  de  los  componentes  de  la  vecindad  que  éstos  deben   sa2sfacer  para  que  puedan  operar  con  él.   Para   operar   con   un   componente   generalmente   basta   con   exigir   que   los   colaboradores   implementen   cierto   contrato  parcial.   Abstrae  Por  Roles   Un   ejemplo   de   abstracción   por   roles   lo   encontramos   en   el   componente   core-­‐ pages.     [play,  stop]   playlist   No   importa   si   los   elementos   de   playlist   son   videos,   audios   u   otra   cosa.   Simplemente   es   preciso   que   dispongan  del  contrato  play  &  stop   <wc-player> <video> ... </video> <audio> ... </audio> <audio> ... </audio> <video> ... </video> </wc-player> wc-­‐player   El  componente  debe   implementar  los   métodos  play  &  stop   <core-pages selected="{{s}}"> <div>Page 1</div> <div>Page 2</div> <div>Page 3</div> </core-pages> Las  e2quetas  anidadas  representan   las  páginas  ges2onadas.  Pueden  ser     cualquier   elemento.   Sólo   deben   responder  a  eventos  tap  
  52. 52. @javiervelezreye    52     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  Abstracción     Cada   vez   que   definas   una   abstracción   considera   qué   variantes   polimórficas  específicas  existen  dentro  del  dominio  para  cumplir   con  ella.     La   abstracción   permite   definir   puntos   dentro  de  la  arquitectura  donde  diversos   componentes  pueden  ser  intercambiados   para  jugar  un  determinado  rol.   Define  Variantes  Polimórficas   Un   contraejemplo   de   abstracción   por   variantes  lo  encontramos  en  las  e2quetas   core  de  ges2ón  de  iconos.   m   m   m   m   C  B   A  D   Los   componentes   B   y   C   son   variantes   polimórficas   que   pueden   colaborar  con  D  ya  que  heredan  el   contrato  definido  por  A   m  m   A B C [m]   Los  componentes  A  y  B  son  variantes   polimórficas   que   pueden   colaborar   con  C  ya  que  implementan  el  método   m  que  éste  requiere   core-­‐iconset-­‐svg   core-­‐meta   core-­‐iconset   Core-­‐meta  confiere  a  sus  hijos   un   modelo   de   comunicación   basado   en   el   acceso   a   memoria  compar2da   Aquí  se  u2liza  la  herencia  exclusivamente  como  método   de   factorización   de   código   y   no   como   soporte   a   la   definición   de   variantes   intercambiables.   No   se   puede   decir   que   ninguno   de   los   componentes   hijo   mantengan   una  relación  semán2ca  es-­‐un  con  el  padre  
  53. 53. @javiervelezreye    53     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  Abstracción     En   el   ejercicio   de   división   de   responsabilidades   orienta   los   procesos   de   abstracción   para   maximizar   las   posibilidades   composi2vas  con  otros  componentes  del  entorno.   Diseñar  al  nivel  adecuado  de  abstracción   permite  hacer  una  división  de  responsabi-­‐ lidades  sobre  el  dominio  que  fomenta  las   oportunidades  de  composición.   Abstrae  Para  Componer     El   componente   core-­‐selec2on   está   definido  a  un  nivel  de  abstracción  elevado   para  dar  soporte  a  muchos  escenarios  de   uso.   Dominio   composición   Análisis  abstracto   Cuando   definas   un   componente   considera  el  nivel  de  abstracción  al   que  debes  definir  su  contrato  para   maximizar   sus   posibilidades   composi2vas   A   core-select <core-selection> </core-selection>select   Core-­‐selec2on   no   impone   restricciones   sobre   el   2po,   comportamiento   o   forma   de   operar  de  los  clientes  A   Core-­‐selec2on   recibe   no2ficaciones   de   cambio   de   estado   mediante   el   método   select   y   lo   propaga   por   eventos  
  54. 54. @javiervelezreye    54     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  Abstracción     En   el   ejercicio   de   división   de   responsabilidades   orienta   los   procesos   de   abstracción   teniendo   en   cuenta   las   necesidades   protorpicas  que  demanden  otros  componentes  en  el  dominio.   Pese  a  que  es  buena  prác2ca  perseguir  el   agnos2cismo   entre   componentes   resulta   pragmá2co   atender   en   la   medida   de   lo   posible  las  necesidades  de  la  vecindad.   Abstrae  Para  Descomponer     Core-­‐selector  es  un  componente  similar  a   core-­‐selec2on   preparado   para   aquellos   escenarios  en  los  que  los  proveedores  de   selección   se   anidan   dentro   del   compo-­‐ nente.   Dominio   descomposición   Factorización  de  variantes   Cuando   definas   un   componente   considera   las   demandas   que   imponen  los  escenarios  protorpicos   de   uso   para   establecer   el   nivel   de   abstracción  del  mismo   <core-pages selected="{{s}}"> <div>Page 1</div> <div>Page 2</div> </core-pages> core-­‐selector   core-­‐pages   Core-­‐pages   hereda   de   core-­‐selector.   Este   componente   funciona   como   core-­‐selec2on   pero  está  preparado  para  aquellos  casos  donde   los   componentes   que   cambian   el   estado   son   los  elementos  agregados  en  el  light  DOM   core-select
  55. 55. @javiervelezreye    55     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  Abstracción     Durante   las   fases   de   diseño   establece   dis2ntos   niveles   de   abstracción   para   fomentar   la   libertad   evolu2va   de   los   componentes  en  el  marco  de  tu  dominio.   La   definición   de   abstracciones   permite   ar2cular   puntos   de   extensión   variante   donde   nuevos   componentes   puedan   incluirse  como  sus2tutos.   Abstrae  Para  Extender   En   la   librería   core-­‐*   encontramos   varios   componentes   que   heredan   de   core-­‐ selector.   Nuevos   componentes   similares   deberían  también  heredar  de  él.   C  B   A   …   Cada  herencia  polimórfica  supone  un   punto   de   extensión   potencial   para   añadir   futuras   variantes   que   se   adscriban  al  contrato  definido  por  A   A  define  un  contrato  al  que   se  adscriben  todos  sus  hijos   core-­‐menu  core-­‐pages   core-­‐selector   core-­‐grid   Si  algún  día  se  crea  un  componente  para  hacer   grid   de   contenidos   con   un   comportamiento   similar   a   core-­‐pages   o   core-­‐menu   tendría   sen2do  hacerlo  heredando  de  core-­‐selector    
  56. 56. @javiervelezreye    56     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  Abstracción     Diseña  tus  componentes  al  nivel  de  abstracción  adecuado  para   permi2r   que   éstos   puedan   operar   entre   sí   con   suficiente   desacoplamiento.   Cuando   definimos   puntos   de   extensión   por  abstracción  estamos  garan2zando  un   desacoplamiento  entre  los  par2cipantes.   Abstrae  Para  Desacoplar   Un   ejemplo   de   abstracción   que   fomenta   el  desacoplamiento  lo  encontramos  en  la   jerarquía   de   herencia   de   core-­‐selector   dentro  de  la  librería  core-­‐*.   C  B   A   Los   componentes   B,   C   pueden   discrecionalmente   sus2tuir   a   A   en  la  colaboración  con  E   A  define  un  contrato  al  que   se  adscriben  todos  sus  hijos   E   Dado  que  E  no  es  consciente  con  qué   variante  de  A  está  operando  en  cada   momento,   se   ha   establecido   un   desacoplamiento   entre   E   y   sus   colaboradores     core-­‐menu  core-­‐pages   core-­‐selector   Dado  que  ambos  componentes  implementan  el   contrato   definido   en   core-­‐selector,   A   puede   asumir   siempre   la   existencia   de   un   atributo   selected     A selected  
  57. 57. @javiervelezreye    57     Principios  de  Diseño   Principios  de  Diseño  en  Componentes  Web   Principio  de  Abstracción   §  Facilitar  el  desarrollo  evolu2vo   §  Aumentar  la  versa2lidad  composi2va   §  Favorecer  la  organización  del  dominio   §  Promover  la  economía  de  Código   §  Fomentar  la  factorización  de  Código     §  Simplificar  el  uso  de  componentes   §  Fomentar  la  declara2vidad   Análisis  &  Diseño  de  Dominio   Diseño  de  Componentes   ObjeRvos   Fases   Contrato  de  Componentes   Región   Al  definir  los  componentes  al  nivel  de   abstracción  adecuado  se  consigue  que   éstos   puedan   operar   en   el   mayor   número  posible  de  contextos  de  uso.   MoRvación   Librería   Dominio   Contrato  de   Componentes  
  58. 58. @javiervelezreye    58     Principios  de  Diseño   Principios  de  Diseño  en  Componentes  Web   Principio  de  Abstracción     Los   componentes   más   abstractos   presentan   mayor   grado   de   reuDlización  potencial   La   factorización   del   código   por   abstracción  permite  centralizar  los   desarrollos   y   evolucionar   por   extensión   Dom   Aco   Est   Com   Adp   Evo   Enc  Std   Ctx   La  búsqueda  sistemáDca   de  componentes  al  nivel   adecuado  de  abstracción   facilita   la   división   de   responsabilidades   Reu   Abs   Trabajar   con   los   niveles   adecuados   de   abstracción   favorece  la  estandarización   Encontrar   las   abstracciones   adecuadas   fomenta   la   encapsulación  de  las  mismas   Encontrar   las   abstracciones   adecuadas   favorece   la   composiDvidad  polimórfica   Tensiones  
  59. 59. @javiervelezreye    59     Principios  de  Diseño   Principios  de  Diseño  en  Componentes  Web   Principio  de  Abstracción     Add  Alarm  anima2on   hhp://goo.gl/pzh5vW   Este  componente  captura   una  experiencia  de   usuario  que  se  abstrae  de   los  detalles  de  contenido   Todos  los  componentes   de  esta  interfaz  operan  en   un  nivel  de  abstracción   común   Esta  composición  parDcular  de   contenidos  se  ha  encontrado  a   parDr  de  una  descomposición   inicial  del  dominio   El  componente  de  animación  es  un   presentador  de  información   independientemente  de  que  en  este   contexto  se  use  para  configurar  una   alarma   Ejemplo  
  60. 60. @javiervelezreye    60     Principios  de  Diseño   Principios  de  Diseño  en  Componentes  Web   Principio  de  ReuRlización   Reu2lización   Arquitecto  &  Desarrollador  de  Componentes   Nombre   Actores   Asegúrate   de   maximizar   siempre   las     posibilidades   de   reu2lización   de   tus   componentes   dentro   del   dominio   al   que   pertenecen.  
  61. 61. @javiervelezreye    61     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  ReuRlización     Antes  de  empezar  a  desarrollar  un  componente  estudia  todos  los   requisitos  que  te  exigen  los  componentes  de  la  vecindad  en  los   diferentes  contextos  de  uso  potencial.     Habrá   muchos   componentes   que   aún   no   existan   cuando   diseñes.   Tu   componente   será   más   reu2lizable   cuanta   mayor   cobertura  a  posibles  requisitos  ofrezca.   EnRende  A  Tus  Clientes   Como   ejemplo   de   esta   faceta   podemos   considerar   el   modelo   arquitectónico   que   permite   construir   e2quetas   como   core-­‐ pages,  paper-­‐tabs  y  core-­‐menu.   r1 r3 r2 r2 r3 B C D r1 r2 r3 Los  componentes  de  la  vecindad  B,  C  y   D   condicionan   las   capacidades   que   debe  ofrecer  el  componente  A   A core-­‐menu  paper-­‐tabs   core-­‐selector   core-­‐selecRon   core-­‐pages   usa   Core-­‐selector  es  una  adaptación  arquitectónica  de  core-­‐ selec2on  dirigida  a  dar  respuesta  a  las  necesidades  de   no2ficación  de  cambio  que  requieren  core-­‐pages,  core-­‐ tabs  y  core-­‐menu  entre  otros   Core-­‐selec2on  ofrece  un   mecanismo  de  no2ficación   de  cambio  de  una   selección  
  62. 62. @javiervelezreye    62     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  ReuRlización     Modula   la   demanda   de   requerimientos   de   tus   clientes   con   las   restricciones  impuestas  por  la  división  de  responsabilidades  que   has  hecho  en  el  marco  de  tu  dominio.   La  creación  de  nuevos  compontes  deberá   estar   siempre   en   claro   alineamiento   con   las   estrategias   de   división   de   responsa-­‐ bilidades  establecidas  en  el  dominio.   Respeta  El  Dominio   Un   claro   ejemplo   de   esta   faceta   lo   encontramos  en  la  e2queta  core-­‐header-­‐ panel.   Dominio   r1 r2 r3 Los   requerimientos   de   los   componentes   cliente   B,   C   y   D   no   deben   desestabilizar   al   componente  A  dentro  del  dominio       Espacio  de   responsabilidad   B A C D <core-header-panel> <div class="core-header">...</div> <div class="content" fit>...</div> </core-header-panel> El   componente   proporciona   un   layout   de   contenidos   usado   por   otros   componentes   especialmente   en  contextos  de  móvil   Sin   embargo   su   comportamiento   no   se   ve   influencia   por   el   comportamiento   ni   las   necesidades   par2cularidades   de   los   componentes   clientes   que   se   agregan   dentro  de  él  
  63. 63. @javiervelezreye    63     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  ReuRlización     Durante  las  ac2vidades  de  diseño  y  desarrollo  de  componentes   no   cedas   a   las   demandas   que   los   demás   componentes   cliente   puedan  hacer  puntualmente  en  cada  contexto  de  uso.   Cualquier  extensión  del  contrato  debe  ser   some2da   a   un   riguroso   análisis.   El   contrato   debe   responder   a   criterios   de   dominio  y  no  a  necesidades  de  cliente.   Mantén  La  Equidistancia   Para   ilustrar   la   equidistancia   de   cliente   podemos   retomar   el   ejemplo   de   abstracción   de   core-­‐selec2on   que   presentamos  antes.     r1 r2 r3 r1' r2 r3' Lo  que  demandan  los  clientes  B,   C  y  D  es  tenido  en  cuenta  pero   reformulado   para   definir   las   capacidades   y   comportamiento   de  A     core-select <wc-data-holder> </wc-data-holder> data   <core-selection> </core-selection> select   wc-data Al   expresar   el   contrato   del   componente   a   mayor   nivel   de   abstracción   se   man2ene   una   mayor   distancia   de   los   contextos   de   uso   lo   que  fomenta  la  reu2lización  
  64. 64. @javiervelezreye    64     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  ReuRlización     Cuando   diseñes   componentes   centra   tu   atención   en   definir   un   contrato   desacoplado   de   la   tecnología   y   decisiones   de   implementación  subyacentes.   Todo  2po  de  acoplamiento  de  contrato  es   un   síntoma   de   mal   diseño   que   compromete   la   reu2lización   del   componente.     Desacopla  Tu  Contrato   Las   e2quetas   core-­‐anima2on-­‐*   son   un   buen   ejemplo   de   componentes   que   presenta   un   alto   acoplamiento   a   tecnología.   lib.js   Plataforma   El   acoplamiento   a   plataforma   es   perjudicial   pero  más  leve  ya  que  todos  los  componentes   operan  sobre  la  misma  plataforma     usa   El   acoplamiento   de   contrato   a   implementación   pone   en   peligro   la  evolu2vidad   El   acoplamiento   a   depen-­‐ dencia   externa   compro-­‐ mete  el  mantenimiento   El   acoplamiento   a   tecnolo-­‐ gía  poluciona  el  desarrollo  y   compromete  la  reu2lización   Este   conjunto   de   e2quetas   expone   todos   los   detalles   del   modelo   de   animación   CSS   sin   realizar   ninguna   abstracción   más   ni   aportar   mayor  valor   <core-animation id="fadeout" duration="500"> <core-animation-keyframe> <core-animation-prop name="opacity" value="1"> </core-animation-prop> </core-animation-keyframe <core-animation-keyframe> <core-animation-prop name="opacity" value="1"> </core-animation-prop> </core-animation-keyframe> </core-animation>
  65. 65. @javiervelezreye    65     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  ReuRlización     Una  buena  forma  de  conseguir  un  alto  grado  de  reu2lización  en   el   ámbito   de   tu   dominio   es   asegurar   el   comportamiento   autónomo  de  los  componentes.   El  acoplamiento  es  el  gran  enemigo  de  la   reu2lización.  Idealmente  e2quetas  que  no   presentan   relaciones   de   dependencia   ofrecen  alta  reu2lización.   Persigue  La  Autonomía   Ya   presentamos   en   el   principio   de   acoplamiento   débil   algún   ejemplo   de   autonomía.   No   obstante   en   Polymer   hay   muchas  opciones  para  ilustrar  esta  faceta.   Si   bien   la   autonomía   permite   alcanzar   cotas   altas  de  reu2lización  no  hay  que  olvidar  que  la   construcción   basada   en   componentes   se   fundamenta  en  relaciones  de  composición   <google-hangout-button> </google-hangout-button> <google-streetview-pano panoid="VsCKIVGfvpEAAAQJKfdW1w" heading="330" pitch="-2" zoom="0.8" disableDefaultUI> </google-streetview-pano> Se  u2liza  para  incluir   un  botón  que  arranca   Google  hangouts   Una  bonita  panorámica   de  las  montañas  Machu   Pichu  en  Perú  
  66. 66. @javiervelezreye    66     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  ReuRlización     Durante   el   desarrollo   de   soluciones   composi2vas   asegúrate   de   que  el  nivel  de  granularidad  no  resulta  demasiado  grande  como   para  comprometer  su  valor  reu2lizable.   El   nivel   de   granularidad   que   alcanza   un   componente   por   sucesivas   encapsula-­‐ ciones  puede  llegar  a  poner  en  riesgo  su   capacidad  de  reu2lización.   Vigila  La  Granularidad   Para  ilustrar  el  significado  de  los  umbrales   de   contexto   y   reu2lización   selecciona-­‐ remos  algunos  ejemplos  de  componentes   en  cada  región.   Umbral  de   reuRlización   Umbral  de   contexto     Por   debajo   del   umbral   de   reu2lización   el   compo-­‐ nente  aún  resulta  reusable   Por   encima   del   umbral   de   contexto   el   componente   ya   2ene   un   significado   contextual   core-image core-icon, core-iconset core-ajax, core-meta Los   componentes   presentan   una   alrsima   reu2lización   pero   no   2enen   gran   significado   contextual   u v w u core-pages, core-menu paper-tabs, paper-fab core-drawer-panel Los   componentes   presentan   alta   reu2lización   y   además   2enen   un   contexto   de   aplica-­‐ ción  claro   v google-map google-chart google-youtube Los   componentes   están   dedi-­‐ cados   a   un   dominio   tan   espe-­‐ cífico   que   su   capacidad   de   reu2lización  es  menor   w
  67. 67. @javiervelezreye    67     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  ReuRlización     En  la  medida  de  lo  posible,  construye  componentes  que  puedan   operar   exclusivamente   a   par2r   de   la   configuración   semán2ca   que  reciben  desde  el  marcado  HTML.   Las  e2quetas  que  deben  ser  configuradas,   compuestas,   adaptadas   o   explotadas   mediante  la  inclusión  de  código  presentan   un  nivel  de  reu2lización  menor.   Persigue  La  DeclaraRvidad   Un   contraejemplo   del   uso   del   diseño   declara2vo  lo  encontramos  en  la  e2queta   core-­‐a11y-­‐keys.   Desarrollador   Web   Maquetador   Web   Maquetador   Web   Los   componentes   que   se   instancian  declara2vamente   son   cómodos   y   fáciles   de   usar   Los   componentes   que   requieren   configuración   o   código   pegamento   hacen  más  improbable  su  uso     Js   <core-a11y-keys target="{{}}" keys="up down left right" on-keys-pressed="{{hn}}"> </core-a11y-keys> Este   componente   puede   resultar   de   gran   u2lidad   prác2ca.   Sin   embargo   el   hecho   de   requerir   definir   una  función  manejadora  en  JavaScript  compromete   su   reu2lización   ya   que   exige   de   competencias   programá2cas  al  usuario   hn   La  e2queta  core-­‐a11y-­‐keys  proporciona   un   mecanismo   para   procesar   eventos   de  teclado  
  68. 68. @javiervelezreye    68     Principios  de  Diseño     Principios  de  Diseño  en  Componentes  Web   Principio  de  ReuRlización     En   la   medida   de   lo   posible   evita   establecer   convenios   de   desarrollador  porque  limitan  su  aplicabilidad  al  ámbito  personal   y  reducen  las  posibilidades  de  reu2lización.   Cuando   los   convenios   no   2enen   una   amplitud   de   aceptación   considerable   pueden   suponer   un   problema   para   el   cliente.     Reduce  Los  Convenios   Presentaremos   ejemplos   rpicos   de   convenios   usados   por   desarrolladores.   El   propósito   es   meramente   ilustra2vo   y   no   prescrip2vo.   Plataforma   Equipo   Tu  Tus  convenciones  de  diseño   y   desarrollo   se   convierten   en   restricciones   para   otros   usuarios   Al   menos   deberías   alinear   tus   criterios  de  estandarización  con   tu   organización   o   equipo   de   trabajo   my_variable MyMethod init() myVariable myMethod constructor() <myWebCompoment> myColor = "blue" isVisible = "true" <my-web-component> my-color = "blue" visible

×