Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web...

28
Programa de Actualización Programa de Actualización Profesional Profesional Ingeniería de Sistemas - Ingeniería de Sistemas - EPE EPE Desarrollo para Desarrollo para Entorno Web Entorno Web Modelo de dominio

Transcript of Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web...

Page 1: Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Modelo de dominio.

Programa de Actualización Programa de Actualización ProfesionalProfesionalIngeniería de Sistemas - EPEIngeniería de Sistemas - EPE

Desarrollo para Entorno Desarrollo para Entorno WebWebModelo de dominio

Page 2: Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Modelo de dominio.

UPC - EPE - Ingeniería de Sistemas - Programa de Actualización Profesional 10/04/232

ÍndiceÍndice

Modelo de dominio

Domain Driven Design

Test Driven Development

JUnit

Page 3: Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Modelo de dominio.

MODELO DE DOMINIOMODELO DE DOMINIO

UPC - EPE - Ingeniería de Sistemas - Programa de Actualización Profesional 10/04/233

Page 4: Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Modelo de dominio.

¿Qué es un dominio?¿Qué es un dominio?

Un dominio es una esfera de conocimiento, influencia o actividad.

El dominio del software es el área temática a la que el usuario aplica un programa.

¿Por qué es importante comprender el dominio?

La complejidad de los proyectos de software más críticos está en la comprensión del dominio de sí mismo.

UPC - EPE - Ingeniería de Sistemas - Programa de Actualización Profesional 10/04/234

Page 5: Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Modelo de dominio.

¿Qué es un modelo?¿Qué es un modelo?

Es un sistema de abstracciones que describe algunos aspectos de un dominio y se puede utilizar para resolver problemas relacionados con ese dominio.

Un modelo es una simplificación.

Un modelo es una interpretación de la realidad.

Los modelos involucran el mundo físico y también entidades intangibles.

UPC - EPE - Ingeniería de Sistemas - Programa de Actualización Profesional 10/04/235

Page 6: Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Modelo de dominio.

Modelo de dominioModelo de dominio

El Modelo de Dominio es la representación de los conceptos de importancia en el área de la aplicación del software, así como de las relaciones entre estos.

El Modelo de Dominio no contiene conceptos propios de un sistema de software sino de la propia realidad física.

UPC - EPE - Ingeniería de Sistemas - Programa de Actualización Profesional 10/04/236

Page 7: Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Modelo de dominio.

Modelo de dominioModelo de dominio

UPC - EPE - Ingeniería de Sistemas - Programa de Actualización Profesional 10/04/237

Page 8: Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Modelo de dominio.

Modelo de dominioModelo de dominio

Los modelos de dominio pueden utilizarse para capturar y expresar el entendimiento ganado en un área bajo análisis.

Similares a los mapas mentales utilizados en el aprendizaje, el modelo de dominio es utilizado por el equipo de desarrollo como un medio para comprender el sector industrial o de negocios al cual el sistema va a servir.

UPC - EPE - Ingeniería de Sistemas - Programa de Actualización Profesional 10/04/238

Page 9: Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Modelo de dominio.

Construcción de un modelo Construcción de un modelo de dominiode dominio

Se construyen como parte del proceso de identificación de requisitos ya sea en reuniones con el cliente o como parte de un proceso de aprendizaje en el área de negocio.

Sirve para capturar el conocimiento de un área de negocios, ha de ser desarrollado con fuerte participación del cliente y de expertos en el área.

UPC - EPE - Ingeniería de Sistemas - Programa de Actualización Profesional 10/04/239

Page 10: Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Modelo de dominio.

Ejemplo de un modelo de Ejemplo de un modelo de dominiodominio

UPC - EPE - Ingeniería de Sistemas - Programa de Actualización Profesional 10/04/2310

Page 11: Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Modelo de dominio.

Ejemplo de un modelo de Ejemplo de un modelo de dominiodominio

UPC - EPE - Ingeniería de Sistemas - Programa de Actualización Profesional 10/04/2311

Page 12: Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Modelo de dominio.

DOMAIN DRIVEN DESIGNDOMAIN DRIVEN DESIGN

UPC - EPE - Ingeniería de Sistemas - Programa de Actualización Profesional 10/04/2312

Page 13: Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Modelo de dominio.

Domain Driven DesignDomain Driven Design

Domain Driven Design (DDD) es un método de diseño creado para construir aplicaciones basadas en un modelo de dominio.

DDD provee:Mejores prácticas

Patrones

Recomendaciones

, para la construcción de modelos de dominio complejos.

UPC - EPE - Ingeniería de Sistemas - Programa de Actualización Profesional 10/04/2313

Page 14: Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Modelo de dominio.

Domain Driven DesignDomain Driven Design

La comunidad de desarrollo de software reconoce ampliamente que el modelo de dominio es fundamental para el diseño de software.

A través de modelos de dominio, desarrolladores de software son capaces de expresar una gran funcionalidad y traducirlo en una aplicación de software que sirva realmente a las necesidades de sus usuarios.

UPC - EPE - Ingeniería de Sistemas - Programa de Actualización Profesional 10/04/2314

Page 15: Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Modelo de dominio.

Domain Driven DesignDomain Driven Design

Pero a pesar de su evidente importancia, hay pocos recursos prácticos que explican cómo incorporar el modelado de dominio eficaz en el proceso de desarrollo de software.

DDD cubre esa necesidad.

UPC - EPE - Ingeniería de Sistemas - Programa de Actualización Profesional 10/04/2315

Page 16: Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Modelo de dominio.

DDD - Ubiquitous languageDDD - Ubiquitous language

UPC - EPE - Ingeniería de Sistemas - Programa de Actualización Profesional 10/04/2316

Page 17: Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Modelo de dominio.

DDD – Arquitectura en capasDDD – Arquitectura en capas

UPC - EPE - Ingeniería de Sistemas - Programa de Actualización Profesional 10/04/2317

Page 18: Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Modelo de dominio.

DDD – Arquitectura en capasDDD – Arquitectura en capas

Domain LayerEn esta capa reside el corazón del software: reglas y lógica de negocio.

Se mantiene el estado de las entidades de negocio y su conducta.

La persistencia se define en la capa de infraestructura.

Patrones en esta capa: Entities, Value Objects, Services, Repositories y Factories.

UPC - EPE - Ingeniería de Sistemas - Programa de Actualización Profesional 10/04/2318

Page 19: Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Modelo de dominio.

TEST DRIVEN TEST DRIVEN DEVELOPMENTDEVELOPMENT

UPC - EPE - Ingeniería de Sistemas - Programa de Actualización Profesional 10/04/2319

Page 20: Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Modelo de dominio.

Test Driven DevelopmentTest Driven Development

TDD o Desarrollo Guiado por Pruebas es una metodología de desarrollo consistente en escribir las pruebas antes que el código.

TDD es utilizado en metodologías ágiles.

El objetivo es código limpio y simple que funcione bien.

No reemplaza a las pruebas de rendimiento ni usabilidad.

Las pruebas deben ser automáticas, es decir, las pruebas son código.

Escribir las pruebas cuesta más tiempo que probar manualmente una vez. Pero trae beneficios.

UPC - EPE - Ingeniería de Sistemas - Programa de Actualización Profesional 10/04/2320

Page 21: Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Modelo de dominio.

TDD: Pasos para cada TDD: Pasos para cada iteracióniteración1. Escribir una prueba

2. Verificar que la prueba falla (debido a que todavía no hay código)

3. Escribir el código para que la prueba funcione

4. Verificar que la prueba funciona

5. Simplificar el código mediante “refactoring”

6. Verificar que la prueba funciona

7. Regresar a paso 1UPC - EPE - Ingeniería de Sistemas - Programa de Actualización Profesional 10/04/2321

Page 22: Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Modelo de dominio.

Pruebas unitariasPruebas unitarias

Busca probar cada unidad de código.

Una unidad es la mínima parte distinguible de un sistema. En POO es el método.

Las pruebas unitarias ayudan a verificar que el código correspondiente a un módulo concreto de un software funciona de acuerdo a lo esperado.

UPC - EPE - Ingeniería de Sistemas - Programa de Actualización Profesional 10/04/2322

Page 23: Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Modelo de dominio.

Pruebas unitarias. Pruebas unitarias. CaracterísticasCaracterísticas

Concisas (simples y escrita por programadores)

Fácil verificación (funciona o no)

Repetibles (automáticas y sin la interpretación de un ser humano)

Robusta (produce el mismo resultado)

Suficiente y necesaria (verificar todos los requerimientos)

Clara (fácil de entender)

Eficiente (en el tiempo)

Específica (funcionalidad concreta y reducida)

Independiente (de las demás pruebas)

Mantenible (fácil de modificar y extender)

UPC - EPE - Ingeniería de Sistemas - Programa de Actualización Profesional 10/04/2323

Page 24: Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Modelo de dominio.

JUNITJUNIT

UPC - EPE - Ingeniería de Sistemas - Programa de Actualización Profesional 10/04/2324

Page 25: Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Modelo de dominio.

JUnitJUnit

Framework libre que nos ayuda a generar las pruebas unitarias.

Permite estandarizar las pruebas y correrlas en forma conjunta.

Ayuda a ver de manera amigable, dónde y por qué falla una prueba.

JUnit + IDE = Facilidad de implementación.

Las pruebas se agrupan en TestCases, que pueden integrar TestSuites.

UPC - EPE - Ingeniería de Sistemas - Programa de Actualización Profesional 10/04/2325

Page 26: Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Modelo de dominio.

JUnitJUnit

Herramienta principal: ASSERT

assertTrue(expresion)

assertFalse(expresion)

assertEquals(esperado, real)

assertNotSame(objeto, objeto)

assertNull(objeto)

assertNotNull(objeto)

Otras herramientas

setUp(): Realizar algo antes de cada test

tearDown(): Realizar algo después de cada test

fail(): Si se llega a esa parte del código, está mal

UPC - EPE - Ingeniería de Sistemas - Programa de Actualización Profesional 10/04/2326

Page 27: Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Modelo de dominio.

ConclusionesConclusiones

El modelo de dominio ocupa un rol protagónico en el desarrollo moderno de software y constituye un artefacto muy valioso para desarrollar el software.

Test Driven Development (TDD) no es un método de testing, sino de desarrollo.

TDD sugiere escribir las pruebas antes del código y refactorizar incrementalmente.

JUnit es un framework de pruebas unitarias para el lenguaje Java.

UPC - EPE - Ingeniería de Sistemas - Programa de Actualización Profesional 10/04/2327

Page 28: Programa de Actualización Profesional Ingeniería de Sistemas - EPE Desarrollo para Entorno Web Modelo de dominio.

BibliografíaBibliografía

Eric Evans. Strategic Design – Making models work in large projects.

Eric Evans. Domain-Driven Design: Tackling complexity in the heart of Software.

http://synergix.wordpress.com/2008/07/10/modelo-de-dominio/

Hunt y Thomas. Pragmatic Unit Testing

http://junit.org

UPC - EPE - Ingeniería de Sistemas - Programa de Actualización Profesional 10/04/2328