Descargar

Principios de diseño de software ágiles (página 2)

Enviado por Pablo Turmero


Partes: 1, 2
edu.red

Diseño con una interfaz

Diseño con dos interfaces Cliente C Cliente D Interfaz Z Métodos que utiliza el cliente C Métodos que utiliza el cliente D Cliente C Cliente D interfaz ZC Métodos que utiliza el cliente C Interfaz ZD Métodos que utiliza el cliente D Principio de separación de la interfaz

edu.red

Diseño con una interfaz

Extensión del principio de responsabilidad única Ambigüedad Aumenta entre los métodos de interfaces separadas Aumenta entre la clase cliente hacia los métodos de las interfaces no utilizan Ventajas e inconvenientes Cliente C Cliente D Interfaz Z Métodos cliente C Métodos cliente D

Diseño con dos interfaces Cliente C Cliente D Interfaz ZC Métodos cliente C Interfaz ZD Métodos cliente D Principio de separación de la interfaz

Análisis

edu.red Principio abierto/cerrado

Las entidades software deben estar abiertas para su extensión, pero cerradas para su modificación Bertran Meyer

Diseño cerrado/cerrado

Finalidad Sistema funcionando (cerrado), pero ampliable (abierto) Conseguir cambios añadiendo nuevo código sin afectar al resto de elementos del diseño Clase A Clase B

edu.red

Ambigüedad La dependencia “uno a uno” se transforma en una dependencia de “uno a muchos” Ventajas

Diseño abierto/cerrado Principio abierto/cerrado

Análisis

Diseño cerrado/cerrado Clase A Clase B Clase A Clase Abstracta B Clase B1 Clase B2

edu.red Principio de sustitución de Liskov

Los subtipos deben ser sustituibles por sus supertipos Robert C. Martin

S es subtipo de T (Barbara Liskov)

o2 es un objeto de T

o1 es un objeto de S

Para todo programa P ( T ) comportamiento P(o1) = comportamiento P(o2) cuando o1 es sustituido por o2

T S Finalidad Facilitar la modificación del diseño y la reutilización del código a través del uso adecuado de la herencia Te cambié el orden de o1 y o2, pero no estoy seguro

edu.red Rectángulo Cuadrado ES – UN ? Principio de sustitución de Liskov

¿ Rectángulo ES-UN Cuadrado ? Poscondiciones de los métodos establecerAlto y establecerAncho Propiedades y métodos

edu.red

Ambigüedad: Los programas no saben si trabajan con objetos de supertipos o de subtipos Ventajas El enunciado de Martin es confuso: “Los subtipos deben ser sustituibles por los supertipos”, pero la definición de subtipo se basa en la sustitución S es subtipo de T

o1 es un objeto de S

o2 es un objeto de T

Para todo programa P ( T ) comportamiento P(o1) = comportamiento P(o2) cuando o1 es sustituido por o2

T S Principio de sustitución de Liskov

Análisis

edu.red Principio de inversión de dependencias

Los módulos de alto nivel no deben depender de los módulos de bajo nivel. Ambos deben depender de las abstracciones

Las abstracciones no deben depender de los detalles. Los detalles deben depender de las abstracciones. Robert C. Martin

edu.red Principio de inversión de dependencias

Finalidad: Conseguir que los cambios en los módulos de bajo nivel no afecten a los módulos de alto nivel Facilitar la reutilización de los módulos de alto nivel

Diseño tradicional Nivel Política Nivel Mecanismo Nivel Utilidad

edu.red

Diseño tradicional Nivel Política Nivel Mecanismo Nivel Utilidad Principio de inversión de dependencias

Diseño con inversión de dependencias Nivel Política Nivel Mecanismo Nivel Utilidad Interfaz Política Interfaz Mecanismo Política Mecanismo Utilidad

edu.red

Ambigüedad:

Aumenta entre los módulos de alto nivel y los de bajo nivel Ventajas Caso particular de la programación estructurada de Dijkstra Principio de inversión de dependencias Análisis

Diseño con inversión de dependencias Nivel Política Nivel Mecanismo Nivel Utilidad Interfaz Política Interfaz Mecanismo Política Mecanismo Utilidad

edu.red Conclusiones (I)

La ambigüedad ha sido un instrumento teórico válido para analizar los principios de diseño ágiles porque ha permitido: Explicar y predecir los efectos de la aplicación de estos principios Disponer de una visión uniforme de los principios

edu.red Conclusiones (II)

Los principios: abierto/cerrado de sustitución de inversión de dependencias aumentan la ambigüedad del diseño: Reemplazo de las relaciones unívocas por ambiguas Reducción la complejidad descriptiva Reducción la complejidad por incertidumbre

Son criterios de diseño para utilizarlos de forma regular

edu.red Conclusiones (III)

Los principios: de responsabilidad única de separación de la interfaz diminuyen la ambigüedad del diseño: Aumento de la complejidad descriptiva Aumento de la complejidad por incertidumbre

Son criterios de diseño para utilizarlos de forma excepcional

edu.red Conclusiones (y IV)

Objeciones al trabajo de Martin: No existe un análisis teórico de los principios No hay relación entre el principio de cohesión y el principio de responsabilidad única Enunciado tautológico del principio de sustitución Principio de inversión de dependencias es un caso particular de la programación estructurada original (Dijkstra)

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente