SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Downloaden Sie, um offline zu lesen
M E M B E R
Desarrollo y testeo
modular de interfaces
HTML5 / MVC
Santiago Bustelo
CodeCamp Buenos Aires • 15 de octubre, 2011
@sbustelo
Presentación bajo licencia Creative Commons
Atribución 2.5 Argentina
http://creativecommons.org/licenses/by/2.5/ar
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
¿De qué tipo de desarrollo de interfaces
estamos hablando?
• Aplicaciones web complejas, escalando a sistemas de múltiples
aplicaciones y sitios web con diferentes tecnologías back-end
• Requerimientos de la interfaz:
• Consistencia
• Múltiples navegadores / dispositivos
• Usabilidad, accesibilidad, SEO
• No es aceptable generar la interfaz desde el código back-end
• Es necesario construir HTML, CSS, JavaScript a nivel de producción
2
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
¿Qué vamos a ver?
• Contexto
• Vista general del proceso de diseño y desarrollo front-end
• Problemáticas específicas del desarrollo de interfaces HTML
• Propuesta
• Conjunto de prácticas y herramientas desarrolladas y probadas
en proyectos reales para reducir desperdicios y asegurar calidad
(¡y salud!)
• Congo, nuestro framework open source para desarrollo y testeo
modular HTML/CSS/JavaScript
3
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Contexto:
Diseño y desarrollo de
interfaces en sistemas de
aplicaciones web complejas,
usables y accesibles
4
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Aplicaciones y Sistemas de aplicaciones
5
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
6
Aplicaciones y Sistemas de aplicaciones
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Proceso de diseño y
desarrollo front-end
7
• IxD / AI / UX
• Análisis, Wireframes
• Validación: negocio / usuarios
• Diseño de interfaces
• Diseño a nivel de detalle
• Validación: negocio / usuarios
• Desarrollo de interfaces
• Maquetado HTML/CSS/JavaScript
• Validación: dispositivos
• Prototipo navegable
• Validación: negocio / usuarios
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Entregables de diseño y desarrollo de la
interfaz para implementación
• Documentación de procesos del usuario, elementos de la interfaz,
operación y funcionamiento
• HTML validado con negocio, usuario y dispositivos a ser generado
por el back-end (“modelo terminado”)
• El desarrollo front-end no se realiza sobre el framework de
implementación, debido a que ello:
• no permite trabajar la interfaz en el contexto correcto
• no permite iteraciones económicas
• genera apego a funcionalidades aunque no pasen validación UX
8
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Patrones de arquitectura de software
Integración front/back end
• MVC: Model-View-
Controller
• MVP: Model-View-Presenter
• MVVM: Model-View-
ViewModel
• BBM: estándar de facto de
arquitectura de software
Desarrollo front-end
• BBM
9
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
10
• Trabajo reactivo sobre lo evidente e
inmediato, poco o ningún
planeamiento e infraestructura
• Cada cambio “local” tiene
consecuencias globales, obliga a
repasar desarrollo previo (Shlemiel
the painter)
• Se acumulan incertidumbres que
explotan tardíamente
• Cada vez más difícil lograr
escalabilidad, performance,
mantenibilidad
BBM: Big Ball of Mud
(aka Shantytowns)
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Características desarrollo de código
HTML, CSS, JavaScript
• Poco modular por diseño (no existe “HTML include”) o
implementación (IE toma sólo los primeros 31 STYLEs y SCRIPTs)
• Capas geológicas, hacks, ofuscación
• Múltiples formas de lograr un resultado similar, muchas erróneas
• HTML: código no funcional
• No podemos aplicar herramientas de testing de código
funcional
• Sobre el HTML debemos montar el código JavaScript, que pasa
a heredar sus problemas estructurales
11
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Propuesta:
12
Desarrollo y testeo modular
Congo framework
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
HTML no tiene estructura: hay que dársela
• Estructuras, convenciones, mejores prácticas
• Desarrollar herramientas transparentes y portables para:
• brindar estructuras de soporte (scaffolding) no restrictivas
• realizar pruebas sistemáticas
• generar documentación y código para implementación de forma automática
• Proceso eficiente y flexible a iteraciones
• Productos:
• código front-end modular, mantenible, testeable, reusable
• documentación para implementación y mantenimiento de la interfaz
13
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Estructura: desarrollo modular
Nathan Curtis: Modularity & Design Hierarchy
14
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Herramienta: Congo
15
• Para probar código funcional,
podemos usar un mono loco
• Para probar código no funcional
(diseño), podemos usar…
un mono pintor
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Desarrollo modular de la interfaz
16
• Separación del HTML en componentes independientes
• Variables del componente permiten generar instancias de
información, presentación y operación
• Cada componente establece un contexto local para
HTML/DOM, CSS y JavaScript
• Paralelo funcional: objeto en OOP
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Componentes
componente_full
HTML template
archivos JS
archivos CSS
variables y valores
imagenes
img1, img2…
componente_minimo
(todo es opcional)
_componente_oculto
HTML template
17
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Un componente simple…
components/button/html.php
<span class="button
<?= $this->buttonType ?>">
<input type="submit"
value="<?= $this->buttonText ?>" />
</span>
components/button/variables.yml
buttonType: [ action, confirm, decline ]
buttonText: text
components/button/styles.css
.button INPUT { background-color:grey;
color:white; }
.button.action INPUT { background-
color:blue; }
.button.confirm INPUT { background-
color:green; }
.button.decline INPUT { background-color:red; }
components/button/scripts.js
$('.button A').click(function() {
// Do something...
});
18
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Componentes, componentes, componentes
components/formFoot/html.php
<div class="formFoot">
<?php component(
'button',
array('buttonText' => 'Submit')
); ?>
or
<a href="#">cancel</a>
</div>
19
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Convenciones HTML, CSS y JS
• El HTML siempre se abre y cierra por cada nivel.
• Todo componente está contenido en un wrapper:
SPAN (inline) o DIV (block) class="nombreDelComponente".
• Evitar declaraciones CSS afectando elementos no contiguos
• Cuanta más distancia haya entre un elemento y la regla de CSS
que lo afecta, más difícil será seguirle el rastro.
• Definimos globales sólo los tags principales (BODY, A, P…). Todas
las demás declaraciones descenderán de .nombreDelComponente.
• JavaScript no intrusivo, jQuery
20
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Componentes » Layouts
components/_layouts/index/html.php
<div class="layout-index">
<form>
<div class="formBody"> Say hello to the world! </div>
<?php component( 'formFoot' ); ?>
</form>
</div>
21
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Componente _html
components/_html/html.php
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<title>Hello world</title>
<?php $this->resources('css'); ?>
</head>
<body>
<?php $this->layout() ?>
<?php $this->resources('js'); ?>
</body>
</html>
• Incluye layout que le pasa el motor
• Compila los recursos CSS y JS de
todos los componentes
• Recomendaciones Yahoo!
Exceptional Performance:
• Make JavaScript and CSS
External
• Put Stylesheets at Top
• Put Scripts at Bottom
• Minify JavaScript and CSS
22
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Hello World!
23
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Template tags
24
Evaluar una variable:
<?= $this->variableName ?>
Variables del motor:
<?= $this->imgsPath ?>
<?= $this->rsrcPath ?>
TBD: root resources
Incluir componente:
<?php
component( 'componentName' ); ?>
<?php
component( 'componentName',
array('variableName' => 'value') ); ?>
Para _html (se provee placeholder)
<?php $this->layout() ?>
<?php $this->resources('css'); ?>
<?php $this->resources('js'); ?>
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Testeo del componente:
combinatoria de variables
• Se definen para cada componente grupos de valores de prueba
para cada variable.
• Al probar la combinatoria de variables y valores, se observan
sistemáticamente todos los estados posibles del componente.
• Paralelo funcional: unit testing
25
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Testeo del componente button
26
buttonType: [ action, confirm, decline ]
buttonText: text
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Explosión combinatoria
27
buttonTag: ['a', 'input']
buttonText: [ Submit, Very very long buttonText ]
buttonAHref: [ '#' ]
buttonSize: [ '' , small, big ]
buttonType: [ '', action, decline ]
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Pairwise: combinación de pares
28
Test Destination Class Seat Preference
1 Canada Coach Aisle
2 Mexico Coach Aisle
3 (defect!) USA Coach Aisle
4 Canada Business Class Aisle
5 Mexico Business Class Aisle
6 USA Business Class Aisle
7 Canada First Class Aisle
8 Mexico First Class Aisle
9 USA First Class Aisle
10 Canada Coach Window
11 Mexico Coach Window
12 (defect!) USA Coach Window
13 Canada Business Class Window
14 Mexico Business Class Window
15 USA Business Class Window
16 Canada First Class Window
17 Mexico First Class Window
18 USA First Class Window
Test Destination Class Seat Preference
1 Canada Coach Aisle
3 (defect!) USA Coach Aisle
5 Mexico Business Class Aisle
8 Mexico First Class Aisle
9 USA First Class Aisle
11 Mexico Coach Window
13 Canada Business Class Window
15 USA Business Class Window
16 Canada First Class Window
Michael Bolton: Pairwise Testing
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Pairwise testing
29
buttonTag: ['a', 'input']
buttonText: [ Submit, Very very long buttonText ]
buttonAHref: [ '#' ]
buttonSize: [ '' , small, big ]
buttonType: [ '', action, decline ]
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Testeo de un layout
30
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Indice del proyecto
31
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Views
32
• Instancias de los layouts para
documentación y prototipo
navegable (TBD: variables)
• Helper para generar layouts
• Al generar un nivel en
_sitetree.yml, se genera en
_layouts un directorio con
html.php placeholder
• Genera estructura archivos para
entregables finales
components/_layouts/_sitetree.yml
index
login
products:
index
detail
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Desarrollo vs. Entregables
input
config.php
variables.yml
components
_html
_layouts
componente1
componente2
output
documentation
documentation index
components (TBD)
test comp1
test comp2
public_html
rsrc
images
33
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Platforms: Eat Your Own Dogfood
34
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Platforms: Eat Your Own Dogfood
35
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Platforms: Eat Your Own Dogfood
36
Desarrollo y testeo modular de interfaces •M E M B E R
kambrica.com/congo
Now, eat our dogfood!
kambrica.com/congo
37
• Interfaces más robustas
• Diseñadores y desarrolladores
más saludables
• Sitios de cachorro a adulto
en mucho menos tiempo

Weitere ähnliche Inhalte

Was ist angesagt?

Front End & Responsive Web Design | DevFest Merida
Front End & Responsive Web Design | DevFest MeridaFront End & Responsive Web Design | DevFest Merida
Front End & Responsive Web Design | DevFest MeridaLuis Felipe Perez
 
Construyendo y publicando nuestra primera app multi plataforma (II)
Construyendo y publicando nuestra primera app multi plataforma (II)Construyendo y publicando nuestra primera app multi plataforma (II)
Construyendo y publicando nuestra primera app multi plataforma (II)Carlos Alonso Pérez
 
Documentos de UX
Documentos de UXDocumentos de UX
Documentos de UXElsa Canto
 
Wireframes & Prototipos ¿Sólo una cuestión de organización? / Día de la Usabi...
Wireframes & Prototipos ¿Sólo una cuestión de organización? / Día de la Usabi...Wireframes & Prototipos ¿Sólo una cuestión de organización? / Día de la Usabi...
Wireframes & Prototipos ¿Sólo una cuestión de organización? / Día de la Usabi...Herlency Muñoz García
 
User Experience Research: los métodos más usados en Mercado Libre
User Experience Research: los métodos más usados en Mercado LibreUser Experience Research: los métodos más usados en Mercado Libre
User Experience Research: los métodos más usados en Mercado LibreSol Velazquez
 
¿Diseñar para los usuarios o diseñar con los usuarios?
¿Diseñar para los usuarios o diseñar con los usuarios?¿Diseñar para los usuarios o diseñar con los usuarios?
¿Diseñar para los usuarios o diseñar con los usuarios?IxDA Mendoza
 
Desarrollo Web Avanzado II
Desarrollo Web Avanzado IIDesarrollo Web Avanzado II
Desarrollo Web Avanzado IIPablo De La Hoz
 
Equipos de una sola persona
Equipos de una sola personaEquipos de una sola persona
Equipos de una sola personaUX Nights
 
Experiencia de Usuario en un contexto de desarrollo de software, lecciones ap...
Experiencia de Usuario en un contexto de desarrollo de software, lecciones ap...Experiencia de Usuario en un contexto de desarrollo de software, lecciones ap...
Experiencia de Usuario en un contexto de desarrollo de software, lecciones ap...Herlency Muñoz García
 
Simple Steps to UX/UI Web Design- Español
Simple Steps to UX/UI Web Design- EspañolSimple Steps to UX/UI Web Design- Español
Simple Steps to UX/UI Web Design- EspañolKoombea
 
Cómo hacer una presentación en prezi
Cómo hacer una presentación en preziCómo hacer una presentación en prezi
Cómo hacer una presentación en prezi960218
 
Prototipado y testing de usabilidad rápido - @ThinkLeanEdu / Universidad de P...
Prototipado y testing de usabilidad rápido - @ThinkLeanEdu / Universidad de P...Prototipado y testing de usabilidad rápido - @ThinkLeanEdu / Universidad de P...
Prototipado y testing de usabilidad rápido - @ThinkLeanEdu / Universidad de P...Guillermo Ermel
 
Introducción al Diseño web
Introducción al Diseño webIntroducción al Diseño web
Introducción al Diseño webciwmx
 
Javascript para principiantes -Introducción
Javascript para principiantes -IntroducciónJavascript para principiantes -Introducción
Javascript para principiantes -IntroducciónOscar Josué Uh Pérez
 

Was ist angesagt? (20)

Front End & Responsive Web Design | DevFest Merida
Front End & Responsive Web Design | DevFest MeridaFront End & Responsive Web Design | DevFest Merida
Front End & Responsive Web Design | DevFest Merida
 
Construyendo y publicando nuestra primera app multi plataforma (II)
Construyendo y publicando nuestra primera app multi plataforma (II)Construyendo y publicando nuestra primera app multi plataforma (II)
Construyendo y publicando nuestra primera app multi plataforma (II)
 
Documentos de UX
Documentos de UXDocumentos de UX
Documentos de UX
 
UX y UI
UX y UIUX y UI
UX y UI
 
Usabilidad
UsabilidadUsabilidad
Usabilidad
 
Wireframes & Prototipos ¿Sólo una cuestión de organización? / Día de la Usabi...
Wireframes & Prototipos ¿Sólo una cuestión de organización? / Día de la Usabi...Wireframes & Prototipos ¿Sólo una cuestión de organización? / Día de la Usabi...
Wireframes & Prototipos ¿Sólo una cuestión de organización? / Día de la Usabi...
 
User Experience Research: los métodos más usados en Mercado Libre
User Experience Research: los métodos más usados en Mercado LibreUser Experience Research: los métodos más usados en Mercado Libre
User Experience Research: los métodos más usados en Mercado Libre
 
¿Diseñar para los usuarios o diseñar con los usuarios?
¿Diseñar para los usuarios o diseñar con los usuarios?¿Diseñar para los usuarios o diseñar con los usuarios?
¿Diseñar para los usuarios o diseñar con los usuarios?
 
Fundamentos DiseñO Web
Fundamentos DiseñO WebFundamentos DiseñO Web
Fundamentos DiseñO Web
 
Desarrollo Web Avanzado II
Desarrollo Web Avanzado IIDesarrollo Web Avanzado II
Desarrollo Web Avanzado II
 
¿Por qué UX?
¿Por qué UX?¿Por qué UX?
¿Por qué UX?
 
Equipos de una sola persona
Equipos de una sola personaEquipos de una sola persona
Equipos de una sola persona
 
Experiencia de Usuario en un contexto de desarrollo de software, lecciones ap...
Experiencia de Usuario en un contexto de desarrollo de software, lecciones ap...Experiencia de Usuario en un contexto de desarrollo de software, lecciones ap...
Experiencia de Usuario en un contexto de desarrollo de software, lecciones ap...
 
Simple Steps to UX/UI Web Design- Español
Simple Steps to UX/UI Web Design- EspañolSimple Steps to UX/UI Web Design- Español
Simple Steps to UX/UI Web Design- Español
 
Cómo hacer una presentación en prezi
Cómo hacer una presentación en preziCómo hacer una presentación en prezi
Cómo hacer una presentación en prezi
 
Wix y yola
Wix y yolaWix y yola
Wix y yola
 
Prototipado y testing de usabilidad rápido - @ThinkLeanEdu / Universidad de P...
Prototipado y testing de usabilidad rápido - @ThinkLeanEdu / Universidad de P...Prototipado y testing de usabilidad rápido - @ThinkLeanEdu / Universidad de P...
Prototipado y testing de usabilidad rápido - @ThinkLeanEdu / Universidad de P...
 
Introducción al Diseño web
Introducción al Diseño webIntroducción al Diseño web
Introducción al Diseño web
 
Formulacion
FormulacionFormulacion
Formulacion
 
Javascript para principiantes -Introducción
Javascript para principiantes -IntroducciónJavascript para principiantes -Introducción
Javascript para principiantes -Introducción
 

Andere mochten auch

Patron de Desarrollo Modelo Vista Controlador
Patron de Desarrollo Modelo Vista ControladorPatron de Desarrollo Modelo Vista Controlador
Patron de Desarrollo Modelo Vista ControladorHenry Vargas
 
PHP MVC Tutorial
PHP MVC TutorialPHP MVC Tutorial
PHP MVC TutorialYang Bruce
 
Un exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPUn exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPKristen Le Liboux
 
Mini projet individuel php
Mini projet individuel phpMini projet individuel php
Mini projet individuel phpKhadim Mbacké
 

Andere mochten auch (6)

MVC
MVCMVC
MVC
 
Patron de Desarrollo Modelo Vista Controlador
Patron de Desarrollo Modelo Vista ControladorPatron de Desarrollo Modelo Vista Controlador
Patron de Desarrollo Modelo Vista Controlador
 
PHP MVC Tutorial
PHP MVC TutorialPHP MVC Tutorial
PHP MVC Tutorial
 
PHP MVC
PHP MVCPHP MVC
PHP MVC
 
Un exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPUn exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHP
 
Mini projet individuel php
Mini projet individuel phpMini projet individuel php
Mini projet individuel php
 

Ähnlich wie Desarrollo y testeo modular de interfaces HTML5 / MVC - Congo framework

¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?Micael Gallego
 
Building Ria Applications With Silverlight 2
Building Ria Applications With Silverlight 2Building Ria Applications With Silverlight 2
Building Ria Applications With Silverlight 2Tonymx
 
Webinar como modernizar aplicaciones legacy y abandonar tecnologías obsoletas
Webinar como modernizar aplicaciones legacy y abandonar tecnologías obsoletasWebinar como modernizar aplicaciones legacy y abandonar tecnologías obsoletas
Webinar como modernizar aplicaciones legacy y abandonar tecnologías obsoletasatSistemas
 
Herramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de softwareHerramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de softwareMiguel Sanchez
 
Commit 2018 - Integrando Microservicios y Machine Learning
Commit 2018 - Integrando Microservicios y Machine LearningCommit 2018 - Integrando Microservicios y Machine Learning
Commit 2018 - Integrando Microservicios y Machine LearningRafa Hidalgo
 
Procesos de Software EGEL-UNITEC
Procesos de Software EGEL-UNITECProcesos de Software EGEL-UNITEC
Procesos de Software EGEL-UNITECmrojas_unitec
 
Visual Studio2005
Visual Studio2005Visual Studio2005
Visual Studio2005hvillarreal
 
Meetup TestingUy 2019 - Plataforma de integración y testing continuo
Meetup TestingUy 2019 - Plataforma de integración y testing continuoMeetup TestingUy 2019 - Plataforma de integración y testing continuo
Meetup TestingUy 2019 - Plataforma de integración y testing continuoTestingUy
 

Ähnlich wie Desarrollo y testeo modular de interfaces HTML5 / MVC - Congo framework (20)

¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?
 
Trabajo
TrabajoTrabajo
Trabajo
 
Desarr
DesarrDesarr
Desarr
 
Desarrollo de proyectos
Desarrollo de proyectosDesarrollo de proyectos
Desarrollo de proyectos
 
Trabajo
TrabajoTrabajo
Trabajo
 
Building Ria Applications With Silverlight 2
Building Ria Applications With Silverlight 2Building Ria Applications With Silverlight 2
Building Ria Applications With Silverlight 2
 
Metodo watch y lps
Metodo watch y lpsMetodo watch y lps
Metodo watch y lps
 
Metodo watch y lps
Metodo watch y lpsMetodo watch y lps
Metodo watch y lps
 
Webinar como modernizar aplicaciones legacy y abandonar tecnologías obsoletas
Webinar como modernizar aplicaciones legacy y abandonar tecnologías obsoletasWebinar como modernizar aplicaciones legacy y abandonar tecnologías obsoletas
Webinar como modernizar aplicaciones legacy y abandonar tecnologías obsoletas
 
Herramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de softwareHerramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de software
 
Watch, lps
Watch, lpsWatch, lps
Watch, lps
 
Rosalie On-Line
Rosalie On-LineRosalie On-Line
Rosalie On-Line
 
Metodo watch
Metodo watchMetodo watch
Metodo watch
 
Metodo watch
Metodo watchMetodo watch
Metodo watch
 
Watch, lps
Watch, lpsWatch, lps
Watch, lps
 
Commit 2018 - Integrando Microservicios y Machine Learning
Commit 2018 - Integrando Microservicios y Machine LearningCommit 2018 - Integrando Microservicios y Machine Learning
Commit 2018 - Integrando Microservicios y Machine Learning
 
Procesos de Software EGEL-UNITEC
Procesos de Software EGEL-UNITECProcesos de Software EGEL-UNITEC
Procesos de Software EGEL-UNITEC
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Visual Studio2005
Visual Studio2005Visual Studio2005
Visual Studio2005
 
Meetup TestingUy 2019 - Plataforma de integración y testing continuo
Meetup TestingUy 2019 - Plataforma de integración y testing continuoMeetup TestingUy 2019 - Plataforma de integración y testing continuo
Meetup TestingUy 2019 - Plataforma de integración y testing continuo
 

Mehr von Santiago Bustelo

Nuestros entregables son nuestra moneda: Luchando contra 
la devaluación de UX
Nuestros entregables son nuestra moneda: Luchando contra 
la devaluación de UXNuestros entregables son nuestra moneda: Luchando contra 
la devaluación de UX
Nuestros entregables son nuestra moneda: Luchando contra 
la devaluación de UXSantiago Bustelo
 
Metodología y Herramientas para diseñar sistemas 
de alta performance - XII J...
Metodología y Herramientas para diseñar sistemas 
de alta performance - XII J...Metodología y Herramientas para diseñar sistemas 
de alta performance - XII J...
Metodología y Herramientas para diseñar sistemas 
de alta performance - XII J...Santiago Bustelo
 
Diseño de Información Interactivo: Principios, Fundamentos y Casos - DG3 R...
Diseño de  Información Interactivo: Principios, Fundamentos y Casos - DG3 R...Diseño de  Información Interactivo: Principios, Fundamentos y Casos - DG3 R...
Diseño de Información Interactivo: Principios, Fundamentos y Casos - DG3 R...Santiago Bustelo
 
Práctica profesional UX: ¿Qué podemos aprender de los errores del Marketing?
Práctica profesional UX: ¿Qué podemos aprender de los errores del Marketing?Práctica profesional UX: ¿Qué podemos aprender de los errores del Marketing?
Práctica profesional UX: ¿Qué podemos aprender de los errores del Marketing?Santiago Bustelo
 
UX professionalism: What can we learn from marketing's mistakes?
UX professionalism: What can we learn from marketing's mistakes?UX professionalism: What can we learn from marketing's mistakes?
UX professionalism: What can we learn from marketing's mistakes?Santiago Bustelo
 
Core Design: Incorporando UX en la educación formal de diseño
Core Design: Incorporando UX en la educación formal de diseñoCore Design: Incorporando UX en la educación formal de diseño
Core Design: Incorporando UX en la educación formal de diseñoSantiago Bustelo
 
Core Design: Taller de definición de roles, trabajo en equipo, ideación.
Core Design: Taller de definición de roles, trabajo en equipo, ideación.Core Design: Taller de definición de roles, trabajo en equipo, ideación.
Core Design: Taller de definición de roles, trabajo en equipo, ideación.Santiago Bustelo
 
Core Design: Design Research - Cómo realizar las preguntas correctas para el ...
Core Design: Design Research - Cómo realizar las preguntas correctas para el ...Core Design: Design Research - Cómo realizar las preguntas correctas para el ...
Core Design: Design Research - Cómo realizar las preguntas correctas para el ...Santiago Bustelo
 
Core Design: Taller de definición de roles, trabajo en equipo, ideación.
Core Design: Taller de definición de roles, trabajo en equipo, ideación.Core Design: Taller de definición de roles, trabajo en equipo, ideación.
Core Design: Taller de definición de roles, trabajo en equipo, ideación.Santiago Bustelo
 
Las metodologías ágiles como problema de diseño
Las metodologías ágiles como problema de diseñoLas metodologías ágiles como problema de diseño
Las metodologías ágiles como problema de diseñoSantiago Bustelo
 
Principios, procesos y herramientas UX para la enseñanza del Diseño
Principios, procesos y herramientas UX para la enseñanza del DiseñoPrincipios, procesos y herramientas UX para la enseñanza del Diseño
Principios, procesos y herramientas UX para la enseñanza del DiseñoSantiago Bustelo
 
Experiencia de Usuario: Diseñar más allá de las pantallas - GoogleLaunchPadBA
Experiencia de Usuario: Diseñar más allá de las pantallas - GoogleLaunchPadBAExperiencia de Usuario: Diseñar más allá de las pantallas - GoogleLaunchPadBA
Experiencia de Usuario: Diseñar más allá de las pantallas - GoogleLaunchPadBASantiago Bustelo
 
Design Research: How to frame the right questions for your design process
Design Research: How to frame the right questions for your design processDesign Research: How to frame the right questions for your design process
Design Research: How to frame the right questions for your design processSantiago Bustelo
 
Experiencia de Usuario y Política Pública: Incorporando UX a Ingeniería de s...
Experiencia de Usuario y Política Pública: Incorporando UX a Ingeniería de s...Experiencia de Usuario y Política Pública: Incorporando UX a Ingeniería de s...
Experiencia de Usuario y Política Pública: Incorporando UX a Ingeniería de s...Santiago Bustelo
 
¿Cómo ser un líder innovador en el mundo digital?
¿Cómo ser un líder innovador en el mundo digital?¿Cómo ser un líder innovador en el mundo digital?
¿Cómo ser un líder innovador en el mundo digital?Santiago Bustelo
 
Design Research: cómo realizar las preguntas correctas para el proceso de diseño
Design Research: cómo realizar las preguntas correctas para el proceso de diseñoDesign Research: cómo realizar las preguntas correctas para el proceso de diseño
Design Research: cómo realizar las preguntas correctas para el proceso de diseñoSantiago Bustelo
 
¿Cuál es la relación entre Tecnología y Diseño? XI Encuentro Latinoamericano ...
¿Cuál es la relación entre Tecnología y Diseño? XI Encuentro Latinoamericano ...¿Cuál es la relación entre Tecnología y Diseño? XI Encuentro Latinoamericano ...
¿Cuál es la relación entre Tecnología y Diseño? XI Encuentro Latinoamericano ...Santiago Bustelo
 
UX Touch vs. Ouch! User Experience para dispositivos móviles - XI Encuentro...
UX Touch vs. Ouch! User Experience para dispositivos móviles - XI Encuentro...UX Touch vs. Ouch! User Experience para dispositivos móviles - XI Encuentro...
UX Touch vs. Ouch! User Experience para dispositivos móviles - XI Encuentro...Santiago Bustelo
 
El futuro del Diseño y UX: los 15 años que se vienen (Tendencias de diseño UX...
El futuro del Diseño y UX: los 15 años que se vienen (Tendencias de diseño UX...El futuro del Diseño y UX: los 15 años que se vienen (Tendencias de diseño UX...
El futuro del Diseño y UX: los 15 años que se vienen (Tendencias de diseño UX...Santiago Bustelo
 
devconchile 2015 - Introducción a UX para desarrolladores: Caso software de ...
devconchile 2015 - Introducción a UX para desarrolladores: Caso software de ...devconchile 2015 - Introducción a UX para desarrolladores: Caso software de ...
devconchile 2015 - Introducción a UX para desarrolladores: Caso software de ...Santiago Bustelo
 

Mehr von Santiago Bustelo (20)

Nuestros entregables son nuestra moneda: Luchando contra 
la devaluación de UX
Nuestros entregables son nuestra moneda: Luchando contra 
la devaluación de UXNuestros entregables son nuestra moneda: Luchando contra 
la devaluación de UX
Nuestros entregables son nuestra moneda: Luchando contra 
la devaluación de UX
 
Metodología y Herramientas para diseñar sistemas 
de alta performance - XII J...
Metodología y Herramientas para diseñar sistemas 
de alta performance - XII J...Metodología y Herramientas para diseñar sistemas 
de alta performance - XII J...
Metodología y Herramientas para diseñar sistemas 
de alta performance - XII J...
 
Diseño de Información Interactivo: Principios, Fundamentos y Casos - DG3 R...
Diseño de  Información Interactivo: Principios, Fundamentos y Casos - DG3 R...Diseño de  Información Interactivo: Principios, Fundamentos y Casos - DG3 R...
Diseño de Información Interactivo: Principios, Fundamentos y Casos - DG3 R...
 
Práctica profesional UX: ¿Qué podemos aprender de los errores del Marketing?
Práctica profesional UX: ¿Qué podemos aprender de los errores del Marketing?Práctica profesional UX: ¿Qué podemos aprender de los errores del Marketing?
Práctica profesional UX: ¿Qué podemos aprender de los errores del Marketing?
 
UX professionalism: What can we learn from marketing's mistakes?
UX professionalism: What can we learn from marketing's mistakes?UX professionalism: What can we learn from marketing's mistakes?
UX professionalism: What can we learn from marketing's mistakes?
 
Core Design: Incorporando UX en la educación formal de diseño
Core Design: Incorporando UX en la educación formal de diseñoCore Design: Incorporando UX en la educación formal de diseño
Core Design: Incorporando UX en la educación formal de diseño
 
Core Design: Taller de definición de roles, trabajo en equipo, ideación.
Core Design: Taller de definición de roles, trabajo en equipo, ideación.Core Design: Taller de definición de roles, trabajo en equipo, ideación.
Core Design: Taller de definición de roles, trabajo en equipo, ideación.
 
Core Design: Design Research - Cómo realizar las preguntas correctas para el ...
Core Design: Design Research - Cómo realizar las preguntas correctas para el ...Core Design: Design Research - Cómo realizar las preguntas correctas para el ...
Core Design: Design Research - Cómo realizar las preguntas correctas para el ...
 
Core Design: Taller de definición de roles, trabajo en equipo, ideación.
Core Design: Taller de definición de roles, trabajo en equipo, ideación.Core Design: Taller de definición de roles, trabajo en equipo, ideación.
Core Design: Taller de definición de roles, trabajo en equipo, ideación.
 
Las metodologías ágiles como problema de diseño
Las metodologías ágiles como problema de diseñoLas metodologías ágiles como problema de diseño
Las metodologías ágiles como problema de diseño
 
Principios, procesos y herramientas UX para la enseñanza del Diseño
Principios, procesos y herramientas UX para la enseñanza del DiseñoPrincipios, procesos y herramientas UX para la enseñanza del Diseño
Principios, procesos y herramientas UX para la enseñanza del Diseño
 
Experiencia de Usuario: Diseñar más allá de las pantallas - GoogleLaunchPadBA
Experiencia de Usuario: Diseñar más allá de las pantallas - GoogleLaunchPadBAExperiencia de Usuario: Diseñar más allá de las pantallas - GoogleLaunchPadBA
Experiencia de Usuario: Diseñar más allá de las pantallas - GoogleLaunchPadBA
 
Design Research: How to frame the right questions for your design process
Design Research: How to frame the right questions for your design processDesign Research: How to frame the right questions for your design process
Design Research: How to frame the right questions for your design process
 
Experiencia de Usuario y Política Pública: Incorporando UX a Ingeniería de s...
Experiencia de Usuario y Política Pública: Incorporando UX a Ingeniería de s...Experiencia de Usuario y Política Pública: Incorporando UX a Ingeniería de s...
Experiencia de Usuario y Política Pública: Incorporando UX a Ingeniería de s...
 
¿Cómo ser un líder innovador en el mundo digital?
¿Cómo ser un líder innovador en el mundo digital?¿Cómo ser un líder innovador en el mundo digital?
¿Cómo ser un líder innovador en el mundo digital?
 
Design Research: cómo realizar las preguntas correctas para el proceso de diseño
Design Research: cómo realizar las preguntas correctas para el proceso de diseñoDesign Research: cómo realizar las preguntas correctas para el proceso de diseño
Design Research: cómo realizar las preguntas correctas para el proceso de diseño
 
¿Cuál es la relación entre Tecnología y Diseño? XI Encuentro Latinoamericano ...
¿Cuál es la relación entre Tecnología y Diseño? XI Encuentro Latinoamericano ...¿Cuál es la relación entre Tecnología y Diseño? XI Encuentro Latinoamericano ...
¿Cuál es la relación entre Tecnología y Diseño? XI Encuentro Latinoamericano ...
 
UX Touch vs. Ouch! User Experience para dispositivos móviles - XI Encuentro...
UX Touch vs. Ouch! User Experience para dispositivos móviles - XI Encuentro...UX Touch vs. Ouch! User Experience para dispositivos móviles - XI Encuentro...
UX Touch vs. Ouch! User Experience para dispositivos móviles - XI Encuentro...
 
El futuro del Diseño y UX: los 15 años que se vienen (Tendencias de diseño UX...
El futuro del Diseño y UX: los 15 años que se vienen (Tendencias de diseño UX...El futuro del Diseño y UX: los 15 años que se vienen (Tendencias de diseño UX...
El futuro del Diseño y UX: los 15 años que se vienen (Tendencias de diseño UX...
 
devconchile 2015 - Introducción a UX para desarrolladores: Caso software de ...
devconchile 2015 - Introducción a UX para desarrolladores: Caso software de ...devconchile 2015 - Introducción a UX para desarrolladores: Caso software de ...
devconchile 2015 - Introducción a UX para desarrolladores: Caso software de ...
 

Kürzlich hochgeladen

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 

Kürzlich hochgeladen (10)

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

Desarrollo y testeo modular de interfaces HTML5 / MVC - Congo framework

  • 1. M E M B E R Desarrollo y testeo modular de interfaces HTML5 / MVC Santiago Bustelo CodeCamp Buenos Aires • 15 de octubre, 2011 @sbustelo Presentación bajo licencia Creative Commons Atribución 2.5 Argentina http://creativecommons.org/licenses/by/2.5/ar
  • 2. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo ¿De qué tipo de desarrollo de interfaces estamos hablando? • Aplicaciones web complejas, escalando a sistemas de múltiples aplicaciones y sitios web con diferentes tecnologías back-end • Requerimientos de la interfaz: • Consistencia • Múltiples navegadores / dispositivos • Usabilidad, accesibilidad, SEO • No es aceptable generar la interfaz desde el código back-end • Es necesario construir HTML, CSS, JavaScript a nivel de producción 2
  • 3. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo ¿Qué vamos a ver? • Contexto • Vista general del proceso de diseño y desarrollo front-end • Problemáticas específicas del desarrollo de interfaces HTML • Propuesta • Conjunto de prácticas y herramientas desarrolladas y probadas en proyectos reales para reducir desperdicios y asegurar calidad (¡y salud!) • Congo, nuestro framework open source para desarrollo y testeo modular HTML/CSS/JavaScript 3
  • 4. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Contexto: Diseño y desarrollo de interfaces en sistemas de aplicaciones web complejas, usables y accesibles 4
  • 5. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Aplicaciones y Sistemas de aplicaciones 5
  • 6. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo 6 Aplicaciones y Sistemas de aplicaciones
  • 7. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Proceso de diseño y desarrollo front-end 7 • IxD / AI / UX • Análisis, Wireframes • Validación: negocio / usuarios • Diseño de interfaces • Diseño a nivel de detalle • Validación: negocio / usuarios • Desarrollo de interfaces • Maquetado HTML/CSS/JavaScript • Validación: dispositivos • Prototipo navegable • Validación: negocio / usuarios
  • 8. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Entregables de diseño y desarrollo de la interfaz para implementación • Documentación de procesos del usuario, elementos de la interfaz, operación y funcionamiento • HTML validado con negocio, usuario y dispositivos a ser generado por el back-end (“modelo terminado”) • El desarrollo front-end no se realiza sobre el framework de implementación, debido a que ello: • no permite trabajar la interfaz en el contexto correcto • no permite iteraciones económicas • genera apego a funcionalidades aunque no pasen validación UX 8
  • 9. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Patrones de arquitectura de software Integración front/back end • MVC: Model-View- Controller • MVP: Model-View-Presenter • MVVM: Model-View- ViewModel • BBM: estándar de facto de arquitectura de software Desarrollo front-end • BBM 9
  • 10. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo 10 • Trabajo reactivo sobre lo evidente e inmediato, poco o ningún planeamiento e infraestructura • Cada cambio “local” tiene consecuencias globales, obliga a repasar desarrollo previo (Shlemiel the painter) • Se acumulan incertidumbres que explotan tardíamente • Cada vez más difícil lograr escalabilidad, performance, mantenibilidad BBM: Big Ball of Mud (aka Shantytowns)
  • 11. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Características desarrollo de código HTML, CSS, JavaScript • Poco modular por diseño (no existe “HTML include”) o implementación (IE toma sólo los primeros 31 STYLEs y SCRIPTs) • Capas geológicas, hacks, ofuscación • Múltiples formas de lograr un resultado similar, muchas erróneas • HTML: código no funcional • No podemos aplicar herramientas de testing de código funcional • Sobre el HTML debemos montar el código JavaScript, que pasa a heredar sus problemas estructurales 11
  • 12. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Propuesta: 12 Desarrollo y testeo modular Congo framework
  • 13. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo HTML no tiene estructura: hay que dársela • Estructuras, convenciones, mejores prácticas • Desarrollar herramientas transparentes y portables para: • brindar estructuras de soporte (scaffolding) no restrictivas • realizar pruebas sistemáticas • generar documentación y código para implementación de forma automática • Proceso eficiente y flexible a iteraciones • Productos: • código front-end modular, mantenible, testeable, reusable • documentación para implementación y mantenimiento de la interfaz 13
  • 14. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Estructura: desarrollo modular Nathan Curtis: Modularity & Design Hierarchy 14
  • 15. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Herramienta: Congo 15 • Para probar código funcional, podemos usar un mono loco • Para probar código no funcional (diseño), podemos usar… un mono pintor
  • 16. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Desarrollo modular de la interfaz 16 • Separación del HTML en componentes independientes • Variables del componente permiten generar instancias de información, presentación y operación • Cada componente establece un contexto local para HTML/DOM, CSS y JavaScript • Paralelo funcional: objeto en OOP
  • 17. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Componentes componente_full HTML template archivos JS archivos CSS variables y valores imagenes img1, img2… componente_minimo (todo es opcional) _componente_oculto HTML template 17
  • 18. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Un componente simple… components/button/html.php <span class="button <?= $this->buttonType ?>"> <input type="submit" value="<?= $this->buttonText ?>" /> </span> components/button/variables.yml buttonType: [ action, confirm, decline ] buttonText: text components/button/styles.css .button INPUT { background-color:grey; color:white; } .button.action INPUT { background- color:blue; } .button.confirm INPUT { background- color:green; } .button.decline INPUT { background-color:red; } components/button/scripts.js $('.button A').click(function() { // Do something... }); 18
  • 19. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Componentes, componentes, componentes components/formFoot/html.php <div class="formFoot"> <?php component( 'button', array('buttonText' => 'Submit') ); ?> or <a href="#">cancel</a> </div> 19
  • 20. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Convenciones HTML, CSS y JS • El HTML siempre se abre y cierra por cada nivel. • Todo componente está contenido en un wrapper: SPAN (inline) o DIV (block) class="nombreDelComponente". • Evitar declaraciones CSS afectando elementos no contiguos • Cuanta más distancia haya entre un elemento y la regla de CSS que lo afecta, más difícil será seguirle el rastro. • Definimos globales sólo los tags principales (BODY, A, P…). Todas las demás declaraciones descenderán de .nombreDelComponente. • JavaScript no intrusivo, jQuery 20
  • 21. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Componentes » Layouts components/_layouts/index/html.php <div class="layout-index"> <form> <div class="formBody"> Say hello to the world! </div> <?php component( 'formFoot' ); ?> </form> </div> 21
  • 22. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Componente _html components/_html/html.php <!DOCTYPE HTML> <html> <head> <meta charset="utf-8" /> <title>Hello world</title> <?php $this->resources('css'); ?> </head> <body> <?php $this->layout() ?> <?php $this->resources('js'); ?> </body> </html> • Incluye layout que le pasa el motor • Compila los recursos CSS y JS de todos los componentes • Recomendaciones Yahoo! Exceptional Performance: • Make JavaScript and CSS External • Put Stylesheets at Top • Put Scripts at Bottom • Minify JavaScript and CSS 22
  • 23. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Hello World! 23
  • 24. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Template tags 24 Evaluar una variable: <?= $this->variableName ?> Variables del motor: <?= $this->imgsPath ?> <?= $this->rsrcPath ?> TBD: root resources Incluir componente: <?php component( 'componentName' ); ?> <?php component( 'componentName', array('variableName' => 'value') ); ?> Para _html (se provee placeholder) <?php $this->layout() ?> <?php $this->resources('css'); ?> <?php $this->resources('js'); ?>
  • 25. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Testeo del componente: combinatoria de variables • Se definen para cada componente grupos de valores de prueba para cada variable. • Al probar la combinatoria de variables y valores, se observan sistemáticamente todos los estados posibles del componente. • Paralelo funcional: unit testing 25
  • 26. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Testeo del componente button 26 buttonType: [ action, confirm, decline ] buttonText: text
  • 27. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Explosión combinatoria 27 buttonTag: ['a', 'input'] buttonText: [ Submit, Very very long buttonText ] buttonAHref: [ '#' ] buttonSize: [ '' , small, big ] buttonType: [ '', action, decline ]
  • 28. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Pairwise: combinación de pares 28 Test Destination Class Seat Preference 1 Canada Coach Aisle 2 Mexico Coach Aisle 3 (defect!) USA Coach Aisle 4 Canada Business Class Aisle 5 Mexico Business Class Aisle 6 USA Business Class Aisle 7 Canada First Class Aisle 8 Mexico First Class Aisle 9 USA First Class Aisle 10 Canada Coach Window 11 Mexico Coach Window 12 (defect!) USA Coach Window 13 Canada Business Class Window 14 Mexico Business Class Window 15 USA Business Class Window 16 Canada First Class Window 17 Mexico First Class Window 18 USA First Class Window Test Destination Class Seat Preference 1 Canada Coach Aisle 3 (defect!) USA Coach Aisle 5 Mexico Business Class Aisle 8 Mexico First Class Aisle 9 USA First Class Aisle 11 Mexico Coach Window 13 Canada Business Class Window 15 USA Business Class Window 16 Canada First Class Window Michael Bolton: Pairwise Testing
  • 29. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Pairwise testing 29 buttonTag: ['a', 'input'] buttonText: [ Submit, Very very long buttonText ] buttonAHref: [ '#' ] buttonSize: [ '' , small, big ] buttonType: [ '', action, decline ]
  • 30. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Testeo de un layout 30
  • 31. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Indice del proyecto 31
  • 32. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Views 32 • Instancias de los layouts para documentación y prototipo navegable (TBD: variables) • Helper para generar layouts • Al generar un nivel en _sitetree.yml, se genera en _layouts un directorio con html.php placeholder • Genera estructura archivos para entregables finales components/_layouts/_sitetree.yml index login products: index detail
  • 33. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Desarrollo vs. Entregables input config.php variables.yml components _html _layouts componente1 componente2 output documentation documentation index components (TBD) test comp1 test comp2 public_html rsrc images 33
  • 34. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Platforms: Eat Your Own Dogfood 34
  • 35. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Platforms: Eat Your Own Dogfood 35
  • 36. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Platforms: Eat Your Own Dogfood 36
  • 37. Desarrollo y testeo modular de interfaces •M E M B E R kambrica.com/congo Now, eat our dogfood! kambrica.com/congo 37 • Interfaces más robustas • Diseñadores y desarrolladores más saludables • Sitios de cachorro a adulto en mucho menos tiempo